public abstract class BeanDeserializerModifier extends Object
JsonDeserializer
instances
(via DeserializerFactory
).
This is typically done by modules that want alter some aspects of deserialization
process; and is preferable to sub-classing of BeanDeserializerFactory
.
Note that Jackson 2.2 adds more methods for customization; with earlier versions
only BeanDeserializer
instances could be modified, but with 2.2 all types
of deserializers can be changed.
Sequence in which callback methods are called for BeanDeserializer
is:
updateProperties(com.fasterxml.jackson.databind.DeserializationConfig, com.fasterxml.jackson.databind.BeanDescription, java.util.List<com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition>)
is called once all property definitions are
collected, and initial filtering (by ignorable type and explicit ignoral-by-bean)
has been performed.
updateBuilder(com.fasterxml.jackson.databind.DeserializationConfig, com.fasterxml.jackson.databind.BeanDescription, com.fasterxml.jackson.databind.deser.BeanDeserializerBuilder)
is called once all initial pieces for building deserializer
have been collected
modifyDeserializer(com.fasterxml.jackson.databind.DeserializationConfig, com.fasterxml.jackson.databind.BeanDescription, com.fasterxml.jackson.databind.JsonDeserializer<?>)
is called after deserializer has been built
by BeanDeserializerBuilder
but before it is returned to be used
For other types of deserializers, methods called depend on type of values for
which deserializer is being constructed; and only a single method is called
since the process does not involve builders (unlike that of BeanDeserializer
.
Default method implementations are "no-op"s, meaning that methods are implemented but have no effect; this is mostly so that new methods can be added in later versions.
Constructor and Description |
---|
BeanDeserializerModifier() |
public List<BeanPropertyDefinition> updateProperties(DeserializationConfig config, BeanDescription beanDesc, List<BeanPropertyDefinition> propDefs)
BeanDeserializerFactory
when it has collected
initial list of BeanPropertyDefinition
s, and done basic by-name
and by-type filtering, but before constructing builder or actual
property handlers; or arranging order.
The most common changes to make at this point are to completely remove
specified properties, or rename then: other modifications are easier
to make at later points.public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder)
BeanDeserializerFactory
when it has collected
basic information such as tentative list of properties to deserialize.
Implementations may choose to modify state of builder (to affect deserializer being
built), or even completely replace it (if they want to build different kind of
deserializer). Typically changes mostly concern set of properties to deserialize.public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer)
BeanDeserializerFactory
after constructing default
bean deserializer instance with properties collected and ordered earlier.
Implementations can modify or replace given deserializer and return deserializer
to use. Note that although initial deserializer being passed is of type
BeanDeserializer
, modifiers may return deserializers of other types;
and this is why implementations must check for type before casting.public JsonDeserializer<?> modifyEnumDeserializer(DeserializationConfig config, JavaType type, BeanDescription beanDesc, JsonDeserializer<?> deserializer)
public JsonDeserializer<?> modifyReferenceDeserializer(DeserializationConfig config, ReferenceType type, BeanDescription beanDesc, JsonDeserializer<?> deserializer)
public JsonDeserializer<?> modifyArrayDeserializer(DeserializationConfig config, ArrayType valueType, BeanDescription beanDesc, JsonDeserializer<?> deserializer)
DeserializerFactory
after it has constructed the
standard deserializer for given
ArrayType
to make it possible to either replace or augment this deserializer with
additional functionality.config
- Configuration in usevalueType
- Type of the value deserializer is used for.beanDesc
- Description fdeserializer
- Default deserializer that would be used.deserializer
that was passed
in, or an instance method constructed.public JsonDeserializer<?> modifyCollectionDeserializer(DeserializationConfig config, CollectionType type, BeanDescription beanDesc, JsonDeserializer<?> deserializer)
public JsonDeserializer<?> modifyCollectionLikeDeserializer(DeserializationConfig config, CollectionLikeType type, BeanDescription beanDesc, JsonDeserializer<?> deserializer)
public JsonDeserializer<?> modifyMapDeserializer(DeserializationConfig config, MapType type, BeanDescription beanDesc, JsonDeserializer<?> deserializer)
public JsonDeserializer<?> modifyMapLikeDeserializer(DeserializationConfig config, MapLikeType type, BeanDescription beanDesc, JsonDeserializer<?> deserializer)
public KeyDeserializer modifyKeyDeserializer(DeserializationConfig config, JavaType type, KeyDeserializer deserializer)
DeserializerFactory
after it has constructed the
standard key deserializer for given key type.
This make it possible to replace the default key deserializer, or augment
it somehow (including optional use of default deserializer with occasional
override).Copyright © 2018 JBoss by Red Hat. All rights reserved.