org.apache.struts.util

Class WildcardHelper


public class WildcardHelper
extends java.lang.Object

This class is an utility class that perform wilcard-patterns matching and isolation taken from Apache Cocoon.
Version:
$Rev: 54929 $ $Date: 2004-10-16 17:38:42 +0100 (Sat, 16 Oct 2004) $
Since:
Struts 1.2

Field Summary

protected static int
MATCH_BEGIN
The int representing begin in the pattern int [].
protected static int
MATCH_END
The int value that terminates the pattern int [].
protected static int
MATCH_FILE
The int representing '*' in the pattern int [].
protected static int
MATCH_PATH
The int representing '**' in the pattern int [].
protected static int
MATCH_THEEND
The int representing end in pattern int [].

Method Summary

int[]
compilePattern(String data)
Translate the given String into a int [] representing the pattern matchable by this class.
protected int
indexOfArray(r[] , int rpos, int rend, d[] , int dpos)
Get the offset of a part of an int array within a char array.
protected int
lastIndexOfArray(r[] , int rpos, int rend, d[] , int dpos)
Get the offset of a last occurance of an int array within a char array.
boolean
match(Map map, String data, int[] expr)
Match a pattern agains a string and isolates wildcard replacement into a Stack.
protected boolean
matchArray(r[] , int rpos, int rend, d[] , int dpos)
Matches elements of array r from rpos to rend with array d, starting from dpos.

Field Details

MATCH_BEGIN

protected static final int MATCH_BEGIN
The int representing begin in the pattern int [].
Field Value:
-4

MATCH_END

protected static final int MATCH_END
The int value that terminates the pattern int [].
Field Value:
-3

MATCH_FILE

protected static final int MATCH_FILE
The int representing '*' in the pattern int [].
Field Value:
-1

MATCH_PATH

protected static final int MATCH_PATH
The int representing '**' in the pattern int [].
Field Value:
-2

MATCH_THEEND

protected static final int MATCH_THEEND
The int representing end in pattern int [].
Field Value:
-5

Method Details

compilePattern

public int[] compilePattern(String data)
Translate the given String into a int [] representing the pattern matchable by this class.
This function translates a String 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).

indexOfArray

protected int indexOfArray(r[] ,
                           int rpos,
                           int rend,
                           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:
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.
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.

lastIndexOfArray

protected int lastIndexOfArray(r[] ,
                               int rpos,
                               int rend,
                               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:
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.
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.

match

public boolean match(Map map,
                     String data,
                     int[] expr)
Match a pattern agains a string and isolates wildcard replacement into a Stack.
Parameters:
map - The map to store matched values
data - The string to match
expr - The compiled wildcard expression
Returns:
True if a match

matchArray

protected boolean matchArray(r[] ,
                             int rpos,
                             int rend,
                             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:
rpos - The index of the first character in r to look for.
rend - The index of the last character in r to look for.
dpos - The starting offset in d for the matching.
Returns:
true if array d starts from portion of array r.

Copyright B) 2000-2007 - The Apache Software Foundation