Class AntPathMatcher

  • All Implemented Interfaces:
    PathMatcher

    public class AntPathMatcher
    extends java.lang.Object
    implements PathMatcher

    PathMatcher implementation for Ant-style path patterns. Examples are provided below.

    Part of this mapping code has been kindly borrowed from Apache Ant.

    The mapping matches URLs using the following rules:

    • ? matches one character
    • * matches zero or more characters
    • ** matches zero or more 'directories' in a path

    Some examples:

    • com/t?st.jsp - matches com/test.jsp but also com/tast.jsp or com/txst.jsp
    • com/*.jsp - matches all .jsp files in the com directory
    • com/**/test.jsp - matches all test.jsp files underneath the com path
    • org/apache/shiro/**/*.jsp - matches all .jsp files underneath the org/apache/shiro path
    • org/**/servlet/bla.jsp - matches org/apache/shiro/servlet/bla.jsp but also org/apache/shiro/testing/servlet/bla.jsp and org/servlet/bla.jsp

    N.B.: This class was forked from Apache Shiro with modifications.

    As per the Apache 2.0 license, the original copyright notice and all author and copyright information have remained intact.

    Since:
    1.0
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String DEFAULT_PATH_SEPARATOR
      Default path separator: "/".
    • Constructor Summary

      Constructors 
      Constructor Description
      AntPathMatcher()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected boolean doMatch​(java.lang.String pattern, java.lang.String path, boolean fullMatch)
      Actually match the given path against the given pattern.
      java.lang.String extractPathWithinPattern​(java.lang.String pattern, java.lang.String path)
      Given a pattern and a full path, determine the pattern-mapped part.
      boolean isPattern​(java.lang.String path)  
      boolean matches​(java.lang.String pattern, java.lang.String source)
      Returns true if the given source matches the specified pattern, false otherwise.
      void setPathSeparator​(java.lang.String pathSeparator)
      Set the path separator to use for pattern parsing.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEFAULT_PATH_SEPARATOR

        public static final java.lang.String DEFAULT_PATH_SEPARATOR
        Default path separator: "/".
        See Also:
        Constant Field Values
    • Constructor Detail

      • AntPathMatcher

        public AntPathMatcher()
    • Method Detail

      • setPathSeparator

        public void setPathSeparator​(java.lang.String pathSeparator)
        Set the path separator to use for pattern parsing. Default is "/", as in Ant.
        Parameters:
        pathSeparator - The path separator for the pattern parsing
      • isPattern

        public boolean isPattern​(java.lang.String path)
        Parameters:
        path - The path
        Returns:
        Whether is pattern
      • matches

        public boolean matches​(java.lang.String pattern,
                               java.lang.String source)
        Description copied from interface: PathMatcher
        Returns true if the given source matches the specified pattern, false otherwise.
        Specified by:
        matches in interface PathMatcher
        Parameters:
        pattern - the pattern to match against
        source - the source to match
        Returns:
        true if the given source matches the specified pattern, false otherwise.
      • doMatch

        protected boolean doMatch​(java.lang.String pattern,
                                  java.lang.String path,
                                  boolean fullMatch)
        Actually match the given path against the given pattern.
        Parameters:
        pattern - the pattern to match against
        path - the path String to test
        fullMatch - whether a full pattern match is required (else a pattern match as far as the given base path goes is sufficient)
        Returns:
        true if the supplied path matched, false if it didn't
      • extractPathWithinPattern

        public java.lang.String extractPathWithinPattern​(java.lang.String pattern,
                                                         java.lang.String path)
        Given a pattern and a full path, determine the pattern-mapped part.

        For example:

        • '/docs/cvs/commit.html' and '/docs/cvs/commit.html -> ''
        • '/docs/*' and '/docs/cvs/commit -> 'cvs/commit'
        • '/docs/cvs/*.html' and '/docs/cvs/commit.html -> 'commit.html'
        • '/docs/**' and '/docs/cvs/commit -> 'cvs/commit'
        • '/docs/**\/*.html' and '/docs/cvs/commit.html -> 'cvs/commit.html'
        • '/*.html' and '/docs/cvs/commit.html -> 'docs/cvs/commit.html'
        • '*.html' and '/docs/cvs/commit.html -> '/docs/cvs/commit.html'
        • '*' and '/docs/cvs/commit.html -> '/docs/cvs/commit.html'

        Assumes that matches(String, String) returns true for 'pattern' and 'path', but does not enforce this.

        Parameters:
        pattern - The pattern
        path - The path
        Returns:
        The pattern-mapped part