Class CustomDeserializerFactory
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:
- Ability to define explicit mappings between simple non-generic classes/interfaces and deserializers to use for deserializing instance of these classes. Mappings are one-to-one (i.e. there is no "generic" variant for handling sub- or super-classes/interfaces).
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.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.codehaus.jackson.map.deser.BeanDeserializerFactory
BeanDeserializerFactory.ConfigImplNested classes/interfaces inherited from class org.codehaus.jackson.map.DeserializerFactory
DeserializerFactory.Config -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected HashMap<ClassKey, JsonDeserializer<Object>> Deprecated.Direct mappings that are used for exact class and interface type matches.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".Fields inherited from class org.codehaus.jackson.map.deser.BeanDeserializerFactory
_factoryConfig, instanceFields inherited from class org.codehaus.jackson.map.deser.BasicDeserializerFactory
_arrayDeserializers, optionalHandlersFields inherited from class org.codehaus.jackson.map.DeserializerFactory
NO_DESERIALIZERS -
Constructor Summary
ConstructorsModifierConstructorDescriptionDeprecated.protectedDeprecated. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddMixInAnnotationMapping(Class<?> destinationClass, Class<?> classWithMixIns) Deprecated.Method to use for adding mix-in annotations that ClassclassWithMixInscontains into classdestinationClass.<T> voidaddSpecificMapping(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.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.createBeanDeserializer(DeserializationConfig config, DeserializerProvider p, JavaType type, BeanProperty property) Deprecated.Method thatDeserializerProviders call to create a new deserializer for types other than Collections, Maps, arrays and enums.createEnumDeserializer(DeserializationConfig config, DeserializerProvider p, JavaType enumType, BeanProperty property) Deprecated.Factory method for constructing serializers ofEnumtypes.withConfig(DeserializerFactory.Config config) Deprecated.Method used by module registration functionality, to construct a new bean deserializer factory with different configuration settings.Methods inherited from class org.codehaus.jackson.map.deser.BeanDeserializerFactory
_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, materializeAbstractTypeMethods inherited from class org.codehaus.jackson.map.deser.BasicDeserializerFactory
constructEnumResolver, createCollectionDeserializer, createCollectionLikeDeserializer, createMapDeserializer, createMapLikeDeserializer, createTreeDeserializer, findDeserializerFromAnnotation, findPropertyContentTypeDeserializer, findPropertyTypeDeserializer, findStdBeanDeserializer, findTypeDeserializer, modifyTypeByAnnotation, resolveTypeMethods inherited from class org.codehaus.jackson.map.DeserializerFactory
withAbstractTypeResolver, withAdditionalDeserializers, withAdditionalKeyDeserializers, withDeserializerModifier, withValueInstantiators
-
Field Details
-
_directClassMappings
Deprecated.Direct mappings that are used for exact class and interface type matches. -
_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".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)
- Since:
- 1.2
-
-
Constructor Details
-
CustomDeserializerFactory
public CustomDeserializerFactory()Deprecated. -
CustomDeserializerFactory
Deprecated.
-
-
Method Details
-
withConfig
Deprecated.Description copied from class:BeanDeserializerFactoryMethod used by module registration functionality, to construct a new bean deserializer factory with different configuration settings.- Overrides:
withConfigin classBeanDeserializerFactory
-
addSpecificMapping
Deprecated.Method used to add a mapping for specific type -- and only that type -- to use specified deserializer. This means that binding is not used for sub-types.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.
- Parameters:
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)
-
addMixInAnnotationMapping
Deprecated.Method to use for adding mix-in annotations that ClassclassWithMixInscontains into classdestinationClass. Mixing in is done when introspecting class annotations and properties. Annotations fromclassWithMixIns(and its supertypes) will override anythingdestinationClass(and its super-types) has already.- Parameters:
destinationClass- Class to modify by adding annotationsclassWithMixIns- Class that contains annotations to add- Since:
- 1.2
-
createBeanDeserializer
public JsonDeserializer<Object> createBeanDeserializer(DeserializationConfig config, DeserializerProvider p, JavaType type, BeanProperty property) throws JsonMappingException Deprecated.Description copied from class:BeanDeserializerFactoryMethod thatDeserializerProviders call to create a new deserializer for types other than Collections, Maps, arrays and enums.- Overrides:
createBeanDeserializerin classBeanDeserializerFactory- Parameters:
p- Provider that can be called to create deserializers for contained member typestype- Type to be deserialized- Throws:
JsonMappingException
-
createArrayDeserializer
public JsonDeserializer<?> createArrayDeserializer(DeserializationConfig config, DeserializerProvider p, ArrayType type, BeanProperty property) throws JsonMappingException Deprecated.Description copied from class:DeserializerFactoryMethod called to create (or, for completely immutable deserializers, reuse) a deserializer that can convert JSON content into values of specified Java type.- Overrides:
createArrayDeserializerin classBasicDeserializerFactory- Parameters:
p- Provider that can be called to create deserializers for contained member typestype- Type to be deserialized- Throws:
JsonMappingException
-
createEnumDeserializer
public JsonDeserializer<?> createEnumDeserializer(DeserializationConfig config, DeserializerProvider p, JavaType enumType, BeanProperty property) throws JsonMappingException Deprecated.Description copied from class:BasicDeserializerFactoryFactory method for constructing serializers ofEnumtypes.- Overrides:
createEnumDeserializerin classBasicDeserializerFactory- Throws:
JsonMappingException
-
SerializerFactory(see methods likeSerializerFactory.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