Class RegexPathSpec
- All Implemented Interfaces:
Comparable<PathSpec>
,PathSpec
RegexPathSpec is a PathSpec implementation for a PathMappings
instance.
Supports the standard Java regex found in Pattern
.
Supports PathSpecGroup
for PathSpecGroup.EXACT
, PathSpecGroup.PREFIX_GLOB
, PathSpecGroup.MIDDLE_GLOB
, and PathSpecGroup.SUFFIX_GLOB
.
This is done by evaluating the signature or the provided regex pattern for what is a literal vs a glob (of any kind).
- Only literals, it's a
PathSpecGroup.EXACT
. - Starts with literals, ends with globs, it's a
PathSpecGroup.PREFIX_GLOB
- Starts with glob, has at least 1 literal, then any thing else, it's a
PathSpecGroup.SUFFIX_GLOB
- All other signatures are a
PathSpecGroup.MIDDLE_GLOB
The use of regex capture groups, regex character classes, regex quantifiers, and regex special contructs
will be identified as a glob (for signature determination), all other characters are identified
as literal. The regex ^
beginning of line, and regex $
end of line are ignored.
Support for MatchedPath
and PathMatch vs PathInfo
There's a few steps in evaluating the matched input path for determining where the split
in the input path should occur for MatchedPath.getPathMatch()
and MatchedPath.getPathInfo()
.
-
If there are no regex capturing groups,
the entire path is returned in
MatchedPath.getPathMatch()
, and a null returned forMatchedPath.getPathInfo()
-
If both the named regex capturing groups
name
andinfo
are present, then thename
group is returned inMatchedPath.getPathMatch()
and theinfo
group is returned inMatchedPath.getPathInfo()
-
If there is only 1 regex capturing group
-
If the named regex capturing group
name
is present, the input path up to the end of the capturing group is returned inMatchedPath.getPathMatch()
and any following characters (or null) are returned inMatchedPath.getPathInfo()
-
other wise the input path up to the start of the capturing group is returned
in
MatchedPath.getPathMatch()
and any following characters (or null) are returned inMatchedPath.getPathInfo()
/
AND the pathInfo doesn't start with/
then the slash is moved from pathMatch to pathInfo. -
If the named regex capturing group
-
All other RegexPathSpec signatures will return the entire path
in
MatchedPath.getPathMatch()
, and a null returned forMatchedPath.getPathInfo()
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionThe as-provided path spec.getGroup()
The spec group.protected Matcher
getMatcher
(String path) int
Get the number of path elements that this path spec declares.getPathInfo
(String path) Return the portion of the path that is after the path spec.getPathMatch
(String path) Return the portion of the path that matches a path spec.A simple prefix match for the pathspec or nullint
The length of the spec.A simple suffix match for the pathspec or nullGet the complete matched details of the provided path.boolean
Test to see if the provided path matches this path spec.Methods inherited from class org.eclipse.jetty.http.pathmap.AbstractPathSpec
compareTo, equals, hashCode, toString
-
Constructor Details
-
RegexPathSpec
-
-
Method Details
-
getMatcher
-
getSpecLength
public int getSpecLength()Description copied from interface:PathSpec
The length of the spec.- Returns:
- the length of the spec.
-
getGroup
Description copied from interface:PathSpec
The spec group.- Returns:
- the spec group.
-
getPathDepth
public int getPathDepth()Description copied from interface:PathSpec
Get the number of path elements that this path spec declares.This is used to determine longest match logic.
- Returns:
- the depth of the path segments that this spec declares
-
getPathInfo
Description copied from interface:PathSpec
Return the portion of the path that is after the path spec.- Parameters:
path
- the path to match against- Returns:
- the path info portion of the string
-
getPathMatch
Description copied from interface:PathSpec
Return the portion of the path that matches a path spec.- Parameters:
path
- the path to match against- Returns:
- the match, or null if no match at all
-
getDeclaration
Description copied from interface:PathSpec
The as-provided path spec.- Returns:
- the as-provided path spec
-
getPrefix
Description copied from interface:PathSpec
A simple prefix match for the pathspec or null- Returns:
- A simple prefix match for the pathspec or null
-
getSuffix
Description copied from interface:PathSpec
A simple suffix match for the pathspec or null- Returns:
- A simple suffix match for the pathspec or null
-
getPattern
-
matches
Description copied from interface:PathSpec
Test to see if the provided path matches this path spec. This can be more efficient thatPathSpec.matched(String)
if the details of the match are not required.- Parameters:
path
- the path to test- Returns:
- true if the path matches this path spec, false otherwise
- See Also:
-
matched
Description copied from interface:PathSpec
Get the complete matched details of the provided path.- Parameters:
path
- the path to test- Returns:
- the matched details, if a match was possible, or null if not able to be matched.
- See Also:
-