Class AntPathMatcher
- java.lang.Object
-
- org.onehippo.forge.content.exim.core.util.AntPathMatcher
-
public class AntPathMatcher extends Object
Note: Copied from the source oforg.apache.camel.util.AntPathMatcher
.PathMatcher implementation for Ant-style path patterns. Examples are provided below.
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
- matchescom/test.jsp
but alsocom/tast.jsp
orcom/txst.jsp
com/*.jsp
- matches all.jsp
files in thecom
directorycom/**/test.jsp
- matches alltest.jsp
files underneath thecom
pathorg/springframework/**/*.jsp
- matches all.jsp
files underneath theorg/springframework
pathorg/**/servlet/bla.jsp
- matchesorg/springframework/servlet/bla.jsp
but alsoorg/springframework/testing/servlet/bla.jsp
andorg/servlet/bla.jsp
-
-
Field Summary
Fields Modifier and Type Field Description static String
DEFAULT_PATH_SEPARATOR
Default path separator: "/"
-
Constructor Summary
Constructors Constructor Description AntPathMatcher()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
doMatch(String pattern, String path, boolean fullMatch, boolean isCaseSensitive)
Actually match the givenpath
against the givenpattern
.String
extractPathWithinPattern(String pattern, String path)
Given a pattern and a full path, determine the pattern-mapped part.boolean
isPattern(String path)
Check ifpath
is an ANT style pattern string.boolean
match(String pattern, String path)
Matches.boolean
match(String pattern, String path, boolean isCaseSensitive)
Match.boolean
matchStart(String pattern, String path)
Match starts.boolean
matchStart(String pattern, String path, boolean isCaseSensitive)
Match starts.void
setPathSeparator(String pathSeparator)
Set the path separator to use for pattern parsing.static String[]
tokenizeToStringArray(String str, String delimiters)
Tokenize the given String into a String array via a StringTokenizer.
-
-
-
Field Detail
-
DEFAULT_PATH_SEPARATOR
public static final String DEFAULT_PATH_SEPARATOR
Default path separator: "/"- See Also:
- Constant Field Values
-
-
Method Detail
-
setPathSeparator
public void setPathSeparator(String pathSeparator)
Set the path separator to use for pattern parsing. Default is "/", as in Ant.- Parameters:
pathSeparator
- path separator
-
isPattern
public boolean isPattern(String path)
Check ifpath
is an ANT style pattern string.- Parameters:
path
- path pattern- Returns:
- true if
path
is an ANT style pattern string
-
match
public boolean match(String pattern, String path)
Matches.- Parameters:
pattern
- patternpath
- path- Returns:
- true if matched
-
matchStart
public boolean matchStart(String pattern, String path)
Match starts.- Parameters:
pattern
- patternpath
- path- Returns:
- true if match starts
-
match
public boolean match(String pattern, String path, boolean isCaseSensitive)
Match.- Parameters:
pattern
- patternpath
- pathisCaseSensitive
- case sensitiveness- Returns:
- true if matches
-
matchStart
public boolean matchStart(String pattern, String path, boolean isCaseSensitive)
Match starts.- Parameters:
pattern
- patternpath
- pathisCaseSensitive
- case sensitiveness- Returns:
- true if match starts
-
doMatch
protected boolean doMatch(String pattern, String path, boolean fullMatch, boolean isCaseSensitive)
Actually match the givenpath
against 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)isCaseSensitive
- Whether or not matching should be performed case sensitively.- Returns:
true
if the suppliedpath
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)
returnstrue
for 'pattern
' and 'path
', but does not enforce this.- Parameters:
pattern
- patternpath
- path- Returns:
- extracted path within the pattern
- '
-
tokenizeToStringArray
public static String[] tokenizeToStringArray(String str, String delimiters)
Tokenize the given String into a String array via a StringTokenizer. Trims tokens and omits empty tokens.The given delimiters string is supposed to consist of any number of delimiter characters. Each of those characters can be used to separate tokens. A delimiter is always a single character; for multi-character delimiters, consider using
delimitedListToStringArray
- Parameters:
str
- the String to tokenizedelimiters
- the delimiter characters, assembled as String (each of those characters is individually considered as delimiter).- Returns:
- an array of the tokens
- See Also:
StringTokenizer
,String.trim()
-
-