Class GeneratorBase

  • All Implemented Interfaces:
    Versioned, java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable
    Direct Known Subclasses:
    JsonGeneratorImpl

    public abstract class GeneratorBase
    extends JsonGenerator
    This base class implements part of API that a JSON generator exposes to applications, adds shared internal methods that sub-classes can use and adds some abstract methods sub-classes must implement.
    • Method Detail

      • version

        public Version version()
        Implemented with standard version number detection algorithm, typically using a simple generated class, with information extracted from Maven project file during build.
        Specified by:
        version in interface Versioned
        Specified by:
        version in class JsonGenerator
        Returns:
        Version number of the generator (version of the jar that contains generator implementation class)
      • getCurrentValue

        public java.lang.Object getCurrentValue()
        Description copied from class: JsonGenerator
        Alias for JsonGenerator.currentValue(), to be deprecated in later Jackson 2.x versions (and removed from Jackson 3.0).
        Overrides:
        getCurrentValue in class JsonGenerator
        Returns:
        Location of the last processed input unit (byte or character)
      • overrideStdFeatures

        public JsonGenerator overrideStdFeatures​(int values,
                                                 int mask)
        Description copied from class: JsonGenerator
        Bulk set method for (re)setting states of features specified by mask. Functionally equivalent to int oldState = getFeatureMask(); int newState = (oldState & ~mask) | (values & mask); setFeatureMask(newState); but preferred as this lets caller more efficiently specify actual changes made.
        Overrides:
        overrideStdFeatures in class JsonGenerator
        Parameters:
        values - Bit mask of set/clear state for features to change
        mask - Bit mask of features to change
        Returns:
        This generator, to allow call chaining
      • getOutputContext

        public JsonStreamContext getOutputContext()
        Note: type was co-variant until Jackson 2.7; reverted back to base type in 2.8 to allow for overriding by subtypes that use custom context type.
        Specified by:
        getOutputContext in class JsonGenerator
        Returns:
        Stream output context (JsonStreamContext) associated with this generator
      • writeStartObject

        public void writeStartObject​(java.lang.Object forValue)
                              throws java.io.IOException
        Description copied from class: JsonGenerator
        Method for writing starting marker of an Object value to represent the given Java Object value. Argument is offered as metadata, but more importantly it should be assigned as the "current value" for the Object content that gets constructed and initialized.

        Object values can be written in any context where values are allowed: meaning everywhere except for when a field name is expected.

        Overrides:
        writeStartObject in class JsonGenerator
        Parameters:
        forValue - "Current value" to assign for the Object context being created
        Throws:
        java.io.IOException - if there is either an underlying I/O problem or encoding issue at format layer
      • writeFieldName

        public void writeFieldName​(SerializableString name)
                            throws java.io.IOException
        Description copied from class: JsonGenerator
        Method similar to JsonGenerator.writeFieldName(String), main difference being that it may perform better as some of processing (such as quoting of certain characters, or encoding into external encoding if supported by generator) can be done just once and reused for later calls.

        Default implementation simple uses unprocessed name container in serialized String; implementations are strongly encouraged to make use of more efficient methods argument object has.

        Specified by:
        writeFieldName in class JsonGenerator
        Parameters:
        name - Field name to write
        Throws:
        java.io.IOException - if there is either an underlying I/O problem or encoding issue at format layer
      • writeString

        public void writeString​(SerializableString text)
                         throws java.io.IOException
        Description copied from class: JsonGenerator
        Method similar to JsonGenerator.writeString(String), but that takes SerializableString which can make this potentially more efficient to call as generator may be able to reuse quoted and/or encoded representation.

        Default implementation just calls JsonGenerator.writeString(String); sub-classes should override it with more efficient implementation if possible.

        Specified by:
        writeString in class JsonGenerator
        Parameters:
        text - Pre-encoded String value to write
        Throws:
        java.io.IOException - if there is either an underlying I/O problem or encoding issue at format layer
      • writeRawValue

        public void writeRawValue​(java.lang.String text)
                           throws java.io.IOException
        Description copied from class: JsonGenerator
        Method that will force generator to copy input text verbatim without any modifications, but assuming it must constitute a single legal JSON value (number, string, boolean, null, Array or List). Assuming this, proper separators are added if and as needed (comma or colon), and generator state updated to reflect this.
        Specified by:
        writeRawValue in class JsonGenerator
        Parameters:
        text - Textual contents to included in output
        Throws:
        java.io.IOException - if there is either an underlying I/O problem or encoding issue at format layer
      • writeRawValue

        public void writeRawValue​(java.lang.String text,
                                  int offset,
                                  int len)
                           throws java.io.IOException
        Specified by:
        writeRawValue in class JsonGenerator
        Throws:
        java.io.IOException
      • writeRawValue

        public void writeRawValue​(char[] text,
                                  int offset,
                                  int len)
                           throws java.io.IOException
        Specified by:
        writeRawValue in class JsonGenerator
        Throws:
        java.io.IOException
      • writeBinary

        public int writeBinary​(Base64Variant b64variant,
                               java.io.InputStream data,
                               int dataLength)
                        throws java.io.IOException
        Description copied from class: JsonGenerator
        Method similar to JsonGenerator.writeBinary(Base64Variant,byte[],int,int), but where input is provided through a stream, allowing for incremental writes without holding the whole input in memory.
        Specified by:
        writeBinary in class JsonGenerator
        Parameters:
        b64variant - Base64 variant to use
        data - InputStream to use for reading binary data to write. Will not be closed after successful write operation
        dataLength - (optional) number of bytes that will be available; or -1 to be indicate it is not known. If a positive length is given, data MUST provide at least that many bytes: if not, an exception will be thrown. Note that implementations need not support cases where length is not known in advance; this depends on underlying data format: JSON output does NOT require length, other formats may.
        Returns:
        Number of bytes read from data and written as binary payload
        Throws:
        java.io.IOException - if there is either an underlying I/O problem or encoding issue at format layer
      • writeObject

        public void writeObject​(java.lang.Object value)
                         throws java.io.IOException
        Description copied from class: JsonGenerator
        Specified by:
        writeObject in class JsonGenerator
        Parameters:
        value - Java value (usually POJO) to write
        Throws:
        java.io.IOException - if there is either an underlying I/O problem or encoding issue at format layer
      • writeTree

        public void writeTree​(TreeNode rootNode)
                       throws java.io.IOException
        Description copied from class: JsonGenerator
        Method for writing given JSON tree (expressed as a tree where given JsonNode is the root) using this generator. This will generally just call JsonGenerator.writeObject(java.lang.Object) with given node, but is added for convenience and to make code more explicit in cases where it deals specifically with trees.
        Specified by:
        writeTree in class JsonGenerator
        Parameters:
        rootNode - TreeNode to write
        Throws:
        java.io.IOException - if there is either an underlying I/O problem or encoding issue at format layer
      • flush

        public abstract void flush()
                            throws java.io.IOException
        Description copied from class: JsonGenerator
        Method called to flush any buffered content to the underlying target (output stream, writer), and to flush the target itself as well.
        Specified by:
        flush in interface java.io.Flushable
        Specified by:
        flush in class JsonGenerator
        Throws:
        java.io.IOException - if there is either an underlying I/O problem or encoding issue at format layer
      • close

        public void close()
                   throws java.io.IOException
        Description copied from class: JsonGenerator
        Method called to close this generator, so that no more content can be written.

        Whether the underlying target (stream, writer) gets closed depends on whether this generator either manages the target (i.e. is the only one with access to the target -- case if caller passes a reference to the resource such as File, but not stream); or has feature JsonGenerator.Feature.AUTO_CLOSE_TARGET enabled. If either of above is true, the target is also closed. Otherwise (not managing, feature not enabled), target is not closed.

        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in class JsonGenerator
        Throws:
        java.io.IOException - if there is either an underlying I/O problem
      • isClosed

        public boolean isClosed()
        Description copied from class: JsonGenerator
        Method that can be called to determine whether this generator is closed or not. If it is closed, no more output can be done.
        Specified by:
        isClosed in class JsonGenerator
        Returns:
        True if this generator instance has been closed