com.fasterxml.jackson.databind.ser.std
Class StdSerializer<T>

java.lang.Object
  extended by com.fasterxml.jackson.databind.JsonSerializer<T>
      extended by com.fasterxml.jackson.databind.ser.std.StdSerializer<T>
All Implemented Interfaces:
SchemaAware
Direct Known Subclasses:
BeanSerializerBase, ContainerSerializer, CoreXMLSerializers.XMLGregorianCalendarSerializer, DOMSerializer, FailingSerializer, JsonValueSerializer, NullSerializer, RawSerializer, SerializableSerializer, StaticListSerializerBase, StdArraySerializers.ByteArraySerializer, StdArraySerializers.CharArraySerializer, StdJdkSerializers.AtomicReferenceSerializer, StdKeySerializer, StdKeySerializers.CalendarKeySerializer, StdKeySerializers.DateKeySerializer, StdKeySerializers.StringKeySerializer, StdScalarSerializer, TokenBufferSerializer, ToStringSerializer, UnknownSerializer

public abstract class StdSerializer<T>
extends JsonSerializer<T>
implements SchemaAware

Base class used by all standard serializers, and can also be used for custom serializers (in fact, this is the recommended base class to use). Provides convenience methods for implementing SchemaAware


Nested Class Summary
 
Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonSerializer
JsonSerializer.None
 
Field Summary
protected  Class<T> _handledType
          Nominal type supported, usually declared type of property for which serializer is used.
 
Constructor Summary
protected StdSerializer(Class<?> t, boolean dummy)
          Alternate constructor that is (alas!) needed to work around kinks of generic type handling
protected StdSerializer(Class<T> t)
           
protected StdSerializer(JavaType type)
           
 
Method Summary
protected  ObjectNode createObjectNode()
           
protected  ObjectNode createSchemaNode(String type)
           
protected  ObjectNode createSchemaNode(String type, boolean isOptional)
           
 JsonNode getSchema(SerializerProvider provider, Type typeHint)
          Default implementation simply claims type is "string"; usually overriden by custom serializers.
 Class<T> handledType()
          Method for accessing type of Objects this serializer can handle.
protected  boolean isDefaultSerializer(JsonSerializer<?> serializer)
          Method that can be called to determine if given serializer is the default serializer Jackson uses; as opposed to a custom serializer installed by a module or calling application.
abstract  void serialize(T value, com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider provider)
          Method that can be called to ask implementation to serialize values of type this serializer handles.
 void wrapAndThrow(SerializerProvider provider, Throwable t, Object bean, int index)
           
 void wrapAndThrow(SerializerProvider provider, Throwable t, Object bean, String fieldName)
          Method that will modify caught exception (passed in as argument) as necessary to include reference information, and to ensure it is a subtype of IOException, or an unchecked exception.
 
Methods inherited from class com.fasterxml.jackson.databind.JsonSerializer
isEmpty, isUnwrappingSerializer, serializeWithType, unwrappingSerializer, usesObjectId
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_handledType

protected final Class<T> _handledType
Nominal type supported, usually declared type of property for which serializer is used.

Constructor Detail

StdSerializer

protected StdSerializer(Class<T> t)

StdSerializer

protected StdSerializer(JavaType type)

StdSerializer

protected StdSerializer(Class<?> t,
                        boolean dummy)
Alternate constructor that is (alas!) needed to work around kinks of generic type handling

Method Detail

handledType

public final Class<T> handledType()
Description copied from class: JsonSerializer
Method for accessing type of Objects this serializer can handle. Note that this information is not guaranteed to be exact -- it may be a more generic (super-type) -- but it should not be incorrect (return a non-related type).

Default implementation will return null, which essentially means same as returning Object.class would; that is, that nothing is known about handled type.

Overrides:
handledType in class JsonSerializer<T>

serialize

public abstract void serialize(T value,
                               com.fasterxml.jackson.core.JsonGenerator jgen,
                               SerializerProvider provider)
                        throws IOException,
                               com.fasterxml.jackson.core.JsonGenerationException
Description copied from class: JsonSerializer
Method that can be called to ask implementation to serialize values of type this serializer handles.

Specified by:
serialize in class JsonSerializer<T>
Parameters:
value - Value to serialize; can not be null.
jgen - Generator used to output resulting Json content
provider - Provider that can be used to get serializers for serializing Objects value contains, if any.
Throws:
IOException
com.fasterxml.jackson.core.JsonGenerationException

getSchema

public JsonNode getSchema(SerializerProvider provider,
                          Type typeHint)
                   throws JsonMappingException
Default implementation simply claims type is "string"; usually overriden by custom serializers.

Specified by:
getSchema in interface SchemaAware
Parameters:
provider - The serializer provider.
typeHint - A hint about the type.
Returns:
Json-schema for this serializer.
Throws:
JsonMappingException

createObjectNode

protected ObjectNode createObjectNode()

createSchemaNode

protected ObjectNode createSchemaNode(String type)

createSchemaNode

protected ObjectNode createSchemaNode(String type,
                                      boolean isOptional)

wrapAndThrow

public void wrapAndThrow(SerializerProvider provider,
                         Throwable t,
                         Object bean,
                         String fieldName)
                  throws IOException
Method that will modify caught exception (passed in as argument) as necessary to include reference information, and to ensure it is a subtype of IOException, or an unchecked exception.

Rules for wrapping and unwrapping are bit complicated; essentially:

Throws:
IOException

wrapAndThrow

public void wrapAndThrow(SerializerProvider provider,
                         Throwable t,
                         Object bean,
                         int index)
                  throws IOException
Throws:
IOException

isDefaultSerializer

protected boolean isDefaultSerializer(JsonSerializer<?> serializer)
Method that can be called to determine if given serializer is the default serializer Jackson uses; as opposed to a custom serializer installed by a module or calling application. Determination is done using JacksonStdImpl annotation on serializer class.



Copyright © 2012 fasterxml.com. All Rights Reserved.