Class SmileParser
- java.lang.Object
-
- org.codehaus.jackson.JsonParser
-
- org.codehaus.jackson.impl.JsonParserMinimalBase
-
- org.codehaus.jackson.impl.JsonParserBase
-
- org.codehaus.jackson.smile.SmileParser
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,Versioned
public class SmileParser extends JsonParserBase
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SmileParser.Feature
Enumeration that defines all togglable features for Smile generators.-
Nested classes/interfaces inherited from class org.codehaus.jackson.JsonParser
JsonParser.NumberType
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
_bufferRecyclable
Flag that indicates whether the input buffer is recycable (and needs to be returned to recycler once we are done) or not.protected boolean
_got32BitFloat
Specific flag that is set when we encountered a 32-bit floating point value; needed since numeric super classes do not track distinction between float and double, but Smile format does, and we want to retain that separation.protected byte[]
_inputBuffer
Current buffer from which data is read; generally data is read into buffer from input source, but in some cases pre-loaded buffer is handed to the parser.protected java.io.InputStream
_inputStream
Input stream that can be used for reading more content, if one in use.protected boolean
_mayContainRawBinary
Flag that indicates whether content can legally have raw (unquoted) binary data.protected ObjectCodec
_objectCodec
Codec used for data binding when (if) requested.protected int
_quad1
Quads used for hash calculationprotected int
_quad2
Quads used for hash calculationprotected int[]
_quadBuffer
Temporary buffer used for name parsing.protected int
_seenNameCount
protected java.lang.String[]
_seenNames
Array of recently seen field names, which may be back referenced by later fields.protected int
_seenStringValueCount
protected java.lang.String[]
_seenStringValues
Array of recently seen field names, which may be back referenced by later fields Defaults set to disable handling if no header found.protected SmileBufferRecycler<java.lang.String>
_smileBufferRecycler
Helper object used for low-level recycling of Smile-generator specific buffers.protected static java.lang.ThreadLocal<java.lang.ref.SoftReference<SmileBufferRecycler<java.lang.String>>>
_smileRecyclerRef
ThreadLocal
contains aSoftReference
to a buffer recycler used to provide a low-cost buffer recycling for Smile-specific buffers.protected BytesToNameCanonicalizer
_symbols
Symbol table that contains field names encountered so farprotected boolean
_tokenIncomplete
Flag that indicates that the current token has not yet been fully processed, and needs to be finished for some access (or skipped to obtain the next token)protected int
_typeByte
Type byte of the current token-
Fields inherited from class org.codehaus.jackson.impl.JsonParserBase
_binaryValue, _byteArrayBuilder, _closed, _currInputProcessed, _currInputRow, _currInputRowStart, _expLength, _fractLength, _inputEnd, _inputPtr, _intLength, _ioContext, _nameCopied, _nameCopyBuffer, _nextToken, _numberBigDecimal, _numberBigInt, _numberDouble, _numberInt, _numberLong, _numberNegative, _numTypesValid, _parsingContext, _textBuffer, _tokenInputCol, _tokenInputRow, _tokenInputTotal, CHAR_NULL, INT_0, INT_1, INT_2, INT_3, INT_4, INT_5, INT_6, INT_7, INT_8, INT_9, INT_DECIMAL_POINT, INT_e, INT_E, INT_MINUS, INT_PLUS, NR_BIGDECIMAL, NR_BIGINT, NR_DOUBLE, NR_INT, NR_LONG, NR_UNKNOWN
-
Fields inherited from class org.codehaus.jackson.impl.JsonParserMinimalBase
INT_APOSTROPHE, INT_ASTERISK, INT_b, INT_BACKSLASH, INT_COLON, INT_COMMA, INT_CR, INT_f, INT_LBRACKET, INT_LCURLY, INT_LF, INT_n, INT_QUOTE, INT_r, INT_RBRACKET, INT_RCURLY, INT_SLASH, INT_SPACE, INT_t, INT_TAB, INT_u
-
Fields inherited from class org.codehaus.jackson.JsonParser
_currToken, _features, _lastClearedToken
-
-
Constructor Summary
Constructors Constructor Description SmileParser(IOContext ctxt, int parserFeatures, int smileFeatures, ObjectCodec codec, BytesToNameCanonicalizer sym, java.io.InputStream in, byte[] inputBuffer, int start, int end, boolean bufferRecyclable)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
_closeInput()
protected byte[]
_decodeBase64(Base64Variant b64variant)
protected void
_decodeShortAsciiValue(int len)
protected void
_decodeShortUnicodeValue(int len)
protected void
_finishNumberToken(int tb)
protected void
_finishString()
protected void
_finishToken()
Method called to finish parsing of a token so that token contents are retriableprotected JsonToken
_handleFieldName()
Method that handles initial token type recognition for token that has to be either FIELD_NAME or END_OBJECT.protected boolean
_loadToHaveAtLeast(int minAvailable)
Helper method that will try to load at least specified number bytes in input buffer, possible moving existing data around if necessaryprotected void
_parseNumericValue(int expType)
Method that will parse actual numeric value out of a syntactically valid number value.protected void
_releaseBuffers()
Method called to release internal buffers owned by the base reader.protected void
_reportInvalidChar(int c)
protected void
_reportInvalidInitial(int mask)
protected void
_reportInvalidOther(int mask)
protected void
_reportInvalidOther(int mask, int ptr)
protected void
_reportInvalidSharedName(int index)
protected void
_reportInvalidSharedStringValue(int index)
protected void
_skip7BitBinary()
Helper method for skipping length-prefixed binary data sectionprotected void
_skipBytes(int len)
protected void
_skipIncomplete()
Method called to skip remainders of an incomplete token, when contents themselves will not be needed any moreprotected static SmileBufferRecycler<java.lang.String>
_smileBufferRecycler()
void
close()
Closes the parser so that no further iteration or data access can be made; will also close the underlying input source if parser either owns the input source, or featureJsonParser.Feature.AUTO_CLOSE_SOURCE
is enabled.byte[]
getBinaryValue(Base64Variant b64variant)
Method that can be used to read (and consume -- results may not be accessible using other methods after the call) base64-encoded binary data included in the current textual JSON value.ObjectCodec
getCodec()
Accessor forObjectCodec
associated with this parser, if any.JsonLocation
getCurrentLocation()
Overridden since we do not really have character-based locations, but we do have byte offset to specify.java.lang.String
getCurrentName()
Method that can be called to get the name associated with the current event.java.lang.Object
getEmbeddedObject()
Accessor that can be called if (and only if) the current token isJsonToken.VALUE_EMBEDDED_OBJECT
.java.lang.Object
getInputSource()
Method that can be used to get access to object that is used to access input being parsed; this is usually eitherInputStream
orReader
, depending on what parser was constructed with.JsonParser.NumberType
getNumberType()
If current token is of typeJsonToken.VALUE_NUMBER_INT
orJsonToken.VALUE_NUMBER_FLOAT
, returns one ofJsonParser.NumberType
constants; otherwise returns null.java.lang.String
getText()
Method for accessing textual representation of the current event; if no current event (before first call tonextToken()
, or after encountering end-of-input), returns null.char[]
getTextCharacters()
Method similar toJsonParser.getText()
, but that will return underlying (unmodifiable) character array that contains textual value, instead of constructing a String object to contain this information.int
getTextLength()
Accessor used withJsonParser.getTextCharacters()
, to know length of String stored in returned buffer.int
getTextOffset()
Accessor used withJsonParser.getTextCharacters()
, to know offset of the first text content character within buffer.JsonLocation
getTokenLocation()
Overridden since we do not really have character-based locations, but we do have byte offset to specify.protected boolean
handleSignature(boolean consumeFirstByte, boolean throwException)
Helper method called when it looks like input might contain the signature; and it is necessary to detect and handle signature to get configuration information it might have.boolean
hasTextCharacters()
Method that can be used to determine whether calling ofJsonParser.getTextCharacters()
would be the most efficient way to access textual content for the event parser currently points to.protected boolean
loadMore()
boolean
mayContainRawBinary()
java.lang.Boolean
nextBooleanValue()
Method that fetches next token (as if callingJsonParser.nextToken()
) and if it isJsonToken.VALUE_TRUE
orJsonToken.VALUE_FALSE
returns matching Boolean value; otherwise return null.boolean
nextFieldName(SerializableString str)
Method that fetches next token (as if callingJsonParser.nextToken()
) and verifies whether it isJsonToken.FIELD_NAME
with specified name and returns result of that comparison.int
nextIntValue(int defaultValue)
Method that fetches next token (as if callingJsonParser.nextToken()
) and if it isJsonToken.VALUE_NUMBER_INT
returns 32-bit int value; otherwise returns specified default value It is functionally equivalent to:long
nextLongValue(long defaultValue)
Method that fetches next token (as if callingJsonParser.nextToken()
) and if it isJsonToken.VALUE_NUMBER_INT
returns 64-bit long value; otherwise returns specified default value It is functionally equivalent to:java.lang.String
nextTextValue()
Method that fetches next token (as if callingJsonParser.nextToken()
) and if it isJsonToken.VALUE_STRING
returns contained String value; otherwise returns null.JsonToken
nextToken()
Main iteration method, which will advance stream enough to determine type of the next token, if any.int
releaseBuffered(java.io.OutputStream out)
Method that can be called to push back any content that has been read but not consumed by the parser.void
setCodec(ObjectCodec c)
Setter that allows definingObjectCodec
associated with this parser, if any.-
Methods inherited from class org.codehaus.jackson.impl.JsonParserBase
_decodeBase64Escape, _decodeBase64Escape, _decodeEscaped, _getByteArrayBuilder, _handleEOF, _reportMismatchedEndMarker, convertNumberToBigDecimal, convertNumberToBigInteger, convertNumberToDouble, convertNumberToInt, convertNumberToLong, getBigIntegerValue, getDecimalValue, getDoubleValue, getFloatValue, getIntValue, getLongValue, getNumberValue, getParsingContext, getTokenCharacterOffset, getTokenColumnNr, getTokenLineNr, isClosed, loadMoreGuaranteed, reportInvalidBase64Char, reportInvalidBase64Char, reportInvalidNumber, reportOverflowInt, reportOverflowLong, reportUnexpectedNumberChar, reset, resetAsNaN, resetFloat, resetInt, version
-
Methods inherited from class org.codehaus.jackson.impl.JsonParserMinimalBase
_constructError, _decodeBase64, _getCharDesc, _handleUnrecognizedCharacterEscape, _reportBase64EOF, _reportError, _reportInvalidBase64, _reportInvalidEOF, _reportInvalidEOF, _reportInvalidEOFInValue, _reportUnexpectedChar, _throwInternal, _throwInvalidSpace, _throwUnquotedSpace, _wrapError, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, skipChildren
-
Methods inherited from class org.codehaus.jackson.JsonParser
_constructError, canUseSchema, clearCurrentToken, configure, disable, disableFeature, enable, enableFeature, getBinaryValue, getBooleanValue, getByteValue, getCurrentToken, getLastClearedToken, getShortValue, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, hasCurrentToken, isEnabled, isExpectedStartArrayToken, isFeatureEnabled, nextValue, readValueAs, readValueAs, readValueAsTree, readValuesAs, readValuesAs, releaseBuffered, setFeature, setSchema
-
-
-
-
Field Detail
-
_objectCodec
protected ObjectCodec _objectCodec
Codec used for data binding when (if) requested.
-
_mayContainRawBinary
protected boolean _mayContainRawBinary
Flag that indicates whether content can legally have raw (unquoted) binary data. Since this information is included both in header and in actual binary data blocks there is redundancy, and we want to ensure settings are compliant. Using application may also want to know this setting in case it does some direct (random) access.
-
_smileBufferRecycler
protected final SmileBufferRecycler<java.lang.String> _smileBufferRecycler
Helper object used for low-level recycling of Smile-generator specific buffers.- Since:
- 1.7
-
_inputStream
protected java.io.InputStream _inputStream
Input stream that can be used for reading more content, if one in use. May be null, if input comes just as a full buffer, or if the stream has been closed.
-
_inputBuffer
protected byte[] _inputBuffer
Current buffer from which data is read; generally data is read into buffer from input source, but in some cases pre-loaded buffer is handed to the parser.
-
_bufferRecyclable
protected boolean _bufferRecyclable
Flag that indicates whether the input buffer is recycable (and needs to be returned to recycler once we are done) or not.If it is not, it also means that parser can NOT modify underlying buffer.
-
_tokenIncomplete
protected boolean _tokenIncomplete
Flag that indicates that the current token has not yet been fully processed, and needs to be finished for some access (or skipped to obtain the next token)
-
_typeByte
protected int _typeByte
Type byte of the current token
-
_got32BitFloat
protected boolean _got32BitFloat
Specific flag that is set when we encountered a 32-bit floating point value; needed since numeric super classes do not track distinction between float and double, but Smile format does, and we want to retain that separation.
-
_symbols
protected final BytesToNameCanonicalizer _symbols
Symbol table that contains field names encountered so far
-
_quadBuffer
protected int[] _quadBuffer
Temporary buffer used for name parsing.
-
_quad1
protected int _quad1
Quads used for hash calculation
-
_quad2
protected int _quad2
Quads used for hash calculation
-
_seenNames
protected java.lang.String[] _seenNames
Array of recently seen field names, which may be back referenced by later fields. Defaults set to enable handling even if no header found.
-
_seenNameCount
protected int _seenNameCount
-
_seenStringValues
protected java.lang.String[] _seenStringValues
Array of recently seen field names, which may be back referenced by later fields Defaults set to disable handling if no header found.
-
_seenStringValueCount
protected int _seenStringValueCount
-
_smileRecyclerRef
protected static final java.lang.ThreadLocal<java.lang.ref.SoftReference<SmileBufferRecycler<java.lang.String>>> _smileRecyclerRef
ThreadLocal
contains aSoftReference
to a buffer recycler used to provide a low-cost buffer recycling for Smile-specific buffers.
-
-
Constructor Detail
-
SmileParser
public SmileParser(IOContext ctxt, int parserFeatures, int smileFeatures, ObjectCodec codec, BytesToNameCanonicalizer sym, java.io.InputStream in, byte[] inputBuffer, int start, int end, boolean bufferRecyclable)
-
-
Method Detail
-
getCodec
public ObjectCodec getCodec()
Description copied from class:JsonParser
Accessor forObjectCodec
associated with this parser, if any. Codec is used byJsonParser.readValueAs(Class)
method (and its variants).- Specified by:
getCodec
in classJsonParser
-
setCodec
public void setCodec(ObjectCodec c)
Description copied from class:JsonParser
Setter that allows definingObjectCodec
associated with this parser, if any. Codec is used byJsonParser.readValueAs(Class)
method (and its variants).- Specified by:
setCodec
in classJsonParser
-
handleSignature
protected boolean handleSignature(boolean consumeFirstByte, boolean throwException) throws java.io.IOException, JsonParseException
Helper method called when it looks like input might contain the signature; and it is necessary to detect and handle signature to get configuration information it might have.- Returns:
- True if valid signature was found and handled; false if not
- Throws:
java.io.IOException
JsonParseException
-
_smileBufferRecycler
protected static final SmileBufferRecycler<java.lang.String> _smileBufferRecycler()
- Since:
- 1.7
-
releaseBuffered
public int releaseBuffered(java.io.OutputStream out) throws java.io.IOException
Description copied from class:JsonParser
Method that can be called to push back any content that has been read but not consumed by the parser. This is usually done after reading all content of interest using parser. Content is released by writing it to given stream if possible; if underlying input is byte-based it can released, if not (char-based) it can not.- Overrides:
releaseBuffered
in classJsonParser
- Returns:
- -1 if the underlying content source is not byte based
(that is, input can not be sent to
OutputStream
; otherwise number of bytes released (0 if there was nothing to release) - Throws:
java.io.IOException
- if write to stream threw exception
-
getInputSource
public java.lang.Object getInputSource()
Description copied from class:JsonParser
Method that can be used to get access to object that is used to access input being parsed; this is usually eitherInputStream
orReader
, depending on what parser was constructed with. Note that returned value may be null in some cases; including case where parser implementation does not want to exposed raw source to caller. In cases where input has been decorated, object returned here is the decorated version; this allows some level of interaction between users of parser and decorator object.In general use of this accessor should be considered as "last effort", i.e. only used if no other mechanism is applicable.
- Overrides:
getInputSource
in classJsonParser
-
getTokenLocation
public JsonLocation getTokenLocation()
Overridden since we do not really have character-based locations, but we do have byte offset to specify.- Overrides:
getTokenLocation
in classJsonParserBase
-
getCurrentLocation
public JsonLocation getCurrentLocation()
Overridden since we do not really have character-based locations, but we do have byte offset to specify.- Overrides:
getCurrentLocation
in classJsonParserBase
-
loadMore
protected final boolean loadMore() throws java.io.IOException
- Specified by:
loadMore
in classJsonParserBase
- Throws:
java.io.IOException
-
_loadToHaveAtLeast
protected final boolean _loadToHaveAtLeast(int minAvailable) throws java.io.IOException
Helper method that will try to load at least specified number bytes in input buffer, possible moving existing data around if necessary- Throws:
java.io.IOException
- Since:
- 1.6
-
_closeInput
protected void _closeInput() throws java.io.IOException
- Specified by:
_closeInput
in classJsonParserBase
- Throws:
java.io.IOException
-
_finishString
protected void _finishString() throws java.io.IOException, JsonParseException
- Specified by:
_finishString
in classJsonParserBase
- Throws:
java.io.IOException
JsonParseException
-
close
public void close() throws java.io.IOException
Description copied from class:JsonParser
Closes the parser so that no further iteration or data access can be made; will also close the underlying input source if parser either owns the input source, or featureJsonParser.Feature.AUTO_CLOSE_SOURCE
is enabled. Whether parser owns the input source depends on factory method that was used to construct instance (so checkJsonFactory
for details, but the general idea is that if caller passes in closable resource (such asInputStream
orReader
) parser does NOT own the source; but if it passes a reference (such asFile
orURL
and creates stream or reader it does own them.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classJsonParserBase
- Throws:
java.io.IOException
-
hasTextCharacters
public boolean hasTextCharacters()
Description copied from class:JsonParser
Method that can be used to determine whether calling ofJsonParser.getTextCharacters()
would be the most efficient way to access textual content for the event parser currently points to.Default implementation simply returns false since only actual implementation class has knowledge of its internal buffering state. Implementations are strongly encouraged to properly override this method, to allow efficient copying of content by other code.
- Overrides:
hasTextCharacters
in classJsonParserBase
- Returns:
- True if parser currently has character array that can
be efficiently returned via
JsonParser.getTextCharacters()
; false means that it may or may not exist
-
_releaseBuffers
protected void _releaseBuffers() throws java.io.IOException
Method called to release internal buffers owned by the base reader. This may be called along with_closeInput()
(for example, when explicitly closing this reader instance), or separately (if need be).- Overrides:
_releaseBuffers
in classJsonParserBase
- Throws:
java.io.IOException
-
mayContainRawBinary
public boolean mayContainRawBinary()
-
nextToken
public JsonToken nextToken() throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Main iteration method, which will advance stream enough to determine type of the next token, if any. If none remaining (stream has no content other than possible white space before ending), null will be returned.- Specified by:
nextToken
in classJsonParserMinimalBase
- Returns:
- Next token from the stream, if any found, or null to indicate end-of-input
- Throws:
java.io.IOException
JsonParseException
-
getCurrentName
public java.lang.String getCurrentName() throws java.io.IOException, JsonParseException
Description copied from class:JsonParserBase
Method that can be called to get the name associated with the current event.- Overrides:
getCurrentName
in classJsonParserBase
- Throws:
java.io.IOException
JsonParseException
-
getNumberType
public JsonParser.NumberType getNumberType() throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
If current token is of typeJsonToken.VALUE_NUMBER_INT
orJsonToken.VALUE_NUMBER_FLOAT
, returns one ofJsonParser.NumberType
constants; otherwise returns null.- Overrides:
getNumberType
in classJsonParserBase
- Throws:
java.io.IOException
JsonParseException
-
nextFieldName
public boolean nextFieldName(SerializableString str) throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Method that fetches next token (as if callingJsonParser.nextToken()
) and verifies whether it isJsonToken.FIELD_NAME
with specified name and returns result of that comparison. It is functionally equivalent to:return (nextToken() == JsonToken.FIELD_NAME) && str.getValue().equals(getCurrentName());
but may be faster for parser to verify, and can therefore be used if caller expects to get such a property name from input next.- Overrides:
nextFieldName
in classJsonParser
- Parameters:
str
- Property name to compare next token to (if next token isJsonToken.FIELD_NAME
)
- Throws:
java.io.IOException
JsonParseException
-
nextTextValue
public java.lang.String nextTextValue() throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Method that fetches next token (as if callingJsonParser.nextToken()
) and if it isJsonToken.VALUE_STRING
returns contained String value; otherwise returns null. It is functionally equivalent to:return (nextToken() == JsonToken.VALUE_STRING) ? getText() : null;
but may be faster for parser to process, and can therefore be used if caller expects to get a String value next from input.- Overrides:
nextTextValue
in classJsonParser
- Throws:
java.io.IOException
JsonParseException
-
nextIntValue
public int nextIntValue(int defaultValue) throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Method that fetches next token (as if callingJsonParser.nextToken()
) and if it isJsonToken.VALUE_NUMBER_INT
returns 32-bit int value; otherwise returns specified default value It is functionally equivalent to:return (nextToken() == JsonToken.VALUE_NUMBER_INT) ? getIntValue() : defaultValue;
but may be faster for parser to process, and can therefore be used if caller expects to get a String value next from input.- Overrides:
nextIntValue
in classJsonParser
- Throws:
java.io.IOException
JsonParseException
-
nextLongValue
public long nextLongValue(long defaultValue) throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Method that fetches next token (as if callingJsonParser.nextToken()
) and if it isJsonToken.VALUE_NUMBER_INT
returns 64-bit long value; otherwise returns specified default value It is functionally equivalent to:return (nextToken() == JsonToken.VALUE_NUMBER_INT) ? getLongValue() : defaultValue;
but may be faster for parser to process, and can therefore be used if caller expects to get a String value next from input.- Overrides:
nextLongValue
in classJsonParser
- Throws:
java.io.IOException
JsonParseException
-
nextBooleanValue
public java.lang.Boolean nextBooleanValue() throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Method that fetches next token (as if callingJsonParser.nextToken()
) and if it isJsonToken.VALUE_TRUE
orJsonToken.VALUE_FALSE
returns matching Boolean value; otherwise return null. It is functionally equivalent to:JsonToken t = nextToken(); if (t == JsonToken.VALUE_TRUE) return Boolean.TRUE; if (t == JsonToken.VALUE_FALSE) return Boolean.FALSE; return null;
but may be faster for parser to process, and can therefore be used if caller expects to get a String value next from input.- Overrides:
nextBooleanValue
in classJsonParser
- Throws:
java.io.IOException
JsonParseException
-
getText
public java.lang.String getText() throws java.io.IOException, JsonParseException
Method for accessing textual representation of the current event; if no current event (before first call tonextToken()
, or after encountering end-of-input), returns null. Method can be called for any event.- Specified by:
getText
in classJsonParserMinimalBase
- Throws:
java.io.IOException
JsonParseException
-
getTextCharacters
public char[] getTextCharacters() throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Method similar toJsonParser.getText()
, but that will return underlying (unmodifiable) character array that contains textual value, instead of constructing a String object to contain this information. Note, however, that:- Textual contents are not guaranteed to start at
index 0 (rather, call
JsonParser.getTextOffset()
) to know the actual offset - Length of textual contents may be less than the
length of returned buffer: call
JsonParser.getTextLength()
for actual length of returned content.
Note that caller MUST NOT modify the returned character array in any way -- doing so may corrupt current parser state and render parser instance useless.
The only reason to call this method (over
JsonParser.getText()
) is to avoid construction of a String object (which will make a copy of contents).- Specified by:
getTextCharacters
in classJsonParserMinimalBase
- Throws:
java.io.IOException
JsonParseException
- Textual contents are not guaranteed to start at
index 0 (rather, call
-
getTextLength
public int getTextLength() throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Accessor used withJsonParser.getTextCharacters()
, to know length of String stored in returned buffer.- Specified by:
getTextLength
in classJsonParserMinimalBase
- Returns:
- Number of characters within buffer returned
by
JsonParser.getTextCharacters()
that are part of textual content of the current token. - Throws:
java.io.IOException
JsonParseException
-
getTextOffset
public int getTextOffset() throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Accessor used withJsonParser.getTextCharacters()
, to know offset of the first text content character within buffer.- Specified by:
getTextOffset
in classJsonParserMinimalBase
- Returns:
- Offset of the first character within buffer returned
by
JsonParser.getTextCharacters()
that is part of textual content of the current token. - Throws:
java.io.IOException
JsonParseException
-
getBinaryValue
public byte[] getBinaryValue(Base64Variant b64variant) throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Method that can be used to read (and consume -- results may not be accessible using other methods after the call) base64-encoded binary data included in the current textual JSON value. It works similar to getting String value viaJsonParser.getText()
and decoding result (except for decoding part), but should be significantly more performant.Note that non-decoded textual contents of the current token are not guaranteed to be accessible after this method is called. Current implementation, for example, clears up textual content during decoding. Decoded binary content, however, will be retained until parser is advanced to the next event.
- Specified by:
getBinaryValue
in classJsonParserMinimalBase
- Parameters:
b64variant
- Expected variant of base64 encoded content (seeBase64Variants
for definitions of "standard" variants).- Returns:
- Decoded binary data
- Throws:
java.io.IOException
JsonParseException
-
getEmbeddedObject
public java.lang.Object getEmbeddedObject() throws java.io.IOException, JsonParseException
Description copied from class:JsonParser
Accessor that can be called if (and only if) the current token isJsonToken.VALUE_EMBEDDED_OBJECT
. For other token types, null is returned.Note: only some specialized parser implementations support embedding of objects (usually ones that are facades on top of non-streaming sources, such as object trees).
- Overrides:
getEmbeddedObject
in classJsonParser
- Throws:
java.io.IOException
JsonParseException
-
_decodeBase64
protected byte[] _decodeBase64(Base64Variant b64variant) throws java.io.IOException, JsonParseException
- Throws:
java.io.IOException
JsonParseException
-
_handleFieldName
protected final JsonToken _handleFieldName() throws java.io.IOException, JsonParseException
Method that handles initial token type recognition for token that has to be either FIELD_NAME or END_OBJECT.- Throws:
java.io.IOException
JsonParseException
-
_parseNumericValue
protected void _parseNumericValue(int expType) throws java.io.IOException, JsonParseException
Description copied from class:JsonParserBase
Method that will parse actual numeric value out of a syntactically valid number value. Type it will parse into depends on whether it is a floating point number, as well as its magnitude: smallest legal type (of ones available) is used for efficiency.- Overrides:
_parseNumericValue
in classJsonParserBase
- Parameters:
expType
- Numeric type that we will immediately need, if any; mostly necessary to optimize handling of floating point numbers- Throws:
java.io.IOException
JsonParseException
-
_finishToken
protected void _finishToken() throws java.io.IOException, JsonParseException
Method called to finish parsing of a token so that token contents are retriable- Throws:
java.io.IOException
JsonParseException
-
_finishNumberToken
protected final void _finishNumberToken(int tb) throws java.io.IOException, JsonParseException
- Throws:
java.io.IOException
JsonParseException
-
_decodeShortAsciiValue
protected final void _decodeShortAsciiValue(int len) throws java.io.IOException, JsonParseException
- Throws:
java.io.IOException
JsonParseException
-
_decodeShortUnicodeValue
protected final void _decodeShortUnicodeValue(int len) throws java.io.IOException, JsonParseException
- Throws:
java.io.IOException
JsonParseException
-
_skipIncomplete
protected void _skipIncomplete() throws java.io.IOException, JsonParseException
Method called to skip remainders of an incomplete token, when contents themselves will not be needed any more- Throws:
java.io.IOException
JsonParseException
-
_skipBytes
protected void _skipBytes(int len) throws java.io.IOException, JsonParseException
- Throws:
java.io.IOException
JsonParseException
-
_skip7BitBinary
protected void _skip7BitBinary() throws java.io.IOException, JsonParseException
Helper method for skipping length-prefixed binary data section- Throws:
java.io.IOException
JsonParseException
-
_reportInvalidSharedName
protected void _reportInvalidSharedName(int index) throws java.io.IOException
- Throws:
java.io.IOException
-
_reportInvalidSharedStringValue
protected void _reportInvalidSharedStringValue(int index) throws java.io.IOException
- Throws:
java.io.IOException
-
_reportInvalidChar
protected void _reportInvalidChar(int c) throws JsonParseException
- Throws:
JsonParseException
-
_reportInvalidInitial
protected void _reportInvalidInitial(int mask) throws JsonParseException
- Throws:
JsonParseException
-
_reportInvalidOther
protected void _reportInvalidOther(int mask) throws JsonParseException
- Throws:
JsonParseException
-
_reportInvalidOther
protected void _reportInvalidOther(int mask, int ptr) throws JsonParseException
- Throws:
JsonParseException
-
-