|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.jackson.map.SerializerFactory
org.codehaus.jackson.map.ser.BasicSerializerFactory
org.codehaus.jackson.map.ser.BeanSerializerFactory
org.codehaus.jackson.map.ser.CustomSerializerFactory
public class CustomSerializerFactory
Serializer factory implementation that allows for configuring
mapping between types (classes) and serializers to use, by using
multiple types of overrides. Existing mappings established by
BeanSerializerFactory
(and its super class,
BasicSerializerFactory
) are used if no overrides are
defined.
Unlike base serializer factories (BasicSerializerFactory
,
BeanSerializerFactory
), this factory is stateful because
of configuration settings. It is thread-safe, however, as long as
all configuration as done before using the factory -- a single
instance can be shared between providers and mappers.
Configurations currently available are:
Note: as of version 1.7, this class is not as useful as it used to be, due to addition of "modules", which allow simpler addition of custom serializers and deserializers. In fact, use of module system is recommended even when not exposing serializers or deserializers as a pluggable library (just using them locally).
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.codehaus.jackson.map.ser.BeanSerializerFactory |
---|
BeanSerializerFactory.ConfigImpl |
Nested classes/interfaces inherited from class org.codehaus.jackson.map.SerializerFactory |
---|
SerializerFactory.Config |
Field Summary | |
---|---|
protected HashMap<ClassKey,JsonSerializer<?>> |
_directClassMappings
Direct mappings that are only used for exact class type matches, but not for sub-class checks. |
protected JsonSerializer<?> |
_enumSerializerOverride
And for Enum handling we may specify a single default serializer to use, regardless of actual enumeration. |
protected HashMap<ClassKey,JsonSerializer<?>> |
_interfaceMappings
And finally interface-based matches. |
protected HashMap<ClassKey,JsonSerializer<?>> |
_transitiveClassMappings
And then class-based mappings that are used both for exact and sub-class matches. |
Fields inherited from class org.codehaus.jackson.map.ser.BeanSerializerFactory |
---|
_factoryConfig, instance |
Fields inherited from class org.codehaus.jackson.map.ser.BasicSerializerFactory |
---|
_arraySerializers, _concrete, _concreteLazy, optionalHandlers |
Constructor Summary | |
---|---|
CustomSerializerFactory()
|
|
CustomSerializerFactory(SerializerFactory.Config config)
|
Method Summary | ||
---|---|---|
protected JsonSerializer<?> |
_findInterfaceMapping(Class<?> cls,
ClassKey key)
|
|
|
addGenericMapping(Class<? extends T> type,
JsonSerializer<T> ser)
Method used to add a generic (transitive) mapping from specified class or its sub-classes into a serializer. |
|
|
addSpecificMapping(Class<? extends T> forClass,
JsonSerializer<T> ser)
Method used to add a mapping from specific type -- and only that type -- to specified serializer. |
|
JsonSerializer<Object> |
createSerializer(SerializationConfig config,
JavaType type,
BeanProperty property)
Main serializer constructor method. |
|
protected JsonSerializer<?> |
findCustomSerializer(Class<?> type,
SerializationConfig config)
|
|
void |
setEnumSerializer(JsonSerializer<?> enumSer)
Method that can be used to force specified serializer to be used for serializing all Enum instances. |
|
SerializerFactory |
withConfig(SerializerFactory.Config config)
Method used by module registration functionality, to attach additional serializer providers into this serializer factory. |
Methods inherited from class org.codehaus.jackson.map.SerializerFactory |
---|
createSerializer, createTypeSerializer, withAdditionalKeySerializers, withAdditionalSerializers, withSerializerModifier |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected HashMap<ClassKey,JsonSerializer<?>> _directClassMappings
protected JsonSerializer<?> _enumSerializerOverride
protected HashMap<ClassKey,JsonSerializer<?>> _transitiveClassMappings
protected HashMap<ClassKey,JsonSerializer<?>> _interfaceMappings
Constructor Detail |
---|
public CustomSerializerFactory()
public CustomSerializerFactory(SerializerFactory.Config config)
Method Detail |
---|
public SerializerFactory withConfig(SerializerFactory.Config config)
BeanSerializerFactory
withConfig
in class BeanSerializerFactory
public <T> void addGenericMapping(Class<? extends T> type, JsonSerializer<T> ser)
Class.getInterfaces()
), then super-type's and so forth.
Note that adding generic mappings may lead to problems with sub-classing: if sub-classes add new properties, these may not get properly serialized.
type
- Class for which specified serializer is to be
used. May be more specific type than what serializer indicates,
but must be compatible (same or sub-class)public <T> void addSpecificMapping(Class<? extends T> forClass, JsonSerializer<T> ser)
IllegalArgumentException
will be thrown to
indicate caller error.
forClass
- Class for which specified serializer is to be
used. May be more specific type than what serializer indicates,
but must be compatible (same or sub-class)public void setEnumSerializer(JsonSerializer<?> enumSer)
enum.toString()
, or modify
value returned by enum.name()
(such as upper- or
lower-casing it).
Note: this serializer has lower precedence than that of specific types; so if a specific serializer is assigned to an Enum type, this serializer will NOT be used. It has higher precedence than generic mappings have however.
public JsonSerializer<Object> createSerializer(SerializationConfig config, JavaType type, BeanProperty property) throws JsonMappingException
BeanSerializerFactory
Iterable
.
Note: sub-classes may choose to complete replace implementation, if they want to alter priority of serializer lookups.
createSerializer
in class BeanSerializerFactory
JsonMappingException
protected JsonSerializer<?> findCustomSerializer(Class<?> type, SerializationConfig config)
protected JsonSerializer<?> _findInterfaceMapping(Class<?> cls, ClassKey key)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |