public abstract class BeanSerializerModifier extends Object
BeanSerializerFactory
to participate in constructing BeanSerializer
instances.
This is typically done by modules that want alter some aspects of serialization
process; and is preferable to sub-classing of BeanSerializerFactory
.
Sequence in which callback methods are called is as follows:
BeanPropertyWriter
) is sent for modification via
changeProperties(org.codehaus.jackson.map.SerializationConfig, org.codehaus.jackson.map.introspect.BasicBeanDescription, java.util.List<org.codehaus.jackson.map.ser.BeanPropertyWriter>)
. Changes can include removal, addition and
replacement of suggested properties.
orderProperties(org.codehaus.jackson.map.SerializationConfig, org.codehaus.jackson.map.introspect.BasicBeanDescription, java.util.List<org.codehaus.jackson.map.ser.BeanPropertyWriter>)
is called to allow
modifiers to alter ordering.
updateBuilder(org.codehaus.jackson.map.SerializationConfig, org.codehaus.jackson.map.introspect.BasicBeanDescription, org.codehaus.jackson.map.ser.BeanSerializerBuilder)
is called with builder, to allow builder state
to be modified (including possibly replacing builder itself if necessary)
BeanSerializer
instance and passes
it to modifiers using modifySerializer(org.codehaus.jackson.map.SerializationConfig, org.codehaus.jackson.map.introspect.BasicBeanDescription, org.codehaus.jackson.map.JsonSerializer<?>)
, for possible
modification or replacement (by any JsonSerializer
instance)
Default method implementations are "no-op"s, meaning that methods are implemented but have no effect.
Constructor and Description |
---|
BeanSerializerModifier() |
Modifier and Type | Method and Description |
---|---|
List<BeanPropertyWriter> |
changeProperties(SerializationConfig config,
BasicBeanDescription beanDesc,
List<BeanPropertyWriter> beanProperties)
Method called by
BeanSerializerFactory with tentative set
of discovered properties. |
JsonSerializer<?> |
modifySerializer(SerializationConfig config,
BasicBeanDescription beanDesc,
JsonSerializer<?> serializer)
Method called by
BeanSerializerFactory after constructing default
bean serializer instance with properties collected and ordered earlier. |
List<BeanPropertyWriter> |
orderProperties(SerializationConfig config,
BasicBeanDescription beanDesc,
List<BeanPropertyWriter> beanProperties)
Method called by
BeanSerializerFactory with set of properties
to serialize, in default ordering (based on defaults as well as
possible type annotations). |
BeanSerializerBuilder |
updateBuilder(SerializationConfig config,
BasicBeanDescription beanDesc,
BeanSerializerBuilder builder)
Method called by
BeanSerializerFactory after collecting all information
regarding POJO to serialize and updating builder with it, but before constructing
serializer. |
public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BasicBeanDescription beanDesc, List<BeanPropertyWriter> beanProperties)
BeanSerializerFactory
with tentative set
of discovered properties.
Implementations can add, remove or replace any of passed properties.
Properties List
passed as argument is modifiable, and returned List must
likewise be modifiable as it may be passed to multiple registered
modifiers.public List<BeanPropertyWriter> orderProperties(SerializationConfig config, BasicBeanDescription beanDesc, List<BeanPropertyWriter> beanProperties)
BeanSerializerFactory
with set of properties
to serialize, in default ordering (based on defaults as well as
possible type annotations).
Implementations can change ordering any way they like.
Properties List
passed as argument is modifiable, and returned List must
likewise be modifiable as it may be passed to multiple registered
modifiers.public BeanSerializerBuilder updateBuilder(SerializationConfig config, BasicBeanDescription beanDesc, BeanSerializerBuilder builder)
BeanSerializerFactory
after collecting all information
regarding POJO to serialize and updating builder with it, but before constructing
serializer.
Implementations may choose to modify state of builder (to affect serializer being
built), or even completely replace it (if they want to build different kind of
serializer). Typically, however, passed-in builder is returned, possibly with
some modifications.public JsonSerializer<?> modifySerializer(SerializationConfig config, BasicBeanDescription beanDesc, JsonSerializer<?> serializer)
BeanSerializerFactory
after constructing default
bean serializer instance with properties collected and ordered earlier.
Implementations can modify or replace given serializer and return serializer
to use. Note that although initial serializer being passed is of type
BeanSerializer
, modifiers may return serializers of other types;
and this is why implementations must check for type before casting.