org.codehaus.stax2.ri.typed
Class DefaultValueDecoder
java.lang.Object
org.codehaus.stax2.typed.ValueDecoder
org.codehaus.stax2.ri.typed.DefaultValueDecoder
public class DefaultValueDecoder
- extends ValueDecoder
Default implementation that strives for correctness and reasonable
efficiency (at least for simple types). To simplify implementation,
decoders are stateful.
- Author:
- Tatu Saloranta
|
Field Summary |
protected int |
mEnd
Pointer to the pointer in lexical value after last
included character. |
protected int |
mPtr
Pointer to the next character to check, within lexical value |
protected java.lang.String |
mType
|
protected char[] |
mValueBuffer
|
|
Method Summary |
protected boolean |
allWhitespace(char[] lexical,
int start,
int end)
|
protected boolean |
allWhitespace(java.lang.String lexical,
int start,
int end)
|
boolean |
decodeBoolean(char[] lexical,
int start,
int end)
|
boolean |
decodeBoolean(java.lang.String lexical,
int start,
int end)
|
java.math.BigDecimal |
decodeDecimal(char[] lexical,
int start,
int end)
|
java.math.BigDecimal |
decodeDecimal(java.lang.String lexical,
int start,
int end)
|
double |
decodeDouble(char[] lexical,
int start,
int end)
|
double |
decodeDouble(java.lang.String lexical,
int start,
int end)
|
float |
decodeFloat(char[] lexical,
int start,
int end)
|
float |
decodeFloat(java.lang.String lexical,
int start,
int end)
|
int |
decodeInt(char[] lexical,
int start,
int end)
|
int |
decodeInt(java.lang.String lexical,
int start,
int end)
|
long |
decodeLong(char[] lexical,
int start,
int end)
|
long |
decodeLong(java.lang.String lexical,
int start,
int end)
|
protected java.lang.String |
lexicalDesc(char[] lexical,
int startOffset)
|
protected java.lang.String |
lexicalDesc(java.lang.String lexical,
int startOffset)
|
protected static int |
parseInt(char[] digitChars,
int start,
int end)
Fast method for parsing integers that are known to fit into
regular 32-bit signed int type. |
protected static int |
parseInt(int num,
char[] digitChars,
int start,
int end)
|
protected static int |
parseInt(int num,
java.lang.String digitChars,
int start,
int end)
|
protected static int |
parseInt(java.lang.String digitChars,
int start,
int end)
|
static long |
parseLong(char[] digitChars,
int start,
int end)
|
static long |
parseLong(java.lang.String digitChars,
int start,
int end)
|
protected void |
reportInvalidValue(char[] lexical,
int startOffset)
|
protected void |
reportInvalidValue(java.lang.String lexical)
|
protected void |
reportInvalidValue(java.lang.String lexical,
int startOffset)
|
protected void |
reportMissingValue()
|
protected char |
resetAndTrimLeading(char[] lexical,
java.lang.String type,
int start,
int end)
|
protected char |
resetAndTrimLeading(java.lang.String lexical,
java.lang.String type,
int start,
int end)
|
protected int |
skipSignAndZeroes(char[] lexical,
char ch,
boolean hasSign)
|
protected int |
skipSignAndZeroes(java.lang.String lexical,
char ch,
boolean hasSign)
|
protected int |
trimTrailingAndCheckDigits(char[] lexical)
|
protected int |
trimTrailingAndCheckDigits(java.lang.String lexical)
Method called to check that remaining String consists of zero or
more digits, followed by zero or more white space, and nothing else;
and to trim trailing white space, if any. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
mType
protected java.lang.String mType
mValueBuffer
protected char[] mValueBuffer
mPtr
protected int mPtr
- Pointer to the next character to check, within lexical value
mEnd
protected int mEnd
- Pointer to the pointer in lexical value after last
included character.
DefaultValueDecoder
public DefaultValueDecoder()
decodeInt
public int decodeInt(java.lang.String lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Specified by:
decodeInt in class ValueDecoder
- Throws:
java.lang.IllegalArgumentException
decodeInt
public int decodeInt(char[] lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Specified by:
decodeInt in class ValueDecoder
- Throws:
java.lang.IllegalArgumentException
decodeLong
public long decodeLong(java.lang.String lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Specified by:
decodeLong in class ValueDecoder
- Throws:
java.lang.IllegalArgumentException
decodeLong
public long decodeLong(char[] lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Specified by:
decodeLong in class ValueDecoder
- Throws:
java.lang.IllegalArgumentException
decodeFloat
public float decodeFloat(java.lang.String lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Throws:
java.lang.IllegalArgumentException
decodeFloat
public float decodeFloat(char[] lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Throws:
java.lang.IllegalArgumentException
decodeDouble
public double decodeDouble(java.lang.String lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Throws:
java.lang.IllegalArgumentException
decodeDouble
public double decodeDouble(char[] lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Throws:
java.lang.IllegalArgumentException
decodeDecimal
public java.math.BigDecimal decodeDecimal(java.lang.String lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Throws:
java.lang.IllegalArgumentException
decodeDecimal
public java.math.BigDecimal decodeDecimal(char[] lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Throws:
java.lang.IllegalArgumentException
decodeBoolean
public boolean decodeBoolean(java.lang.String lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Specified by:
decodeBoolean in class ValueDecoder
- Throws:
java.lang.IllegalArgumentException
decodeBoolean
public boolean decodeBoolean(char[] lexical,
int start,
int end)
throws java.lang.IllegalArgumentException
- Specified by:
decodeBoolean in class ValueDecoder
- Throws:
java.lang.IllegalArgumentException
resetAndTrimLeading
protected char resetAndTrimLeading(java.lang.String lexical,
java.lang.String type,
int start,
int end)
- Parameters:
start - First character of the lexical value to processend - Pointer character after last valid character
of the lexical value
- Returns:
- First non-white space character from the String
resetAndTrimLeading
protected char resetAndTrimLeading(char[] lexical,
java.lang.String type,
int start,
int end)
trimTrailingAndCheckDigits
protected int trimTrailingAndCheckDigits(java.lang.String lexical)
- Method called to check that remaining String consists of zero or
more digits, followed by zero or more white space, and nothing else;
and to trim trailing white space, if any.
- Returns:
- Number of valid digits found; or -1 to indicate invalid
input
trimTrailingAndCheckDigits
protected int trimTrailingAndCheckDigits(char[] lexical)
skipSignAndZeroes
protected int skipSignAndZeroes(java.lang.String lexical,
char ch,
boolean hasSign)
- Returns:
- Numeric value of the first non-zero character (or, in
case of a zero value, zero)
skipSignAndZeroes
protected int skipSignAndZeroes(char[] lexical,
char ch,
boolean hasSign)
allWhitespace
protected final boolean allWhitespace(java.lang.String lexical,
int start,
int end)
allWhitespace
protected final boolean allWhitespace(char[] lexical,
int start,
int end)
reportMissingValue
protected void reportMissingValue()
reportInvalidValue
protected void reportInvalidValue(java.lang.String lexical)
reportInvalidValue
protected void reportInvalidValue(java.lang.String lexical,
int startOffset)
reportInvalidValue
protected void reportInvalidValue(char[] lexical,
int startOffset)
lexicalDesc
protected java.lang.String lexicalDesc(char[] lexical,
int startOffset)
lexicalDesc
protected java.lang.String lexicalDesc(java.lang.String lexical,
int startOffset)
parseInt
protected static final int parseInt(char[] digitChars,
int start,
int end)
- Fast method for parsing integers that are known to fit into
regular 32-bit signed int type. This means that length is
between 1 and 9 digits (inclusive)
- Returns:
- Parsed integer value
parseInt
protected static final int parseInt(int num,
char[] digitChars,
int start,
int end)
parseInt
protected static final int parseInt(java.lang.String digitChars,
int start,
int end)
parseInt
protected static final int parseInt(int num,
java.lang.String digitChars,
int start,
int end)
parseLong
public static final long parseLong(char[] digitChars,
int start,
int end)
parseLong
public static final long parseLong(java.lang.String digitChars,
int start,
int end)