Class SmileGenerator

java.lang.Object
com.fasterxml.jackson.core.JsonGenerator
com.fasterxml.jackson.core.base.GeneratorBase
com.fasterxml.jackson.dataformat.smile.SmileGenerator
All Implemented Interfaces:
com.fasterxml.jackson.core.Versioned, Closeable, Flushable, AutoCloseable

public class SmileGenerator extends com.fasterxml.jackson.core.base.GeneratorBase
JsonGenerator implementation for Smile-encoded content (see Smile Format Specification)
  • Field Details

    • DEFAULT_NAME_BUFFER_LENGTH

      protected static final int DEFAULT_NAME_BUFFER_LENGTH
      See Also:
    • DEFAULT_STRING_VALUE_BUFFER_LENGTH

      protected static final int DEFAULT_STRING_VALUE_BUFFER_LENGTH
      See Also:
    • TOKEN_BYTE_LONG_STRING_ASCII

      protected static final byte TOKEN_BYTE_LONG_STRING_ASCII
      See Also:
    • TOKEN_BYTE_INT_32

      protected static final byte TOKEN_BYTE_INT_32
      See Also:
    • TOKEN_BYTE_INT_64

      protected static final byte TOKEN_BYTE_INT_64
      See Also:
    • TOKEN_BYTE_BIG_INTEGER

      protected static final byte TOKEN_BYTE_BIG_INTEGER
      See Also:
    • TOKEN_BYTE_FLOAT_32

      protected static final byte TOKEN_BYTE_FLOAT_32
      See Also:
    • TOKEN_BYTE_FLOAT_64

      protected static final byte TOKEN_BYTE_FLOAT_64
      See Also:
    • TOKEN_BYTE_BIG_DECIMAL

      protected static final byte TOKEN_BYTE_BIG_DECIMAL
      See Also:
    • MIN_INT_AS_LONG

      protected static final long MIN_INT_AS_LONG
      See Also:
    • MAX_INT_AS_LONG

      protected static final long MAX_INT_AS_LONG
      See Also:
    • REPLACEMENT_CHAR

      protected static final int REPLACEMENT_CHAR
      The replacement character to use to fix invalid Unicode sequences (mismatched surrogate pair).
      Since:
      2.13
      See Also:
    • _streamWriteConstraints

      protected final com.fasterxml.jackson.core.StreamWriteConstraints _streamWriteConstraints
      Since:
      2.16
    • _out

      protected final OutputStream _out
    • _formatFeatures

      protected int _formatFeatures
      Bit flag composed of bits that indicate which SmileGenerator.Features are enabled.
    • _streamWriteContext

      protected SmileWriteContext _streamWriteContext
    • _outputBuffer

      protected byte[] _outputBuffer
      Intermediate buffer in which contents are buffered before being written using _out.
    • _outputTail

      protected int _outputTail
      Pointer to the next available byte in _outputBuffer
    • _outputEnd

      protected final int _outputEnd
      Offset to index after the last valid index in _outputBuffer. Typically same as length of the buffer.
    • _bytesWritten

      protected int _bytesWritten
      Let's keep track of how many bytes have been output, may prove useful when debugging. This does not include bytes buffered in the output buffer, just bytes that have been written using underlying stream writer.
    • _seenNames

      protected SmileGenerator.SharedStringNode[] _seenNames
      Raw data structure used for checking whether field name to write can be output using back reference or not.
    • _seenNameCount

      protected int _seenNameCount
      Number of entries in _seenNames; -1 if no shared name detection is enabled
    • _seenStringValues

      protected SmileGenerator.SharedStringNode[] _seenStringValues
      Raw data structure used for checking whether String value to write can be output using back reference or not.
    • _seenStringValueCount

      protected int _seenStringValueCount
      Number of entries in _seenStringValues; -1 if no shared text value detection is enabled
    • _bufferRecyclable

      protected boolean _bufferRecyclable
      Flag that indicates whether the output buffer is recyclable (and needs to be returned to recycler once we are done) or not.
  • Constructor Details

    • SmileGenerator

      public SmileGenerator(com.fasterxml.jackson.core.io.IOContext ioCtxt, int stdFeatures, int smileFeatures, com.fasterxml.jackson.core.ObjectCodec codec, OutputStream out)
      Since:
      2.16
    • SmileGenerator

      public SmileGenerator(com.fasterxml.jackson.core.io.IOContext ioCtxt, int stdFeatures, int smileFeatures, com.fasterxml.jackson.core.ObjectCodec codec, OutputStream out, byte[] outputBuffer, int offset, boolean bufferRecyclable)
      Since:
      2.16
  • Method Details

    • writeHeader

      public void writeHeader() throws IOException
      Method that can be called to explicitly write Smile document header. Note that usually you do not need to call this for first document to output, but rather only if you intend to write multiple root-level documents with same generator (and even in that case this is optional thing to do). As a result usually only SmileFactory calls this method.
      Throws:
      IOException
    • version

      public com.fasterxml.jackson.core.Version version()
      Specified by:
      version in interface com.fasterxml.jackson.core.Versioned
      Overrides:
      version in class com.fasterxml.jackson.core.base.GeneratorBase
    • canWriteBinaryNatively

      public boolean canWriteBinaryNatively()
      Overrides:
      canWriteBinaryNatively in class com.fasterxml.jackson.core.JsonGenerator
    • getWriteCapabilities

      public com.fasterxml.jackson.core.util.JacksonFeatureSet<com.fasterxml.jackson.core.StreamWriteCapability> getWriteCapabilities()
      Overrides:
      getWriteCapabilities in class com.fasterxml.jackson.core.JsonGenerator
    • useDefaultPrettyPrinter

      public com.fasterxml.jackson.core.JsonGenerator useDefaultPrettyPrinter()
      No way (or need) to indent anything, so let's block any attempts. (should we throw an exception instead?)
      Overrides:
      useDefaultPrettyPrinter in class com.fasterxml.jackson.core.base.GeneratorBase
    • setPrettyPrinter

      public com.fasterxml.jackson.core.JsonGenerator setPrettyPrinter(com.fasterxml.jackson.core.PrettyPrinter pp)
      No way (or need) to indent anything, so let's block any attempts. (should we throw an exception instead?)
      Overrides:
      setPrettyPrinter in class com.fasterxml.jackson.core.JsonGenerator
    • getOutputTarget

      public Object getOutputTarget()
      Overrides:
      getOutputTarget in class com.fasterxml.jackson.core.JsonGenerator
    • getOutputBuffered

      public int getOutputBuffered()
      Overrides:
      getOutputBuffered in class com.fasterxml.jackson.core.JsonGenerator
    • getFormatFeatures

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

      public com.fasterxml.jackson.core.JsonGenerator overrideFormatFeatures(int values, int mask)
      Overrides:
      overrideFormatFeatures in class com.fasterxml.jackson.core.JsonGenerator
    • getOutputContext

      public com.fasterxml.jackson.core.JsonStreamContext getOutputContext()
      Overrides:
      getOutputContext in class com.fasterxml.jackson.core.base.GeneratorBase
    • currentValue

      public Object currentValue()
      Overrides:
      currentValue in class com.fasterxml.jackson.core.base.GeneratorBase
    • assignCurrentValue

      public void assignCurrentValue(Object v)
      Overrides:
      assignCurrentValue in class com.fasterxml.jackson.core.base.GeneratorBase
    • getCurrentValue

      @Deprecated public Object getCurrentValue()
      Deprecated.
      Overrides:
      getCurrentValue in class com.fasterxml.jackson.core.JsonGenerator
    • setCurrentValue

      @Deprecated public void setCurrentValue(Object v)
      Deprecated.
      Overrides:
      setCurrentValue in class com.fasterxml.jackson.core.JsonGenerator
    • writeFieldName

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

      public final void writeFieldName(com.fasterxml.jackson.core.SerializableString name) throws IOException
      Overrides:
      writeFieldName in class com.fasterxml.jackson.core.base.GeneratorBase
      Throws:
      IOException
    • enable

    • disable

    • isEnabled

      public final boolean isEnabled(SmileGenerator.Feature f)
    • configure

      public SmileGenerator configure(SmileGenerator.Feature f, boolean state)
    • streamWriteConstraints

      public com.fasterxml.jackson.core.StreamWriteConstraints streamWriteConstraints()
      Overrides:
      streamWriteConstraints in class com.fasterxml.jackson.core.JsonGenerator
    • writeRaw

      public void writeRaw(byte b) throws IOException
      Method for directly inserting specified byte in output at current position.

      NOTE: only use this method if you really know what you are doing.

      Throws:
      IOException
    • writeBytes

      public void writeBytes(byte[] data, int offset, int len) throws IOException
      Method for directly inserting specified bytes in output at current position.

      NOTE: only use this method if you really know what you are doing.

      Throws:
      IOException
    • writeStartArray

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

      public final void writeStartArray(Object forValue) throws IOException
      Overrides:
      writeStartArray in class com.fasterxml.jackson.core.JsonGenerator
      Throws:
      IOException
    • writeStartArray

      public final void writeStartArray(Object forValue, int elementsToWrite) throws IOException
      Overrides:
      writeStartArray in class com.fasterxml.jackson.core.JsonGenerator
      Throws:
      IOException
    • writeStartArray

      @Deprecated public final void writeStartArray(int size) throws IOException
      Deprecated.
      Overrides:
      writeStartArray in class com.fasterxml.jackson.core.JsonGenerator
      Throws:
      IOException
    • writeEndArray

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

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

      public final void writeStartObject(Object forValue) throws IOException
      Overrides:
      writeStartObject in class com.fasterxml.jackson.core.base.GeneratorBase
      Throws:
      IOException
    • writeStartObject

      public void writeStartObject(Object forValue, int elementsToWrite) throws IOException
      Overrides:
      writeStartObject in class com.fasterxml.jackson.core.JsonGenerator
      Throws:
      IOException
    • writeEndObject

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

      public void writeArray(int[] array, int offset, int length) throws IOException
      Overrides:
      writeArray in class com.fasterxml.jackson.core.JsonGenerator
      Throws:
      IOException
    • writeArray

      public void writeArray(long[] array, int offset, int length) throws IOException
      Overrides:
      writeArray in class com.fasterxml.jackson.core.JsonGenerator
      Throws:
      IOException
    • writeArray

      public void writeArray(double[] array, int offset, int length) throws IOException
      Overrides:
      writeArray in class com.fasterxml.jackson.core.JsonGenerator
      Throws:
      IOException
    • _writeFieldName

      protected final void _writeFieldName(com.fasterxml.jackson.core.SerializableString name) throws IOException
      Throws:
      IOException
    • _writeFieldNameUnicode

      protected final void _writeFieldNameUnicode(com.fasterxml.jackson.core.SerializableString name, byte[] bytes) throws IOException
      Throws:
      IOException
    • writeString

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

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

      public final void writeString(com.fasterxml.jackson.core.SerializableString sstr) throws IOException
      Overrides:
      writeString in class com.fasterxml.jackson.core.base.GeneratorBase
      Throws:
      IOException
    • writeRawUTF8String

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

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

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

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

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

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

      public void writeRawValue(String text) throws IOException
      Overrides:
      writeRawValue in class com.fasterxml.jackson.core.base.GeneratorBase
      Throws:
      IOException
    • writeRawValue

      public void writeRawValue(String text, int offset, int len) throws IOException
      Overrides:
      writeRawValue in class com.fasterxml.jackson.core.base.GeneratorBase
      Throws:
      IOException
    • writeRawValue

      public void writeRawValue(char[] text, int offset, int len) throws IOException
      Overrides:
      writeRawValue in class com.fasterxml.jackson.core.base.GeneratorBase
      Throws:
      IOException
    • writeBinary

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

      public int writeBinary(InputStream data, int dataLength) throws IOException
      Overrides:
      writeBinary in class com.fasterxml.jackson.core.JsonGenerator
      Throws:
      IOException
    • writeBinary

      public int writeBinary(com.fasterxml.jackson.core.Base64Variant b64variant, InputStream data, int dataLength) throws IOException
      Overrides:
      writeBinary in class com.fasterxml.jackson.core.base.GeneratorBase
      Throws:
      IOException
    • writeBoolean

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

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

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

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

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

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

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

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

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

      protected void _writeIntegralNumber(String enc, boolean neg) throws IOException
      Throws:
      IOException
    • _writeDecimalNumber

      protected void _writeDecimalNumber(String enc) throws IOException
      Throws:
      IOException
    • _verifyValueWrite

      protected final void _verifyValueWrite(String typeMsg) throws IOException
      Specified by:
      _verifyValueWrite in class com.fasterxml.jackson.core.base.GeneratorBase
      Throws:
      IOException
    • flush

      public final void flush() throws IOException
      Specified by:
      flush in interface Flushable
      Specified by:
      flush in class com.fasterxml.jackson.core.base.GeneratorBase
      Throws:
      IOException
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class com.fasterxml.jackson.core.base.GeneratorBase
      Throws:
      IOException
    • _write7BitBinaryWithLength

      protected void _write7BitBinaryWithLength(byte[] data, int offset, int len) throws IOException
      Throws:
      IOException
    • _write7BitBinaryWithLength

      protected int _write7BitBinaryWithLength(InputStream in, int bytesLeft, byte[] buffer) throws IOException
      Throws:
      IOException
    • _releaseBuffers

      protected void _releaseBuffers()
      Specified by:
      _releaseBuffers in class com.fasterxml.jackson.core.base.GeneratorBase
    • _flushBuffer

      protected final void _flushBuffer() throws IOException
      Throws:
      IOException
    • outputOffset

      protected long outputOffset()
      Method for accessing offset of the next byte within the whole output stream that this generator has produced.
    • _notSupported

      protected UnsupportedOperationException _notSupported()
    • _streamReadConstraints

      protected com.fasterxml.jackson.core.StreamReadConstraints _streamReadConstraints()
      We need access to some reader-side constraints for safety-check within number decoding for : for now we need to rely on global defaults; should be ok for basic safeguarding.
      Since:
      2.17