class InternalPathPatternParser
extends java.lang.Object
PathElement
s in a linked list. Instances are reusable but are not thread-safe.Modifier and Type | Field and Description |
---|---|
private java.util.List<java.lang.String> |
capturedVariableNames |
private PathElement |
currentPE |
private PathElement |
headPE |
private boolean |
insideVariableCapture |
private boolean |
isCaptureTheRestVariable |
private PathPatternParser |
parser |
private int |
pathElementStart |
private char[] |
pathPatternData |
private int |
pathPatternLength |
(package private) int |
pos |
private int |
singleCharWildcardCount |
private int |
variableCaptureCount |
private int |
variableCaptureStart |
private boolean |
wildcard |
Constructor and Description |
---|
InternalPathPatternParser(PathPatternParser parentParser)
Package private constructor for use in
PathPatternParser.parse(java.lang.String) . |
Modifier and Type | Method and Description |
---|---|
private PathElement |
createPathElement()
Used the knowledge built up whilst processing since the last path element to determine what kind of path
element to create.
|
private int |
findRegexStart(char[] data,
int offset)
For a path element representing a captured variable, locate the constraint pattern.
|
private char[] |
getPathElementText() |
PathPattern |
parse(java.lang.String pathPattern)
Package private delegate for
PathPatternParser.parse(String) . |
private boolean |
peekDoubleWildcard()
After processing a separator, a quick peek whether it is followed by **
(and only ** before the end of the pattern or the next separator)
|
private void |
pushPathElement(PathElement newPathElement) |
private void |
recordCapturedVariable(int pos,
java.lang.String variableName)
Record a new captured variable.
|
private void |
resetPathElementState()
Reset all the flags and position markers computed during path element processing.
|
private void |
skipCaptureRegex()
Just hit a ':' and want to jump over the regex specification for this
variable.
|
private final PathPatternParser parser
private char[] pathPatternData
private int pathPatternLength
int pos
private int singleCharWildcardCount
private boolean wildcard
private boolean isCaptureTheRestVariable
private boolean insideVariableCapture
private int variableCaptureCount
private int pathElementStart
private int variableCaptureStart
@Nullable private java.util.List<java.lang.String> capturedVariableNames
@Nullable private PathElement headPE
@Nullable private PathElement currentPE
InternalPathPatternParser(PathPatternParser parentParser)
PathPatternParser.parse(java.lang.String)
.parentParser
- reference back to the stateless, public parserpublic PathPattern parse(java.lang.String pathPattern) throws PatternParseException
PathPatternParser.parse(String)
.PatternParseException
private void skipCaptureRegex()
Nested {...} pairs don't have to be escaped: /abc/{var:x{1,2}}/def
An escaped } will not be treated as the end of the regex: /abc/{var:x\\{y:}/def
A separator that should not indicate the end of the regex can be escaped:
private boolean peekDoubleWildcard()
private void pushPathElement(PathElement newPathElement)
newPathElement
- the new path element to add to the chain being builtprivate char[] getPathElementText()
private PathElement createPathElement()
private int findRegexStart(char[] data, int offset)
data
- a complete path expression, e.g. /aaa/bbb/{ccc:...}offset
- the start of the capture pattern of interestprivate void resetPathElementState()
private void recordCapturedVariable(int pos, java.lang.String variableName)