public abstract class

GeneratorBase

extends JsonGenerator
java.lang.Object
   ↳ com.fasterxml.jackson.core.JsonGenerator
     ↳ com.fasterxml.jackson.core.base.GeneratorBase
Known Direct Subclasses

Class Overview

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.

Summary

Fields
protected boolean _cfgNumbersAsStrings Flag set to indicate that implicit conversion from number to JSON String is needed (as per WRITE_NUMBERS_AS_STRINGS).
protected boolean _closed Flag that indicates whether generator is closed or not.
protected int _features Bit flag composed of bits that indicate which JsonGenerator.Features are enabled.
protected ObjectCodec _objectCodec
protected JsonWriteContext _writeContext Object that keeps track of the current contextual state of the generator.
[Expand]
Inherited Fields
From class com.fasterxml.jackson.core.JsonGenerator
Protected Constructors
GeneratorBase(int features, ObjectCodec codec)
Public Methods
void close()
Method called to close this generator, so that no more content can be written.
final void copyCurrentEvent(JsonParser jp)
Method for copying contents of the current event that the given parser instance points to.
final void copyCurrentStructure(JsonParser jp)
Method for copying contents of the current event and following events that it encloses the given parser instance points to.
JsonGenerator disable(JsonGenerator.Feature f)
Method for disabling specified features (check JsonGenerator.Feature for list of features)
JsonGenerator enable(JsonGenerator.Feature f)
Method for enabling specified parser features: check JsonGenerator.Feature for list of available features.
abstract void flush()
Method called to flush any buffered content to the underlying target (output stream, writer), and to flush the target itself as well.
final ObjectCodec getCodec()
Method for accessing the object used for writing Java object as Json content (using method writeObject(Object)).
final JsonWriteContext getOutputContext()
Note: co-variant return type.
boolean isClosed()
Method that can be called to determine whether this generator is closed or not.
final boolean isEnabled(JsonGenerator.Feature f)
Method for checking whether given feature is enabled.
JsonGenerator setCodec(ObjectCodec oc)
Method that can be called to set or reset the object to use for writing Java objects as JsonContent (using method writeObject(Object)).
JsonGenerator useDefaultPrettyPrinter()
Convenience method for enabling pretty-printing using the default pretty printer (DefaultPrettyPrinter).
Version version()
Implemented with detection that tries to find "VERSION.txt" in same package as the implementation class.
int writeBinary(Base64Variant b64variant, InputStream data, int dataLength)
Method similar to writeBinary(Base64Variant, byte[], int, int), but where input is provided through a stream, allowing for incremental writes without holding the whole input in memory.
void writeFieldName(SerializableString name)
Method similar to 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.
void writeObject(Object value)
Method for writing given Java object (POJO) as Json.
void writeRawValue(String text)
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).
void writeRawValue(char[] text, int offset, int len)
void writeRawValue(String text, int offset, int len)
void writeString(SerializableString text)
Method similar to 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.
void writeTree(TreeNode rootNode)
Method for writing given JSON tree (expressed as a tree where given JsonNode is the root) using this generator.
Protected Methods
void _cantHappen()
abstract void _releaseBuffers()
void _reportError(String msg)
void _reportUnsupportedOperation()
final void _throwInternal()
abstract void _verifyValueWrite(String typeMsg)
void _writeSimpleObject(Object value)
Helper method to try to call appropriate write method for given untyped Object.
[Expand]
Inherited Methods
From class com.fasterxml.jackson.core.JsonGenerator
From class java.lang.Object
From interface com.fasterxml.jackson.core.Versioned
From interface java.io.Closeable
From interface java.io.Flushable
From interface java.lang.AutoCloseable

Fields

protected boolean _cfgNumbersAsStrings

Flag set to indicate that implicit conversion from number to JSON String is needed (as per WRITE_NUMBERS_AS_STRINGS).

protected boolean _closed

Flag that indicates whether generator is closed or not. Gets set when it is closed by an explicit call (close()).

protected int _features

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

protected ObjectCodec _objectCodec

protected JsonWriteContext _writeContext

Object that keeps track of the current contextual state of the generator.

Protected Constructors

protected GeneratorBase (int features, ObjectCodec codec)

Public Methods

public void close ()

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 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.

Throws
IOException

public final void copyCurrentEvent (JsonParser jp)

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)

public final void copyCurrentStructure (JsonParser jp)

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:

  • START_OBJECT: all events up to and including matching (closing) END_OBJECT will be copied
  • START_ARRAY all events up to and including matching (closing) END_ARRAY will be copied
  • FIELD_NAME the logical value (which can consist of a single scalar value; or a sequence of related events for structured types (Json Arrays, Objects)) will be copied along with the name itself. So essentially the whole field entry (name and value) will be 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.

public JsonGenerator disable (JsonGenerator.Feature f)

Method for disabling specified features (check JsonGenerator.Feature for list of features)

Returns
  • Generator itself (this), to allow chaining

public JsonGenerator enable (JsonGenerator.Feature f)

Method for enabling specified parser features: check JsonGenerator.Feature for list of available features.

Returns
  • Generator itself (this), to allow chaining

public abstract void flush ()

Method called to flush any buffered content to the underlying target (output stream, writer), and to flush the target itself as well.

Throws
IOException

public final ObjectCodec getCodec ()

Method for accessing the object used for writing Java object as Json content (using method writeObject(Object)).

public final JsonWriteContext getOutputContext ()

Note: co-variant return type.

Returns
  • Context object that can give information about logical position within generated json content.

public boolean isClosed ()

Method that can be called to determine whether this generator is closed or not. If it is closed, no more output can be done.

public final boolean isEnabled (JsonGenerator.Feature f)

Method for checking whether given feature is enabled. Check JsonGenerator.Feature for list of available features.

public JsonGenerator setCodec (ObjectCodec oc)

Method that can be called to set or reset the object to use for writing Java objects as JsonContent (using method writeObject(Object)).

Returns
  • Generator itself (this), to allow chaining

public JsonGenerator useDefaultPrettyPrinter ()

Convenience method for enabling pretty-printing using the default pretty printer (DefaultPrettyPrinter).

Returns
  • Generator itself (this), to allow chaining

public Version version ()

Implemented with detection that tries to find "VERSION.txt" in same package as the implementation class.

public int writeBinary (Base64Variant b64variant, InputStream data, int dataLength)

Method similar to writeBinary(Base64Variant, byte[], int, int), but where input is provided through a stream, allowing for incremental writes without holding the whole input in memory.

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

public void writeFieldName (SerializableString name)

Method similar to 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.

public void writeObject (Object value)

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.

public void writeRawValue (String text)

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.

public void writeRawValue (char[] text, int offset, int len)

public void writeRawValue (String text, int offset, int len)

public void writeString (SerializableString text)

Method similar to 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 writeString(String); sub-classes should override it with more efficient implementation if possible.

public void writeTree (TreeNode rootNode)

Method for writing given JSON tree (expressed as a tree where given JsonNode is the root) using this generator. This will generally just call writeObject(Object) with given node, but is added for convenience and to make code more explicit in cases where it deals specifically with trees.

Protected Methods

protected void _cantHappen ()

protected abstract void _releaseBuffers ()

protected void _reportError (String msg)

protected void _reportUnsupportedOperation ()

protected final void _throwInternal ()

protected abstract void _verifyValueWrite (String typeMsg)

protected void _writeSimpleObject (Object value)

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