|
Oracle® WebCenter Content Site Studio for External Applications Java API Reference 11g Release 1 (11.1.1) E17273-03 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object
oracle.stellent.wcm.common.utils.sitematcher.springutils.AntPathMatcher
public class AntPathMatcher
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:
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
directorycom/**/test.jsp
- matches all test.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
Field Summary | |
---|---|
static java.lang.String |
DEFAULT_PATH_SEPARATOR Default path separator: "/" |
Constructor Summary | |
---|---|
AntPathMatcher() |
Method Summary | |
---|---|
java.lang.String |
combine(java.lang.String pattern1, java.lang.String pattern2) Combines two patterns into a new pattern that is returned. |
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 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. |
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 a Comparator suitable for sorting patterns in order of explicitness. |
boolean |
isPattern(java.lang.String path) |
boolean |
match(java.lang.String pattern, java.lang.String path) |
boolean |
matchStart(java.lang.String pattern, java.lang.String path) |
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 |
---|
public static final java.lang.String DEFAULT_PATH_SEPARATOR
Constructor Detail |
---|
public AntPathMatcher()
Method Detail |
---|
public void setPathSeparator(java.lang.String pathSeparator)
public boolean isPattern(java.lang.String path)
public boolean match(java.lang.String pattern, java.lang.String path)
public boolean matchStart(java.lang.String pattern, java.lang.String path)
protected boolean doMatch(java.lang.String pattern, java.lang.String path, boolean fullMatch, java.util.Map<java.lang.String,java.lang.String> uriTemplateVariables)
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'tpublic java.lang.String extractPathWithinPattern(java.lang.String pattern, java.lang.String path)
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.
public java.util.Map<java.lang.String,java.lang.String> extractUriTemplateVariables(java.lang.String pattern, java.lang.String path)
public java.lang.String combine(java.lang.String pattern1, java.lang.String pattern2)
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 patternjava.lang.IllegalArgumentException
- when the two patterns cannot be combinedpublic java.util.Comparator<java.lang.String> getPatternComparator(java.lang.String path)
Comparator
suitable for sorting patterns in order of explicitness.
The returned Comparator
will 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/2
will be sorted before /hotels/1
.
path
- the full path to use for comparison
|
Oracle® WebCenter Content Site Studio for External Applications Java API Reference 11g Release 1 (11.1.1) E17273-03 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |