com.fasterxml.jackson.databind.util

Class TokenBuffer

  • java.lang.Object
    • com.fasterxml.jackson.core.JsonGenerator
      • com.fasterxml.jackson.databind.util.TokenBuffer
  • All Implemented Interfaces:
    com.fasterxml.jackson.core.Versioned, Closeable, Flushable, AutoCloseable


    public class TokenBuffer
    extends com.fasterxml.jackson.core.JsonGenerator
    Utility class used for efficient storage of JsonToken sequences, needed for temporary buffering. Space efficient for different sequence lengths (especially so for smaller ones; but not significantly less efficient for larger), highly efficient for linear iteration and appending. Implemented as segmented/chunked linked list of tokens; only modifications are via appends.

    Note that before version 2.0, this class was located in the "core" bundle, not data-binding; but since it was only used by data binding, was moved here to reduce size of core package

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class and Description
      protected static class  TokenBuffer.Parser 
      protected static class  TokenBuffer.Segment
      Individual segment of TokenBuffer that can store up to 16 tokens (limited by 4 bits per token type marker requirement).
      • Nested classes/interfaces inherited from class com.fasterxml.jackson.core.JsonGenerator

        com.fasterxml.jackson.core.JsonGenerator.Feature
    • Field Summary

      Fields 
      Modifier and Type Field and Description
      protected int _appendAt
      Offset within last segment,
      protected boolean _closed 
      protected TokenBuffer.Segment _first
      First segment, for contents this buffer has
      protected int _generatorFeatures
      Bit flag composed of bits that indicate which JsonGenerator.Features are enabled.
      protected boolean _hasNativeId
      Do we currnetly have a native type or object id buffered?
      protected boolean _hasNativeObjectIds 
      protected boolean _hasNativeTypeIds 
      protected TokenBuffer.Segment _last
      Last segment of this buffer, one that is used for appending more tokens
      protected boolean _mayHaveNativeIds 
      protected com.fasterxml.jackson.core.ObjectCodec _objectCodec
      Object codec to use for stream-based object conversion through parser/generator interfaces.
      protected Object _objectId
      If native object ids supported, this is the id for following value (or first token of one) to be written.
      protected Object _typeId
      If native type ids supported, this is the id for following value (or first token of one) to be written.
      protected com.fasterxml.jackson.core.json.JsonWriteContext _writeContext 
      protected static int DEFAULT_GENERATOR_FEATURES 
      • Fields inherited from class com.fasterxml.jackson.core.JsonGenerator

        _cfgPrettyPrinter
    • Constructor Summary

      Constructors 
      Constructor and Description
      TokenBuffer(com.fasterxml.jackson.core.JsonParser jp) 
      TokenBuffer(com.fasterxml.jackson.core.ObjectCodec codec)
      Deprecated. 
      since 2.3 preferred variant is one that takes JsonParser or additional boolean parameter.
      TokenBuffer(com.fasterxml.jackson.core.ObjectCodec codec, boolean hasNativeIds) 
    • Field Detail

      • DEFAULT_GENERATOR_FEATURES

        protected static final int DEFAULT_GENERATOR_FEATURES
      • _objectCodec

        protected com.fasterxml.jackson.core.ObjectCodec _objectCodec
        Object codec to use for stream-based object conversion through parser/generator interfaces. If null, such methods can not be used.
      • _generatorFeatures

        protected int _generatorFeatures
        Bit flag composed of bits that indicate which JsonGenerator.Features are enabled.

        NOTE: most features have no effect on this class

      • _closed

        protected boolean _closed
      • _hasNativeTypeIds

        protected boolean _hasNativeTypeIds
        Since:
        2.3
      • _hasNativeObjectIds

        protected boolean _hasNativeObjectIds
        Since:
        2.3
      • _mayHaveNativeIds

        protected boolean _mayHaveNativeIds
        Since:
        2.3
      • _last

        protected TokenBuffer.Segment _last
        Last segment of this buffer, one that is used for appending more tokens
      • _appendAt

        protected int _appendAt
        Offset within last segment,
      • _typeId

        protected Object _typeId
        If native type ids supported, this is the id for following value (or first token of one) to be written.
      • _objectId

        protected Object _objectId
        If native object ids supported, this is the id for following value (or first token of one) to be written.
      • _hasNativeId

        protected boolean _hasNativeId
        Do we currnetly have a native type or object id buffered?
      • _writeContext

        protected com.fasterxml.jackson.core.json.JsonWriteContext _writeContext
    • Constructor Detail

      • TokenBuffer

        @Deprecated
        public TokenBuffer(com.fasterxml.jackson.core.ObjectCodec codec)
        Deprecated. since 2.3 preferred variant is one that takes JsonParser or additional boolean parameter.
        Parameters:
        codec - Object codec to use for stream-based object conversion through parser/generator interfaces. If null, such methods can not be used.
      • TokenBuffer

        public TokenBuffer(com.fasterxml.jackson.core.ObjectCodec codec,
                   boolean hasNativeIds)
        Parameters:
        codec - Object codec to use for stream-based object conversion through parser/generator interfaces. If null, such methods can not be used.
        hasNativeIds - Whether resulting JsonParser (if created) is considered to support native type and object ids
      • TokenBuffer

        public TokenBuffer(com.fasterxml.jackson.core.JsonParser jp)
        Since:
        2.3
    • Method Detail

      • version

        public 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.JsonGenerator
      • asParser

        public com.fasterxml.jackson.core.JsonParser asParser()
        Method used to create a JsonParser that can read contents stored in this buffer. Will use default _objectCodec for object conversions.

        Note: instances are not synchronized, that is, they are not thread-safe if there are concurrent appends to the underlying buffer.

        Returns:
        Parser that can be used for reading contents stored in this buffer
      • asParser

        public com.fasterxml.jackson.core.JsonParser asParser(com.fasterxml.jackson.core.ObjectCodec codec)
        Method used to create a JsonParser that can read contents stored in this buffer.

        Note: instances are not synchronized, that is, they are not thread-safe if there are concurrent appends to the underlying buffer.

        Parameters:
        codec - Object codec to use for stream-based object conversion through parser/generator interfaces. If null, such methods can not be used.
        Returns:
        Parser that can be used for reading contents stored in this buffer
      • asParser

        public com.fasterxml.jackson.core.JsonParser asParser(com.fasterxml.jackson.core.JsonParser src)
        Parameters:
        src - Parser to use for accessing source information like location, configured codec
      • firstToken

        public com.fasterxml.jackson.core.JsonToken firstToken()
      • append

        public TokenBuffer append(TokenBuffer other)
                           throws IOException,
                                  com.fasterxml.jackson.core.JsonGenerationException
        Helper method that will append contents of given buffer into this buffer. Not particularly optimized; can be made faster if there is need.
        Returns:
        This buffer
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • serialize

        public void serialize(com.fasterxml.jackson.core.JsonGenerator jgen)
                       throws IOException,
                              com.fasterxml.jackson.core.JsonGenerationException
        Helper method that will write all contents of this buffer using given JsonGenerator.

        Note: this method would be enough to implement JsonSerializer for TokenBuffer type; but we can not have upwards references (from core to mapper package); and as such we also can not take second argument.

        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • deserialize

        public TokenBuffer deserialize(com.fasterxml.jackson.core.JsonParser jp,
                              DeserializationContext ctxt)
                                throws IOException,
                                       com.fasterxml.jackson.core.JsonProcessingException
        Helper method used by standard deserializer.
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonProcessingException
        Since:
        2.3
      • enable

        public com.fasterxml.jackson.core.JsonGenerator enable(com.fasterxml.jackson.core.JsonGenerator.Feature f)
        Specified by:
        enable in class com.fasterxml.jackson.core.JsonGenerator
      • disable

        public com.fasterxml.jackson.core.JsonGenerator disable(com.fasterxml.jackson.core.JsonGenerator.Feature f)
        Specified by:
        disable in class com.fasterxml.jackson.core.JsonGenerator
      • isEnabled

        public boolean isEnabled(com.fasterxml.jackson.core.JsonGenerator.Feature f)
        Specified by:
        isEnabled in class com.fasterxml.jackson.core.JsonGenerator
      • getFeatureMask

        public int getFeatureMask()
        Specified by:
        getFeatureMask in class com.fasterxml.jackson.core.JsonGenerator
      • setFeatureMask

        public com.fasterxml.jackson.core.JsonGenerator setFeatureMask(int mask)
        Specified by:
        setFeatureMask in class com.fasterxml.jackson.core.JsonGenerator
      • useDefaultPrettyPrinter

        public com.fasterxml.jackson.core.JsonGenerator useDefaultPrettyPrinter()
        Specified by:
        useDefaultPrettyPrinter in class com.fasterxml.jackson.core.JsonGenerator
      • setCodec

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

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

        public final com.fasterxml.jackson.core.json.JsonWriteContext getOutputContext()
        Specified by:
        getOutputContext in class com.fasterxml.jackson.core.JsonGenerator
      • canWriteBinaryNatively

        public boolean canWriteBinaryNatively()
        Since we can efficiently store byte[], yes.
        Overrides:
        canWriteBinaryNatively in class com.fasterxml.jackson.core.JsonGenerator
      • flush

        public void flush()
                   throws IOException
        Specified by:
        flush in interface Flushable
        Specified by:
        flush in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
      • isClosed

        public boolean isClosed()
        Specified by:
        isClosed in class com.fasterxml.jackson.core.JsonGenerator
      • writeStartArray

        public final void writeStartArray()
                                   throws IOException,
                                          com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeStartArray in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeEndArray

        public final void writeEndArray()
                                 throws IOException,
                                        com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeEndArray in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeStartObject

        public final void writeStartObject()
                                    throws IOException,
                                           com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeStartObject in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeEndObject

        public final void writeEndObject()
                                  throws IOException,
                                         com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeEndObject in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeFieldName

        public final void writeFieldName(String name)
                                  throws IOException,
                                         com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeFieldName in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeFieldName

        public void writeFieldName(com.fasterxml.jackson.core.SerializableString name)
                            throws IOException,
                                   com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeFieldName in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeString

        public void writeString(String text)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeString in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeString

        public void writeString(char[] text,
                       int offset,
                       int len)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeString in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeString

        public void writeString(com.fasterxml.jackson.core.SerializableString text)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeString in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeRawUTF8String

        public void writeRawUTF8String(byte[] text,
                              int offset,
                              int length)
                                throws IOException,
                                       com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeRawUTF8String in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeUTF8String

        public void writeUTF8String(byte[] text,
                           int offset,
                           int length)
                             throws IOException,
                                    com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeUTF8String in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeRaw

        public void writeRaw(String text)
                      throws IOException,
                             com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeRaw in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeRaw

        public void writeRaw(String text,
                    int offset,
                    int len)
                      throws IOException,
                             com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeRaw in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeRaw

        public void writeRaw(com.fasterxml.jackson.core.SerializableString text)
                      throws IOException,
                             com.fasterxml.jackson.core.JsonGenerationException
        Overrides:
        writeRaw in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeRaw

        public void writeRaw(char[] text,
                    int offset,
                    int len)
                      throws IOException,
                             com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeRaw in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeRaw

        public void writeRaw(char c)
                      throws IOException,
                             com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeRaw in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeRawValue

        public void writeRawValue(String text)
                           throws IOException,
                                  com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeRawValue in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeRawValue

        public void writeRawValue(String text,
                         int offset,
                         int len)
                           throws IOException,
                                  com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeRawValue in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeRawValue

        public void writeRawValue(char[] text,
                         int offset,
                         int len)
                           throws IOException,
                                  com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeRawValue in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeNumber

        public void writeNumber(short i)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Overrides:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeNumber

        public void writeNumber(int i)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeNumber

        public void writeNumber(long l)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeNumber

        public void writeNumber(double d)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeNumber

        public void writeNumber(float f)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeNumber

        public void writeNumber(BigDecimal dec)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeNumber

        public void writeNumber(BigInteger v)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeNumber

        public void writeNumber(String encodedValue)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeNumber in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeBoolean

        public void writeBoolean(boolean state)
                          throws IOException,
                                 com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeBoolean in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeNull

        public void writeNull()
                       throws IOException,
                              com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeNull in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeObject

        public void writeObject(Object value)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonProcessingException
        Specified by:
        writeObject in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonProcessingException
      • writeTree

        public void writeTree(com.fasterxml.jackson.core.TreeNode rootNode)
                       throws IOException,
                              com.fasterxml.jackson.core.JsonProcessingException
        Specified by:
        writeTree in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonProcessingException
      • writeBinary

        public void writeBinary(com.fasterxml.jackson.core.Base64Variant b64variant,
                       byte[] data,
                       int offset,
                       int len)
                         throws IOException,
                                com.fasterxml.jackson.core.JsonGenerationException
        Specified by:
        writeBinary in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonGenerationException
      • writeBinary

        public int writeBinary(com.fasterxml.jackson.core.Base64Variant b64variant,
                      InputStream data,
                      int dataLength)
        Although we could support this method, it does not necessarily make sense: we can not make good use of streaming because buffer must hold all the data. Because of this, currently this will simply throw UnsupportedOperationException
        Specified by:
        writeBinary in class com.fasterxml.jackson.core.JsonGenerator
      • canWriteTypeId

        public boolean canWriteTypeId()
        Overrides:
        canWriteTypeId in class com.fasterxml.jackson.core.JsonGenerator
      • canWriteObjectId

        public boolean canWriteObjectId()
        Overrides:
        canWriteObjectId in class com.fasterxml.jackson.core.JsonGenerator
      • writeTypeId

        public void writeTypeId(Object id)
        Overrides:
        writeTypeId in class com.fasterxml.jackson.core.JsonGenerator
      • writeObjectId

        public void writeObjectId(Object id)
        Overrides:
        writeObjectId in class com.fasterxml.jackson.core.JsonGenerator
      • copyCurrentEvent

        public void copyCurrentEvent(com.fasterxml.jackson.core.JsonParser jp)
                              throws IOException,
                                     com.fasterxml.jackson.core.JsonProcessingException
        Overrides:
        copyCurrentEvent in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonProcessingException
      • copyCurrentStructure

        public void copyCurrentStructure(com.fasterxml.jackson.core.JsonParser jp)
                                  throws IOException,
                                         com.fasterxml.jackson.core.JsonProcessingException
        Overrides:
        copyCurrentStructure in class com.fasterxml.jackson.core.JsonGenerator
        Throws:
        IOException
        com.fasterxml.jackson.core.JsonProcessingException
      • _append

        protected final void _append(com.fasterxml.jackson.core.JsonToken type)
      • _append

        protected final void _append(com.fasterxml.jackson.core.JsonToken type,
                   Object value)
      • _appendRaw

        protected final void _appendRaw(int rawType,
                      Object value)
      • _reportUnsupportedOperation

        protected void _reportUnsupportedOperation()
        Overrides:
        _reportUnsupportedOperation in class com.fasterxml.jackson.core.JsonGenerator

Copyright © 2014 FasterXML. All Rights Reserved.