Author: scolebourne
Date: Mon Aug 15 13:58:23 2005
New Revision: 232878
URL: http://svn.apache.org/viewcvs?rev=232878&view=rev
Log:
Remove StrTokenizer.Matcher, replace with StrMatcher
Modified:
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrTokenizer.java
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/VariableFormatter.java
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrTokenizerTest.java
Modified:
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrTokenizer.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrTokenizer.java?rev=232878&r1=232877&r2=232878&view=diff
==============================================================================
---
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrTokenizer.java
(original)
+++
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrTokenizer.java
Mon Aug 15 13:58:23 2005
@@ -16,7 +16,6 @@
package org.apache.commons.lang.text;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.ListIterator;
@@ -77,64 +76,22 @@
*/
public class StrTokenizer implements ListIterator, Cloneable {
- /**
- * Matches the comma character.
- * Best used for <code>delimiter</code>.
- */
- public static final Matcher COMMA_MATCHER = new CharMatcher(',');
- /**
- * Matches the tab character.
- * Best used for <code>delimiter</code>.
- */
- public static final Matcher TAB_MATCHER = new CharMatcher('\t');
- /**
- * Matches the space character.
- * Best used for <code>delimiter</code>.
- */
- public static final Matcher SPACE_MATCHER = new CharMatcher(' ');
- /**
- * Matches the same characters as StringTokenizer,
- * namely space, tab, newline, formfeed.
- * Best used for <code>delimiter</code>.
- */
- public static final Matcher SPLIT_MATCHER = createCharSetMatcher("
\t\n\r\f");
- /**
- * Matches the double quote character.
- * Best used for <code>quote</code>.
- */
- public static final Matcher SINGLE_QUOTE_MATCHER = new CharMatcher('\'');
- /**
- * Matches the double quote character.
- * Best used for <code>quote</code>.
- */
- public static final Matcher DOUBLE_QUOTE_MATCHER = new CharMatcher('"');
- /**
- * Matches the String trim() whitespace characters.
- * Best used for <code>trimmer</code>.
- */
- public static final Matcher TRIM_MATCHER = new TrimMatcher();
- /**
- * Matches no characters. Don't use this for delimiters!
- * Best used for <code>trimmer</code>.
- */
- public static final Matcher NONE_MATCHER = new NoMatcher();
-
private static final StrTokenizer CSV_TOKENIZER_PROTOTYPE;
private static final StrTokenizer TSV_TOKENIZER_PROTOTYPE;
static {
CSV_TOKENIZER_PROTOTYPE = new StrTokenizer();
- CSV_TOKENIZER_PROTOTYPE.setDelimiterMatcher(COMMA_MATCHER);
- CSV_TOKENIZER_PROTOTYPE.setQuoteMatcher(DOUBLE_QUOTE_MATCHER);
- CSV_TOKENIZER_PROTOTYPE.setIgnoredMatcher(NONE_MATCHER);
- CSV_TOKENIZER_PROTOTYPE.setTrimmerMatcher(TRIM_MATCHER);
+ CSV_TOKENIZER_PROTOTYPE.setDelimiterMatcher(StrMatcher.commaMatcher());
+
CSV_TOKENIZER_PROTOTYPE.setQuoteMatcher(StrMatcher.doubleQuoteMatcher());
+ CSV_TOKENIZER_PROTOTYPE.setIgnoredMatcher(StrMatcher.noneMatcher());
+ CSV_TOKENIZER_PROTOTYPE.setTrimmerMatcher(StrMatcher.trimMatcher());
CSV_TOKENIZER_PROTOTYPE.setEmptyTokenAsNull(false);
CSV_TOKENIZER_PROTOTYPE.setIgnoreEmptyTokens(false);
TSV_TOKENIZER_PROTOTYPE = new StrTokenizer();
- TSV_TOKENIZER_PROTOTYPE.setDelimiterMatcher(TAB_MATCHER);
- TSV_TOKENIZER_PROTOTYPE.setQuoteMatcher(DOUBLE_QUOTE_MATCHER);
- TSV_TOKENIZER_PROTOTYPE.setIgnoredMatcher(NONE_MATCHER);
- TSV_TOKENIZER_PROTOTYPE.setTrimmerMatcher(TRIM_MATCHER);
+ TSV_TOKENIZER_PROTOTYPE.setDelimiterMatcher(StrMatcher.tabMatcher());
+
TSV_TOKENIZER_PROTOTYPE.setQuoteMatcher(StrMatcher.doubleQuoteMatcher());
+ TSV_TOKENIZER_PROTOTYPE.setIgnoredMatcher(StrMatcher.noneMatcher());
+ TSV_TOKENIZER_PROTOTYPE.setTrimmerMatcher(StrMatcher.trimMatcher());
TSV_TOKENIZER_PROTOTYPE.setEmptyTokenAsNull(false);
TSV_TOKENIZER_PROTOTYPE.setIgnoreEmptyTokens(false);
}
@@ -149,13 +106,13 @@
private int tokenPos;
/** The delimiter matcher */
- private Matcher delim = SPLIT_MATCHER;
+ private StrMatcher delim = StrMatcher.splitMatcher();
/** The quote matcher */
- private Matcher quote = NONE_MATCHER;
+ private StrMatcher quote = StrMatcher.noneMatcher();
/** The ignored matcher */
- private Matcher ignored = NONE_MATCHER;
+ private StrMatcher ignored = StrMatcher.noneMatcher();
/** The trimmer matcher */
- private Matcher trimmer = NONE_MATCHER;
+ private StrMatcher trimmer = StrMatcher.noneMatcher();
/** Whether to return empty tokens as null */
private boolean emptyAsNull = false;
@@ -163,65 +120,6 @@
private boolean ignoreEmptyTokens = true;
//-----------------------------------------------------------------------
- /**
- * Constructor that creates a matcher from a set of characters.
- *
- * @param chars the characters to match, must not be null
- * @return A new matcher for the given char[].
- * @throws IllegalArgumentException if the character set is null or empty
- */
- public static Matcher createCharSetMatcher(char[] chars) {
- if (chars == null || chars.length == 0) {
- throw new IllegalArgumentException("Characters must not be null or
empty");
- }
- if (chars.length == 1) {
- return new CharMatcher(chars[0]);
- }
- return new CharSetMatcher(chars);
- }
-
- /**
- * Constructor that creates a matcher from a string representing a set of
characters.
- *
- * @param chars the characters to match, must not be null
- * @return A new Matcher for the given characters.
- * @throws IllegalArgumentException if the character set is null or empty
- */
- public static Matcher createCharSetMatcher(String chars) {
- if (chars == null || chars.length() == 0) {
- throw new IllegalArgumentException("Characters must not be null or
empty");
- }
- if (chars.length() == 1) {
- return new CharMatcher(chars.charAt(0));
- }
- return new CharSetMatcher(chars.toCharArray());
- }
-
- /**
- * Constructor that creates a matcher from a character.
- *
- * @param ch the character to match, must not be null
- * @return A new Matcher for the given char.
- */
- public static Matcher createCharMatcher(char ch) {
- return new CharMatcher(ch);
- }
-
- /**
- * Constructor that creates a matcher from a string.
- *
- * @param str the string to match, must not be null
- * @return A new Matcher for the given String.
- * @throws IllegalArgumentException if the string is null or empty
- */
- public static Matcher createStringMatcher(String str) {
- if (str == null || str.length() == 0) {
- throw new IllegalArgumentException("String must not be null or
empty");
- }
- return new StringMatcher(str);
- }
-
- //-----------------------------------------------------------------------
/**
* Returns a clone of <code>CSV_TOKENIZER_PROTOTYPE</code>.
@@ -376,7 +274,7 @@
* @param input the string which is to be parsed
* @param delim the field delimiter matcher
*/
- public StrTokenizer(String input, Matcher delim) {
+ public StrTokenizer(String input, StrMatcher delim) {
this(input);
setDelimiterMatcher(delim);
}
@@ -402,7 +300,7 @@
* @param delim the field delimiter matcher
* @param quote the field quoted string matcher
*/
- public StrTokenizer(String input, Matcher delim, Matcher quote) {
+ public StrTokenizer(String input, StrMatcher delim, StrMatcher quote) {
this(input, delim);
setQuoteMatcher(quote);
}
@@ -447,7 +345,7 @@
* @param input the string which is to be parsed, cloned
* @param delim the field delimiter matcher
*/
- public StrTokenizer(char[] input, Matcher delim) {
+ public StrTokenizer(char[] input, StrMatcher delim) {
this(input);
setDelimiterMatcher(delim);
}
@@ -473,7 +371,7 @@
* @param delim the field delimiter character
* @param quote the field quoted string character
*/
- public StrTokenizer(char[] input, Matcher delim, Matcher quote) {
+ public StrTokenizer(char[] input, StrMatcher delim, StrMatcher quote) {
this(input, delim);
setQuoteMatcher(quote);
}
@@ -685,7 +583,7 @@
// Handle the special case where the very last
// character is a delimiter, in which case, we
// need another empty string
- if (start == len && delim.isMatch(chars, len, start - 1) == 1) {
+ if (start == len && delim.isMatch(chars, start - 1, 0, len) == 1) {
// Add the token, following the rules
// in this object
addToken(tokens, "");
@@ -734,9 +632,9 @@
int delimLen = 0;
int quoteLen = 0;
while (start < len &&
- (ignoreLen = ignored.isMatch(chars, len, start)) >= 1 &&
- (delimLen = delim.isMatch(chars, len, start)) < 1 &&
- (quoteLen = quote.isMatch(chars, len, start)) < 1) {
+ (ignoreLen = ignored.isMatch(chars, start, 0, len)) >= 1 &&
+ (delimLen = delim.isMatch(chars, start, 0, len)) < 1 &&
+ (quoteLen = quote.isMatch(chars, start, 0, len)) < 1) {
start += ignoreLen;
}
@@ -744,9 +642,9 @@
return start;
} else {
// lengths not setup
- if ((delimLen = delim.isMatch(chars, len, start)) >= 1) {
+ if ((delimLen = delim.isMatch(chars, start, 0, len)) >= 1) {
start += delimLen;
- } else if ((quoteLen = quote.isMatch(chars, len, start)) >= 1) {
+ } else if ((quoteLen = quote.isMatch(chars, start, 0, len)) >= 1) {
start = readQuoted(start + quoteLen, cbuf, token);
} else {
start = readUnquoted(start, token);
@@ -807,7 +705,7 @@
// followed by a second quote. If so, then we need
// to actually put the quote character into the token
// rather than end the token.
- if ((quoteLen = quote.isMatch(chars, len, pos)) >= 1) {
+ if ((quoteLen = quote.isMatch(chars, pos, 0, len)) >= 1) {
if (pos + 1 < len && chars[pos + 1] == chars[pos]) {
cbuf[cbufcnt++] = chars[pos];
pos += 2;
@@ -828,10 +726,10 @@
// the character
else {
// If we're
- if ((delimLen = delim.isMatch(chars, len, pos)) >= 1) {
+ if ((delimLen = delim.isMatch(chars, pos, 0, len)) >= 1) {
done = true;
} else {
- if ((quoteLen = quote.isMatch(chars, len, pos)) >= 1) {
+ if ((quoteLen = quote.isMatch(chars, pos, 0, len)) >= 1) {
quoting = true;
pos += quoteLen;
} else {
@@ -862,23 +760,23 @@
int len = chars.length;
int pos = start;
int delimLen = 0;
- while (pos < len && (delimLen = delim.isMatch(chars, len, pos)) < 1) {
+ while (pos < len && (delimLen = delim.isMatch(chars, pos, 0, len)) <
1) {
pos++;
}
/* Trim string based on the trimmer matcher */
- while (trimmer.isMatch(chars, 1, start) > 0) {
+ while (trimmer.isMatch(chars, start, 0, len) > 0) {
start++;
}
int length = Math.min(pos, len) - start;
- while (trimmer.isMatch(chars, 1, start + length - 1) > 0) {
+ while (trimmer.isMatch(chars, start + length - 1, 0, len) > 0) {
length--;
}
for (int i=0;i<length;i++) {
- if (ignored.isMatch(chars, 1, start + i) == 0) {
+ if (ignored.isMatch(chars, start + i, 0, len) == 0) {
token.append(chars[start + i]);
}
}
@@ -894,7 +792,7 @@
*
* @return the delimiter matcher in use
*/
- public Matcher getDelimiterMatcher() {
+ public StrMatcher getDelimiterMatcher() {
return delim;
}
@@ -905,9 +803,9 @@
*
* @param delim the delimiter matcher to use
*/
- public void setDelimiterMatcher(Matcher delim) {
+ public void setDelimiterMatcher(StrMatcher delim) {
if (delim == null) {
- this.delim = NONE_MATCHER;
+ this.delim = StrMatcher.noneMatcher();
} else {
this.delim = delim;
}
@@ -919,7 +817,7 @@
* @param delim the delimiter character to use
*/
public void setDelimiterChar(char delim) {
- setDelimiterMatcher(new CharMatcher(delim));
+ setDelimiterMatcher(StrMatcher.charMatcher(delim));
}
/**
@@ -928,13 +826,7 @@
* @param delim the delimiter character to use
*/
public void setDelimiterString(String delim) {
- if (delim == null || delim.length() == 0) {
- setDelimiterMatcher(NONE_MATCHER);
- } else if (delim.length() == 1) {
- setDelimiterMatcher(new CharMatcher(delim.charAt(0)));
- } else {
- setDelimiterMatcher(new StringMatcher(delim));
- }
+ setDelimiterMatcher(StrMatcher.stringMatcher(delim));
}
// Quote
@@ -948,7 +840,7 @@
*
* @return the quote matcher in use
*/
- public Matcher getQuoteMatcher() {
+ public StrMatcher getQuoteMatcher() {
return quote;
}
@@ -960,7 +852,7 @@
*
* @param quote the quote matcher to use, null ignored
*/
- public void setQuoteMatcher(Matcher quote) {
+ public void setQuoteMatcher(StrMatcher quote) {
if (quote != null) {
this.quote = quote;
}
@@ -975,7 +867,7 @@
* @param quote the quote character to use
*/
public void setQuoteChar(char quote) {
- setQuoteMatcher(new CharMatcher(quote));
+ setQuoteMatcher(StrMatcher.charMatcher(quote));
}
// Ignored
@@ -989,7 +881,7 @@
*
* @return the ignored matcher in use
*/
- public Matcher getIgnoredMatcher() {
+ public StrMatcher getIgnoredMatcher() {
return ignored;
}
@@ -1001,7 +893,7 @@
*
* @param ignored the ignored matcher to use, null ignored
*/
- public void setIgnoredMatcher(Matcher ignored) {
+ public void setIgnoredMatcher(StrMatcher ignored) {
if (ignored != null) {
this.ignored = ignored;
}
@@ -1016,7 +908,7 @@
* @param ignored the ignored character to use
*/
public void setIgnoredChar(char ignored) {
- setIgnoredMatcher(new CharMatcher(ignored));
+ setIgnoredMatcher(StrMatcher.charMatcher(ignored));
}
// Trimmer
@@ -1029,7 +921,7 @@
*
* @return the trimmer matcher in use
*/
- public Matcher getTrimmerMatcher() {
+ public StrMatcher getTrimmerMatcher() {
return trimmer;
}
@@ -1039,7 +931,7 @@
*
* @param trimmer the trimmer matcher to use, null ignored
*/
- public void setTrimmerMatcher(Matcher trimmer) {
+ public void setTrimmerMatcher(StrMatcher trimmer) {
if (trimmer != null) {
this.trimmer = trimmer;
}
@@ -1115,188 +1007,6 @@
} catch (CloneNotSupportedException ex) {
return null;
- }
- }
-
- //-----------------------------------------------------------------------
- /**
- * Defines the interface used to match a set of characters during
tokenization.
- * Standard implementations of this interface are provided in the library.
- * These are accessed via the create*() factory methods on StrTokenizer.
- * If your application needs more unusual matching, implement this
interface directly.
- */
- public static interface Matcher {
- /**
- * Returns the number of matching characters, zero for no match.
- * <p>
- * This method is called to check for a match.
- * The parameter <code>pos</code> represents the current position to be
- * checked in the string <code>text</code> (a character array which
must
- * not be changed).
- * The text length is also provided for efficiency.
- * The API guarantees that <code>pos</code> is a valid index for
<code>text</code>.
- * <p>
- * The matching code may check one character or many.
- * It must return zero for no match, or a positive number if a match
was found.
- * The number indicates the number of characters that matched.
- *
- * @param text the text content to match against, do not change
- * @param textLen the length of the text
- * @param pos the starting position for the match, valid for text
- * @return the number of matching characters, zero for no match
- */
- int isMatch(char[] text, int textLen, int pos);
- }
-
- //-----------------------------------------------------------------------
- /**
- * Class used to define a set of characters for matching purposes.
- */
- public static final class CharSetMatcher implements Matcher {
- private char[] chars;
-
- /**
- * Constructor that creates a matcher from a character array.
- *
- * @param chars the characters to match, must not be null
- */
- public CharSetMatcher(char chars[]) {
- super();
- this.chars = (char[]) chars.clone();
- Arrays.sort(this.chars);
- }
-
- /**
- * Returns whether or not the given charatcer matches.
- *
- * @param text the text content to match against
- * @param textLen the length of the text
- * @param pos the starting position
- * @return the number of matching characters, zero for no match
- */
- public int isMatch(char[] text, int textLen, int pos) {
- return Arrays.binarySearch(chars, text[pos]) >= 0 ? 1 : 0;
- }
- }
-
- //-----------------------------------------------------------------------
- /**
- * Class used to define a character for matching purposes.
- */
- static final class CharMatcher implements Matcher {
- private char ch;
-
- /**
- * Constructor that creates a matcher that matches a single character.
- *
- * @param ch the character to match
- */
- CharMatcher(char ch) {
- super();
- this.ch = ch;
- }
-
- /**
- * Returns whether or not the given character matches.
- *
- * @param text the text content to match against
- * @param textLen the length of the text
- * @param pos the starting position
- * @return the number of matching characters, zero for no match
- */
- public int isMatch(char[] text, int textLen, int pos) {
- return ch == text[pos] ? 1 : 0;
- }
- }
-
- //-----------------------------------------------------------------------
- /**
- * Class used to define a set of characters for matching purposes.
- */
- static final class StringMatcher implements Matcher {
- private char[] chars;
-
- /**
- * Constructor that creates a matcher from a String.
- *
- * @param str the string to match, must not be null
- */
- StringMatcher(String str) {
- super();
- chars = str.toCharArray();
- }
-
- /**
- * Returns whether or not the given text matches the stored string.
- *
- * @param text the text content to match against
- * @param textLen the length of the text
- * @param pos the starting position
- * @return the number of matching characters, zero for no match
- */
- public int isMatch(char[] text, int textLen, int pos) {
- int len = chars.length;
- if (pos + len > textLen) {
- return 0;
- }
- for (int i = 0; i < chars.length; i++, pos++) {
- if (chars[i] != text[pos]) {
- return 0;
- }
- }
- return len;
- }
- }
-
- //-----------------------------------------------------------------------
- /**
- * Class used to match no characters.
- */
- static final class NoMatcher implements Matcher {
-
- /**
- * Constructs a new instance of <code>NoMatcher</code>.
- */
- NoMatcher() {
- super();
- }
-
- /**
- * Always returns <code>false</code>.
- *
- * @param text the text content to match against
- * @param textLen the length of the text
- * @param pos the starting position
- * @return the number of matching characters, zero for no match
- */
- public int isMatch(char[] text, int textLen, int pos) {
- return 0;
- }
- }
-
- //-----------------------------------------------------------------------
- /**
- * Class used to match whitespace as per trim().
- */
- static final class TrimMatcher implements Matcher {
-
- /**
- * Constructs a new instance of <code>TrimMatcher</code>.
- */
- TrimMatcher() {
- super();
- }
-
- /**
- * Returns whether or not the given charatcer matches.
- *
- * @param text the text content to match against
- * @param textLen the length of the text
- * @param pos the starting position
- * @return the number of matching characters, zero for no match
- */
- public int isMatch(char[] text, int textLen, int pos) {
- return text[pos] <= 32 ? 1 : 0;
}
}
Modified:
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/VariableFormatter.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/VariableFormatter.java?rev=232878&r1=232877&r2=232878&view=diff
==============================================================================
---
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/VariableFormatter.java
(original)
+++
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/VariableFormatter.java
Mon Aug 15 13:58:23 2005
@@ -228,7 +228,7 @@
private int endIndex;
/** Stores the matcher for escaped variable start tokens. */
- private StrTokenizer.Matcher escVarMatcher;
+ private StrMatcher escVarMatcher;
/** Stores the length of the data. */
private int length;
@@ -240,10 +240,10 @@
private LinkedList tokenList;
/** Stores the matcher for variable end tokens. */
- private StrTokenizer.Matcher varEndMatcher;
+ private StrMatcher varEndMatcher;
/** Stores the matcher for variable start tokens. */
- private StrTokenizer.Matcher varStartMatcher;
+ private StrMatcher varStartMatcher;
/**
* Creates a new instance of <code>VariableParser</code> and
initializes it.
@@ -259,8 +259,8 @@
* @param length
* the length of the source data
*/
- public VariableParser(StrTokenizer.Matcher startMatcher,
StrTokenizer.Matcher endMatcher,
- StrTokenizer.Matcher escMatcher, int startPos, int length) {
+ public VariableParser(StrMatcher startMatcher, StrMatcher endMatcher,
+ StrMatcher escMatcher, int startPos, int length) {
this.setVarStartMatcher(startMatcher);
this.setVarEndMatcher(endMatcher);
this.setEscVarMatcher(escMatcher);
@@ -292,7 +292,7 @@
/**
* @return Returns the escVarMatcher.
*/
- private StrTokenizer.Matcher getEscVarMatcher() {
+ private StrMatcher getEscVarMatcher() {
return this.escVarMatcher;
}
@@ -320,14 +320,14 @@
/**
* @return Returns the varEndMatcher.
*/
- private StrTokenizer.Matcher getVarEndMatcher() {
+ private StrMatcher getVarEndMatcher() {
return this.varEndMatcher;
}
/**
* @return Returns the varStartMatcher.
*/
- private StrTokenizer.Matcher getVarStartMatcher() {
+ private StrMatcher getVarStartMatcher() {
return this.varStartMatcher;
}
@@ -357,15 +357,15 @@
int startPos = getPos();
int tokenLen;
while (hasNext() && getTokenList().isEmpty()) {
- if ((tokenLen = getEscVarMatcher().isMatch(data,
getLength(), getPos())) > 0) {
+ if ((tokenLen = getEscVarMatcher().isMatch(data, getPos(),
0, getLength())) > 0) {
checkTextToken(startPos);
getTokenList().addLast(VariableParser.newEscapedVariableToken(getPos(),
tokenLen));
setPos(getPos() + tokenLen);
- } else if ((tokenLen = getVarStartMatcher().isMatch(data,
getLength(), getPos())) > 0) {
+ } else if ((tokenLen = getVarStartMatcher().isMatch(data,
getPos(), 0, getLength())) > 0) {
checkTextToken(startPos);
setPos(getPos() + tokenLen);
int varStart = getPos(), endLen = 0;
- while (hasNext() && (endLen =
getVarEndMatcher().isMatch(data, getLength(), getPos())) <= 0) {
+ while (hasNext() && (endLen =
getVarEndMatcher().isMatch(data, getPos(), 0, getLength())) <= 0) {
setPos(getPos() + 1);
}
if (endLen <= 0) {
@@ -397,7 +397,7 @@
* @param escVarMatcher
* The escVarMatcher to set.
*/
- private void setEscVarMatcher(StrTokenizer.Matcher escVarMatcher) {
+ private void setEscVarMatcher(StrMatcher escVarMatcher) {
this.escVarMatcher = escVarMatcher;
}
@@ -429,7 +429,7 @@
* @param varEndMatcher
* The varEndMatcher to set.
*/
- private void setVarEndMatcher(StrTokenizer.Matcher varEndMatcher) {
+ private void setVarEndMatcher(StrMatcher varEndMatcher) {
this.varEndMatcher = varEndMatcher;
}
@@ -437,7 +437,7 @@
* @param varStartMatcher
* The varStartMatcher to set.
*/
- private void setVarStartMatcher(StrTokenizer.Matcher varStartMatcher) {
+ private void setVarStartMatcher(StrMatcher varStartMatcher) {
this.varStartMatcher = varStartMatcher;
}
}
@@ -609,9 +609,10 @@
* @return the parser
*/
protected VariableParser createParser(char[] data, int offset, int length)
{
- return new VariableParser(new
StrTokenizer.StringMatcher(getVariablePrefix()), new StrTokenizer.StringMatcher(
- getVariableSuffix()), new
StrTokenizer.StringMatcher(String.valueOf(getEscapeCharacter())
- + getVariablePrefix()), offset, length);
+ return new VariableParser(
+ StrMatcher.stringMatcher(getVariablePrefix()),
+ StrMatcher.stringMatcher(getVariableSuffix()),
+ StrMatcher.stringMatcher(String.valueOf(getEscapeCharacter())
+ getVariablePrefix()), offset, length);
}
/**
Modified:
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrTokenizerTest.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrTokenizerTest.java?rev=232878&r1=232877&r2=232878&view=diff
==============================================================================
---
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrTokenizerTest.java
(original)
+++
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrTokenizerTest.java
Mon Aug 15 13:58:23 2005
@@ -65,7 +65,7 @@
StrTokenizer tok = new StrTokenizer(input);
tok.setDelimiterChar(';');
tok.setQuoteChar('"');
- tok.setIgnoredMatcher(StrTokenizer.TRIM_MATCHER);
+ tok.setIgnoredMatcher(StrMatcher.trimMatcher());
tok.setIgnoreEmptyTokens(false);
String tokens[] = tok.getAllTokens();
@@ -85,7 +85,7 @@
StrTokenizer tok = new StrTokenizer(input);
tok.setDelimiterChar(';');
tok.setQuoteChar('"');
- tok.setIgnoredMatcher(StrTokenizer.NONE_MATCHER);
+ tok.setIgnoredMatcher(StrMatcher.noneMatcher());
tok.setIgnoreEmptyTokens(false);
String tokens[] = tok.getAllTokens();
@@ -105,7 +105,7 @@
StrTokenizer tok = new StrTokenizer(input);
tok.setDelimiterChar(';');
tok.setQuoteChar('"');
- tok.setIgnoredMatcher(StrTokenizer.NONE_MATCHER);
+ tok.setIgnoredMatcher(StrMatcher.noneMatcher());
tok.setIgnoreEmptyTokens(false);
String tokens[] = tok.getAllTokens();
@@ -125,7 +125,7 @@
StrTokenizer tok = new StrTokenizer(input);
tok.setDelimiterChar(';');
tok.setQuoteChar('"');
- tok.setIgnoredMatcher(StrTokenizer.TRIM_MATCHER);
+ tok.setIgnoredMatcher(StrMatcher.trimMatcher());
tok.setIgnoreEmptyTokens(true);
String tokens[] = tok.getAllTokens();
@@ -145,7 +145,7 @@
StrTokenizer tok = new StrTokenizer(input);
tok.setDelimiterChar(';');
tok.setQuoteChar('"');
- tok.setIgnoredMatcher(StrTokenizer.TRIM_MATCHER);
+ tok.setIgnoredMatcher(StrMatcher.trimMatcher());
tok.setIgnoreEmptyTokens(false);
tok.setEmptyTokenAsNull(true);
String tokens[] = tok.getAllTokens();
@@ -166,7 +166,7 @@
StrTokenizer tok = new StrTokenizer(input);
tok.setDelimiterChar(';');
tok.setQuoteChar('"');
- tok.setIgnoredMatcher(StrTokenizer.TRIM_MATCHER);
+ tok.setIgnoredMatcher(StrMatcher.trimMatcher());
tok.setIgnoreEmptyTokens(false);
// tok.setTreatingEmptyAsNull(true);
String tokens[] = tok.getAllTokens();
@@ -199,9 +199,9 @@
String input = "a b c \"d e\" f ";
StrTokenizer tok = new StrTokenizer(input);
- tok.setDelimiterMatcher(StrTokenizer.SPACE_MATCHER);
- tok.setQuoteMatcher(StrTokenizer.DOUBLE_QUOTE_MATCHER);
- tok.setIgnoredMatcher(StrTokenizer.NONE_MATCHER);
+ tok.setDelimiterMatcher(StrMatcher.spaceMatcher());
+ tok.setQuoteMatcher(StrMatcher.doubleQuoteMatcher());
+ tok.setIgnoredMatcher(StrMatcher.noneMatcher());
tok.setIgnoreEmptyTokens(false);
String tokens[] = tok.getAllTokens();
@@ -219,9 +219,9 @@
String input = "a b c \"d e\" f ";
StrTokenizer tok = new StrTokenizer(input);
- tok.setDelimiterMatcher(StrTokenizer.SPACE_MATCHER);
- tok.setQuoteMatcher(StrTokenizer.DOUBLE_QUOTE_MATCHER);
- tok.setIgnoredMatcher(StrTokenizer.NONE_MATCHER);
+ tok.setDelimiterMatcher(StrMatcher.spaceMatcher());
+ tok.setQuoteMatcher(StrMatcher.doubleQuoteMatcher());
+ tok.setIgnoredMatcher(StrMatcher.noneMatcher());
tok.setIgnoreEmptyTokens(true);
String tokens[] = tok.getAllTokens();
@@ -348,20 +348,6 @@
assertEquals(input, tok.getContent());
}
- public void testMatcher() {
- assertEquals(1, StrTokenizer.SPACE_MATCHER.isMatch(new char[]{' '}, 1,
0));
- assertEquals(0, StrTokenizer.SPACE_MATCHER.isMatch(new char[]{'\n'},
1, 0));
- assertEquals(0, StrTokenizer.SPACE_MATCHER.isMatch(new
char[]{'\u0001'}, 1, 0));
-
- assertEquals(1, StrTokenizer.TRIM_MATCHER.isMatch(new char[]{' '}, 1,
0));
- assertEquals(1, StrTokenizer.TRIM_MATCHER.isMatch(new char[]{'\n'}, 1,
0));
- assertEquals(1, StrTokenizer.TRIM_MATCHER.isMatch(new
char[]{'\u0001'}, 1, 0));
-
- assertEquals(1, StrTokenizer.SPLIT_MATCHER.isMatch(new char[]{' '}, 1,
0));
- assertEquals(1, StrTokenizer.SPLIT_MATCHER.isMatch(new char[]{'\n'},
1, 0));
- assertEquals(0, StrTokenizer.SPLIT_MATCHER.isMatch(new
char[]{'\u0001'}, 1, 0));
- }
-
public void testReset() {
String input = "a b c";
StrTokenizer tok = new StrTokenizer(input);
@@ -379,22 +365,6 @@
assertEquals("f", tok.next());
assertEquals("g", tok.next());
}
-
- public void testStringMatcher() {
- // build test fixture
- char[] data = new char[26];
- for(int i = 0; i < data.length; i++) {
- data[i] = (char) (i + 'a');
- }
- // perform tests
- StrTokenizer.Matcher matcher = new StrTokenizer.StringMatcher("z");
- for(int i = 0; i < data.length - 1; i++) {
- assertEquals(0, matcher.isMatch(data, data.length, i));
- }
- assertEquals(1, matcher.isMatch(data, data.length, data.length - 1));
- // test bad pos argument.
- assertEquals(0, matcher.isMatch(data, data.length, data.length +100));
- }
public void testTSV() {
this.testXSVAbc(StrTokenizer.getTSVInstance(TSV_SIMPLE_FIXTURE));
@@ -429,6 +399,29 @@
assertEquals(0, tokenizer.nextIndex());
assertEquals(-1, tokenizer.previousIndex());
assertEquals(3, tokenizer.size());
+ }
+
+ public void testIteration() {
+ StrTokenizer tkn = new StrTokenizer("a b c");
+ assertEquals(true, tkn.hasNext());
+ assertEquals("a", tkn.next());
+ try {
+ tkn.remove();
+ fail();
+ } catch (UnsupportedOperationException ex) {}
+ try {
+ tkn.set("x");
+ fail();
+ } catch (UnsupportedOperationException ex) {}
+ try {
+ tkn.add("y");
+ fail();
+ } catch (UnsupportedOperationException ex) {}
+ assertEquals(true, tkn.hasNext());
+ assertEquals("b", tkn.next());
+ assertEquals(true, tkn.hasNext());
+ assertEquals("c", tkn.next());
+ assertEquals(false, tkn.hasNext());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]