Package io.micronaut.core.util
Class AntPathMatcher
java.lang.Object
io.micronaut.core.util.AntPathMatcher
- All Implemented Interfaces:
PathMatcher
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 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/apache/shiro/**/*.jsp
- matches all.jsp
files underneath theorg/apache/shiro
pathorg/**/servlet/bla.jsp
- matchesorg/apache/shiro/servlet/bla.jsp
but alsoorg/apache/shiro/testing/servlet/bla.jsp
andorg/servlet/bla.jsp
N.B.: This class was forked from Apache Shiro with modifications.
As per the Apache 2.0 license, the original copyright notice and all author and copyright information have remained intact.
- Since:
- 1.0
-
Field Summary
Fields inherited from interface io.micronaut.core.util.PathMatcher
ANT, REGEX
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
Actually match the givenpath
against the givenpattern
.extractPathWithinPattern
(String pattern, String path) Given a pattern and a full path, determine the pattern-mapped part.boolean
boolean
Returnstrue
if the givensource
matches the specifiedpattern
,false
otherwise.void
setPathSeparator
(String pathSeparator) Set the path separator to use for pattern parsing.
-
Field Details
-
DEFAULT_PATH_SEPARATOR
Default path separator: "/".- See Also:
-
-
Constructor Details
-
AntPathMatcher
public AntPathMatcher()
-
-
Method Details
-
setPathSeparator
Set the path separator to use for pattern parsing. Default is "/", as in Ant.- Parameters:
pathSeparator
- The path separator for the pattern parsing
-
isPattern
- Parameters:
path
- The path- Returns:
- Whether is pattern
-
matches
Description copied from interface:PathMatcher
Returnstrue
if the givensource
matches the specifiedpattern
,false
otherwise.- Specified by:
matches
in interfacePathMatcher
- Parameters:
pattern
- the pattern to match againstsource
- the source to match- Returns:
true
if the givensource
matches the specifiedpattern
,false
otherwise.
-
doMatch
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)- Returns:
true
if the suppliedpath
matched,false
if it didn't
-
extractPathWithinPattern
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
matches(String, String)
returnstrue
for 'pattern
' and 'path
', but does not enforce this.- Parameters:
pattern
- The patternpath
- The path- Returns:
- The pattern-mapped part
- '
-