org.axonframework.serializer.json
Class JacksonSerializer

java.lang.Object
  extended by org.axonframework.serializer.json.JacksonSerializer
All Implemented Interfaces:
Serializer

public class JacksonSerializer
extends Object
implements Serializer

Serializer implementation that uses Jackson to serialize objects into a JSON format. Although the Jackson serializer requires classes to be compatible with this specific serializer, it providers much more compact serialization, while still being human readable.

Since:
2.2
Author:
Allard Buijze

Constructor Summary
JacksonSerializer()
          Initialize the serializer with a default ObjectMapper instance.
JacksonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
          Initialize the serializer with the given objectMapper to serialize and parse the objects to JSON.
JacksonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper, RevisionResolver revisionResolver)
          Initialize the serializer with the given objectMapper to serialize and parse the objects to JSON.
JacksonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper, RevisionResolver revisionResolver, ConverterFactory converterFactory)
          Initialize the serializer with the given objectMapper to serialize and parse the objects to JSON.
JacksonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper, RevisionResolver revisionResolver, ConverterFactory converterFactory, ClassLoader classLoader)
          Initialize the serializer with the given objectMapper to serialize and parse the objects to JSON.
JacksonSerializer(RevisionResolver revisionResolver, ConverterFactory converterFactory)
          Initialize the serializer using a default ObjectMapper instance, using the given revisionResolver to define revision for each object to serialize, and given converterFactory to be used by upcasters.
 
Method Summary
<T> boolean
canSerializeTo(Class<T> expectedRepresentation)
          Indicates whether this Serializer is capable of serializing to the given expectedRepresentation.
 Class classForType(SerializedType type)
          Returns the class for the given type identifier.
<S,T> T
deserialize(SerializedObject<S> serializedObject)
          Deserializes the first object read from the given bytes.
 ConverterFactory getConverterFactory()
          Returns the converter factory used by this Serializer to convert between serialized representations.
 com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
          Returns the ObjectMapper used by this serializer, allowing for configuration of the serialization settings.
protected  com.fasterxml.jackson.databind.ObjectReader getReader(Class<?> type)
          Provides the ObjectReader, with which objects are read from the JSON form.
protected  com.fasterxml.jackson.databind.ObjectWriter getWriter()
          Provides the ObjectWriter, with which objects are serialized to JSON form.
protected  void registerConverters(ChainingConverterFactory converterFactory)
          Registers converters with the given converterFactory which depend on the actual contents of the serialized for to represent a JSON format.
protected  String resolveClassName(SerializedType serializedType)
          Resolve the class name from the given serializedType.
<T> SerializedObject<T>
serialize(Object object, Class<T> expectedRepresentation)
          Serialize the given object into a Serialized Object containing the given expectedRepresentation.
 SerializedType typeForClass(Class type)
          Returns the type identifier for the given class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JacksonSerializer

public JacksonSerializer()
Initialize the serializer with a default ObjectMapper instance. Revisions are resolved using @Revision annotations on the serialized classes.


JacksonSerializer

public JacksonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
Initialize the serializer with the given objectMapper to serialize and parse the objects to JSON. This objectMapper allows for customization of the serialized form.

Parameters:
objectMapper - The objectMapper to serialize objects and parse JSON with

JacksonSerializer

public JacksonSerializer(RevisionResolver revisionResolver,
                         ConverterFactory converterFactory)
Initialize the serializer using a default ObjectMapper instance, using the given revisionResolver to define revision for each object to serialize, and given converterFactory to be used by upcasters.

Parameters:
revisionResolver - The strategy to use to resolve the revision of an object
converterFactory - The factory providing the converter instances for upcasters

JacksonSerializer

public JacksonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                         RevisionResolver revisionResolver)
Initialize the serializer with the given objectMapper to serialize and parse the objects to JSON. This objectMapper allows for customization of the serialized form. The given revisionResolver is used to resolve the revision from an object to be serialized.

Parameters:
objectMapper - The objectMapper to serialize objects and parse JSON with
revisionResolver - The strategy to use to resolve the revision of an object

JacksonSerializer

public JacksonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                         RevisionResolver revisionResolver,
                         ConverterFactory converterFactory)
Initialize the serializer with the given objectMapper to serialize and parse the objects to JSON. This objectMapper allows for customization of the serialized form. The given revisionResolver is used to resolve the revision from an object to be serialized. The given converterFactory is the converter factory used by upcasters to convert between content types.

Parameters:
objectMapper - The objectMapper to serialize objects and parse JSON with
revisionResolver - The strategy to use to resolve the revision of an object
converterFactory - The factory providing the converter instances for upcasters

JacksonSerializer

public JacksonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                         RevisionResolver revisionResolver,
                         ConverterFactory converterFactory,
                         ClassLoader classLoader)
Initialize the serializer with the given objectMapper to serialize and parse the objects to JSON. This objectMapper allows for customization of the serialized form. The given revisionResolver is used to resolve the revision from an object to be serialized. The given converterFactory is the converter factory used by upcasters to convert between content types.

Parameters:
objectMapper - The objectMapper to serialize objects and parse JSON with
revisionResolver - The strategy to use to resolve the revision of an object
converterFactory - The factory providing the converter instances for upcasters
classLoader - The class loader to load classes with when deserializing
Method Detail

registerConverters

protected void registerConverters(ChainingConverterFactory converterFactory)
Registers converters with the given converterFactory which depend on the actual contents of the serialized for to represent a JSON format.

Parameters:
converterFactory - The ChainingConverterFactory instance to register the converters with.

serialize

public <T> SerializedObject<T> serialize(Object object,
                                         Class<T> expectedRepresentation)
Description copied from interface: Serializer
Serialize the given object into a Serialized Object containing the given expectedRepresentation.

Use Serializer.canSerializeTo(Class) to detect whether the expectedRepresentation is supported by this serializer.

Specified by:
serialize in interface Serializer
Type Parameters:
T - The expected data type representing the serialized object
Parameters:
object - The object to serialize
expectedRepresentation - The expected data type representing the serialized object
Returns:
the instance representing the serialized object.

getObjectMapper

public final com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
Returns the ObjectMapper used by this serializer, allowing for configuration of the serialization settings.

Returns:
the ObjectMapper instance used by his serializer

getWriter

protected com.fasterxml.jackson.databind.ObjectWriter getWriter()
Provides the ObjectWriter, with which objects are serialized to JSON form. This method may be overridden to change the configuration of the writer to use.

Returns:
The writer to serialize objects with

getReader

protected com.fasterxml.jackson.databind.ObjectReader getReader(Class<?> type)
Provides the ObjectReader, with which objects are read from the JSON form. This method may be overridden to change the configuration of the reader to use.

Parameters:
type - The type of object to create a reader for
Returns:
The writer to serialize objects with

canSerializeTo

public <T> boolean canSerializeTo(Class<T> expectedRepresentation)
Description copied from interface: Serializer
Indicates whether this Serializer is capable of serializing to the given expectedRepresentation.

When true, this does *not* guarantee that the serialization and (optional) conversion will also succeed when executed. For example, when a serializer produces a byte[] containing JSON, trying to convert to a Dom4J Document will fail, even though this serializer has a converter to convert byte[] to Dom4J instances.

Specified by:
canSerializeTo in interface Serializer
Type Parameters:
T - The type of data a Serialized Object should contain
Parameters:
expectedRepresentation - The type of data a Serialized Object should contain
Returns:
true if the expectedRepresentation is supported, otherwise false.

deserialize

public <S,T> T deserialize(SerializedObject<S> serializedObject)
Description copied from interface: Serializer
Deserializes the first object read from the given bytes. The bytes are not consumed from the array or modified in any way. The resulting object instance is cast to the expected type.

Specified by:
deserialize in interface Serializer
Type Parameters:
S - The data type of the serialized object
T - The expected deserialized type
Parameters:
serializedObject - the instance describing the type of object and the bytes providing the serialized data
Returns:
the serialized object, cast to the expected type

classForType

public Class classForType(SerializedType type)
                   throws UnknownSerializedTypeException
Description copied from interface: Serializer
Returns the class for the given type identifier. The result of this method must guarantee that the deserialized SerializedObject with the given type is an instance of the returned Class.

If a class cannot be resolved (i.e. because the class is not available on this JVM's classpath) this method throws UnknownSerializedTypeException.

Specified by:
classForType in interface Serializer
Parameters:
type - The type identifier of the object
Returns:
the Class representing the type of the serialized Object
Throws:
UnknownSerializedTypeException - if the type cannot be resolved to a class

resolveClassName

protected String resolveClassName(SerializedType serializedType)
Resolve the class name from the given serializedType. This method may be overridden to customize the names used to denote certain classes, for example, by leaving out a certain base package for brevity.

Parameters:
serializedType - The serialized type to resolve the class name for
Returns:
The fully qualified name of the class to load

typeForClass

public SerializedType typeForClass(Class type)
Description copied from interface: Serializer
Returns the type identifier for the given class. This is the type identifier of the Serialized object as returned by Serializer.serialize(Object, Class).

Specified by:
typeForClass in interface Serializer
Parameters:
type - Class representing the type of the serializable Object.
Returns:
The type identifier of the object

getConverterFactory

public ConverterFactory getConverterFactory()
Description copied from interface: Serializer
Returns the converter factory used by this Serializer to convert between serialized representations. Generally, this ConverterFactory depends on the type of data the serializer serializes to.

Specified by:
getConverterFactory in interface Serializer
Returns:
the converter factory used by this Serializer


Copyright © 2010-2016. All Rights Reserved.