Class AntPathMatcher

java.lang.Object
org.robovm.compiler.util.AntPathMatcher

public class AntPathMatcher
extends Object
PathMatcher implementation for Ant-style path patterns. Examples are provided below.

RoboVM note: This code was copied from the Apache Camel project. Part of this mapping code has been kindly borrowed from Apache Ant and Spring Framework.

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/springframework/**/*.jsp - matches all .jsp files underneath the org/springframework path
  • org/**/servlet/bla.jsp - matches org/springframework/servlet/bla.jsp but also org/springframework/testing/servlet/bla.jsp and org/servlet/bla.jsp
  • Field Details

    • DEFAULT_PATH_SEPARATOR

      public static final String DEFAULT_PATH_SEPARATOR
      Default path separator: "/"
      See Also:
      Constant Field Values
  • Constructor Details

    • AntPathMatcher

      public AntPathMatcher​(String pattern)
    • AntPathMatcher

      public AntPathMatcher​(String pattern, String pathSeparator)
  • Method Details

    • setPathSeparator

      public void setPathSeparator​(String pathSeparator)
      Set the path separator to use for pattern parsing. Default is "/", as in Ant.
    • matches

      public boolean matches​(String path)
      Matches the specified path against the pattern of this AntPathMatcher.
      Parameters:
      path - the path to match.
      Returns:
      true if a match was found.
    • isPattern

      public static boolean isPattern​(String pattern)
      Returns true if the specified pattern string contains wildcard characters.
      Returns:
      true if the specified string is an Ant-style pattern.
    • match

      public static boolean match​(String pattern, String path)
    • doMatch

      protected boolean doMatch​(String path, boolean fullMatch, boolean isCaseSensitive)
      Actually match the given path against the given pattern.
      Parameters:
      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)
      isCaseSensitive - Whether or not matching should be performed case sensitively.
      Returns:
      true if the supplied path matched, false if it didn't
    • extractPathWithinPattern

      public String extractPathWithinPattern​(String pattern, 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 match(java.lang.String, java.lang.String) returns true for ' pattern' and 'path', but does not enforce this.

    • rtrimWildcardTokens

      public static String rtrimWildcardTokens​(String input)
      removes from a pattern all tokens to the right containing wildcards
      Parameters:
      input - the input string
      Returns:
      the leftmost part of the pattern without wildcards
    • rtrimWildcardTokens

      public static String rtrimWildcardTokens​(String input, String separator)
    • extractPattern

      public static String extractPattern​(String input)
    • extractPattern

      public static String extractPattern​(String input, String separator)