Class AntPathMatcher
- java.lang.Object
 - 
- com.jalios.util.AntPathMatcher
 
 
- 
public class AntPathMatcher extends java.lang.ObjectPathMatcher 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- matchescom/test.jspbut alsocom/tast.jsporcom/txst.jsp- 
 
com/*.jsp- matches all.jspfiles in thecomdirectory com/**/test.jsp- matches alltest.jspfiles underneath thecompathorg/springframework/**/*.jsp- matches all.jspfiles underneath theorg/springframeworkpathorg/**/servlet/bla.jsp- matchesorg/springframework/servlet/bla.jspbut alsoorg/springframework/testing/servlet/bla.jspandorg/servlet/bla.jsp
 
- 
- 
Field Summary
Fields Modifier and Type Field Description static java.lang.StringDEFAULT_PATH_SEPARATORDefault path separator: "/" 
- 
Constructor Summary
Constructors Constructor Description AntPathMatcher() 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Stringcombine(java.lang.String pattern1, java.lang.String pattern2)Combines two patterns into a new pattern that is returned.protected booleandoMatch(java.lang.String pattern, java.lang.String path, boolean fullMatch, java.util.Map<java.lang.String,java.lang.String> uriTemplateVariables)Actually match the givenpathagainst the givenpattern.java.lang.StringextractPathWithinPattern(java.lang.String pattern, java.lang.String path)Given a pattern and a full path, determine the pattern-mapped part.java.util.Map<java.lang.String,java.lang.String>extractUriTemplateVariables(java.lang.String pattern, java.lang.String path)java.util.Comparator<java.lang.String>getPatternComparator(java.lang.String path)Given a full path, returns aComparatorsuitable for sorting patterns in order of explicitness.booleanisPattern(java.lang.String path)booleanmatch(java.lang.String pattern, java.lang.String path)booleanmatchStart(java.lang.String pattern, java.lang.String path)voidsetPathSeparator(java.lang.String pathSeparator)Set the path separator to use for pattern parsing.voidsetTrimTokens(boolean trimTokens)Whether to trim tokenized paths and patterns. 
 - 
 
- 
- 
Field Detail
- 
DEFAULT_PATH_SEPARATOR
public static final java.lang.String DEFAULT_PATH_SEPARATOR
Default path separator: "/"- See Also:
 - Constant Field Values
 
 
 - 
 
- 
Method Detail
- 
setPathSeparator
public void setPathSeparator(java.lang.String pathSeparator)
Set the path separator to use for pattern parsing. Default is "/", as in Ant. 
- 
setTrimTokens
public void setTrimTokens(boolean trimTokens)
Whether to trim tokenized paths and patterns. 
- 
isPattern
public boolean isPattern(java.lang.String path)
 
- 
match
public boolean match(java.lang.String pattern, java.lang.String path) 
- 
matchStart
public boolean matchStart(java.lang.String pattern, java.lang.String path) 
- 
doMatch
protected boolean doMatch(java.lang.String pattern, java.lang.String path, boolean fullMatch, java.util.Map<java.lang.String,java.lang.String> uriTemplateVariables)Actually match the givenpathagainst the givenpattern.- Parameters:
 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)- Returns:
 trueif the suppliedpathmatched,falseif 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
match(java.lang.String, java.lang.String)returnstruefor 'pattern' and 'path', but does not enforce this. - '
 
- 
extractUriTemplateVariables
public java.util.Map<java.lang.String,java.lang.String> extractUriTemplateVariables(java.lang.String pattern, java.lang.String path) 
- 
combine
public java.lang.String combine(java.lang.String pattern1, java.lang.String pattern2)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 anIllegalArgumentExceptionis thrown.For example:
combine examples 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 - Parameters:
 pattern1- the first patternpattern2- the second pattern- Returns:
 - the combination of the two patterns
 - Throws:
 java.lang.IllegalArgumentException- when the two patterns cannot be combined
 
- 
getPatternComparator
public java.util.Comparator<java.lang.String> getPatternComparator(java.lang.String path)
Given a full path, returns aComparatorsuitable for sorting patterns in order of explicitness.The returned
Comparatorwill sort a list so that more specific patterns (without uri templates or wild cards) come before generic patterns. So given a list with the following patterns:/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/2will be sorted before/hotels/1.- Parameters:
 path- the full path to use for comparison- Returns:
 - a comparator capable of sorting patterns in order of explicitness
 
 
 - 
 
 -