Package org.apache.struts2.util
Class NamedVariablePatternMatcher
java.lang.Object
org.apache.struts2.util.NamedVariablePatternMatcher
- All Implemented Interfaces:
PatternMatcher<NamedVariablePatternMatcher.CompiledPattern>
public class NamedVariablePatternMatcher
extends Object
implements PatternMatcher<NamedVariablePatternMatcher.CompiledPattern>
An implementation of a pattern matcher that uses simple named wildcards. The named wildcards are defined using the
{VARIABLE_NAME}
syntax and will match any characters that aren't '/'. Internally, the pattern is
converted into a regular expression where the named wildcard will be translated into ([^/]+)
so that
at least one character must match in order for the wildcard to be matched successfully. Matched values will be
available in the variable map, indexed by the name they were given in the pattern.
For example, the following patterns will be processed as so:
Pattern | Example | Variable Map Contents |
---|---|---|
/animals/{animal} |
/animals/dog |
{animal -> dog} |
/animals/{animal}/tag/No{id} |
/animals/dog/tag/No23 |
{animal -> dog, id -> 23} |
/{language} |
/en |
{language -> en} |
Escaping hasn't been implemented since the intended use of these patterns will be in matching URLs.
- Since:
- 2.1
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Stores the compiled pattern and the variable names matches will correspond to. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptioncompilePattern
(String data) Compiles the pattern.boolean
Determines if the pattern is a simple literal string or contains wildcards that will need to be processedboolean
Tries to process the data against the compiled expression.
-
Constructor Details
-
NamedVariablePatternMatcher
public NamedVariablePatternMatcher()
-
-
Method Details
-
isLiteral
Description copied from interface:PatternMatcher
Determines if the pattern is a simple literal string or contains wildcards that will need to be processed- Specified by:
isLiteral
in interfacePatternMatcher<NamedVariablePatternMatcher.CompiledPattern>
- Parameters:
pattern
- The string pattern- Returns:
- True if the pattern doesn't contain processing elements, false otherwise
-
compilePattern
Compiles the pattern.- Specified by:
compilePattern
in interfacePatternMatcher<NamedVariablePatternMatcher.CompiledPattern>
- Parameters:
data
- The pattern, must not be null or empty- Returns:
- The compiled pattern, null if the pattern was null or empty
-
match
public boolean match(Map<String, String> map, String data, NamedVariablePatternMatcher.CompiledPattern expr) Tries to process the data against the compiled expression. If successful, the map will contain the matched data, using the specified variable names in the original pattern.- Specified by:
match
in interfacePatternMatcher<NamedVariablePatternMatcher.CompiledPattern>
- Parameters:
map
- The map of variablesdata
- The data to matchexpr
- The compiled pattern- Returns:
- True if matched, false if not matched, the data was null, or the data was an empty string
-