public class AntPathMatcher extends Object
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 pathcom/t?st.jsp - matches com/test.jsp but also com/tast.jsp or com/txst.jspcom/*.jsp - matches all .jsp files in the com directorycom/**/test.jsp - matches alltest.jsp files underneath the com pathorg/springframework/**/*.jsp - matches all .jsp files underneath the org/springframework pathorg/**/servlet/bla.jsp - matches org/springframework/servlet/bla.jsp but also
org/springframework/testing/servlet/bla.jsp and org/servlet/bla.jsp| Modifiers | Name | Description |
|---|---|---|
protected static class |
AntPathMatcher.AntPatternComparator |
| Modifiers | Name | Description |
|---|---|---|
static String |
DEFAULT_PATH_SEPARATOR |
Default path separator: "/" |
| Type Params | Return Type | Name and description |
|---|---|---|
|
public String |
combine(String pattern1, String pattern2)Combines two patterns into a new pattern that is returned. |
|
public static int |
countOccurrencesOf(String str, String sub)Count the occurrences of the substring in string s. |
|
protected boolean |
doMatch(String pattern, String path, boolean fullMatch, Map<String, String> uriTemplateVariables)Actually match the given path against the given pattern. |
|
public String |
extractPathWithinPattern(String pattern, String path)Given a pattern and a full path, determine the pattern-mapped part. |
|
public Map<String, String> |
extractUriTemplateVariables(String pattern, String path) |
|
public Comparator<String> |
getPatternComparator(String path)Given a full path, returns a Comparator suitable for sorting patterns in order of explicitness. |
|
public boolean |
isPattern(String path) |
|
public boolean |
match(String pattern, String path) |
|
public boolean |
matchStart(String pattern, String path) |
|
public void |
setPathSeparator(String pathSeparator)Set the path separator to use for pattern parsing. |
Default path separator: "/"
Combines two patterns into a new pattern that is returned.
This implementation simply concatenates the two patterns, unless the first pattern
contains a file extension match (such as *.html. In that case, the second pattern
should be included in the first, or an IllegalArgumentException is thrown.
For example:
| Pattern 1 | Pattern 2 | Result |
|---|---|---|
| /hotels | null | /hotels |
null | /hotels | /hotels |
| /hotels | /bookings | /hotels/bookings |
| /hotels | bookings | /hotels/bookings |
| /hotels/* | /bookings | /hotels/bookings |
| /hotels/** | /bookings | /hotels/**/bookings |
| /hotels | {hotel} | /hotels/{hotel} |
| /hotels/* | {hotel} | /hotels/{hotel} |
| /hotels/** | {hotel} | /hotels/**/{hotel} |
| /*.html | /hotels.html | /hotels.html |
| /*.html | /hotels | /hotels.html |
| /*.html | /*.txt | IllegalArgumentException |
pattern1 - the first patternpattern2 - the second patternCount the occurrences of the substring in string s.
str - string to search in. Return 0 if this is null.sub - string to search for. Return 0 if this is null. Actually match the given path against the given pattern.
pattern - the pattern to match againstpath - the path String to testfullMatch - whether a full pattern match is required (else a pattern match
as far as the given base path goes is sufficient)true if the supplied path matched, false if it didn'tGiven 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 returns true for 'pattern' and 'path', but
does not enforce this.
Given a full path, returns a Comparator suitable for sorting patterns in order of explicitness.
The returned Comparator will {
/hotels/new/hotels/{hotel}/hotels/*The full path given as parameter is used to test for exact matches. So when the given path is /hotels/2,
the pattern /hotels/2 will be sorted before /hotels/1.
path - the full path to use for comparisonSet the path separator to use for pattern parsing. Default is "/", as in Ant.