SerializerFactory
(see methods
like SerializerFactory.withAdditionalSerializers(Serializers)
)
and through new Module API. As such, this class is not the best way
to add custom functionality, and will likely be removed from 2.0 release@Deprecated public class CustomDeserializerFactory extends BeanDeserializerFactory
BeanDeserializerFactory
(and its super class,
BasicDeserializerFactory
) are used if no overrides are
defined.
Unlike base deserializer factories, 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:
The way custom deserializer factory instances are hooked to
ObjectMapper
is usually by constructing an instance of
DeserializerProvider
(most commonly
StdDeserializerProvider
) with custom deserializer factory,
and setting ObjectMapper
to use it.
BeanDeserializerFactory.ConfigImpl
DeserializerFactory.Config
Modifier and Type | Field and Description |
---|---|
protected HashMap<ClassKey,JsonDeserializer<Object>> |
_directClassMappings
Deprecated.
Direct mappings that are used for exact class and interface type
matches.
|
protected HashMap<ClassKey,Class<?>> |
_mixInAnnotations
Deprecated.
Mapping that defines how to apply mix-in annotations: key is
the type to received additional annotations, and value is the
type that has annotations to "mix in".
|
_factoryConfig, instance
_arrayDeserializers, optionalHandlers
NO_DESERIALIZERS
Modifier | Constructor and Description |
---|---|
|
CustomDeserializerFactory()
Deprecated.
|
protected |
CustomDeserializerFactory(DeserializerFactory.Config config)
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
void |
addMixInAnnotationMapping(Class<?> destinationClass,
Class<?> classWithMixIns)
Deprecated.
Method to use for adding mix-in annotations that Class
classWithMixIns contains into class
destinationClass . |
<T> void |
addSpecificMapping(Class<T> forClass,
JsonDeserializer<? extends T> deser)
Deprecated.
Method used to add a mapping for specific type -- and only that
type -- to use specified deserializer.
|
JsonDeserializer<?> |
createArrayDeserializer(DeserializationConfig config,
DeserializerProvider p,
ArrayType type,
BeanProperty property)
Deprecated.
Method called to create (or, for completely immutable deserializers,
reuse) a deserializer that can convert JSON content into values of
specified Java type.
|
JsonDeserializer<Object> |
createBeanDeserializer(DeserializationConfig config,
DeserializerProvider p,
JavaType type,
BeanProperty property)
Deprecated.
Method that
DeserializerProvider s call to create a new
deserializer for types other than Collections, Maps, arrays and
enums. |
JsonDeserializer<?> |
createEnumDeserializer(DeserializationConfig config,
DeserializerProvider p,
JavaType enumType,
BeanProperty property)
Deprecated.
Factory method for constructing serializers of
Enum types. |
DeserializerFactory |
withConfig(DeserializerFactory.Config config)
Deprecated.
Method used by module registration functionality, to construct a new bean
deserializer factory
with different configuration settings.
|
_addDeserializerConstructors, _addDeserializerFactoryMethods, _findCustomArrayDeserializer, _findCustomBeanDeserializer, _findCustomCollectionDeserializer, _findCustomCollectionLikeDeserializer, _findCustomEnumDeserializer, _findCustomMapDeserializer, _findCustomMapLikeDeserializer, _findCustomTreeNodeDeserializer, _handleSingleArgumentConstructor, _handleSingleArgumentFactory, _mapAbstractType2, addBeanProps, addInjectables, addReferenceProperties, buildBeanDeserializer, buildThrowableDeserializer, constructAnySetter, constructBeanDeserializerBuilder, constructCreatorProperty, constructDefaultValueInstantiator, constructSettableProperty, constructSettableProperty, constructSetterlessProperty, createKeyDeserializer, findValueInstantiator, getConfig, isIgnorableType, isPotentialBeanType, mapAbstractType, materializeAbstractType
constructEnumResolver, createCollectionDeserializer, createCollectionLikeDeserializer, createMapDeserializer, createMapLikeDeserializer, createTreeDeserializer, findDeserializerFromAnnotation, findPropertyContentTypeDeserializer, findPropertyTypeDeserializer, findStdBeanDeserializer, findTypeDeserializer, modifyTypeByAnnotation, resolveType
withAbstractTypeResolver, withAdditionalDeserializers, withAdditionalKeyDeserializers, withDeserializerModifier, withValueInstantiators
protected HashMap<ClassKey,JsonDeserializer<Object>> _directClassMappings
protected HashMap<ClassKey,Class<?>> _mixInAnnotations
Annotations associated with the value classes will be used to override annotations of the key class, associated with the same field or method. They can be further masked by sub-classes: you can think of it as injecting annotations between the target class and its sub-classes (or interfaces)
public CustomDeserializerFactory()
protected CustomDeserializerFactory(DeserializerFactory.Config config)
public DeserializerFactory withConfig(DeserializerFactory.Config config)
BeanDeserializerFactory
withConfig
in class BeanDeserializerFactory
public <T> void addSpecificMapping(Class<T> forClass, JsonDeserializer<? extends T> deser)
Note that both class and interfaces can be mapped, since the type is derived from method declarations; and hence may be abstract types and interfaces. This is different from custom serialization where only class types can be directly mapped.
forClass
- Class to deserialize using specific deserializer.deser
- Deserializer to use for the class. Declared type for
deserializer may be more specific (sub-class) than declared class
to map, since that will still be compatible (deserializer produces
sub-class which is assignable to field/method)public void addMixInAnnotationMapping(Class<?> destinationClass, Class<?> classWithMixIns)
classWithMixIns
contains into class
destinationClass
. Mixing in is done when introspecting
class annotations and properties.
Annotations from classWithMixIns
(and its supertypes)
will override
anything destinationClass
(and its super-types)
has already.destinationClass
- Class to modify by adding annotationsclassWithMixIns
- Class that contains annotations to addpublic JsonDeserializer<Object> createBeanDeserializer(DeserializationConfig config, DeserializerProvider p, JavaType type, BeanProperty property) throws JsonMappingException
BeanDeserializerFactory
DeserializerProvider
s call to create a new
deserializer for types other than Collections, Maps, arrays and
enums.createBeanDeserializer
in class BeanDeserializerFactory
p
- Provider that can be called to create deserializers for
contained member typestype
- Type to be deserializedJsonMappingException
public JsonDeserializer<?> createArrayDeserializer(DeserializationConfig config, DeserializerProvider p, ArrayType type, BeanProperty property) throws JsonMappingException
DeserializerFactory
createArrayDeserializer
in class BasicDeserializerFactory
p
- Provider that can be called to create deserializers for
contained member typestype
- Type to be deserializedJsonMappingException
public JsonDeserializer<?> createEnumDeserializer(DeserializationConfig config, DeserializerProvider p, JavaType enumType, BeanProperty property) throws JsonMappingException
BasicDeserializerFactory
Enum
types.createEnumDeserializer
in class BasicDeserializerFactory
JsonMappingException