org.codehaus.jackson.impl
Class WriterBasedGenerator

java.lang.Object
  extended by org.codehaus.jackson.JsonGenerator
      extended by org.codehaus.jackson.impl.JsonGeneratorBase
          extended by org.codehaus.jackson.impl.WriterBasedGenerator
All Implemented Interfaces:
Closeable

public final class WriterBasedGenerator
extends JsonGeneratorBase


Nested Class Summary
 
Nested classes/interfaces inherited from class org.codehaus.jackson.JsonGenerator
JsonGenerator.Feature
 
Field Summary
protected  char[] _entityBuffer
          6-char temporary buffer allocated if needed, for constructing escape sequences
protected  IOContext _ioContext
           
protected  char[] _outputBuffer
          Intermediate buffer in which contents are buffered before being written using _writer.
protected  int _outputEnd
          End marker of the output buffer; one past the last valid position within the buffer.
protected  int _outputHead
          Pointer to the first buffered character to output
protected  int _outputTail
          Pointer to the position right beyond the last character to output (end marker; may be past the buffer)
protected  Writer _writer
           
 
Fields inherited from class org.codehaus.jackson.impl.JsonGeneratorBase
_cfgNumbersAsStrings, _closed, _features, _objectCodec, _writeContext
 
Fields inherited from class org.codehaus.jackson.JsonGenerator
_cfgPrettyPrinter
 
Constructor Summary
WriterBasedGenerator(IOContext ctxt, int features, ObjectCodec codec, Writer w)
           
 
Method Summary
protected  void _flushBuffer()
           
protected  void _releaseBuffers()
           
protected  void _verifyPrettyValueWrite(String typeMsg, int status)
           
protected  void _verifyValueWrite(String typeMsg)
           
protected  void _writeBinary(Base64Variant b64variant, byte[] input, int inputPtr, int inputEnd)
           
protected  void _writeEndArray()
           
protected  void _writeEndObject()
           
protected  void _writeFieldName(String name, boolean commaBefore)
           
protected  void _writePPFieldName(String name, boolean commaBefore)
          Specialized version of _writeFieldName, off-lined to keep the "fast path" as simple (and hopefully fast) as possible.
protected  void _writeStartArray()
           
protected  void _writeStartObject()
           
 void close()
          Method called to close this generator, so that no more content can be written.
 void flush()
          Method called to flush any buffered content to the underlying target (output stream, writer), and to flush the target itself as well.
 void writeBinary(Base64Variant b64variant, byte[] data, int offset, int len)
          Method that will output given chunk of binary data as base64 encoded, as a complete String value (surrounded by double quotes).
 void writeBoolean(boolean state)
          Method for outputting literal Json boolean value (one of Strings 'true' and 'false').
 void writeNull()
          Method for outputting literal Json null value.
 void writeNumber(BigDecimal value)
          Method for outputting indicate Json numeric value.
 void writeNumber(BigInteger value)
          Method for outputting given value as Json number.
 void writeNumber(double d)
          Method for outputting indicate Json numeric value.
 void writeNumber(float f)
          Method for outputting indicate Json numeric value.
 void writeNumber(int i)
          Method for outputting given value as Json number.
 void writeNumber(long l)
          Method for outputting given value as Json number.
 void writeNumber(String encodedValue)
          Write method that can be used for custom numeric types that can not be (easily?) converted to "standard" Java number types.
 void writeRaw(char c)
           
 void writeRaw(char[] text, int offset, int len)
           
 void writeRaw(String text)
          Fallback method which can be used to make generator copy input text verbatim with no modifications (including that no quoting is done and no separators are added even if context [array, object] would otherwise require such).
 void writeRaw(String text, int start, int len)
           
 void writeRawValue(char[] text, int offset, int len)
           
 void writeRawValue(String text)
          Fallback method which can be used to make generator 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(String text, int offset, int len)
           
 void writeString(char[] text, int offset, int len)
           
 void writeString(String text)
          Method for outputting a String value.
 
Methods inherited from class org.codehaus.jackson.impl.JsonGeneratorBase
_cantHappen, _reportError, _writeSimpleObject, copyCurrentEvent, copyCurrentStructure, disable, enable, getCodec, getOutputContext, isClosed, isEnabled, setCodec, useDefaultPrettyPrinter, writeEndArray, writeEndObject, writeFieldName, writeObject, writeStartArray, writeStartObject, writeTree
 
Methods inherited from class org.codehaus.jackson.JsonGenerator
configure, disableFeature, enableFeature, isFeatureEnabled, setFeature, setPrettyPrinter, writeArrayFieldStart, writeBinary, writeBinary, writeBinaryField, writeBooleanField, writeNullField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeObjectField, writeObjectFieldStart, writeStringField
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_ioContext

protected final IOContext _ioContext

_writer

protected final Writer _writer

_outputBuffer

protected char[] _outputBuffer
Intermediate buffer in which contents are buffered before being written using _writer.


_outputHead

protected int _outputHead
Pointer to the first buffered character to output


_outputTail

protected int _outputTail
Pointer to the position right beyond the last character to output (end marker; may be past the buffer)


_outputEnd

protected int _outputEnd
End marker of the output buffer; one past the last valid position within the buffer.


_entityBuffer

protected char[] _entityBuffer
6-char temporary buffer allocated if needed, for constructing escape sequences

Constructor Detail

WriterBasedGenerator

public WriterBasedGenerator(IOContext ctxt,
                            int features,
                            ObjectCodec codec,
                            Writer w)
Method Detail

_writeStartArray

protected void _writeStartArray()
                         throws IOException,
                                JsonGenerationException
Specified by:
_writeStartArray in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

_writeEndArray

protected void _writeEndArray()
                       throws IOException,
                              JsonGenerationException
Specified by:
_writeEndArray in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

_writeStartObject

protected void _writeStartObject()
                          throws IOException,
                                 JsonGenerationException
Specified by:
_writeStartObject in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

_writeEndObject

protected void _writeEndObject()
                        throws IOException,
                               JsonGenerationException
Specified by:
_writeEndObject in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

_writeFieldName

protected void _writeFieldName(String name,
                               boolean commaBefore)
                        throws IOException,
                               JsonGenerationException
Specified by:
_writeFieldName in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

_writePPFieldName

protected final void _writePPFieldName(String name,
                                       boolean commaBefore)
                                throws IOException,
                                       JsonGenerationException
Specialized version of _writeFieldName, off-lined to keep the "fast path" as simple (and hopefully fast) as possible.

Throws:
IOException
JsonGenerationException

writeString

public void writeString(String text)
                 throws IOException,
                        JsonGenerationException
Description copied from class: JsonGenerator
Method for outputting a String value. Depending on context this means either array element, (object) field value or a stand alone String; but in all cases, String will be surrounded in double quotes, and contents will be properly escaped as required by Json specification.

Specified by:
writeString in class JsonGenerator
Throws:
IOException
JsonGenerationException

writeString

public void writeString(char[] text,
                        int offset,
                        int len)
                 throws IOException,
                        JsonGenerationException
Specified by:
writeString in class JsonGenerator
Throws:
IOException
JsonGenerationException

writeRaw

public void writeRaw(String text)
              throws IOException,
                     JsonGenerationException
Description copied from class: JsonGenerator
Fallback method which can be used to make generator copy input text verbatim with no modifications (including that no quoting is done and no separators are added even if context [array, object] would otherwise require such). If such separators are desired, use JsonGenerator.writeRawValue(String) instead.

Specified by:
writeRaw in class JsonGenerator
Throws:
IOException
JsonGenerationException

writeRaw

public void writeRaw(String text,
                     int start,
                     int len)
              throws IOException,
                     JsonGenerationException
Specified by:
writeRaw in class JsonGenerator
Throws:
IOException
JsonGenerationException

writeRaw

public void writeRaw(char[] text,
                     int offset,
                     int len)
              throws IOException,
                     JsonGenerationException
Specified by:
writeRaw in class JsonGenerator
Throws:
IOException
JsonGenerationException

writeRaw

public void writeRaw(char c)
              throws IOException,
                     JsonGenerationException
Specified by:
writeRaw in class JsonGenerator
Throws:
IOException
JsonGenerationException

writeRawValue

public void writeRawValue(String text)
                   throws IOException,
                          JsonGenerationException
Description copied from class: JsonGenerator
Fallback method which can be used to make generator 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:
IOException
JsonGenerationException

writeRawValue

public void writeRawValue(String text,
                          int offset,
                          int len)
                   throws IOException,
                          JsonGenerationException
Specified by:
writeRawValue in class JsonGenerator
Throws:
IOException
JsonGenerationException

writeRawValue

public void writeRawValue(char[] text,
                          int offset,
                          int len)
                   throws IOException,
                          JsonGenerationException
Specified by:
writeRawValue in class JsonGenerator
Throws:
IOException
JsonGenerationException

writeBinary

public void writeBinary(Base64Variant b64variant,
                        byte[] data,
                        int offset,
                        int len)
                 throws IOException,
                        JsonGenerationException
Description copied from class: JsonGenerator
Method that will output given chunk of binary data as base64 encoded, as a complete String value (surrounded by double quotes). This method defaults

Note: because Json Strings can not contain unescaped linefeeds, if linefeeds are included (as per last argument), they must be escaped. This adds overhead for decoding without improving readability. Alternatively if linefeeds are not included, resulting String value may violate the requirement of base64 RFC which mandates line-length of 76 characters and use of linefeeds. However, all JsonParser implementations are required to accept such "long line base64"; as do typical production-level base64 decoders.

Specified by:
writeBinary in class JsonGenerator
Parameters:
b64variant - Base64 variant to use: defines details such as whether padding is used (and if so, using which character); what is the maximum line length before adding linefeed, and also the underlying alphabet to use.
Throws:
IOException
JsonGenerationException

writeNumber

public void writeNumber(int i)
                 throws IOException,
                        JsonGenerationException
Description copied from class: JsonGenerator
Method for outputting given value as Json number. Can be called in any context where a value is expected (Array value, Object field value, root-level value). Additional white space may be added around the value if pretty-printing is enabled.

Specified by:
writeNumber in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

writeNumber

public void writeNumber(long l)
                 throws IOException,
                        JsonGenerationException
Description copied from class: JsonGenerator
Method for outputting given value as Json number. Can be called in any context where a value is expected (Array value, Object field value, root-level value). Additional white space may be added around the value if pretty-printing is enabled.

Specified by:
writeNumber in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

writeNumber

public void writeNumber(BigInteger value)
                 throws IOException,
                        JsonGenerationException
Description copied from class: JsonGenerator
Method for outputting given value as Json number. Can be called in any context where a value is expected (Array value, Object field value, root-level value). Additional white space may be added around the value if pretty-printing is enabled.

Specified by:
writeNumber in class JsonGenerator
Throws:
IOException
JsonGenerationException

writeNumber

public void writeNumber(double d)
                 throws IOException,
                        JsonGenerationException
Description copied from class: JsonGenerator
Method for outputting indicate Json numeric value. Can be called in any context where a value is expected (Array value, Object field value, root-level value). Additional white space may be added around the value if pretty-printing is enabled.

Specified by:
writeNumber in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

writeNumber

public void writeNumber(float f)
                 throws IOException,
                        JsonGenerationException
Description copied from class: JsonGenerator
Method for outputting indicate Json numeric value. Can be called in any context where a value is expected (Array value, Object field value, root-level value). Additional white space may be added around the value if pretty-printing is enabled.

Specified by:
writeNumber in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

writeNumber

public void writeNumber(BigDecimal value)
                 throws IOException,
                        JsonGenerationException
Description copied from class: JsonGenerator
Method for outputting indicate Json numeric value. Can be called in any context where a value is expected (Array value, Object field value, root-level value). Additional white space may be added around the value if pretty-printing is enabled.

Specified by:
writeNumber in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

writeNumber

public void writeNumber(String encodedValue)
                 throws IOException,
                        JsonGenerationException
Description copied from class: JsonGenerator
Write method that can be used for custom numeric types that can not be (easily?) converted to "standard" Java number types. Because numbers are not surrounded by double quotes, regular JsonGenerator.writeString(java.lang.String) method can not be used; nor JsonGenerator.writeRaw(java.lang.String) because that does not properly handle value separators needed in Array or Object contexts.

Note: because of lack of type safety, some generator implementations may not be able to implement this method. For example, if a binary json format is used, it may require type information for encoding; similarly for generator-wrappers around Java objects or Json nodes. If implementation does not implement this method, it needs to throw UnsupportedOperationException.

Specified by:
writeNumber in class JsonGenerator
Throws:
IOException
JsonGenerationException

writeBoolean

public void writeBoolean(boolean state)
                  throws IOException,
                         JsonGenerationException
Description copied from class: JsonGenerator
Method for outputting literal Json boolean value (one of Strings 'true' and 'false'). Can be called in any context where a value is expected (Array value, Object field value, root-level value). Additional white space may be added around the value if pretty-printing is enabled.

Specified by:
writeBoolean in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

writeNull

public void writeNull()
               throws IOException,
                      JsonGenerationException
Description copied from class: JsonGenerator
Method for outputting literal Json null value. Can be called in any context where a value is expected (Array value, Object field value, root-level value). Additional white space may be added around the value if pretty-printing is enabled.

Specified by:
writeNull in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

_verifyValueWrite

protected final void _verifyValueWrite(String typeMsg)
                                throws IOException,
                                       JsonGenerationException
Specified by:
_verifyValueWrite in class JsonGeneratorBase
Throws:
IOException
JsonGenerationException

_verifyPrettyValueWrite

protected final void _verifyPrettyValueWrite(String typeMsg,
                                             int status)
                                      throws IOException,
                                             JsonGenerationException
Throws:
IOException
JsonGenerationException

flush

public final void flush()
                 throws 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 JsonGeneratorBase
Throws:
IOException

close

public void close()
           throws 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 Closeable
Overrides:
close in class JsonGeneratorBase
Throws:
IOException

_releaseBuffers

protected void _releaseBuffers()
Specified by:
_releaseBuffers in class JsonGeneratorBase

_writeBinary

protected void _writeBinary(Base64Variant b64variant,
                            byte[] input,
                            int inputPtr,
                            int inputEnd)
                     throws IOException,
                            JsonGenerationException
Throws:
IOException
JsonGenerationException

_flushBuffer

protected final void _flushBuffer()
                           throws IOException
Throws:
IOException