Package org.apache.tiles.util
Class WildcardHelper
- java.lang.Object
-
- org.apache.tiles.util.WildcardHelper
-
public class WildcardHelper extends java.lang.Object
This class is an utility class that perform wilcard-patterns matching and isolation taken from Apache Struts that is taken, in turn, from Apache Struts.- Since:
- 2.1.0
- Version:
- $Rev: 829574 $ $Date: 2009-10-26 01:15:31 +1100 (Mon, 26 Oct 2009) $
-
-
Field Summary
Fields Modifier and Type Field Description protected static int
MATCH_BEGIN
The int representing begin in the patternint []
.protected static int
MATCH_END
The int value that terminates the patternint []
.protected static int
MATCH_FILE
The int representing '*' in the patternint []
.protected static int
MATCH_PATH
The int representing '**' in the patternint []
.protected static int
MATCH_THEEND
The int representing end in patternint []
.
-
Constructor Summary
Constructors Constructor Description WildcardHelper()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int[]
compilePattern(java.lang.String data)
Translate the givenString
into aint []
representing the pattern matchable by this class.static java.lang.String
convertParam(java.lang.String val, java.util.Map<java.lang.Integer,java.lang.String> vars)
Inserts into a value wildcard-matched strings where specified.protected int
indexOfArray(int[] r, int rpos, int rend, char[] d, int dpos)
Get the offset of a part of an int array within a char array.protected int
lastIndexOfArray(int[] r, int rpos, int rend, char[] d, int dpos)
Get the offset of a last occurance of an int array within a char array.java.util.List<java.lang.String>
match(java.lang.String data, int[] expr)
Match a pattern agains a string and isolates wildcard replacement into aStack
.protected boolean
matchArray(int[] r, int rpos, int rend, char[] d, int dpos)
Matches elements of array r from rpos to rend with array d, starting from dpos.
-
-
-
Field Detail
-
MATCH_FILE
protected static final int MATCH_FILE
The int representing '*' in the patternint []
.- Since:
- 2.1.0
- See Also:
- Constant Field Values
-
MATCH_PATH
protected static final int MATCH_PATH
The int representing '**' in the patternint []
.- Since:
- 2.1.0
- See Also:
- Constant Field Values
-
MATCH_BEGIN
protected static final int MATCH_BEGIN
The int representing begin in the patternint []
.- Since:
- 2.1.0
- See Also:
- Constant Field Values
-
MATCH_THEEND
protected static final int MATCH_THEEND
The int representing end in patternint []
.- Since:
- 2.1.0
- See Also:
- Constant Field Values
-
MATCH_END
protected static final int MATCH_END
The int value that terminates the patternint []
.- Since:
- 2.1.0
- See Also:
- Constant Field Values
-
-
Method Detail
-
compilePattern
public int[] compilePattern(java.lang.String data)
Translate the given
String
into aint []
representing the pattern matchable by this class.
This function translates aString
into an int array converting the special '*' and '\' characters.
Here is how the conversion algorithm works:- The '*' character is converted to MATCH_FILE, meaning that zero or more characters (excluding the path separator '/') are to be matched.
- The '**' sequence is converted to MATCH_PATH, meaning that zero or more characters (including the path separator '/') are to be matched.
- The '\' character is used as an escape sequence ('\*' is translated in '*', not in MATCH_FILE). If an exact '\' character is to be matched the source string must contain a '\\'. sequence.
When more than two '*' characters, not separated by another character, are found their value is considered as '**' (MATCH_PATH).
The array is always terminated by a special value (MATCH_END).
All MATCH* values are less than zero, while normal characters are equal or greater.- Parameters:
data
- The string to translate.- Returns:
- The encoded string as an int array, terminated by the MATCH_END value (don't consider the array length).
- Throws:
java.lang.NullPointerException
- If data is null.- Since:
- 2.1.0
-
match
public java.util.List<java.lang.String> match(java.lang.String data, int[] expr)
Match a pattern agains a string and isolates wildcard replacement into aStack
.- Parameters:
data
- The string to matchexpr
- The compiled wildcard expression- Returns:
- The list of matched variables, or
null
if it does not match. - Throws:
java.lang.NullPointerException
- If any parameters are null- Since:
- 2.2.0
-
indexOfArray
protected int indexOfArray(int[] r, int rpos, int rend, char[] d, int dpos)
Get the offset of a part of an int array within a char array.
This method return the index in d of the first occurrence after dpos of that part of array specified by r, starting at rpos and terminating at rend.- Parameters:
r
- The array containing the data that need to be matched in d.rpos
- The index of the first character in r to look for.rend
- The index of the last character in r to look for plus 1.d
- The array of char that should contain a part of r.dpos
- The starting offset in d for the matching.- Returns:
- The offset in d of the part of r matched in d or -1 if that was not found.
- Since:
- 2.1.0
-
lastIndexOfArray
protected int lastIndexOfArray(int[] r, int rpos, int rend, char[] d, int dpos)
Get the offset of a last occurance of an int array within a char array.
This method return the index in d of the last occurrence after dpos of that part of array specified by r, starting at rpos and terminating at rend.- Parameters:
r
- The array containing the data that need to be matched in d.rpos
- The index of the first character in r to look for.rend
- The index of the last character in r to look for plus 1.d
- The array of char that should contain a part of r.dpos
- The starting offset in d for the matching.- Returns:
- The offset in d of the last part of r matched in d or -1 if that was not found.
- Since:
- 2.1.0
-
matchArray
protected boolean matchArray(int[] r, int rpos, int rend, char[] d, int dpos)
Matches elements of array r from rpos to rend with array d, starting from dpos.
This method return true if elements of array r from rpos to rend equals elements of array d starting from dpos to dpos+(rend-rpos).- Parameters:
r
- The array containing the data that need to be matched in d.rpos
- The index of the first character in r to look for.rend
- The index of the last character in r to look for.d
- The array of char that should start from a part of r.dpos
- The starting offset in d for the matching.- Returns:
- true if array d starts from portion of array r.
- Since:
- 2.1.0
-
convertParam
public static java.lang.String convertParam(java.lang.String val, java.util.Map<java.lang.Integer,java.lang.String> vars)
Inserts into a value wildcard-matched strings where specified.
- Parameters:
val
- The value to convertvars
- A Map of wildcard-matched strings- Returns:
- The new value
- Since:
- 2.1.0
-
-