Class SmileParser

  • All Implemented Interfaces:
    com.fasterxml.jackson.core.Versioned, java.io.Closeable, java.lang.AutoCloseable

    public class SmileParser
    extends SmileParserBase
    • Field Detail

      • _objectCodec

        protected com.fasterxml.jackson.core.ObjectCodec _objectCodec
        Codec used for data binding when (if) requested.
      • _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.

      • _typeAsInt

        protected int _typeAsInt
        Type byte of the current token (as in)
      • _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)
    • Constructor Detail

      • SmileParser

        public SmileParser​(com.fasterxml.jackson.core.io.IOContext ctxt,
                           int parserFeatures,
                           int smileFeatures,
                           com.fasterxml.jackson.core.ObjectCodec codec,
                           com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer sym,
                           java.io.InputStream in,
                           byte[] inputBuffer,
                           int start,
                           int end,
                           boolean bufferRecyclable)
    • Method Detail

      • getCodec

        public com.fasterxml.jackson.core.ObjectCodec getCodec()
        Specified by:
        getCodec in class com.fasterxml.jackson.core.JsonParser
      • setCodec

        public void setCodec​(com.fasterxml.jackson.core.ObjectCodec c)
        Specified by:
        setCodec in class com.fasterxml.jackson.core.JsonParser
      • handleSignature

        protected boolean handleSignature​(boolean consumeFirstByte,
                                          boolean throwException)
                                   throws java.io.IOException
        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
      • releaseBuffered

        public int releaseBuffered​(java.io.OutputStream out)
                            throws java.io.IOException
        Overrides:
        releaseBuffered in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getInputSource

        public java.lang.Object getInputSource()
        Overrides:
        getInputSource in class com.fasterxml.jackson.core.JsonParser
      • _nextByteGuaranteed

        private final byte _nextByteGuaranteed()
                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • _loadMoreGuaranteed

        protected final void _loadMoreGuaranteed()
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • _loadMore

        protected final boolean _loadMore()
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • _loadToHaveAtLeast

        protected final void _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
      • _closeInput

        protected void _closeInput()
                            throws java.io.IOException
        Specified by:
        _closeInput in class SmileParserBase
        Throws:
        java.io.IOException
      • hasTextCharacters

        public boolean hasTextCharacters()
        Specified by:
        hasTextCharacters in class com.fasterxml.jackson.core.base.ParserMinimalBase
      • _releaseBuffers2

        protected void _releaseBuffers2()
        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).
        Specified by:
        _releaseBuffers2 in class SmileParserBase
      • nextToken

        public com.fasterxml.jackson.core.JsonToken nextToken()
                                                       throws java.io.IOException
        Specified by:
        nextToken in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        java.io.IOException
      • _handleSharedString

        private final com.fasterxml.jackson.core.JsonToken _handleSharedString​(int index)
                                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • _addSeenStringValue

        private final com.fasterxml.jackson.core.JsonToken _addSeenStringValue()
                                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • _expandSeenStringValues

        private final void _expandSeenStringValues​(java.lang.String newText)
      • finishToken

        public void finishToken()
                         throws java.io.IOException
        Method for forcing full read of current token, even if it might otherwise only be read if data is accessed via getText() and similar methods.
        Overrides:
        finishToken in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • nextFieldName

        public boolean nextFieldName​(com.fasterxml.jackson.core.SerializableString str)
                              throws java.io.IOException
        Overrides:
        nextFieldName in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • nextFieldName

        public java.lang.String nextFieldName()
                                       throws java.io.IOException
        Overrides:
        nextFieldName in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • nextTextValue

        public java.lang.String nextTextValue()
                                       throws java.io.IOException
        Overrides:
        nextTextValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • nextIntValue

        public int nextIntValue​(int defaultValue)
                         throws java.io.IOException
        Overrides:
        nextIntValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • nextLongValue

        public long nextLongValue​(long defaultValue)
                           throws java.io.IOException
        Overrides:
        nextLongValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • nextBooleanValue

        public java.lang.Boolean nextBooleanValue()
                                           throws java.io.IOException
        Overrides:
        nextBooleanValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getText

        public java.lang.String getText()
                                 throws java.io.IOException
        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 com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        java.io.IOException
      • getTextCharacters

        public char[] getTextCharacters()
                                 throws java.io.IOException
        Specified by:
        getTextCharacters in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        java.io.IOException
      • getTextLength

        public int getTextLength()
                          throws java.io.IOException
        Specified by:
        getTextLength in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        java.io.IOException
      • getTextOffset

        public int getTextOffset()
                          throws java.io.IOException
        Specified by:
        getTextOffset in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        java.io.IOException
      • getValueAsString

        public java.lang.String getValueAsString()
                                          throws java.io.IOException
        Overrides:
        getValueAsString in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        java.io.IOException
      • getValueAsString

        public java.lang.String getValueAsString​(java.lang.String defaultValue)
                                          throws java.io.IOException
        Overrides:
        getValueAsString in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        java.io.IOException
      • getText

        public int getText​(java.io.Writer writer)
                    throws java.io.IOException
        Overrides:
        getText in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • getBinaryValue

        public byte[] getBinaryValue​(com.fasterxml.jackson.core.Base64Variant b64variant)
                              throws java.io.IOException
        Specified by:
        getBinaryValue in class com.fasterxml.jackson.core.base.ParserMinimalBase
        Throws:
        java.io.IOException
      • getEmbeddedObject

        public java.lang.Object getEmbeddedObject()
                                           throws java.io.IOException
        Overrides:
        getEmbeddedObject in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • readBinaryValue

        public int readBinaryValue​(com.fasterxml.jackson.core.Base64Variant b64variant,
                                   java.io.OutputStream out)
                            throws java.io.IOException
        Overrides:
        readBinaryValue in class com.fasterxml.jackson.core.JsonParser
        Throws:
        java.io.IOException
      • _readBinaryEncoded

        private void _readBinaryEncoded​(java.io.OutputStream out,
                                        int length,
                                        byte[] buffer)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • _handleFieldName

        protected final com.fasterxml.jackson.core.JsonToken _handleFieldName()
                                                                       throws java.io.IOException
        Method that handles initial token type recognition for token that has to be either FIELD_NAME or END_OBJECT.
        Throws:
        java.io.IOException
      • _expandSeenNames

        private final java.lang.String[] _expandSeenNames​(java.lang.String[] oldShared)
        Method called to try to expand shared name area to fit one more potentially shared String. If area is already at its biggest size, will just clear the area (by setting next-offset to 0)
      • _addDecodedToSymbols

        private final java.lang.String _addDecodedToSymbols​(int len,
                                                            java.lang.String name)
      • _decodeShortAsciiName

        private final java.lang.String _decodeShortAsciiName​(int len)
                                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • _decodeShortUnicodeName

        private final java.lang.String _decodeShortUnicodeName​(int len)
                                                        throws java.io.IOException
        Helper method used to decode short Unicode string, length for which actual length (in bytes) is known
        Parameters:
        len - Length between 1 and 64
        Throws:
        java.io.IOException
      • _decodeLongUnicodeName

        private final java.lang.String _decodeLongUnicodeName​(int[] quads,
                                                              int byteLen,
                                                              int quadLen)
                                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • _handleLongFieldName

        private final void _handleLongFieldName()
                                         throws java.io.IOException
        Throws:
        java.io.IOException
      • _findDecodedFromSymbols

        private final java.lang.String _findDecodedFromSymbols​(int len)
                                                        throws java.io.IOException
        Helper method for trying to find specified encoded UTF-8 byte sequence from symbol table; if successful avoids actual decoding to String
        Throws:
        java.io.IOException
      • _findDecodedLong

        private final java.lang.String _findDecodedLong​(int len,
                                                        int q1,
                                                        int q2)
                                                 throws java.io.IOException
        Method for locating names longer than 8 bytes (in UTF-8)
        Throws:
        java.io.IOException
      • _growArrayTo

        private static int[] _growArrayTo​(int[] arr,
                                          int minSize)
      • _parseNumericValue

        protected void _parseNumericValue()
                                   throws java.io.IOException
        Specified by:
        _parseNumericValue in class SmileParserBase
        Throws:
        java.io.IOException
      • _finishToken

        protected final void _finishToken()
                                   throws java.io.IOException
        Method called to finish parsing of a token so that token contents are retrievable
        Throws:
        java.io.IOException
      • _finishNumberToken

        protected final void _finishNumberToken​(int tb)
                                         throws java.io.IOException
        Throws:
        java.io.IOException
      • _finishInt

        private final void _finishInt()
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • _finishIntSlow

        private final void _finishIntSlow()
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • _finishLong

        private final void _finishLong()
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • _finishLongSlow

        private final void _finishLongSlow()
                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • _fourBytesToInt

        private final int _fourBytesToInt()
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • _fourBytesToIntSlow

        private final int _fourBytesToIntSlow()
                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • _finishBigInteger

        private final void _finishBigInteger()
                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • _finishFloat

        private final void _finishFloat()
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • _finishDouble

        private final void _finishDouble()
                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • _finishBigDecimal

        private final void _finishBigDecimal()
                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • _readUnsignedVInt

        private final int _readUnsignedVInt()
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • _read7BitBinaryWithLength

        private final byte[] _read7BitBinaryWithLength()
                                                throws java.io.IOException
        Throws:
        java.io.IOException
      • _decodeShortAsciiValue

        protected final java.lang.String _decodeShortAsciiValue​(int len)
                                                         throws java.io.IOException
        Throws:
        java.io.IOException
      • _decodeShortUnicodeValue

        protected final java.lang.String _decodeShortUnicodeValue​(int len)
                                                           throws java.io.IOException
        Throws:
        java.io.IOException
      • _decodeLongAscii

        private final void _decodeLongAscii()
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • _decodeLongUnicode

        private final void _decodeLongUnicode()
                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • _finishRawBinary

        private final void _finishRawBinary()
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • _skipIncomplete

        protected void _skipIncomplete()
                                throws java.io.IOException
        Method called to skip remainders of an incomplete token, when contents themselves will not be needed any more
        Throws:
        java.io.IOException
      • _skipBytes

        protected void _skipBytes​(int len)
                           throws java.io.IOException
        Throws:
        java.io.IOException
      • _skip7BitBinary

        protected void _skip7BitBinary()
                                throws java.io.IOException
        Helper method for skipping length-prefixed binary data section
        Throws:
        java.io.IOException
      • _decodeUtf8_2

        private final int _decodeUtf8_2​(int c)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • _decodeUtf8_3

        private final int _decodeUtf8_3​(int c1)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • _decodeUtf8_3fast

        private final int _decodeUtf8_3fast​(int c1)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • _decodeUtf8_4

        private final int _decodeUtf8_4​(int c)
                                 throws java.io.IOException
        Returns:
        Character value minus 0x10000; this so that caller can readily expand it to actual surrogates
        Throws:
        java.io.IOException
      • _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 com.fasterxml.jackson.core.JsonParseException
        Throws:
        com.fasterxml.jackson.core.JsonParseException
      • _reportInvalidInitial

        protected void _reportInvalidInitial​(int mask)
                                      throws com.fasterxml.jackson.core.JsonParseException
        Throws:
        com.fasterxml.jackson.core.JsonParseException
      • _reportInvalidOther

        protected void _reportInvalidOther​(int mask)
                                    throws com.fasterxml.jackson.core.JsonParseException
        Throws:
        com.fasterxml.jackson.core.JsonParseException
      • _reportInvalidOther

        protected void _reportInvalidOther​(int mask,
                                           int ptr)
                                    throws com.fasterxml.jackson.core.JsonParseException
        Throws:
        com.fasterxml.jackson.core.JsonParseException
      • _eofAsNextToken

        private final com.fasterxml.jackson.core.JsonToken _eofAsNextToken()
                                                                    throws java.io.IOException
        Throws:
        java.io.IOException