|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.codehaus.jackson.JsonGenerator
org.codehaus.jackson.impl.JsonGeneratorBase
org.codehaus.jackson.smile.SmileGenerator
public class SmileGenerator
JsonGenerator implementation for the experimental "Binary JSON Infoset".
| Nested Class Summary | |
|---|---|
static class |
SmileGenerator.Feature
Enumeration that defines all togglable features for Smile generators. |
protected static class |
SmileGenerator.SharedStringNode
Helper class used for keeping track of possibly shareable String references (for field names and/or short String values) |
| Field Summary | |
|---|---|
protected int |
_bytesWritten
Let's keep track of how many bytes have been output, may prove useful when debugging. |
protected char[] |
_charBuffer
Intermediate buffer in which characters of a String are copied before being encoded. |
protected IOContext |
_ioContext
|
protected OutputStream |
_out
|
protected byte[] |
_outputBuffer
Intermediate buffer in which contents are buffered before being written using _out. |
protected int |
_outputEnd
Offset to index after the last valid index in _outputBuffer. |
protected int |
_outputTail
Pointer to the next available byte in _outputBuffer |
protected int |
_seenNameCount
Number of entries in _seenNames; -1 if no shared name
detection is enabled |
protected SmileGenerator.SharedStringNode[] |
_seenNames
Raw data structure used for checking whether field name to write can be output using back reference or not. |
protected int |
_seenStringValueCount
Number of entries in _seenStringValues; -1 if no shared text value
detection is enabled |
protected SmileGenerator.SharedStringNode[] |
_seenStringValues
Raw data structure used for checking whether String value to write can be output using back reference or not. |
protected int |
_smileFeatures
Bit flag composed of bits that indicate which SmileGenerator.Features
are enabled. |
protected static long |
MAX_INT_AS_LONG
|
protected static long |
MIN_INT_AS_LONG
|
protected static int |
SURR1_FIRST
|
protected static int |
SURR1_LAST
|
protected static int |
SURR2_FIRST
|
protected static int |
SURR2_LAST
|
protected static byte |
TOKEN_BYTE_BIG_DECIMAL
|
protected static byte |
TOKEN_BYTE_BIG_INTEGER
|
protected static byte |
TOKEN_BYTE_FLOAT_32
|
protected static byte |
TOKEN_BYTE_FLOAT_64
|
protected static byte |
TOKEN_BYTE_INT_32
|
protected static byte |
TOKEN_BYTE_INT_64
|
protected static byte |
TOKEN_BYTE_LONG_STRING_ASCII
|
protected static byte |
TOKEN_BYTE_LONG_STRING_UNICODE
|
| 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 | |
|---|---|
SmileGenerator(IOContext ctxt,
int jsonFeatures,
int smileFeatures,
ObjectCodec codec,
OutputStream out)
|
|
| Method Summary | |
|---|---|
protected void |
_flushBuffer()
|
protected UnsupportedOperationException |
_notSupported()
|
protected void |
_releaseBuffers()
|
protected void |
_verifyValueWrite(String typeMsg)
|
protected void |
_write7BitBinaryWithLength(byte[] data,
int offset,
int len)
|
protected void |
_writeEndArray()
|
protected void |
_writeEndObject()
|
protected void |
_writeFieldName(SerializedString name,
boolean commaBefore)
Non-optimal default implementation for serializing given SerializedString: sub-classes are strongly recommmended to
implement this efficiently. |
protected void |
_writeFieldName(String name,
boolean commaBefore)
|
protected void |
_writeStartArray()
|
protected void |
_writeStartObject()
|
void |
close()
Method called to close this generator, so that no more content can be written. |
SmileGenerator |
configure(SmileGenerator.Feature f,
boolean state)
|
SmileGenerator |
disable(SmileGenerator.Feature f)
|
SmileGenerator |
enable(SmileGenerator.Feature f)
|
void |
flush()
Method called to flush any buffered content to the underlying target (output stream, writer), and to flush the target itself as well. |
boolean |
isEnabled(SmileGenerator.Feature f)
|
protected long |
outputOffset()
Method for accessing offset of the next byte within the whole output stream that this generator has produced. |
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 |
writeHeader()
Method that can be called to explicitly write Smile document header. |
void |
writeNull()
Method for outputting literal Json null value. |
void |
writeNumber(BigDecimal dec)
Method for outputting indicate Json numeric value. |
void |
writeNumber(BigInteger v)
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 offset,
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, _throwInternal, _writeSimpleObject, copyCurrentEvent, copyCurrentStructure, disable, enable, getCodec, getOutputContext, isClosed, isEnabled, setCodec, useDefaultPrettyPrinter, version, writeEndArray, writeEndObject, writeFieldName, 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 |
|---|
protected static final byte TOKEN_BYTE_LONG_STRING_ASCII
protected static final byte TOKEN_BYTE_LONG_STRING_UNICODE
protected static final byte TOKEN_BYTE_INT_32
protected static final byte TOKEN_BYTE_INT_64
protected static final byte TOKEN_BYTE_BIG_INTEGER
protected static final byte TOKEN_BYTE_FLOAT_32
protected static final byte TOKEN_BYTE_FLOAT_64
protected static final byte TOKEN_BYTE_BIG_DECIMAL
protected static final int SURR1_FIRST
protected static final int SURR1_LAST
protected static final int SURR2_FIRST
protected static final int SURR2_LAST
protected static final long MIN_INT_AS_LONG
protected static final long MAX_INT_AS_LONG
protected final IOContext _ioContext
protected final OutputStream _out
protected int _smileFeatures
SmileGenerator.Features
are enabled.
protected byte[] _outputBuffer
_out.
protected int _outputTail
_outputBuffer
protected final int _outputEnd
_outputBuffer.
Typically same as length of the buffer.
protected char[] _charBuffer
protected int _bytesWritten
protected SmileGenerator.SharedStringNode[] _seenNames
protected int _seenNameCount
_seenNames; -1 if no shared name
detection is enabled
protected SmileGenerator.SharedStringNode[] _seenStringValues
protected int _seenStringValueCount
_seenStringValues; -1 if no shared text value
detection is enabled
| Constructor Detail |
|---|
public SmileGenerator(IOContext ctxt,
int jsonFeatures,
int smileFeatures,
ObjectCodec codec,
OutputStream out)
| Method Detail |
|---|
public void writeHeader()
throws IOException
SmileFactory calls this method.
IOExceptionpublic SmileGenerator enable(SmileGenerator.Feature f)
public SmileGenerator disable(SmileGenerator.Feature f)
public final boolean isEnabled(SmileGenerator.Feature f)
public SmileGenerator configure(SmileGenerator.Feature f,
boolean state)
protected final void _writeStartArray()
throws IOException,
JsonGenerationException
_writeStartArray in class JsonGeneratorBaseIOException
JsonGenerationException
protected void _writeEndArray()
throws IOException,
JsonGenerationException
_writeEndArray in class JsonGeneratorBaseIOException
JsonGenerationException
protected void _writeStartObject()
throws IOException,
JsonGenerationException
_writeStartObject in class JsonGeneratorBaseIOException
JsonGenerationException
protected void _writeEndObject()
throws IOException,
JsonGenerationException
_writeEndObject in class JsonGeneratorBaseIOException
JsonGenerationException
protected void _writeFieldName(String name,
boolean commaBefore)
throws IOException,
JsonGenerationException
_writeFieldName in class JsonGeneratorBaseIOException
JsonGenerationException
protected void _writeFieldName(SerializedString name,
boolean commaBefore)
throws IOException,
JsonGenerationException
JsonGeneratorBaseSerializedString: sub-classes are strongly recommmended to
implement this efficiently. Default implementation mostly exists
to avoid introducing binary incompatibility.
_writeFieldName in class JsonGeneratorBaseIOException
JsonGenerationException
public void writeString(String text)
throws IOException,
JsonGenerationException
JsonGenerator
writeString in class JsonGeneratorIOException
JsonGenerationException
public void writeString(char[] text,
int offset,
int len)
throws IOException,
JsonGenerationException
writeString in class JsonGeneratorIOException
JsonGenerationException
public void writeRaw(String text)
throws IOException,
JsonGenerationException
JsonGeneratorJsonGenerator.writeRawValue(String) instead.
writeRaw in class JsonGeneratorIOException
JsonGenerationException
public void writeRaw(String text,
int offset,
int len)
throws IOException,
JsonGenerationException
writeRaw in class JsonGeneratorIOException
JsonGenerationException
public void writeRaw(char[] text,
int offset,
int len)
throws IOException,
JsonGenerationException
writeRaw in class JsonGeneratorIOException
JsonGenerationException
public void writeRaw(char c)
throws IOException,
JsonGenerationException
writeRaw in class JsonGeneratorIOException
JsonGenerationException
public void writeRawValue(String text)
throws IOException,
JsonGenerationException
JsonGenerator
writeRawValue in class JsonGeneratorBaseIOException
JsonGenerationException
public void writeRawValue(String text,
int offset,
int len)
throws IOException,
JsonGenerationException
writeRawValue in class JsonGeneratorBaseIOException
JsonGenerationException
public void writeRawValue(char[] text,
int offset,
int len)
throws IOException,
JsonGenerationException
writeRawValue in class JsonGeneratorBaseIOException
JsonGenerationException
public void writeBinary(Base64Variant b64variant,
byte[] data,
int offset,
int len)
throws IOException,
JsonGenerationException
JsonGenerator
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.
writeBinary in class JsonGeneratorb64variant - 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.
IOException
JsonGenerationException
public void writeBoolean(boolean state)
throws IOException,
JsonGenerationException
JsonGenerator
writeBoolean in class JsonGeneratorIOException
JsonGenerationException
public void writeNull()
throws IOException,
JsonGenerationException
JsonGenerator
writeNull in class JsonGeneratorIOException
JsonGenerationException
public void writeNumber(int i)
throws IOException,
JsonGenerationException
JsonGenerator
writeNumber in class JsonGeneratorIOException
JsonGenerationException
public void writeNumber(long l)
throws IOException,
JsonGenerationException
JsonGenerator
writeNumber in class JsonGeneratorIOException
JsonGenerationException
public void writeNumber(BigInteger v)
throws IOException,
JsonGenerationException
JsonGenerator
writeNumber in class JsonGeneratorIOException
JsonGenerationException
public void writeNumber(double d)
throws IOException,
JsonGenerationException
JsonGenerator
writeNumber in class JsonGeneratorIOException
JsonGenerationException
public void writeNumber(float f)
throws IOException,
JsonGenerationException
JsonGenerator
writeNumber in class JsonGeneratorIOException
JsonGenerationException
public void writeNumber(BigDecimal dec)
throws IOException,
JsonGenerationException
JsonGenerator
writeNumber in class JsonGeneratorIOException
JsonGenerationException
public void writeNumber(String encodedValue)
throws IOException,
JsonGenerationException,
UnsupportedOperationException
JsonGeneratorJsonGenerator.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.
writeNumber in class JsonGeneratorIOException
JsonGenerationException
UnsupportedOperationException
protected final void _verifyValueWrite(String typeMsg)
throws IOException,
JsonGenerationException
_verifyValueWrite in class JsonGeneratorBaseIOException
JsonGenerationException
public final void flush()
throws IOException
JsonGenerator
flush in class JsonGeneratorBaseIOException
public void close()
throws IOException
JsonGenerator
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.
close in interface Closeableclose in class JsonGeneratorBaseIOException
protected void _write7BitBinaryWithLength(byte[] data,
int offset,
int len)
throws IOException
IOExceptionprotected void _releaseBuffers()
_releaseBuffers in class JsonGeneratorBase
protected final void _flushBuffer()
throws IOException
IOExceptionprotected long outputOffset()
protected UnsupportedOperationException _notSupported()
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||