com.fasterxml.jackson.dataformat.smile
Class SmileParser

java.lang.Object
  extended by com.fasterxml.jackson.core.JsonParser
      extended by com.fasterxml.jackson.core.base.ParserMinimalBase
          extended by com.fasterxml.jackson.core.base.ParserBase
              extended by com.fasterxml.jackson.dataformat.smile.SmileParser
All Implemented Interfaces:
Versioned, Closeable

public class SmileParser
extends ParserBase


Nested Class Summary
static class SmileParser.Feature
          Enumeration that defines all togglable features for Smile generators.
 
Nested classes/interfaces inherited from class com.fasterxml.jackson.core.JsonParser
JsonParser.NumberType
 
Field Summary
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  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 calculation
protected  int _quad2
          Quads used for hash calculation
protected  int[] _quadBuffer
          Temporary buffer used for name parsing.
protected  int _seenNameCount
           
protected  String[] _seenNames
          Array of recently seen field names, which may be back referenced by later fields.
protected  int _seenStringValueCount
           
protected  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<String> _smileBufferRecycler
          Helper object used for low-level recycling of Smile-generator specific buffers.
protected static ThreadLocal<SoftReference<SmileBufferRecycler<String>>> _smileRecyclerRef
          ThreadLocal contains a SoftRerefence 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 far
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)
protected  int _typeByte
          Type byte of the current token
 
Fields inherited from class com.fasterxml.jackson.core.base.ParserBase
_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 com.fasterxml.jackson.core.base.ParserMinimalBase
_currToken, _lastClearedToken, 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 com.fasterxml.jackson.core.JsonParser
_features
 
Constructor Summary
SmileParser(IOContext ctxt, int parserFeatures, int smileFeatures, ObjectCodec codec, BytesToNameCanonicalizer sym, InputStream in, byte[] inputBuffer, int start, int end, boolean bufferRecyclable)
           
 
Method Summary
protected  void _closeInput()
           
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 retriable
protected  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 necessary
protected  void _parseNumericValue(int expType)
           
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 section
protected  void _skipBytes(int len)
           
protected  void _skipIncomplete()
          Method called to skip remainders of an incomplete token, when contents themselves will not be needed any more
protected static SmileBufferRecycler<String> _smileBufferRecycler()
           
 void close()
           
 byte[] getBinaryValue(Base64Variant b64variant)
           
 ObjectCodec getCodec()
           
 JsonLocation getCurrentLocation()
          Overridden since we do not really have character-based locations, but we do have byte offset to specify.
 String getCurrentName()
           
 Object getEmbeddedObject()
           
 Object getInputSource()
           
 JsonParser.NumberType getNumberType()
           
 String getText()
          Method for accessing textual representation of the current event; if no current event (before first call to nextToken(), or after encountering end-of-input), returns null.
 char[] getTextCharacters()
           
 int getTextLength()
           
 int getTextOffset()
           
 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()
           
protected  boolean loadMore()
           
 boolean mayContainRawBinary()
           
 Boolean nextBooleanValue()
           
 boolean nextFieldName(SerializableString str)
           
 int nextIntValue(int defaultValue)
           
 long nextLongValue(long defaultValue)
           
 String nextTextValue()
           
 JsonToken nextToken()
           
 int releaseBuffered(OutputStream out)
           
 void setCodec(ObjectCodec c)
           
 Version version()
           
 
Methods inherited from class com.fasterxml.jackson.core.base.ParserBase
_decodeBase64Escape, _decodeBase64Escape, _decodeEscaped, _getByteArrayBuilder, _handleEOF, _reportMismatchedEndMarker, convertNumberToBigDecimal, convertNumberToBigInteger, convertNumberToDouble, convertNumberToInt, convertNumberToLong, getBigIntegerValue, getDecimalValue, getDoubleValue, getFloatValue, getIntValue, getLongValue, getNumberValue, getParsingContext, getTokenCharacterOffset, getTokenColumnNr, getTokenLineNr, isClosed, loadMoreGuaranteed, overrideCurrentName, reportInvalidBase64Char, reportInvalidBase64Char, reportInvalidNumber, reportOverflowInt, reportOverflowLong, reportUnexpectedNumberChar, reset, resetAsNaN, resetFloat, resetInt
 
Methods inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase
_constructError, _decodeBase64, _getCharDesc, _handleUnrecognizedCharacterEscape, _reportBase64EOF, _reportError, _reportInvalidBase64, _reportInvalidEOF, _reportInvalidEOF, _reportInvalidEOFInValue, _reportUnexpectedChar, _throwInternal, _throwInvalidSpace, _throwUnquotedSpace, _wrapError, clearCurrentToken, getCurrentToken, getLastClearedToken, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, hasCurrentToken, nextValue, skipChildren
 
Methods inherited from class com.fasterxml.jackson.core.JsonParser
_constructError, canUseSchema, configure, disable, enable, getBinaryValue, getBooleanValue, getByteValue, getSchema, getShortValue, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, isEnabled, isExpectedStartArrayToken, readValueAs, readValueAs, readValueAsTree, readValuesAs, readValuesAs, releaseBuffered, setSchema
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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<String> _smileBufferRecycler
Helper object used for low-level recycling of Smile-generator specific buffers.


_inputStream

protected 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 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 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 ThreadLocal<SoftReference<SmileBufferRecycler<String>>> _smileRecyclerRef
ThreadLocal contains a SoftRerefence 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,
                   InputStream in,
                   byte[] inputBuffer,
                   int start,
                   int end,
                   boolean bufferRecyclable)
Method Detail

getCodec

public ObjectCodec getCodec()
Specified by:
getCodec in class JsonParser

setCodec

public void setCodec(ObjectCodec c)
Specified by:
setCodec in class JsonParser

handleSignature

protected boolean handleSignature(boolean consumeFirstByte,
                                  boolean throwException)
                           throws 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:
IOException
JsonParseException

_smileBufferRecycler

protected static final SmileBufferRecycler<String> _smileBufferRecycler()

version

public Version version()
Specified by:
version in interface Versioned
Overrides:
version in class ParserMinimalBase

releaseBuffered

public int releaseBuffered(OutputStream out)
                    throws IOException
Overrides:
releaseBuffered in class JsonParser
Throws:
IOException

getInputSource

public Object getInputSource()
Overrides:
getInputSource in class JsonParser

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 class ParserBase

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 class ParserBase

loadMore

protected final boolean loadMore()
                          throws IOException
Specified by:
loadMore in class ParserBase
Throws:
IOException

_loadToHaveAtLeast

protected final boolean _loadToHaveAtLeast(int minAvailable)
                                    throws IOException
Helper method that will try to load at least specified number bytes in input buffer, possible moving existing data around if necessary

Throws:
IOException
Since:
1.6

_closeInput

protected void _closeInput()
                    throws IOException
Specified by:
_closeInput in class ParserBase
Throws:
IOException

_finishString

protected void _finishString()
                      throws IOException,
                             JsonParseException
Specified by:
_finishString in class ParserBase
Throws:
IOException
JsonParseException

close

public void close()
           throws IOException
Specified by:
close in interface Closeable
Overrides:
close in class ParserBase
Throws:
IOException

hasTextCharacters

public boolean hasTextCharacters()
Overrides:
hasTextCharacters in class ParserBase

_releaseBuffers

protected void _releaseBuffers()
                        throws 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 class ParserBase
Throws:
IOException

mayContainRawBinary

public boolean mayContainRawBinary()

nextToken

public JsonToken nextToken()
                    throws IOException,
                           JsonParseException
Specified by:
nextToken in class ParserMinimalBase
Throws:
IOException
JsonParseException

getCurrentName

public String getCurrentName()
                      throws IOException,
                             JsonParseException
Overrides:
getCurrentName in class ParserBase
Throws:
IOException
JsonParseException

getNumberType

public JsonParser.NumberType getNumberType()
                                    throws IOException,
                                           JsonParseException
Overrides:
getNumberType in class ParserBase
Throws:
IOException
JsonParseException

nextFieldName

public boolean nextFieldName(SerializableString str)
                      throws IOException,
                             JsonParseException
Overrides:
nextFieldName in class JsonParser
Throws:
IOException
JsonParseException

nextTextValue

public String nextTextValue()
                     throws IOException,
                            JsonParseException
Overrides:
nextTextValue in class JsonParser
Throws:
IOException
JsonParseException

nextIntValue

public int nextIntValue(int defaultValue)
                 throws IOException,
                        JsonParseException
Overrides:
nextIntValue in class JsonParser
Throws:
IOException
JsonParseException

nextLongValue

public long nextLongValue(long defaultValue)
                   throws IOException,
                          JsonParseException
Overrides:
nextLongValue in class JsonParser
Throws:
IOException
JsonParseException

nextBooleanValue

public Boolean nextBooleanValue()
                         throws IOException,
                                JsonParseException
Overrides:
nextBooleanValue in class JsonParser
Throws:
IOException
JsonParseException

getText

public String getText()
               throws IOException,
                      JsonParseException
Method for accessing textual representation of the current event; if no current event (before first call to nextToken(), or after encountering end-of-input), returns null. Method can be called for any event.

Specified by:
getText in class ParserMinimalBase
Throws:
IOException
JsonParseException

getTextCharacters

public char[] getTextCharacters()
                         throws IOException,
                                JsonParseException
Specified by:
getTextCharacters in class ParserMinimalBase
Throws:
IOException
JsonParseException

getTextLength

public int getTextLength()
                  throws IOException,
                         JsonParseException
Specified by:
getTextLength in class ParserMinimalBase
Throws:
IOException
JsonParseException

getTextOffset

public int getTextOffset()
                  throws IOException,
                         JsonParseException
Specified by:
getTextOffset in class ParserMinimalBase
Throws:
IOException
JsonParseException

getBinaryValue

public byte[] getBinaryValue(Base64Variant b64variant)
                      throws IOException,
                             JsonParseException
Specified by:
getBinaryValue in class ParserMinimalBase
Throws:
IOException
JsonParseException

getEmbeddedObject

public Object getEmbeddedObject()
                         throws IOException,
                                JsonParseException
Specified by:
getEmbeddedObject in class JsonParser
Throws:
IOException
JsonParseException

_handleFieldName

protected final JsonToken _handleFieldName()
                                    throws IOException,
                                           JsonParseException
Method that handles initial token type recognition for token that has to be either FIELD_NAME or END_OBJECT.

Throws:
IOException
JsonParseException

_parseNumericValue

protected void _parseNumericValue(int expType)
                           throws IOException,
                                  JsonParseException
Overrides:
_parseNumericValue in class ParserBase
Throws:
IOException
JsonParseException

_finishToken

protected void _finishToken()
                     throws IOException,
                            JsonParseException
Method called to finish parsing of a token so that token contents are retriable

Throws:
IOException
JsonParseException

_finishNumberToken

protected final void _finishNumberToken(int tb)
                                 throws IOException,
                                        JsonParseException
Throws:
IOException
JsonParseException

_decodeShortAsciiValue

protected final void _decodeShortAsciiValue(int len)
                                     throws IOException,
                                            JsonParseException
Throws:
IOException
JsonParseException

_decodeShortUnicodeValue

protected final void _decodeShortUnicodeValue(int len)
                                       throws IOException,
                                              JsonParseException
Throws:
IOException
JsonParseException

_skipIncomplete

protected void _skipIncomplete()
                        throws IOException,
                               JsonParseException
Method called to skip remainders of an incomplete token, when contents themselves will not be needed any more

Throws:
IOException
JsonParseException

_skipBytes

protected void _skipBytes(int len)
                   throws IOException,
                          JsonParseException
Throws:
IOException
JsonParseException

_skip7BitBinary

protected void _skip7BitBinary()
                        throws IOException,
                               JsonParseException
Helper method for skipping length-prefixed binary data section

Throws:
IOException
JsonParseException

_reportInvalidSharedName

protected void _reportInvalidSharedName(int index)
                                 throws IOException
Throws:
IOException

_reportInvalidSharedStringValue

protected void _reportInvalidSharedStringValue(int index)
                                        throws IOException
Throws:
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


Copyright © 2012 fasterxml.com. All Rights Reserved.