Class SerializerProvider
- java.lang.Object
-
- com.fasterxml.jackson.databind.DatabindContext
-
- com.fasterxml.jackson.databind.SerializerProvider
-
- Direct Known Subclasses:
DefaultSerializerProvider
public abstract class SerializerProvider extends DatabindContext
Class that defines API used byObjectMapper
andJsonSerializer
s to obtain serializers capable of serializing instances of specific types; as well as the default implementation of the functionality.Provider handles caching aspects of serializer handling; all construction details are delegated to
SerializerFactory
instance.Object life-cycle is such that an initial instance ("blueprint") is created and referenced by
ObjectMapper
andObjectWriter
intances; but for actual usage, a configured instance is created by using a create method in sub-classDefaultSerializerProvider
. Only this instance can be used for actual serialization calls; blueprint object is only to be used for creating instances.
-
-
Field Summary
Fields Modifier and Type Field Description static JsonSerializer<java.lang.Object>
DEFAULT_NULL_KEY_SERIALIZER
-
Constructor Summary
Constructors Constructor Description SerializerProvider()
Constructor for creating master (or "blue-print") provider object, which is only used as the template for constructing per-binding instances.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description TokenBuffer
bufferForValueConversion()
Specialized factory method used when we are converting values and do not typically have or use "real" parsers or generators.TokenBuffer
bufferForValueConversion(ObjectCodec oc)
Specialized factory method used when we are converting values and do not typically have or use "real" parsers or generators.boolean
canOverrideAccessModifiers()
Convenience method for accessing serialization view in use (if any); equivalent to:JavaType
constructSpecializedType(JavaType baseType, java.lang.Class<?> subclass)
Convenience method for constructing subtypes, retaining generic type parameter (if any).void
defaultSerializeDateKey(long timestamp, JsonGenerator gen)
Method that will handle serialization of Dates used asMap
keys, based onSerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS
value (and if using textual representation, configured date format)void
defaultSerializeDateKey(java.util.Date date, JsonGenerator gen)
Method that will handle serialization of Dates used asMap
keys, based onSerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS
value (and if using textual representation, configured date format)void
defaultSerializeDateValue(long timestamp, JsonGenerator gen)
Method that will handle serialization of Date(-like) values, usingSerializationConfig
settings to determine expected serialization behavior.void
defaultSerializeDateValue(java.util.Date date, JsonGenerator gen)
Method that will handle serialization of Date(-like) values, usingSerializationConfig
settings to determine expected serialization behavior.void
defaultSerializeField(java.lang.String fieldName, java.lang.Object value, JsonGenerator gen)
Convenience method that will serialize given field with specified value.void
defaultSerializeNull(JsonGenerator gen)
void
defaultSerializeValue(java.lang.Object value, JsonGenerator gen)
Convenience method that will serialize given value (which can be null) using standard serializer locating functionality.JsonSerializer<java.lang.Object>
findContentValueSerializer(JavaType valueType, BeanProperty property)
Alternative tofindPrimaryPropertySerializer(JavaType, BeanProperty)
called not for primary value, but "content" of such primary serializer: element of an array orCollection
, value ofMap
entry and so on.JsonSerializer<java.lang.Object>
findContentValueSerializer(java.lang.Class<?> valueType, BeanProperty property)
JsonSerializer<java.lang.Object>
findKeySerializer(JavaType keyType, BeanProperty property)
Method called to get the serializer to use for serializing non-null Map keys.JsonSerializer<java.lang.Object>
findKeySerializer(java.lang.Class<?> rawKeyType, BeanProperty property)
JsonSerializer<java.lang.Object>
findNullKeySerializer(JavaType serializationType, BeanProperty property)
Method called to find a serializer to use for null values for given declared type.JsonSerializer<java.lang.Object>
findNullValueSerializer(BeanProperty property)
Method called to get the serializer to use for serializing null values for specified property.abstract WritableObjectId
findObjectId(java.lang.Object forPojo, ObjectIdGenerator<?> generatorType)
Method called to find the Object Id for given POJO, if one has been generated.JsonSerializer<java.lang.Object>
findPrimaryPropertySerializer(JavaType valueType, BeanProperty property)
Similar tofindValueSerializer(JavaType, BeanProperty)
, but used when finding "primary" property value serializer (one directly handling value of the property).JsonSerializer<java.lang.Object>
findPrimaryPropertySerializer(java.lang.Class<?> valueType, BeanProperty property)
JsonSerializer<java.lang.Object>
findTypedValueSerializer(JavaType valueType, boolean cache, BeanProperty property)
Method called to locate regular serializer, matching type serializer, and if both found, wrap them in a serializer that calls both in correct sequence.JsonSerializer<java.lang.Object>
findTypedValueSerializer(java.lang.Class<?> valueType, boolean cache, BeanProperty property)
Method called to locate regular serializer, matching type serializer, and if both found, wrap them in a serializer that calls both in correct sequence.TypeSerializer
findTypeSerializer(JavaType javaType)
Method called to get theTypeSerializer
to use for including Type Id necessary for serializing for the given Java class.JsonSerializer<java.lang.Object>
findValueSerializer(JavaType valueType)
Method variant used when we do NOT want contextualization to happen; it will need to be handled at a later point, but caller wants to be able to do that as needed; sometimes to avoid infinite loopsJsonSerializer<java.lang.Object>
findValueSerializer(JavaType valueType, BeanProperty property)
Similar tofindValueSerializer(Class,BeanProperty)
, but takes full generics-aware type instead of raw class.JsonSerializer<java.lang.Object>
findValueSerializer(java.lang.Class<?> valueType)
Method variant used when we do NOT want contextualization to happen; it will need to be handled at a later point, but caller wants to be able to do that as needed; sometimes to avoid infinite loopsJsonSerializer<java.lang.Object>
findValueSerializer(java.lang.Class<?> valueType, BeanProperty property)
Method called to get hold of a serializer for a value of given type; or if no such serializer can be found, a default handler (which may do a best-effort generic serialization or just simply throw an exception when invoked).java.lang.Class<?>
getActiveView()
Accessor for locating currently active view, if any; returns null if no view has been set.AnnotationIntrospector
getAnnotationIntrospector()
Convenience method for accessing serialization view in use (if any); equivalent to:java.lang.Object
getAttribute(java.lang.Object key)
Method for accessing attributes available in this context.SerializationConfig
getConfig()
Method for accessing configuration for the serialization processing.JsonSerializer<java.lang.Object>
getDefaultNullKeySerializer()
JsonSerializer<java.lang.Object>
getDefaultNullValueSerializer()
JsonFormat.Value
getDefaultPropertyFormat(java.lang.Class<?> baseType)
JsonInclude.Value
getDefaultPropertyInclusion(java.lang.Class<?> baseType)
FilterProvider
getFilterProvider()
Convenience method for accessing provider to find serialization filters used, equivalent to calling:JsonGenerator
getGenerator()
NOTE: current implementation simply returns `null` as generator is not yet assigned to this provider.java.util.Locale
getLocale()
Method for accessing default Locale to use: convenience method forjava.util.TimeZone
getTimeZone()
Method for accessing default TimeZone to use: convenience method forTypeFactory
getTypeFactory()
JsonSerializer<java.lang.Object>
getUnknownTypeSerializer(java.lang.Class<?> unknownType)
Method called to get the serializer to use if provider cannot determine an actual type-specific serializer to use; typically when none ofSerializerFactory
instances are able to construct a serializer.JsonSerializer<?>
handlePrimaryContextualization(JsonSerializer<?> ser, BeanProperty property)
Method called for primary property serializers (ones directly created to serialize values of a POJO property), to handle details of resolvingContextualSerializer
with given property context.JsonSerializer<?>
handleSecondaryContextualization(JsonSerializer<?> ser, BeanProperty property)
Method called for secondary property serializers (ones NOT directly created to serialize values of a POJO property but instead created as a dependant serializer -- such as value serializers for structured types, or serializers for root values) to handle details of resolvingContextualDeserializer
with given property context.boolean
hasSerializationFeatures(int featureMask)
"Bulk" access method for checking that all features specified by mask are enabled.abstract java.lang.Object
includeFilterInstance(BeanPropertyDefinition forProperty, java.lang.Class<?> filterClass)
Method that can be called to construct and configureJsonInclude
filter instance, given aClass
to instantiate (with default constructor, by default).abstract boolean
includeFilterSuppressNulls(java.lang.Object filter)
Follow-up method that may be called after callingincludeFilterInstance(com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition, java.lang.Class<?>)
, to check handling of `null` values by the filter.JsonMappingException
invalidTypeIdException(JavaType baseType, java.lang.String typeId, java.lang.String extraDesc)
boolean
isEnabled(MapperFeature feature)
Convenience method for checking whether specified serialization feature is enabled or not.boolean
isEnabled(SerializationFeature feature)
Convenience method for checking whether specified serialization feature is enabled or not.boolean
isUnknownTypeSerializer(JsonSerializer<?> ser)
Helper method called to see if given serializer is considered to be something returned bygetUnknownTypeSerializer(java.lang.Class<?>)
, that is, something for which no regular serializer was found or constructed.JsonMappingException
mappingException(java.lang.String message, java.lang.Object... msgArgs)
Deprecated.Since 2.9<T> T
reportBadDefinition(JavaType type, java.lang.String msg)
Helper method called to indicate a generic problem that stems from type definition(s), not input data, or input/output state; typically this means throwing aInvalidDefinitionException
.<T> T
reportBadDefinition(JavaType type, java.lang.String msg, java.lang.Throwable cause)
<T> T
reportBadDefinition(java.lang.Class<?> raw, java.lang.String msg, java.lang.Throwable cause)
<T> T
reportBadPropertyDefinition(BeanDescription bean, BeanPropertyDefinition prop, java.lang.String message, java.lang.Object... msgArgs)
Helper method called to indicate problem in POJO (serialization) definitions or settings regarding specific property (of a type), unrelated to actual JSON content to map.<T> T
reportBadTypeDefinition(BeanDescription bean, java.lang.String msg, java.lang.Object... msgArgs)
Helper method called to indicate problem in POJO (serialization) definitions or settings regarding specific Java type, unrelated to actual JSON content to map.void
reportMappingProblem(java.lang.String message, java.lang.Object... args)
Helper method called to indicate problem; default behavior is to construct and throw aJsonMappingException
, but in future may collect more than one and only throw after certain number, or at the end of serialization.void
reportMappingProblem(java.lang.Throwable t, java.lang.String message, java.lang.Object... msgArgs)
Helper method called to indicate problem; default behavior is to construct and throw aJsonMappingException
, but in future may collect more than one and only throw after certain number, or at the end of serialization.abstract JsonSerializer<java.lang.Object>
serializerInstance(Annotated annotated, java.lang.Object serDef)
Method that can be called to construct and configure serializer instance, either given aClass
to instantiate (with default constructor), or an uninitialized serializer instance.SerializerProvider
setAttribute(java.lang.Object key, java.lang.Object value)
Method for setting per-call value of given attribute.void
setDefaultKeySerializer(JsonSerializer<java.lang.Object> ks)
Method that can be used to specify serializer to use for serializing all non-null JSON property names, unless more specific key serializer is found (i.e.void
setNullKeySerializer(JsonSerializer<java.lang.Object> nks)
Method that can be used to specify serializer that will be used to write JSON property names matching null keys for Java Maps (which will otherwise throw an exception if try write such property name)void
setNullValueSerializer(JsonSerializer<java.lang.Object> nvs)
Method that can be used to specify serializer that will be used to write JSON values matching Java null values instead of default one (which simply writes JSON null).-
Methods inherited from class com.fasterxml.jackson.databind.DatabindContext
constructType, converterInstance, objectIdGeneratorInstance, objectIdResolverInstance, reportBadDefinition, resolveAndValidateSubType, resolveSubType
-
-
-
-
Field Detail
-
DEFAULT_NULL_KEY_SERIALIZER
public static final JsonSerializer<java.lang.Object> DEFAULT_NULL_KEY_SERIALIZER
-
-
Method Detail
-
setDefaultKeySerializer
public void setDefaultKeySerializer(JsonSerializer<java.lang.Object> ks)
Method that can be used to specify serializer to use for serializing all non-null JSON property names, unless more specific key serializer is found (i.e. if not custom key serializer has been registered for Java type).Note that key serializer registration are different from value serializer registrations.
-
setNullValueSerializer
public void setNullValueSerializer(JsonSerializer<java.lang.Object> nvs)
Method that can be used to specify serializer that will be used to write JSON values matching Java null values instead of default one (which simply writes JSON null).Note that you can get finer control over serializer to use by overriding
findNullValueSerializer(com.fasterxml.jackson.databind.BeanProperty)
, which gets called once per each property.
-
setNullKeySerializer
public void setNullKeySerializer(JsonSerializer<java.lang.Object> nks)
Method that can be used to specify serializer that will be used to write JSON property names matching null keys for Java Maps (which will otherwise throw an exception if try write such property name)
-
getConfig
public final SerializationConfig getConfig()
Method for accessing configuration for the serialization processing.- Specified by:
getConfig
in classDatabindContext
-
getAnnotationIntrospector
public final AnnotationIntrospector getAnnotationIntrospector()
Description copied from class:DatabindContext
Convenience method for accessing serialization view in use (if any); equivalent to:getConfig().getAnnotationIntrospector();
- Specified by:
getAnnotationIntrospector
in classDatabindContext
-
getTypeFactory
public final TypeFactory getTypeFactory()
- Specified by:
getTypeFactory
in classDatabindContext
-
constructSpecializedType
public JavaType constructSpecializedType(JavaType baseType, java.lang.Class<?> subclass) throws java.lang.IllegalArgumentException
Description copied from class:DatabindContext
Convenience method for constructing subtypes, retaining generic type parameter (if any).Note: since 2.11 handling has varied a bit across serialization, deserialization.
- Specified by:
constructSpecializedType
in classDatabindContext
- Throws:
java.lang.IllegalArgumentException
-
getActiveView
public final java.lang.Class<?> getActiveView()
Description copied from class:DatabindContext
Accessor for locating currently active view, if any; returns null if no view has been set.- Specified by:
getActiveView
in classDatabindContext
-
canOverrideAccessModifiers
public final boolean canOverrideAccessModifiers()
Description copied from class:DatabindContext
Convenience method for accessing serialization view in use (if any); equivalent to:getConfig().canOverrideAccessModifiers();
- Specified by:
canOverrideAccessModifiers
in classDatabindContext
-
isEnabled
public final boolean isEnabled(MapperFeature feature)
Description copied from class:DatabindContext
Convenience method for checking whether specified serialization feature is enabled or not. Shortcut for:getConfig().isEnabled(feature);
- Specified by:
isEnabled
in classDatabindContext
-
getDefaultPropertyFormat
public final JsonFormat.Value getDefaultPropertyFormat(java.lang.Class<?> baseType)
- Specified by:
getDefaultPropertyFormat
in classDatabindContext
-
getDefaultPropertyInclusion
public final JsonInclude.Value getDefaultPropertyInclusion(java.lang.Class<?> baseType)
- Since:
- 2.8
-
getLocale
public java.util.Locale getLocale()
Method for accessing default Locale to use: convenience method forgetConfig().getLocale();
- Specified by:
getLocale
in classDatabindContext
-
getTimeZone
public java.util.TimeZone getTimeZone()
Method for accessing default TimeZone to use: convenience method forgetConfig().getTimeZone();
- Specified by:
getTimeZone
in classDatabindContext
-
getAttribute
public java.lang.Object getAttribute(java.lang.Object key)
Description copied from class:DatabindContext
Method for accessing attributes available in this context. Per-call attributes have highest precedence; attributes set viaObjectReader
orObjectWriter
have lower precedence.- Specified by:
getAttribute
in classDatabindContext
- Parameters:
key
- Key of the attribute to get- Returns:
- Value of the attribute, if any; null otherwise
-
setAttribute
public SerializerProvider setAttribute(java.lang.Object key, java.lang.Object value)
Description copied from class:DatabindContext
Method for setting per-call value of given attribute. This will override any previously defined value for the attribute within this context.- Specified by:
setAttribute
in classDatabindContext
- Parameters:
key
- Key of the attribute to setvalue
- Value to set attribute to- Returns:
- This context object, to allow chaining
-
isEnabled
public final boolean isEnabled(SerializationFeature feature)
Convenience method for checking whether specified serialization feature is enabled or not. Shortcut for:getConfig().isEnabled(feature);
-
hasSerializationFeatures
public final boolean hasSerializationFeatures(int featureMask)
"Bulk" access method for checking that all features specified by mask are enabled.- Since:
- 2.3
-
getFilterProvider
public final FilterProvider getFilterProvider()
Convenience method for accessing provider to find serialization filters used, equivalent to calling:getConfig().getFilterProvider();
-
getGenerator
public JsonGenerator getGenerator()
NOTE: current implementation simply returns `null` as generator is not yet assigned to this provider.
- Since:
- 2.8
-
bufferForValueConversion
public TokenBuffer bufferForValueConversion(ObjectCodec oc)
Specialized factory method used when we are converting values and do not typically have or use "real" parsers or generators.- Since:
- 2.13
-
bufferForValueConversion
public final TokenBuffer bufferForValueConversion()
Specialized factory method used when we are converting values and do not typically have or use "real" parsers or generators.- Since:
- 2.13
-
findObjectId
public abstract WritableObjectId findObjectId(java.lang.Object forPojo, ObjectIdGenerator<?> generatorType)
Method called to find the Object Id for given POJO, if one has been generated. Will always return a non-null Object; contents vary depending on whether an Object Id already exists or not.
-
findValueSerializer
public JsonSerializer<java.lang.Object> findValueSerializer(java.lang.Class<?> valueType, BeanProperty property) throws JsonMappingException
Method called to get hold of a serializer for a value of given type; or if no such serializer can be found, a default handler (which may do a best-effort generic serialization or just simply throw an exception when invoked).Note: this method is only called for non-null values; not for keys or null values. For these, check out other accessor methods.
Note that serializers produced should NOT handle polymorphic serialization aspects; separate
TypeSerializer
is to be constructed by caller if and as necessary.- Throws:
JsonMappingException
- if there are fatal problems with accessing suitable serializer; including that of not finding any serializer
-
findValueSerializer
public JsonSerializer<java.lang.Object> findValueSerializer(JavaType valueType, BeanProperty property) throws JsonMappingException
Similar tofindValueSerializer(Class,BeanProperty)
, but takes full generics-aware type instead of raw class. This is necessary for accurate handling of external type information, to handle polymorphic types.Note: this call will also contextualize serializer before returning it.
- Parameters:
property
- When creating secondary serializers, property for which serializer is needed: annotations of the property (or bean that contains it) may be checked to create contextual serializers.- Throws:
JsonMappingException
-
findValueSerializer
public JsonSerializer<java.lang.Object> findValueSerializer(java.lang.Class<?> valueType) throws JsonMappingException
Method variant used when we do NOT want contextualization to happen; it will need to be handled at a later point, but caller wants to be able to do that as needed; sometimes to avoid infinite loops- Throws:
JsonMappingException
- Since:
- 2.5
-
findValueSerializer
public JsonSerializer<java.lang.Object> findValueSerializer(JavaType valueType) throws JsonMappingException
Method variant used when we do NOT want contextualization to happen; it will need to be handled at a later point, but caller wants to be able to do that as needed; sometimes to avoid infinite loops- Throws:
JsonMappingException
- Since:
- 2.5
-
findPrimaryPropertySerializer
public JsonSerializer<java.lang.Object> findPrimaryPropertySerializer(JavaType valueType, BeanProperty property) throws JsonMappingException
Similar tofindValueSerializer(JavaType, BeanProperty)
, but used when finding "primary" property value serializer (one directly handling value of the property). Difference has to do with contextual resolution, and method(s) called: this method should only be called when caller is certain that this is the primary property value serializer.- Parameters:
valueType
- Type of values to serializeproperty
- Property that is being handled; will never be null, and its type has to matchvalueType
parameter.- Throws:
JsonMappingException
- Since:
- 2.3
-
findPrimaryPropertySerializer
public JsonSerializer<java.lang.Object> findPrimaryPropertySerializer(java.lang.Class<?> valueType, BeanProperty property) throws JsonMappingException
- Throws:
JsonMappingException
- Since:
- 2.3
-
findContentValueSerializer
public JsonSerializer<java.lang.Object> findContentValueSerializer(JavaType valueType, BeanProperty property) throws JsonMappingException
Alternative tofindPrimaryPropertySerializer(JavaType, BeanProperty)
called not for primary value, but "content" of such primary serializer: element of an array orCollection
, value ofMap
entry and so on. This means thatproperty
passed (if any) does NOT represent value for which serializer is requested but its secondary type (or secondary type of that type, recursively).Serializer returned SHOULD NOT handle type information; caller will (have to) add suitable wrapping if necessary.
Note: this call will also contextualize serializer (call
createContextual()
before returning it, if applicable (implementsContextualSerializer
)- Parameters:
valueType
- Type of values to serializeproperty
- Property that indirectly refers to value being serialized (optional, may benull
for root level serializers)- Throws:
JsonMappingException
- Since:
- 2.11
-
findContentValueSerializer
public JsonSerializer<java.lang.Object> findContentValueSerializer(java.lang.Class<?> valueType, BeanProperty property) throws JsonMappingException
- Throws:
JsonMappingException
- Since:
- 2.11
-
findTypedValueSerializer
public JsonSerializer<java.lang.Object> findTypedValueSerializer(java.lang.Class<?> valueType, boolean cache, BeanProperty property) throws JsonMappingException
Method called to locate regular serializer, matching type serializer, and if both found, wrap them in a serializer that calls both in correct sequence. This method is currently only used for root-level serializer handling to allow for simpler caching. A call can always be replaced by equivalent calls to access serializer and type serializer separately.- Parameters:
valueType
- Type for purpose of locating a serializer; usually dynamic runtime type, but can also be static declared type, depending on configurationcache
- Whether resulting value serializer should be cached or not; this is just a hintproperty
- When creating secondary serializers, property for which serializer is needed: annotations of the property (or bean that contains it) may be checked to create contextual serializers.- Throws:
JsonMappingException
-
findTypedValueSerializer
public JsonSerializer<java.lang.Object> findTypedValueSerializer(JavaType valueType, boolean cache, BeanProperty property) throws JsonMappingException
Method called to locate regular serializer, matching type serializer, and if both found, wrap them in a serializer that calls both in correct sequence. This method is currently only used for root-level serializer handling to allow for simpler caching. A call can always be replaced by equivalent calls to access serializer and type serializer separately.- Parameters:
valueType
- Declared type of value being serialized (which may not be actual runtime type); used for finding both value serializer and type serializer to use for adding polymorphic type (if any)cache
- Whether resulting value serializer should be cached or not; this is just a hintproperty
- When creating secondary serializers, property for which serializer is needed: annotations of the property (or bean that contains it) may be checked to create contextual serializers.- Throws:
JsonMappingException
-
findTypeSerializer
public TypeSerializer findTypeSerializer(JavaType javaType) throws JsonMappingException
Method called to get theTypeSerializer
to use for including Type Id necessary for serializing for the given Java class. Useful for schema generators.- Throws:
JsonMappingException
- Since:
- 2.6
-
findKeySerializer
public JsonSerializer<java.lang.Object> findKeySerializer(JavaType keyType, BeanProperty property) throws JsonMappingException
Method called to get the serializer to use for serializing non-null Map keys. Separation from regularfindValueSerializer(java.lang.Class<?>, com.fasterxml.jackson.databind.BeanProperty)
method is because actual write method must be different (@link JsonGenerator#writeFieldName}; but also since behavior for some key types may differ.Note that the serializer itself can be called with instances of any Java object, but not nulls.
- Throws:
JsonMappingException
-
findKeySerializer
public JsonSerializer<java.lang.Object> findKeySerializer(java.lang.Class<?> rawKeyType, BeanProperty property) throws JsonMappingException
- Throws:
JsonMappingException
- Since:
- 2.7
-
getDefaultNullKeySerializer
public JsonSerializer<java.lang.Object> getDefaultNullKeySerializer()
- Since:
- 2.0
-
getDefaultNullValueSerializer
public JsonSerializer<java.lang.Object> getDefaultNullValueSerializer()
- Since:
- 2.0
-
findNullKeySerializer
public JsonSerializer<java.lang.Object> findNullKeySerializer(JavaType serializationType, BeanProperty property) throws JsonMappingException
Method called to find a serializer to use for null values for given declared type. Note that type is completely based on declared type, since nulls in Java have no type and thus runtime type cannot be determined.- Throws:
JsonMappingException
- Since:
- 2.0
-
findNullValueSerializer
public JsonSerializer<java.lang.Object> findNullValueSerializer(BeanProperty property) throws JsonMappingException
Method called to get the serializer to use for serializing null values for specified property.Default implementation simply calls
getDefaultNullValueSerializer()
; can be overridden to add custom null serialization for properties of certain type or name. This gives method full granularity to basically override null handling for any specific property or class of properties.- Throws:
JsonMappingException
- Since:
- 2.0
-
getUnknownTypeSerializer
public JsonSerializer<java.lang.Object> getUnknownTypeSerializer(java.lang.Class<?> unknownType)
Method called to get the serializer to use if provider cannot determine an actual type-specific serializer to use; typically when none ofSerializerFactory
instances are able to construct a serializer.Typically, returned serializer will throw an exception, although alternatively
ToStringSerializer
could be returned as well.- Parameters:
unknownType
- Type for which no serializer is found
-
isUnknownTypeSerializer
public boolean isUnknownTypeSerializer(JsonSerializer<?> ser)
Helper method called to see if given serializer is considered to be something returned bygetUnknownTypeSerializer(java.lang.Class<?>)
, that is, something for which no regular serializer was found or constructed.- Since:
- 2.5
-
serializerInstance
public abstract JsonSerializer<java.lang.Object> serializerInstance(Annotated annotated, java.lang.Object serDef) throws JsonMappingException
Method that can be called to construct and configure serializer instance, either given aClass
to instantiate (with default constructor), or an uninitialized serializer instance. Either way, serialize will be properly resolved (viaResolvableSerializer
) and/or contextualized (viaContextualSerializer
) as necessary.- Parameters:
annotated
- Annotated entity that contained definitionserDef
- Serializer definition: either an instance or class- Throws:
JsonMappingException
-
includeFilterInstance
public abstract java.lang.Object includeFilterInstance(BeanPropertyDefinition forProperty, java.lang.Class<?> filterClass) throws JsonMappingException
Method that can be called to construct and configureJsonInclude
filter instance, given aClass
to instantiate (with default constructor, by default).- Parameters:
forProperty
- (optional) If filter is created for a property, that property; `null` if filter created via defaulting, global or per-type.- Throws:
JsonMappingException
- Since:
- 2.9
-
includeFilterSuppressNulls
public abstract boolean includeFilterSuppressNulls(java.lang.Object filter) throws JsonMappingException
Follow-up method that may be called after callingincludeFilterInstance(com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition, java.lang.Class<?>)
, to check handling of `null` values by the filter.- Throws:
JsonMappingException
- Since:
- 2.9
-
handlePrimaryContextualization
public JsonSerializer<?> handlePrimaryContextualization(JsonSerializer<?> ser, BeanProperty property) throws JsonMappingException
Method called for primary property serializers (ones directly created to serialize values of a POJO property), to handle details of resolvingContextualSerializer
with given property context.- Parameters:
property
- Property for which the given primary serializer is used; never null.- Throws:
JsonMappingException
- Since:
- 2.3
-
handleSecondaryContextualization
public JsonSerializer<?> handleSecondaryContextualization(JsonSerializer<?> ser, BeanProperty property) throws JsonMappingException
Method called for secondary property serializers (ones NOT directly created to serialize values of a POJO property but instead created as a dependant serializer -- such as value serializers for structured types, or serializers for root values) to handle details of resolvingContextualDeserializer
with given property context. Given that these serializers are not directly related to given property (or, in case of root value property, to any property), annotations accessible may or may not be relevant.- Parameters:
property
- Property for which serializer is used, if any; null when deserializing root values- Throws:
JsonMappingException
- Since:
- 2.3
-
defaultSerializeValue
public final void defaultSerializeValue(java.lang.Object value, JsonGenerator gen) throws java.io.IOException
Convenience method that will serialize given value (which can be null) using standard serializer locating functionality. It can be called for all values including field and Map values, but usually field values are best handled callingdefaultSerializeField(java.lang.String, java.lang.Object, com.fasterxml.jackson.core.JsonGenerator)
instead.- Throws:
java.io.IOException
-
defaultSerializeField
public final void defaultSerializeField(java.lang.String fieldName, java.lang.Object value, JsonGenerator gen) throws java.io.IOException
Convenience method that will serialize given field with specified value. Value may be null. Serializer is done using the usual null) using standard serializer locating functionality.- Throws:
java.io.IOException
-
defaultSerializeDateValue
public final void defaultSerializeDateValue(long timestamp, JsonGenerator gen) throws java.io.IOException
Method that will handle serialization of Date(-like) values, usingSerializationConfig
settings to determine expected serialization behavior. Note: date here means "full" date, that is, date AND time, as per Java convention (and not date-only values like in SQL)- Throws:
java.io.IOException
-
defaultSerializeDateValue
public final void defaultSerializeDateValue(java.util.Date date, JsonGenerator gen) throws java.io.IOException
Method that will handle serialization of Date(-like) values, usingSerializationConfig
settings to determine expected serialization behavior. Note: date here means "full" date, that is, date AND time, as per Java convention (and not date-only values like in SQL)- Throws:
java.io.IOException
-
defaultSerializeDateKey
public void defaultSerializeDateKey(long timestamp, JsonGenerator gen) throws java.io.IOException
Method that will handle serialization of Dates used asMap
keys, based onSerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS
value (and if using textual representation, configured date format)- Throws:
java.io.IOException
-
defaultSerializeDateKey
public void defaultSerializeDateKey(java.util.Date date, JsonGenerator gen) throws java.io.IOException
Method that will handle serialization of Dates used asMap
keys, based onSerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS
value (and if using textual representation, configured date format)- Throws:
java.io.IOException
-
defaultSerializeNull
public final void defaultSerializeNull(JsonGenerator gen) throws java.io.IOException
- Throws:
java.io.IOException
-
reportMappingProblem
public void reportMappingProblem(java.lang.String message, java.lang.Object... args) throws JsonMappingException
Helper method called to indicate problem; default behavior is to construct and throw aJsonMappingException
, but in future may collect more than one and only throw after certain number, or at the end of serialization.- Throws:
JsonMappingException
- Since:
- 2.8
-
reportBadTypeDefinition
public <T> T reportBadTypeDefinition(BeanDescription bean, java.lang.String msg, java.lang.Object... msgArgs) throws JsonMappingException
Helper method called to indicate problem in POJO (serialization) definitions or settings regarding specific Java type, unrelated to actual JSON content to map. Default behavior is to construct and throw aJsonMappingException
.- Throws:
JsonMappingException
- Since:
- 2.9
-
reportBadPropertyDefinition
public <T> T reportBadPropertyDefinition(BeanDescription bean, BeanPropertyDefinition prop, java.lang.String message, java.lang.Object... msgArgs) throws JsonMappingException
Helper method called to indicate problem in POJO (serialization) definitions or settings regarding specific property (of a type), unrelated to actual JSON content to map. Default behavior is to construct and throw aJsonMappingException
.- Throws:
JsonMappingException
- Since:
- 2.9
-
reportBadDefinition
public <T> T reportBadDefinition(JavaType type, java.lang.String msg) throws JsonMappingException
Description copied from class:DatabindContext
Helper method called to indicate a generic problem that stems from type definition(s), not input data, or input/output state; typically this means throwing aInvalidDefinitionException
.- Specified by:
reportBadDefinition
in classDatabindContext
- Throws:
JsonMappingException
-
reportBadDefinition
public <T> T reportBadDefinition(JavaType type, java.lang.String msg, java.lang.Throwable cause) throws JsonMappingException
- Throws:
JsonMappingException
- Since:
- 2.9
-
reportBadDefinition
public <T> T reportBadDefinition(java.lang.Class<?> raw, java.lang.String msg, java.lang.Throwable cause) throws JsonMappingException
- Throws:
JsonMappingException
- Since:
- 2.9
-
reportMappingProblem
public void reportMappingProblem(java.lang.Throwable t, java.lang.String message, java.lang.Object... msgArgs) throws JsonMappingException
Helper method called to indicate problem; default behavior is to construct and throw aJsonMappingException
, but in future may collect more than one and only throw after certain number, or at the end of serialization.- Throws:
JsonMappingException
- Since:
- 2.8
-
invalidTypeIdException
public JsonMappingException invalidTypeIdException(JavaType baseType, java.lang.String typeId, java.lang.String extraDesc)
-
mappingException
@Deprecated public JsonMappingException mappingException(java.lang.String message, java.lang.Object... msgArgs)
Deprecated.Since 2.9Factory method for constructing aJsonMappingException
; usually only indirectly used by callingreportMappingProblem(String, Object...)
.- Since:
- 2.6
-
-