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
      • getCurrentValue

        public java.lang.Object getCurrentValue()
        Description copied from class: JsonGenerator
        Helper method, usually equivalent to: getOutputContext().getCurrentValue();

        Note that "current value" is NOT populated (or used) by Streaming parser; it is only used by higher-level data-binding functionality. The reason it is included here is that it can be stored and accessed hierarchically, and gets passed through data-binding.

        Overrides:
        getCurrentValue in class JsonGenerator
      • setCurrentValue

        public void setCurrentValue​(java.lang.Object v)
        Description copied from class: JsonGenerator
        Helper method, usually equivalent to: getOutputContext().setCurrentValue(v);
        Overrides:
        setCurrentValue in class JsonGenerator
      • 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
      • 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:
        Context object that can give information about logical position within generated json content.
      • 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
        Throws:
        java.io.IOException
      • 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
        Throws:
        java.io.IOException
      • 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
        Throws:
        java.io.IOException
      • 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
      • writeObject

        public void writeObject​(java.lang.Object value)
                         throws java.io.IOException
        Description copied from class: JsonGenerator
        Method for writing given Java object (POJO) as Json. Exactly how the object gets written depends on object in question (ad on codec, its configuration); for most beans it will result in JSON Object, but for others JSON Array, or String or numeric value (and for nulls, JSON null literal. NOTE: generator must have its object codec set to non-null value; for generators created by a mapping factory this is the case, for others not.
        Specified by:
        writeObject in class JsonGenerator
        Throws:
        java.io.IOException
      • 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
        Throws:
        java.io.IOException
      • 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
      • 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
      • 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