Class JsonGeneratorBase

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, Versioned
    Direct Known Subclasses:
    SmileGenerator, Utf8Generator, WriterBasedGenerator

    public abstract class JsonGeneratorBase
    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.
    • Field Detail

      • _features

        protected int _features
        Bit flag composed of bits that indicate which JsonGenerator.Features are enabled.
      • _writeContext

        protected JsonWriteContext _writeContext
        Object that keeps track of the current contextual state of the generator.
      • _closed

        protected boolean _closed
        Flag that indicates whether generator is closed or not. Gets set when it is closed by an explicit call (close()).
    • Constructor Detail

      • JsonGeneratorBase

        protected JsonGeneratorBase​(int features,
                                    ObjectCodec codec)
    • Method Detail

      • version

        public Version version()
        Description copied from interface: Versioned
        Method called to detect version of the component that implements this interface; returned version should never be null, but may return specific "not available" instance (see Version for details).
        Specified by:
        version in interface Versioned
        Overrides:
        version in class JsonGenerator
      • getOutputContext

        public final JsonWriteContext getOutputContext()
        Note: co-variant return type.
        Specified by:
        getOutputContext in class JsonGenerator
        Returns:
        Context object that can give information about logical position within generated json content.
      • writeStartArray

        public void writeStartArray()
                             throws java.io.IOException,
                                    JsonGenerationException
        Description copied from class: JsonGenerator
        Method for writing starting marker of a JSON Array value (character '['; plus possible white space decoration if pretty-printing is enabled).

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

        Specified by:
        writeStartArray in class JsonGenerator
        Throws:
        java.io.IOException
        JsonGenerationException
      • writeEndArray

        public void writeEndArray()
                           throws java.io.IOException,
                                  JsonGenerationException
        Description copied from class: JsonGenerator
        Method for writing closing marker of a JSON Array value (character ']'; plus possible white space decoration if pretty-printing is enabled).

        Marker can be written if the innermost structured type is Array.

        Specified by:
        writeEndArray in class JsonGenerator
        Throws:
        java.io.IOException
        JsonGenerationException
      • writeStartObject

        public void writeStartObject()
                              throws java.io.IOException,
                                     JsonGenerationException
        Description copied from class: JsonGenerator
        Method for writing starting marker of a JSON Object value (character '{'; plus possible white space decoration if pretty-printing is enabled).

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

        Specified by:
        writeStartObject in class JsonGenerator
        Throws:
        java.io.IOException
        JsonGenerationException
      • writeEndObject

        public void writeEndObject()
                            throws java.io.IOException,
                                   JsonGenerationException
        Description copied from class: JsonGenerator
        Method for writing closing marker of a JSON Object value (character '}'; plus possible white space decoration if pretty-printing is enabled).

        Marker can be written if the innermost structured type is Object, and the last written event was either a complete value, or START-OBJECT marker (see JSON specification for more details).

        Specified by:
        writeEndObject in class JsonGenerator
        Throws:
        java.io.IOException
        JsonGenerationException
      • writeRawValue

        public void writeRawValue​(java.lang.String text)
                           throws java.io.IOException,
                                  JsonGenerationException
        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
        JsonGenerationException
      • writeObject

        public void writeObject​(java.lang.Object value)
                         throws java.io.IOException,
                                JsonProcessingException
        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
        JsonProcessingException
      • 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 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
      • copyCurrentEvent

        public final void copyCurrentEvent​(JsonParser jp)
                                    throws java.io.IOException,
                                           JsonProcessingException
        Description copied from class: JsonGenerator
        Method for copying contents of the current event that the given parser instance points to. Note that the method will not copy any other events, such as events contained within Json Array or Object structures.

        Calling this method will not advance the given parser, although it may cause parser to internally process more data (if it lazy loads contents of value events, for example)

        Specified by:
        copyCurrentEvent in class JsonGenerator
        Throws:
        java.io.IOException
        JsonProcessingException
      • copyCurrentStructure

        public final void copyCurrentStructure​(JsonParser jp)
                                        throws java.io.IOException,
                                               JsonProcessingException
        Description copied from class: JsonGenerator
        Method for copying contents of the current event and following events that it encloses the given parser instance points to.

        So what constitutes enclosing? Here is the list of events that have associated enclosed events that will get copied:

        After calling this method, parser will point to the last event that was copied. This will either be the event parser already pointed to (if there were no enclosed events), or the last enclosed event copied.

        Specified by:
        copyCurrentStructure in class JsonGenerator
        Throws:
        java.io.IOException
        JsonProcessingException
      • _releaseBuffers

        protected abstract void _releaseBuffers()
      • _cantHappen

        protected void _cantHappen()
      • _writeSimpleObject

        protected void _writeSimpleObject​(java.lang.Object value)
                                   throws java.io.IOException,
                                          JsonGenerationException
        Helper method to try to call appropriate write method for given untyped Object. At this point, no structural conversions should be done, only simple basic types are to be coerced as necessary.
        Parameters:
        value - Non-null value to write
        Throws:
        java.io.IOException
        JsonGenerationException
      • _throwInternal

        protected final void _throwInternal()
      • _reportUnsupportedOperation

        protected void _reportUnsupportedOperation()
        Since:
        1.7