Class SmileParserBase

  • All Implemented Interfaces:
    com.fasterxml.jackson.core.Versioned, java.io.Closeable, java.lang.AutoCloseable
    Direct Known Subclasses:
    NonBlockingParserBase, SmileParser

    public abstract class SmileParserBase
    extends com.fasterxml.jackson.core.base.ParserMinimalBase
    Since:
    2.9
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.fasterxml.jackson.core.JsonParser

        com.fasterxml.jackson.core.JsonParser.Feature, com.fasterxml.jackson.core.JsonParser.NumberType, com.fasterxml.jackson.core.JsonParser.NumberTypeFP
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected byte[] _binaryValue
      We will hold on to decoded binary data, for duration of current event, so that multiple calls to ParserMinimalBase.getBinaryValue(com.fasterxml.jackson.core.Base64Variant) will not need to decode data more than once.
      protected boolean _closed
      Flag that indicates whether parser is closed or not.
      protected long _currInputProcessed
      Number of characters/bytes that were contained in previous blocks (blocks that were already processed prior to the current buffer).
      protected int _formatFeatures
      Bit flag composed of bits that indicate which SmileParser.Features are enabled.
      protected int _inputEnd
      Index of character after last available one in the buffer.
      protected int _inputPtr
      Pointer to next available character in buffer
      protected com.fasterxml.jackson.core.io.IOContext _ioContext
      I/O context for this reader.
      protected boolean _mayContainRawBinary
      Flag that indicates whether content can legally have raw (unquoted) binary data.
      protected boolean _nameCopied
      Flag set to indicate whether the field name is available from the name copy buffer or not (in addition to its String representation being available via read context)
      protected char[] _nameCopyBuffer
      Temporary buffer that is needed if field name is accessed using ParserMinimalBase.getTextCharacters() method (instead of String returning alternatives)
      protected java.math.BigDecimal _numberBigDecimal  
      protected java.math.BigInteger _numberBigInt  
      protected double _numberDouble  
      protected float _numberFloat  
      protected int _numberInt  
      protected long _numberLong  
      protected com.fasterxml.jackson.core.JsonParser.NumberType _numberType  
      protected int _numTypesValid
      Bitfield that indicates which numeric representations have been calculated for the current type
      protected int _quad1
      Quads used for hash calculation
      protected int _quad2
      Quads used for hash calculation
      protected int _quad3
      Quads used for hash calculation
      protected 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 com.fasterxml.jackson.core.json.JsonReadContext _streamReadContext
      Information about parser context, context in which the next token is to be parsed (root, array, object).
      protected com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer _symbols
      Symbol table that contains field names encountered so far
      protected boolean _symbolsCanonical
      Marker flag to indicate that standard symbol handling is used (one with symbol table assisted canonicalization.
      protected com.fasterxml.jackson.core.util.TextBuffer _textBuffer
      Buffer that contains contents of String values, including field names if necessary (name split across boundary, contains escape sequence, or access needed to char array)
      protected int _tokenOffsetForTotal
      Alternative to _tokenInputTotal that will only contain offset within input buffer, as int.
      protected static int DEFAULT_NAME_BUFFER_LENGTH  
      protected static int DEFAULT_STRING_VALUE_BUFFER_LENGTH  
      protected static int LONGEST_NON_CHUNKED_BINARY  
      protected static java.lang.String[] NO_STRINGS  
      protected static com.fasterxml.jackson.core.util.JacksonFeatureSet<com.fasterxml.jackson.core.StreamReadCapability> SMILE_READ_CAPABILITIES  
      • Fields inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase

        _currToken, _lastClearedToken, _streamReadConstraints, _tokenCount, _trackMaxTokenCount, BD_MAX_INT, BD_MAX_LONG, BD_MIN_INT, BD_MIN_LONG, BI_MAX_INT, BI_MAX_LONG, BI_MIN_INT, BI_MIN_LONG, CHAR_NULL, INT_0, INT_9, INT_APOS, INT_ASTERISK, INT_BACKSLASH, INT_COLON, INT_COMMA, INT_CR, INT_e, INT_E, INT_HASH, INT_LBRACKET, INT_LCURLY, INT_LF, INT_MINUS, INT_PERIOD, INT_PLUS, INT_QUOTE, INT_RBRACKET, INT_RCURLY, INT_SLASH, INT_SPACE, INT_TAB, MAX_ERROR_TOKEN_LENGTH, MAX_INT_D, MAX_INT_L, MAX_LONG_D, MIN_INT_D, MIN_INT_L, MIN_LONG_D, NO_BYTES, NO_INTS, NR_BIGDECIMAL, NR_BIGINT, NR_DOUBLE, NR_FLOAT, NR_INT, NR_LONG, NR_UNKNOWN
      • Fields inherited from class com.fasterxml.jackson.core.JsonParser

        _features, _requestPayload, DEFAULT_READ_CAPABILITIES
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected SmileParserBase​(com.fasterxml.jackson.core.io.IOContext ctxt, int parserFeatures, int formatFeatures, com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer sym)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      protected abstract void _closeInput()  
      protected void _handleEOF()
      Method called when an EOF is encountered between tokens.
      protected abstract void _parseNumericValue()  
      protected void _releaseBuffers()  
      protected abstract void _releaseBuffers2()  
      protected void _reportMismatchedEndMarker​(int actCh, char expCh)  
      protected com.fasterxml.jackson.core.io.ContentReference _sourceReference()
      Helper method used to encapsulate logic of including (or not) of "source reference" when constructing JsonLocation instances.
      void close()  
      protected void convertNumberToBigDecimal()  
      protected void convertNumberToBigInteger()  
      protected void convertNumberToDouble()  
      protected void convertNumberToFloat()  
      protected void convertNumberToInt()  
      protected void convertNumberToLong()  
      com.fasterxml.jackson.core.JsonLocation currentLocation()
      Overridden since we do not really have character-based locations, but we do have byte offset to specify.
      java.lang.String currentName()
      Method that can be called to get the name associated with the current event.
      com.fasterxml.jackson.core.JsonLocation currentTokenLocation()
      Overridden since we do not really have character-based locations, but we do have byte offset to specify.
      java.math.BigInteger getBigIntegerValue()  
      com.fasterxml.jackson.core.JsonLocation getCurrentLocation()
      Deprecated.
      java.lang.String getCurrentName()
      Deprecated.
      java.math.BigDecimal getDecimalValue()  
      double getDoubleValue()  
      float getFloatValue()  
      int getFormatFeatures()  
      int getIntValue()  
      long getLongValue()  
      com.fasterxml.jackson.core.JsonParser.NumberType getNumberType()  
      com.fasterxml.jackson.core.JsonParser.NumberTypeFP getNumberTypeFP()  
      java.lang.Number getNumberValue()  
      java.lang.Number getNumberValueExact()  
      com.fasterxml.jackson.core.json.JsonReadContext getParsingContext()  
      com.fasterxml.jackson.core.util.JacksonFeatureSet<com.fasterxml.jackson.core.StreamReadCapability> getReadCapabilities()  
      com.fasterxml.jackson.core.JsonLocation getTokenLocation()
      Deprecated.
      boolean isClosed()  
      boolean isNaN()  
      boolean mayContainRawBinary()  
      void overrideCurrentName​(java.lang.String name)  
      com.fasterxml.jackson.core.JsonParser overrideFormatFeatures​(int values, int mask)  
      com.fasterxml.jackson.core.Version version()  
      • Methods inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase

        _ascii, _asciiBytes, _constructError, _currentLocationMinusOne, _decodeBase64, _getCharDesc, _hasTextualNull, _longIntegerDesc, _longNumberDesc, _nullSafeUpdateToken, _reportError, _reportError, _reportError, _reportInputCoercion, _reportInvalidEOF, _reportInvalidEOF, _reportInvalidEOFInValue, _reportMissingRootWS, _reportUnexpectedChar, _reportUnexpectedNumberChar, _throwInternal, _throwInternalReturnAny, _throwInvalidSpace, _updateToken, _updateTokenToNA, _updateTokenToNull, _wrapError, clearCurrentToken, currentToken, currentTokenCount, currentTokenId, getBinaryValue, getCurrentToken, getCurrentTokenId, getLastClearedToken, getText, getTextCharacters, getTextLength, getTextOffset, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsInt, getValueAsLong, getValueAsLong, getValueAsString, getValueAsString, hasCurrentToken, hasTextCharacters, hasToken, hasTokenId, isExpectedNumberIntToken, isExpectedStartArrayToken, isExpectedStartObjectToken, nextToken, nextValue, reportInvalidNumber, reportOverflowInt, reportOverflowInt, reportOverflowInt, reportOverflowLong, reportOverflowLong, reportOverflowLong, reportUnexpectedNumberChar, skipChildren, streamReadConstraints
      • Methods inherited from class com.fasterxml.jackson.core.JsonParser

        _codec, _constructError, _constructReadException, _constructReadException, _constructReadException, _constructReadException, _constructReadException, _constructReadException, _reportUnsupportedOperation, assignCurrentValue, canParseAsync, canReadObjectId, canReadTypeId, canUseSchema, configure, currentValue, disable, enable, finishToken, getBinaryValue, getBooleanValue, getByteValue, getCodec, getCurrentValue, getEmbeddedObject, getFeatureMask, getInputSource, getNonBlockingInputFeeder, getNumberValueDeferred, getObjectId, getSchema, getShortValue, getText, getTypeId, getValueAsBoolean, getValueAsDouble, isEnabled, isEnabled, nextBooleanValue, nextFieldName, nextFieldName, nextIntValue, nextLongValue, nextTextValue, overrideStdFeatures, readBinaryValue, readBinaryValue, readValueAs, readValueAs, readValueAsTree, readValuesAs, readValuesAs, releaseBuffered, releaseBuffered, requiresCustomCodec, setCodec, setCurrentValue, setFeatureMask, setRequestPayloadOnError, setRequestPayloadOnError, setRequestPayloadOnError, setSchema
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • NO_STRINGS

        protected static final java.lang.String[] NO_STRINGS
      • LONGEST_NON_CHUNKED_BINARY

        protected static final int LONGEST_NON_CHUNKED_BINARY
        See Also:
        Constant Field Values
      • DEFAULT_NAME_BUFFER_LENGTH

        protected static final int DEFAULT_NAME_BUFFER_LENGTH
        See Also:
        Constant Field Values
      • DEFAULT_STRING_VALUE_BUFFER_LENGTH

        protected static final int DEFAULT_STRING_VALUE_BUFFER_LENGTH
        See Also:
        Constant Field Values
      • SMILE_READ_CAPABILITIES

        protected static final com.fasterxml.jackson.core.util.JacksonFeatureSet<com.fasterxml.jackson.core.StreamReadCapability> SMILE_READ_CAPABILITIES
      • _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.
      • _ioContext

        protected final com.fasterxml.jackson.core.io.IOContext _ioContext
        I/O context for this reader. It handles buffer allocation for the reader.
      • _closed

        protected boolean _closed
        Flag that indicates whether parser is closed or not. Gets set when parser is either closed by explicit call (close()) or when end-of-input is reached.
      • _inputPtr

        protected int _inputPtr
        Pointer to next available character in buffer
      • _inputEnd

        protected int _inputEnd
        Index of character after last available one in the buffer.
      • _currInputProcessed

        protected long _currInputProcessed
        Number of characters/bytes that were contained in previous blocks (blocks that were already processed prior to the current buffer).
      • _tokenOffsetForTotal

        protected int _tokenOffsetForTotal
        Alternative to _tokenInputTotal that will only contain offset within input buffer, as int.
      • _streamReadContext

        protected com.fasterxml.jackson.core.json.JsonReadContext _streamReadContext
        Information about parser context, context in which the next token is to be parsed (root, array, object).

        NOTE: before 2.13 was "_parsingContext"

      • _textBuffer

        protected final com.fasterxml.jackson.core.util.TextBuffer _textBuffer
        Buffer that contains contents of String values, including field names if necessary (name split across boundary, contains escape sequence, or access needed to char array)
      • _nameCopyBuffer

        protected char[] _nameCopyBuffer
        Temporary buffer that is needed if field name is accessed using ParserMinimalBase.getTextCharacters() method (instead of String returning alternatives)
      • _nameCopied

        protected boolean _nameCopied
        Flag set to indicate whether the field name is available from the name copy buffer or not (in addition to its String representation being available via read context)
      • _binaryValue

        protected byte[] _binaryValue
        We will hold on to decoded binary data, for duration of current event, so that multiple calls to ParserMinimalBase.getBinaryValue(com.fasterxml.jackson.core.Base64Variant) will not need to decode data more than once.
      • _numberType

        protected com.fasterxml.jackson.core.JsonParser.NumberType _numberType
      • _numTypesValid

        protected int _numTypesValid
        Bitfield that indicates which numeric representations have been calculated for the current type
      • _numberBigInt

        protected java.math.BigInteger _numberBigInt
      • _numberBigDecimal

        protected java.math.BigDecimal _numberBigDecimal
      • _numberInt

        protected int _numberInt
      • _numberFloat

        protected float _numberFloat
      • _numberLong

        protected long _numberLong
      • _numberDouble

        protected double _numberDouble
      • _symbols

        protected final com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer _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
      • _quad3

        protected int _quad3
        Quads used for hash calculation
      • _symbolsCanonical

        protected final boolean _symbolsCanonical
        Marker flag to indicate that standard symbol handling is used (one with symbol table assisted canonicalization. May be disabled in which case alternate stream-line, non-canonicalizing handling is used: usually due to set of symbols (Object property names) is unbounded and will not benefit from canonicalization attempts.
        Since:
        2.13
      • _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
    • Constructor Detail

      • SmileParserBase

        protected SmileParserBase​(com.fasterxml.jackson.core.io.IOContext ctxt,
                                  int parserFeatures,
                                  int formatFeatures,
                                  com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer sym)
    • Method Detail

      • version

        public final com.fasterxml.jackson.core.Version version()
        Specified by:
        version in interface com.fasterxml.jackson.core.Versioned
        Specified by:
        version in class com.fasterxml.jackson.core.JsonParser
      • mayContainRawBinary

        public final boolean mayContainRawBinary()
      • getFormatFeatures

        public final int getFormatFeatures()
        Overrides:
        getFormatFeatures in class com.fasterxml.jackson.core.JsonParser
      • overrideFormatFeatures

        public final com.fasterxml.jackson.core.JsonParser overrideFormatFeatures​(int values,
                                                                                  int mask)
        Overrides:
        overrideFormatFeatures in class com.fasterxml.jackson.core.JsonParser
      • getReadCapabilities

        public com.fasterxml.jackson.core.util.JacksonFeatureSet<com.fasterxml.jackson.core.StreamReadCapability> getReadCapabilities()
        Overrides:
        getReadCapabilities in class com.fasterxml.jackson.core.JsonParser
      • _closeInput

        protected abstract void _closeInput()
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • _parseNumericValue

        protected abstract void _parseNumericValue()
                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • currentLocation

        public final com.fasterxml.jackson.core.JsonLocation currentLocation()
        Overridden since we do not really have character-based locations, but we do have byte offset to specify.
        Overrides:
        currentLocation in class com.fasterxml.jackson.core.JsonParser
      • currentTokenLocation

        public final com.fasterxml.jackson.core.JsonLocation currentTokenLocation()
        Overridden since we do not really have character-based locations, but we do have byte offset to specify.
        Overrides:
        currentTokenLocation in class com.fasterxml.jackson.core.JsonParser
      • getCurrentLocation

        @Deprecated
        public com.fasterxml.jackson.core.JsonLocation getCurrentLocation()
        Deprecated.
        Specified by:
        getCurrentLocation in class com.fasterxml.jackson.core.JsonParser
      • getTokenLocation

        @Deprecated
        public com.fasterxml.jackson.core.JsonLocation getTokenLocation()
        Deprecated.
        Specified by:
        getTokenLocation in class com.fasterxml.jackson.core.JsonParser
      • currentName

        public java.lang.String currentName()
                                     throws java.io.IOException
        Method that can be called to get the name associated with the current event.
        Overrides:
        currentName in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getCurrentName

        @Deprecated
        public java.lang.String getCurrentName()
                                        throws java.io.IOException
        Deprecated.
        Specified by:
        getCurrentName in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        java.io.IOException
      • overrideCurrentName

        public final void overrideCurrentName​(java.lang.String name)
        Specified by:
        overrideCurrentName in class com.fasterxml.jackson.core.base.ParserMinimalBase
      • close

        public final void close()
                         throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        java.io.IOException
      • _releaseBuffers

        protected final void _releaseBuffers()
                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • _releaseBuffers2

        protected abstract void _releaseBuffers2()
      • isClosed

        public final boolean isClosed()
        Specified by:
        isClosed in class com.fasterxml.jackson.core.base.ParserMinimalBase
      • getParsingContext

        public final com.fasterxml.jackson.core.json.JsonReadContext getParsingContext()
        Specified by:
        getParsingContext in class com.fasterxml.jackson.core.base.ParserMinimalBase
      • isNaN

        public final boolean isNaN()
                            throws java.io.IOException
        Overrides:
        isNaN in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getNumberValue

        public final java.lang.Number getNumberValue()
                                              throws java.io.IOException
        Specified by:
        getNumberValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getNumberValueExact

        public final java.lang.Number getNumberValueExact()
                                                   throws java.io.IOException
        Overrides:
        getNumberValueExact in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getNumberType

        public final com.fasterxml.jackson.core.JsonParser.NumberType getNumberType()
                                                                             throws java.io.IOException
        Specified by:
        getNumberType in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getNumberTypeFP

        public com.fasterxml.jackson.core.JsonParser.NumberTypeFP getNumberTypeFP()
                                                                           throws java.io.IOException
        Overrides:
        getNumberTypeFP in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getIntValue

        public final int getIntValue()
                              throws java.io.IOException
        Specified by:
        getIntValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getLongValue

        public final long getLongValue()
                                throws java.io.IOException
        Specified by:
        getLongValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getBigIntegerValue

        public final java.math.BigInteger getBigIntegerValue()
                                                      throws java.io.IOException
        Specified by:
        getBigIntegerValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getFloatValue

        public final float getFloatValue()
                                  throws java.io.IOException
        Specified by:
        getFloatValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getDoubleValue

        public final double getDoubleValue()
                                    throws java.io.IOException
        Specified by:
        getDoubleValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getDecimalValue

        public final java.math.BigDecimal getDecimalValue()
                                                   throws java.io.IOException
        Specified by:
        getDecimalValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • convertNumberToInt

        protected final void convertNumberToInt()
                                         throws java.io.IOException
        Throws:
        java.io.IOException
      • convertNumberToLong

        protected final void convertNumberToLong()
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • convertNumberToBigInteger

        protected final void convertNumberToBigInteger()
                                                throws java.io.IOException
        Throws:
        java.io.IOException
      • convertNumberToFloat

        protected final void convertNumberToFloat()
                                           throws java.io.IOException
        Throws:
        java.io.IOException
      • convertNumberToDouble

        protected final void convertNumberToDouble()
                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • convertNumberToBigDecimal

        protected final void convertNumberToBigDecimal()
                                                throws java.io.IOException
        Throws:
        java.io.IOException
      • _handleEOF

        protected void _handleEOF()
                           throws com.fasterxml.jackson.core.JsonParseException
        Method called when an EOF is encountered between tokens. If so, it may be a legitimate EOF, but only iff there is no open non-root context.
        Specified by:
        _handleEOF in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        com.fasterxml.jackson.core.JsonParseException
      • _reportMismatchedEndMarker

        protected void _reportMismatchedEndMarker​(int actCh,
                                                  char expCh)
                                           throws com.fasterxml.jackson.core.JsonParseException
        Throws:
        com.fasterxml.jackson.core.JsonParseException
      • _sourceReference

        protected com.fasterxml.jackson.core.io.ContentReference _sourceReference()
        Helper method used to encapsulate logic of including (or not) of "source reference" when constructing JsonLocation instances.
        Since:
        2.13