org.codehaus.jackson.map
Class SerializationConfig

java.lang.Object
  extended by org.codehaus.jackson.map.MapperConfig<T>
      extended by org.codehaus.jackson.map.SerializationConfig
All Implemented Interfaces:
ClassIntrospector.MixInResolver

public class SerializationConfig
extends MapperConfig<T>

Object that contains baseline configuration for serialization process. An instance is owned by ObjectMapper, which makes a copy that is passed during serialization process to SerializerProvider and SerializerFactory.

Note: although configuration settings can be changed at any time (for factories and instances), they are not guaranteed to have effect if called after constructing relevant mapper or serializer instance. This because some objects may be configured, constructed and cached first time they are needed.

As of version 1.9, the goal is to make this class eventually immutable. Because of this, existing methods that allow changing state of this instance are deprecated in favor of methods that create new instances with different configuration ("fluent factories")


Nested Class Summary
static class SerializationConfig.Feature
          Enumeration that defines togglable features that guide the serialization feature.
 
Nested classes/interfaces inherited from class org.codehaus.jackson.map.MapperConfig
MapperConfig.Base, MapperConfig.ConfigFeature
 
Field Summary
protected  int _featureFlags
           Note: moved to base class in 1.9; was stored by sub-class earlier
protected  FilterProvider _filterProvider
          Object used for resolving filter ids to filter instances.
protected  JsonSerialize.Inclusion _serializationInclusion
          Which Bean/Map properties are to be included in serialization? Default settings is to include all regardless of value; can be changed to only include non-null properties, or properties with non-default values.
protected  Class<?> _serializationView
          View to use for filtering out properties to serialize.
 
Fields inherited from class org.codehaus.jackson.map.MapperConfig
_base, _mixInAnnotations, _mixInAnnotationsShared, _subtypeResolver, DEFAULT_DATE_FORMAT
 
Constructor Summary
  SerializationConfig(ClassIntrospector<? extends BeanDescription> intr, AnnotationIntrospector annIntr, VisibilityChecker<?> vc, SubtypeResolver subtypeResolver, PropertyNamingStrategy propertyNamingStrategy, TypeFactory typeFactory, HandlerInstantiator handlerInstantiator)
          Constructor used by ObjectMapper to create default configuration object instance.
protected SerializationConfig(SerializationConfig src)
           
protected SerializationConfig(SerializationConfig src, Class<?> view)
           
protected SerializationConfig(SerializationConfig src, FilterProvider filters)
           
protected SerializationConfig(SerializationConfig src, HashMap<ClassKey,Class<?>> mixins, SubtypeResolver str)
          Constructor used to make a private copy of specific mix-in definitions.
protected SerializationConfig(SerializationConfig src, int features)
           
protected SerializationConfig(SerializationConfig src, JsonSerialize.Inclusion incl)
           
protected SerializationConfig(SerializationConfig src, MapperConfig.Base base)
           
 
Method Summary
 boolean canOverrideAccessModifiers()
          Accessor for determining whether it is ok to try to force override of access modifiers to be able to get or set values of non-public Methods, Fields; to invoke non-public Constructors, Methods; or to instantiate non-public Classes.
 SerializationConfig createUnshared(SubtypeResolver subtypeResolver)
          Method to use for constructing an instance that is not shared between multiple operations but only used for a single one (which may be this instance, if it is immutable; if not, a copy is constructed with same settings)
 void disable(SerializationConfig.Feature f)
          Deprecated. Since 1.9, it is preferable to use without(org.codehaus.jackson.map.SerializationConfig.Feature...) instead; this method is deprecated as it modifies current instance instead of creating a new one (as the goal is to make this class immutable)
 void enable(SerializationConfig.Feature f)
          Deprecated. Since 1.9, it is preferable to use with(org.codehaus.jackson.map.SerializationConfig.Feature...) instead; this method is deprecated as it modifies current instance instead of creating a new one (as the goal is to make this class immutable)
 void fromAnnotations(Class<?> cls)
          Deprecated. Since 1.9, it is preferably to explicitly configure instances; this method also modifies existing instance which is against immutable design goals of this class.
 AnnotationIntrospector getAnnotationIntrospector()
          Method for getting AnnotationIntrospector configured to introspect annotation values used for configuration.
 VisibilityChecker<?> getDefaultVisibilityChecker()
          Accessor for object used for determining whether specific property elements (method, constructors, fields) can be auto-detected based on their visibility (access modifiers).
 FilterProvider getFilterProvider()
          Method for getting provider used for locating filters given id (which is usually provided with filter annotations).
 JsonSerialize.Inclusion getSerializationInclusion()
           
 Class<?> getSerializationView()
          Method for checking which serialization view is being used, if any; null if none.
<T extends BeanDescription>
T
introspect(JavaType type)
          Method that will introspect full bean properties for the purpose of building a bean serializer
<T extends BeanDescription>
T
introspectClassAnnotations(JavaType type)
          Accessor for getting bean description that only contains class annotations: useful if no getter/setter/creator information is needed.
<T extends BeanDescription>
T
introspectDirectClassAnnotations(JavaType type)
          Accessor for getting bean description that only contains immediate class annotations: ones from the class, and its direct mix-in, if any, but not from super types.
 boolean isAnnotationProcessingEnabled()
          Method for determining whether annotation processing is enabled or not (default settings are typically that it is enabled; must explicitly disable).
 boolean isEnabled(MapperConfig.ConfigFeature f)
          Method for checking whether given feature is enabled or not
 boolean isEnabled(SerializationConfig.Feature f)
          Alias for MapperConfig.isEnabled(org.codehaus.jackson.map.MapperConfig.ConfigFeature).
 JsonSerializer<Object> serializerInstance(Annotated annotated, Class<? extends JsonSerializer<?>> serClass)
           
 void set(SerializationConfig.Feature f, boolean state)
          Deprecated. Since 1.9, it is preferable to use without(org.codehaus.jackson.map.SerializationConfig.Feature...) and with(org.codehaus.jackson.map.SerializationConfig.Feature...) instead; this method is deprecated as it modifies current instance instead of creating a new one (as the goal is to make this class immutable)
 void setDateFormat(DateFormat df)
          Deprecated. Since 1.8, use withDateFormat(java.text.DateFormat) instead.
 void setSerializationInclusion(JsonSerialize.Inclusion props)
          Deprecated. since 1.9 should either use withSerializationInclusion(org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion) to construct new instance, or configure through ObjectMapper
 void setSerializationView(Class<?> view)
          Deprecated. Since 1.8, use withView(java.lang.Class) instead
 boolean shouldSortPropertiesAlphabetically()
          Accessor for checking whether default settings for property handling indicate that properties should be alphabetically ordered or not.
 String toString()
           
 SerializationConfig with(SerializationConfig.Feature... features)
          Fluent factory method that will construct and return a new configuration object instance with specified features enabled.
 SerializationConfig withAnnotationIntrospector(AnnotationIntrospector ai)
          Method for constructing and returning a new instance with different AnnotationIntrospector to use (replacing old one).
 SerializationConfig withAppendedAnnotationIntrospector(AnnotationIntrospector ai)
          Method for constructing and returning a new instance with additional AnnotationIntrospector appended (as the lowest priority one)
 SerializationConfig withClassIntrospector(ClassIntrospector<? extends BeanDescription> ci)
          Method for constructing and returning a new instance with different ClassIntrospector to use.
 SerializationConfig withDateFormat(DateFormat df)
          In addition to constructing instance with specified date format, will enable or disable Feature.WRITE_DATES_AS_TIMESTAMPS (enable if format set as null; disable if non-null)
 SerializationConfig withFilters(FilterProvider filterProvider)
           
 SerializationConfig withHandlerInstantiator(HandlerInstantiator hi)
          Method for constructing and returning a new instance with different HandlerInstantiator to use.
 SerializationConfig withInsertedAnnotationIntrospector(AnnotationIntrospector ai)
          Method for constructing and returning a new instance with additional AnnotationIntrospector inserted (as the highest priority one)
 SerializationConfig without(SerializationConfig.Feature... features)
          Fluent factory method that will construct and return a new configuration object instance with specified features disabled.
 SerializationConfig withPropertyNamingStrategy(PropertyNamingStrategy pns)
          Method for constructing and returning a new instance with different PropertyNamingStrategy to use.
 SerializationConfig withSerializationInclusion(JsonSerialize.Inclusion incl)
           
 SerializationConfig withSubtypeResolver(SubtypeResolver str)
          Method for constructing and returning a new instance with different SubtypeResolver to use.
 SerializationConfig withTypeFactory(TypeFactory tf)
          Method for constructing and returning a new instance with different TypeFactory to use.
 SerializationConfig withTypeResolverBuilder(TypeResolverBuilder<?> trb)
          Method for constructing and returning a new instance with different TypeResolverBuilder to use.
 SerializationConfig withView(Class<?> view)
           
 SerializationConfig withVisibility(JsonMethod forMethod, JsonAutoDetect.Visibility visibility)
          Method for constructing and returning a new instance with different minimal visibility level for specified property type
 SerializationConfig withVisibilityChecker(VisibilityChecker<?> vc)
          Method for constructing and returning a new instance with different VisibilityChecker to use.
 
Methods inherited from class org.codehaus.jackson.map.MapperConfig
addMixInAnnotations, appendAnnotationIntrospector, constructSpecializedType, constructType, constructType, findMixInClassFor, getClassIntrospector, getDateFormat, getDefaultTyper, getHandlerInstantiator, getPropertyNamingStrategy, getSubtypeResolver, getTypeFactory, insertAnnotationIntrospector, introspectClassAnnotations, introspectDirectClassAnnotations, mixInCount, setAnnotationIntrospector, setMixInAnnotations, typeIdResolverInstance, typeResolverBuilderInstance
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_serializationInclusion

protected JsonSerialize.Inclusion _serializationInclusion
Which Bean/Map properties are to be included in serialization? Default settings is to include all regardless of value; can be changed to only include non-null properties, or properties with non-default values.

Defaults to null for backwards compatibility; if left as null, will check deprecated SerializationConfig.Feature.WRITE_NULL_PROPERTIES to choose between JsonSerialize.Inclusion.ALWAYS and JsonSerialize.Inclusion.NON_NULL.


_serializationView

protected Class<?> _serializationView
View to use for filtering out properties to serialize. Null if none (will also be assigned null if Object.class is defined), meaning that all properties are to be included.


_filterProvider

protected FilterProvider _filterProvider
Object used for resolving filter ids to filter instances. Non-null if explicitly defined; null by default.

Since:
1.7

_featureFlags

protected int _featureFlags

Note: moved to base class in 1.9; was stored by sub-class earlier

Constructor Detail

SerializationConfig

public SerializationConfig(ClassIntrospector<? extends BeanDescription> intr,
                           AnnotationIntrospector annIntr,
                           VisibilityChecker<?> vc,
                           SubtypeResolver subtypeResolver,
                           PropertyNamingStrategy propertyNamingStrategy,
                           TypeFactory typeFactory,
                           HandlerInstantiator handlerInstantiator)
Constructor used by ObjectMapper to create default configuration object instance.


SerializationConfig

protected SerializationConfig(SerializationConfig src)
Since:
1.8

SerializationConfig

protected SerializationConfig(SerializationConfig src,
                              HashMap<ClassKey,Class<?>> mixins,
                              SubtypeResolver str)
Constructor used to make a private copy of specific mix-in definitions.

Since:
1.8

SerializationConfig

protected SerializationConfig(SerializationConfig src,
                              MapperConfig.Base base)
Since:
1.8

SerializationConfig

protected SerializationConfig(SerializationConfig src,
                              FilterProvider filters)
Since:
1.8

SerializationConfig

protected SerializationConfig(SerializationConfig src,
                              Class<?> view)
Since:
1.8

SerializationConfig

protected SerializationConfig(SerializationConfig src,
                              JsonSerialize.Inclusion incl)
Since:
1.9

SerializationConfig

protected SerializationConfig(SerializationConfig src,
                              int features)
Since:
1.9
Method Detail

withClassIntrospector

public SerializationConfig withClassIntrospector(ClassIntrospector<? extends BeanDescription> ci)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with different ClassIntrospector to use.

NOTE: make sure to register new instance with ObjectMapper if directly calling this method.

Specified by:
withClassIntrospector in class MapperConfig<SerializationConfig>

withAnnotationIntrospector

public SerializationConfig withAnnotationIntrospector(AnnotationIntrospector ai)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with different AnnotationIntrospector to use (replacing old one).

NOTE: make sure to register new instance with ObjectMapper if directly calling this method.

Specified by:
withAnnotationIntrospector in class MapperConfig<SerializationConfig>

withInsertedAnnotationIntrospector

public SerializationConfig withInsertedAnnotationIntrospector(AnnotationIntrospector ai)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with additional AnnotationIntrospector inserted (as the highest priority one)

Specified by:
withInsertedAnnotationIntrospector in class MapperConfig<SerializationConfig>

withAppendedAnnotationIntrospector

public SerializationConfig withAppendedAnnotationIntrospector(AnnotationIntrospector ai)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with additional AnnotationIntrospector appended (as the lowest priority one)

Specified by:
withAppendedAnnotationIntrospector in class MapperConfig<SerializationConfig>

withVisibilityChecker

public SerializationConfig withVisibilityChecker(VisibilityChecker<?> vc)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with different VisibilityChecker to use.

NOTE: make sure to register new instance with ObjectMapper if directly calling this method.

Specified by:
withVisibilityChecker in class MapperConfig<SerializationConfig>

withVisibility

public SerializationConfig withVisibility(JsonMethod forMethod,
                                          JsonAutoDetect.Visibility visibility)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with different minimal visibility level for specified property type

NOTE: make sure to register new instance with ObjectMapper if directly calling this method.

Specified by:
withVisibility in class MapperConfig<SerializationConfig>

withTypeResolverBuilder

public SerializationConfig withTypeResolverBuilder(TypeResolverBuilder<?> trb)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with different TypeResolverBuilder to use.

NOTE: make sure to register new instance with ObjectMapper if directly calling this method.

Specified by:
withTypeResolverBuilder in class MapperConfig<SerializationConfig>

withSubtypeResolver

public SerializationConfig withSubtypeResolver(SubtypeResolver str)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with different SubtypeResolver to use.

NOTE: make sure to register new instance with ObjectMapper if directly calling this method.

Specified by:
withSubtypeResolver in class MapperConfig<SerializationConfig>

withPropertyNamingStrategy

public SerializationConfig withPropertyNamingStrategy(PropertyNamingStrategy pns)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with different PropertyNamingStrategy to use.

NOTE: make sure to register new instance with ObjectMapper if directly calling this method.

Specified by:
withPropertyNamingStrategy in class MapperConfig<SerializationConfig>

withTypeFactory

public SerializationConfig withTypeFactory(TypeFactory tf)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with different TypeFactory to use.

NOTE: make sure to register new instance with ObjectMapper if directly calling this method.

Specified by:
withTypeFactory in class MapperConfig<SerializationConfig>

withDateFormat

public SerializationConfig withDateFormat(DateFormat df)
In addition to constructing instance with specified date format, will enable or disable Feature.WRITE_DATES_AS_TIMESTAMPS (enable if format set as null; disable if non-null)

Specified by:
withDateFormat in class MapperConfig<SerializationConfig>

withHandlerInstantiator

public SerializationConfig withHandlerInstantiator(HandlerInstantiator hi)
Description copied from class: MapperConfig
Method for constructing and returning a new instance with different HandlerInstantiator to use.

NOTE: make sure to register new instance with ObjectMapper if directly calling this method.

Specified by:
withHandlerInstantiator in class MapperConfig<SerializationConfig>

withFilters

public SerializationConfig withFilters(FilterProvider filterProvider)
Since:
1.7

withView

public SerializationConfig withView(Class<?> view)
Since:
1.8

withSerializationInclusion

public SerializationConfig withSerializationInclusion(JsonSerialize.Inclusion incl)
Since:
1.9

with

public SerializationConfig with(SerializationConfig.Feature... features)
Fluent factory method that will construct and return a new configuration object instance with specified features enabled.

Since:
1.9

without

public SerializationConfig without(SerializationConfig.Feature... features)
Fluent factory method that will construct and return a new configuration object instance with specified features disabled.

Since:
1.9

fromAnnotations

@Deprecated
public void fromAnnotations(Class<?> cls)
Deprecated. Since 1.9, it is preferably to explicitly configure instances; this method also modifies existing instance which is against immutable design goals of this class.

Method that checks class annotations that the argument Object has, and modifies settings of this configuration object accordingly, similar to how those annotations would affect actual value classes annotated with them, but with global scope. Note that not all annotations have global significance, and thus only subset of Jackson annotations will have any effect.

Serialization annotations that are known to have effect are:

Specified by:
fromAnnotations in class MapperConfig<SerializationConfig>
Parameters:
cls - Class of which class annotations to use for changing configuration settings

createUnshared

public SerializationConfig createUnshared(SubtypeResolver subtypeResolver)
Description copied from class: MapperConfig
Method to use for constructing an instance that is not shared between multiple operations but only used for a single one (which may be this instance, if it is immutable; if not, a copy is constructed with same settings)

Specified by:
createUnshared in class MapperConfig<SerializationConfig>

getAnnotationIntrospector

public AnnotationIntrospector getAnnotationIntrospector()
Description copied from class: MapperConfig
Method for getting AnnotationIntrospector configured to introspect annotation values used for configuration.

Non-final since it is actually overridden by sub-classes (for now?)

Overrides:
getAnnotationIntrospector in class MapperConfig<SerializationConfig>

introspectClassAnnotations

public <T extends BeanDescription> T introspectClassAnnotations(JavaType type)
Accessor for getting bean description that only contains class annotations: useful if no getter/setter/creator information is needed.

Note: part of MapperConfig since 1.7

Specified by:
introspectClassAnnotations in class MapperConfig<SerializationConfig>

introspectDirectClassAnnotations

public <T extends BeanDescription> T introspectDirectClassAnnotations(JavaType type)
Accessor for getting bean description that only contains immediate class annotations: ones from the class, and its direct mix-in, if any, but not from super types.

Note: part of MapperConfig since 1.7

Specified by:
introspectDirectClassAnnotations in class MapperConfig<SerializationConfig>

isAnnotationProcessingEnabled

public boolean isAnnotationProcessingEnabled()
Description copied from class: MapperConfig
Method for determining whether annotation processing is enabled or not (default settings are typically that it is enabled; must explicitly disable).

Specified by:
isAnnotationProcessingEnabled in class MapperConfig<SerializationConfig>
Returns:
True if annotation processing is enabled; false if not

canOverrideAccessModifiers

public boolean canOverrideAccessModifiers()
Description copied from class: MapperConfig
Accessor for determining whether it is ok to try to force override of access modifiers to be able to get or set values of non-public Methods, Fields; to invoke non-public Constructors, Methods; or to instantiate non-public Classes. By default this is enabled, but on some platforms it needs to be prevented since if this would violate security constraints and cause failures.

Specified by:
canOverrideAccessModifiers in class MapperConfig<SerializationConfig>
Returns:
True if access modifier overriding is allowed (and may be done for any Field, Method, Constructor or Class); false to prevent any attempts to override.

shouldSortPropertiesAlphabetically

public boolean shouldSortPropertiesAlphabetically()
Description copied from class: MapperConfig
Accessor for checking whether default settings for property handling indicate that properties should be alphabetically ordered or not.

Specified by:
shouldSortPropertiesAlphabetically in class MapperConfig<SerializationConfig>

getDefaultVisibilityChecker

public VisibilityChecker<?> getDefaultVisibilityChecker()
Description copied from class: MapperConfig
Accessor for object used for determining whether specific property elements (method, constructors, fields) can be auto-detected based on their visibility (access modifiers). Can be changed to allow different minimum visibility levels for auto-detection. Note that this is the global handler; individual types (classes) can further override active checker used (using JsonAutoDetect annotation)

Overrides:
getDefaultVisibilityChecker in class MapperConfig<SerializationConfig>

isEnabled

public boolean isEnabled(SerializationConfig.Feature f)
Alias for MapperConfig.isEnabled(org.codehaus.jackson.map.MapperConfig.ConfigFeature).

Since:
1.0 However, note that version 1.9.0 and 1.9.1 accidentally missed this overloaded variant

enable

@Deprecated
public void enable(SerializationConfig.Feature f)
Deprecated. Since 1.9, it is preferable to use with(org.codehaus.jackson.map.SerializationConfig.Feature...) instead; this method is deprecated as it modifies current instance instead of creating a new one (as the goal is to make this class immutable)

Method for enabling specified feature.


disable

@Deprecated
public void disable(SerializationConfig.Feature f)
Deprecated. Since 1.9, it is preferable to use without(org.codehaus.jackson.map.SerializationConfig.Feature...) instead; this method is deprecated as it modifies current instance instead of creating a new one (as the goal is to make this class immutable)

Method for disabling specified feature.


set

@Deprecated
public void set(SerializationConfig.Feature f,
                           boolean state)
Deprecated. Since 1.9, it is preferable to use without(org.codehaus.jackson.map.SerializationConfig.Feature...) and with(org.codehaus.jackson.map.SerializationConfig.Feature...) instead; this method is deprecated as it modifies current instance instead of creating a new one (as the goal is to make this class immutable)

Method for enabling or disabling specified feature.


getSerializationView

public Class<?> getSerializationView()
Method for checking which serialization view is being used, if any; null if none.

Since:
1.4

getSerializationInclusion

public JsonSerialize.Inclusion getSerializationInclusion()

setSerializationInclusion

@Deprecated
public void setSerializationInclusion(JsonSerialize.Inclusion props)
Deprecated. since 1.9 should either use withSerializationInclusion(org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion) to construct new instance, or configure through ObjectMapper

Method that will define global setting of which bean/map properties are to be included in serialization. Can be overridden by class annotations (overriding settings to use for instances of that class) and method/field annotations (overriding settings for the value bean for that getter method or field)


getFilterProvider

public FilterProvider getFilterProvider()
Method for getting provider used for locating filters given id (which is usually provided with filter annotations). Will be null if no provided was set for ObjectWriter (or if serialization directly called from ObjectMapper)

Since:
1.7

introspect

public <T extends BeanDescription> T introspect(JavaType type)
Method that will introspect full bean properties for the purpose of building a bean serializer


serializerInstance

public JsonSerializer<Object> serializerInstance(Annotated annotated,
                                                 Class<? extends JsonSerializer<?>> serClass)

setDateFormat

@Deprecated
public final void setDateFormat(DateFormat df)
Deprecated. Since 1.8, use withDateFormat(java.text.DateFormat) instead.

One thing to note is that this will set SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS to false (if null format set), or true (if non-null format)

Overrides:
setDateFormat in class MapperConfig<SerializationConfig>
Parameters:
df - Date format to use, if not null; if null, the default format will be used

setSerializationView

@Deprecated
public void setSerializationView(Class<?> view)
Deprecated. Since 1.8, use withView(java.lang.Class) instead

Method for checking which serialization view is being used, if any; null if none.

Since:
1.4

toString

public String toString()
Overrides:
toString in class Object

isEnabled

public boolean isEnabled(MapperConfig.ConfigFeature f)
Description copied from class: MapperConfig
Method for checking whether given feature is enabled or not

Specified by:
isEnabled in class MapperConfig<T extends org.codehaus.jackson.map.MapperConfig.Impl<CFG,T>>