org.codehaus.jackson.map.ser
Class BeanSerializerModifier

java.lang.Object
  extended by org.codehaus.jackson.map.ser.BeanSerializerModifier

public abstract class BeanSerializerModifier
extends Object

Abstract class that defines API for objects that can be registered (for 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:

  1. After factory has collected tentative set of properties (instances of BeanPropertyWriter) is sent for modification via changeProperties(org.codehaus.jackson.map.SerializationConfig, org.codehaus.jackson.map.introspect.BasicBeanDescription, java.util.List). Changes can include removal, addition and replacement of suggested properties.
  2. Resulting set of properties are ordered (sorted) by factory, as per configuration, and then orderProperties(org.codehaus.jackson.map.SerializationConfig, org.codehaus.jackson.map.introspect.BasicBeanDescription, java.util.List) is called to allow modifiers to alter ordering.
  3. After all bean properties and related information is accumulated, 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)
  4. Once all bean information has been determined, factory creates default 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.

Since:
1.7

Constructor Summary
BeanSerializerModifier()
           
 
Method Summary
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BeanSerializerModifier

public BeanSerializerModifier()
Method Detail

changeProperties

public List<BeanPropertyWriter> changeProperties(SerializationConfig config,
                                                 BasicBeanDescription beanDesc,
                                                 List<BeanPropertyWriter> beanProperties)
Method called by 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.


orderProperties

public 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). 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.


updateBuilder

public 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. 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.


modifySerializer

public JsonSerializer<?> modifySerializer(SerializationConfig config,
                                          BasicBeanDescription beanDesc,
                                          JsonSerializer<?> serializer)
Method called by 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.