public abstract class BasicSerializerFactory extends SerializerFactory implements Serializable
Collection
).
Since all the serializers are eagerly instantiated, and there is no additional introspection or customizability of these types, this factory is essentially stateless.
Modifier and Type | Field and Description |
---|---|
protected static HashMap<String,JsonSerializer<?>> |
_concrete
Since these are all JDK classes, we shouldn't have to worry
about ClassLoader used to load them.
|
protected static HashMap<String,Class<? extends JsonSerializer<?>>> |
_concreteLazy
Actually it may not make much sense to eagerly instantiate all
kinds of serializers: so this Map actually contains class references,
not instances
|
protected SerializerFactoryConfig |
_factoryConfig
Configuration settings for this factory; immutable instance (just like this
factory), new version created via copy-constructor (fluent-style)
|
Modifier | Constructor and Description |
---|---|
protected |
BasicSerializerFactory(SerializerFactoryConfig config)
We will provide default constructor to allow sub-classing,
but make it protected so that no non-singleton instances of
the class will be instantiated.
|
Modifier and Type | Method and Description |
---|---|
protected JsonSerializer<Object> |
_findContentSerializer(SerializerProvider prov,
Annotated a)
Helper method called to try to find whether there is an annotation in the
class that indicates content ("value") serializer to use.
|
protected JsonSerializer<Object> |
_findKeySerializer(SerializerProvider prov,
Annotated a)
Helper method called to try to find whether there is an annotation in the
class that indicates key serializer to use.
|
protected Class<?> |
_verifyAsClass(Object src,
String methodName,
Class<?> noneClass) |
protected JsonSerializer<?> |
buildArraySerializer(SerializerProvider prov,
ArrayType type,
BeanDescription beanDesc,
boolean staticTyping,
TypeSerializer elementTypeSerializer,
JsonSerializer<Object> elementValueSerializer)
Helper method that handles configuration details when constructing serializers for
Object[] (and subtypes, except for String). |
ContainerSerializer<?> |
buildCollectionSerializer(JavaType elemType,
boolean staticTyping,
TypeSerializer vts,
JsonSerializer<Object> valueSerializer) |
protected JsonSerializer<?> |
buildCollectionSerializer(SerializerProvider prov,
CollectionType type,
BeanDescription beanDesc,
boolean staticTyping,
TypeSerializer elementTypeSerializer,
JsonSerializer<Object> elementValueSerializer)
Helper method that handles configuration details when constructing serializers for
List types that support efficient by-index access |
protected JsonSerializer<?> |
buildContainerSerializer(SerializerProvider prov,
JavaType type,
BeanDescription beanDesc,
boolean staticTyping) |
protected JsonSerializer<?> |
buildEnumSerializer(SerializationConfig config,
JavaType type,
BeanDescription beanDesc) |
JsonSerializer<?> |
buildEnumSetSerializer(JavaType enumType) |
ContainerSerializer<?> |
buildIndexedListSerializer(JavaType elemType,
boolean staticTyping,
TypeSerializer vts,
JsonSerializer<Object> valueSerializer) |
protected JsonSerializer<?> |
buildIterableSerializer(SerializationConfig config,
JavaType type,
BeanDescription beanDesc,
boolean staticTyping)
Deprecated.
|
protected JsonSerializer<?> |
buildIterableSerializer(SerializationConfig config,
JavaType type,
BeanDescription beanDesc,
boolean staticTyping,
JavaType valueType) |
protected JsonSerializer<?> |
buildIteratorSerializer(SerializationConfig config,
JavaType type,
BeanDescription beanDesc,
boolean staticTyping)
Deprecated.
|
protected JsonSerializer<?> |
buildIteratorSerializer(SerializationConfig config,
JavaType type,
BeanDescription beanDesc,
boolean staticTyping,
JavaType valueType) |
protected JsonSerializer<?> |
buildMapEntrySerializer(SerializationConfig config,
JavaType type,
BeanDescription beanDesc,
boolean staticTyping,
JavaType keyType,
JavaType valueType) |
protected JsonSerializer<?> |
buildMapSerializer(SerializerProvider prov,
MapType type,
BeanDescription beanDesc,
boolean staticTyping,
JsonSerializer<Object> keySerializer,
TypeSerializer elementTypeSerializer,
JsonSerializer<Object> elementValueSerializer)
Helper method that handles configuration details when constructing serializers for
Map types. |
JsonSerializer<Object> |
createKeySerializer(SerializationConfig config,
JavaType keyType,
JsonSerializer<Object> defaultImpl)
Method called to create serializer to use for serializing JSON property names (which must
be output as
JsonToken.FIELD_NAME ) for Map that has specified declared
key type, and is for specified property (or, if property is null, as root value) |
abstract JsonSerializer<Object> |
createSerializer(SerializerProvider prov,
JavaType type)
Method called to create (or, for immutable serializers, reuse) a serializer for given type.
|
TypeSerializer |
createTypeSerializer(SerializationConfig config,
JavaType baseType)
Method called to construct a type serializer for values with given declared
base type.
|
protected abstract Iterable<Serializers> |
customSerializers() |
protected Converter<Object,Object> |
findConverter(SerializerProvider prov,
Annotated a) |
protected JsonSerializer<?> |
findConvertingSerializer(SerializerProvider prov,
Annotated a,
JsonSerializer<?> ser)
Helper method that will check whether given annotated entity (usually class,
but may also be a property accessor) indicates that a
Converter is to
be used; and if so, to construct and return suitable serializer for it. |
protected Object |
findFilterId(SerializationConfig config,
BeanDescription beanDesc)
Method called to find filter that is configured to be used with bean
serializer being built, if any.
|
protected JsonSerializer<?> |
findOptionalStdSerializer(SerializerProvider prov,
JavaType type,
BeanDescription beanDesc,
boolean staticTyping)
Overridable method called after checking all other types.
|
protected JsonSerializer<?> |
findSerializerByAddonType(SerializationConfig config,
JavaType javaType,
BeanDescription beanDesc,
boolean staticTyping)
Reflection-based serialized find method, which checks if
given class implements one of recognized "add-on" interfaces.
|
protected JsonSerializer<?> |
findSerializerByAnnotations(SerializerProvider prov,
JavaType type,
BeanDescription beanDesc)
Method called to see if one of primary per-class annotations
(or related, like implementing of
JsonSerializable )
determines the serializer to use. |
protected JsonSerializer<?> |
findSerializerByLookup(JavaType type,
SerializationConfig config,
BeanDescription beanDesc,
boolean staticTyping)
Method that will use fast lookup (and identity comparison) methods to
see if we know serializer to use for given type.
|
protected JsonSerializer<?> |
findSerializerByPrimaryType(SerializerProvider prov,
JavaType type,
BeanDescription beanDesc,
boolean staticTyping)
Method for checking if we can determine serializer to use based on set of
known primary types, checking for set of known base types (exact matches
having been compared against with
findSerializerByLookup ). |
protected JsonSerializer<Object> |
findSerializerFromAnnotation(SerializerProvider prov,
Annotated a)
Helper method called to check if a class or method
has an annotation
(@link com.fasterxml.jackson.databind.annotation.JsonSerialize#using)
that tells the class to use for serialization.
|
protected Object |
findSuppressableContentValue(SerializationConfig config,
JavaType contentType,
BeanDescription beanDesc)
NOTE: although return type is left opaque, it really needs to be
JsonInclude.Include for things to work as expected. |
SerializerFactoryConfig |
getFactoryConfig()
Method for getting current
SerializerFactoryConfig . |
protected boolean |
isIndexedList(Class<?> cls) |
protected static <T extends JavaType> |
modifySecondaryTypesByAnnotation(SerializationConfig config,
Annotated a,
T type) |
protected <T extends JavaType> |
modifyTypeByAnnotation(SerializationConfig config,
Annotated a,
T type)
Helper method used to encapsulate details of annotation-based type coercion
|
protected boolean |
usesStaticTyping(SerializationConfig config,
BeanDescription beanDesc,
TypeSerializer typeSer)
Helper method to check whether global settings and/or class
annotations for the bean class indicate that static typing
(declared types) should be used for properties.
|
SerializerFactory |
withAdditionalKeySerializers(Serializers additional)
Convenience method for creating a new factory instance with an additional
key serializer provider.
|
SerializerFactory |
withAdditionalSerializers(Serializers additional)
Convenience method for creating a new factory instance with an additional
serializer provider.
|
abstract SerializerFactory |
withConfig(SerializerFactoryConfig config)
Method used for creating a new instance of this factory, but with different
configuration.
|
SerializerFactory |
withSerializerModifier(BeanSerializerModifier modifier)
Convenience method for creating a new factory instance with additional bean
serializer modifier.
|
protected static final HashMap<String,JsonSerializer<?>> _concrete
protected static final HashMap<String,Class<? extends JsonSerializer<?>>> _concreteLazy
protected final SerializerFactoryConfig _factoryConfig
protected BasicSerializerFactory(SerializerFactoryConfig config)
public SerializerFactoryConfig getFactoryConfig()
SerializerFactoryConfig
.
Note that since instances are immutable, you can NOT change settings by accessing an instance and calling methods: this will simply create new instance of config object.
public abstract SerializerFactory withConfig(SerializerFactoryConfig config)
Note that custom sub-classes generally must override implementation
of this method, as it usually requires instantiating a new instance of
factory type. Check out javadocs for
BeanSerializerFactory
for more details.
public final SerializerFactory withAdditionalSerializers(Serializers additional)
withAdditionalSerializers
in class SerializerFactory
public final SerializerFactory withAdditionalKeySerializers(Serializers additional)
withAdditionalKeySerializers
in class SerializerFactory
public final SerializerFactory withSerializerModifier(BeanSerializerModifier modifier)
withSerializerModifier
in class SerializerFactory
public abstract JsonSerializer<Object> createSerializer(SerializerProvider prov, JavaType type) throws JsonMappingException
SerializerFactory
createSerializer
in class SerializerFactory
prov
- Provider that needs to be used to resolve annotation-provided
serializers (but NOT for others)JsonMappingException
public JsonSerializer<Object> createKeySerializer(SerializationConfig config, JavaType keyType, JsonSerializer<Object> defaultImpl)
SerializerFactory
JsonToken.FIELD_NAME
) for Map that has specified declared
key type, and is for specified property (or, if property is null, as root value)createKeySerializer
in class SerializerFactory
keyType
- Declared type for Map keysdefaultImpl
- Default key serializer implementation to use, if no custom ones
are found (may be null)public TypeSerializer createTypeSerializer(SerializationConfig config, JavaType baseType)
createTypeSerializer
in class SerializerFactory
baseType
- Declared type to use as the base type for type information serializerprotected abstract Iterable<Serializers> customSerializers()
protected final JsonSerializer<?> findSerializerByLookup(JavaType type, SerializationConfig config, BeanDescription beanDesc, boolean staticTyping)
protected final JsonSerializer<?> findSerializerByAnnotations(SerializerProvider prov, JavaType type, BeanDescription beanDesc) throws JsonMappingException
JsonSerializable
)
determines the serializer to use.
Currently handles things like:
JsonSerializable
, use that
JsonValue
annotation (or equivalent), build serializer
based on that property
JsonMappingException
protected final JsonSerializer<?> findSerializerByPrimaryType(SerializerProvider prov, JavaType type, BeanDescription beanDesc, boolean staticTyping) throws JsonMappingException
findSerializerByLookup
).
This does not include "secondary" interfaces, but
mostly concrete or abstract base classes.JsonMappingException
protected JsonSerializer<?> findOptionalStdSerializer(SerializerProvider prov, JavaType type, BeanDescription beanDesc, boolean staticTyping) throws JsonMappingException
JsonMappingException
protected final JsonSerializer<?> findSerializerByAddonType(SerializationConfig config, JavaType javaType, BeanDescription beanDesc, boolean staticTyping) throws JsonMappingException
Iterable
, but their main
function is usually something else. The reason forJsonMappingException
protected JsonSerializer<Object> findSerializerFromAnnotation(SerializerProvider prov, Annotated a) throws JsonMappingException
JsonMappingException
protected JsonSerializer<?> findConvertingSerializer(SerializerProvider prov, Annotated a, JsonSerializer<?> ser) throws JsonMappingException
Converter
is to
be used; and if so, to construct and return suitable serializer for it.
If not, will simply return given serializer as is.JsonMappingException
protected Converter<Object,Object> findConverter(SerializerProvider prov, Annotated a) throws JsonMappingException
JsonMappingException
protected JsonSerializer<?> buildContainerSerializer(SerializerProvider prov, JavaType type, BeanDescription beanDesc, boolean staticTyping) throws JsonMappingException
JsonMappingException
protected JsonSerializer<?> buildCollectionSerializer(SerializerProvider prov, CollectionType type, BeanDescription beanDesc, boolean staticTyping, TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer) throws JsonMappingException
List
types that support efficient by-index accessJsonMappingException
protected boolean isIndexedList(Class<?> cls)
public ContainerSerializer<?> buildIndexedListSerializer(JavaType elemType, boolean staticTyping, TypeSerializer vts, JsonSerializer<Object> valueSerializer)
public ContainerSerializer<?> buildCollectionSerializer(JavaType elemType, boolean staticTyping, TypeSerializer vts, JsonSerializer<Object> valueSerializer)
public JsonSerializer<?> buildEnumSetSerializer(JavaType enumType)
protected JsonSerializer<?> buildMapSerializer(SerializerProvider prov, MapType type, BeanDescription beanDesc, boolean staticTyping, JsonSerializer<Object> keySerializer, TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer) throws JsonMappingException
Map
types.JsonMappingException
protected Object findSuppressableContentValue(SerializationConfig config, JavaType contentType, BeanDescription beanDesc) throws JsonMappingException
NOTE: although return type is left opaque, it really needs to be
JsonInclude.Include
for things to work as expected.
JsonMappingException
protected JsonSerializer<?> buildArraySerializer(SerializerProvider prov, ArrayType type, BeanDescription beanDesc, boolean staticTyping, TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer) throws JsonMappingException
Object[]
(and subtypes, except for String).JsonMappingException
protected JsonSerializer<?> buildIteratorSerializer(SerializationConfig config, JavaType type, BeanDescription beanDesc, boolean staticTyping, JavaType valueType) throws JsonMappingException
JsonMappingException
@Deprecated protected JsonSerializer<?> buildIteratorSerializer(SerializationConfig config, JavaType type, BeanDescription beanDesc, boolean staticTyping) throws JsonMappingException
JsonMappingException
protected JsonSerializer<?> buildIterableSerializer(SerializationConfig config, JavaType type, BeanDescription beanDesc, boolean staticTyping, JavaType valueType) throws JsonMappingException
JsonMappingException
@Deprecated protected JsonSerializer<?> buildIterableSerializer(SerializationConfig config, JavaType type, BeanDescription beanDesc, boolean staticTyping) throws JsonMappingException
JsonMappingException
protected JsonSerializer<?> buildMapEntrySerializer(SerializationConfig config, JavaType type, BeanDescription beanDesc, boolean staticTyping, JavaType keyType, JavaType valueType) throws JsonMappingException
JsonMappingException
protected JsonSerializer<?> buildEnumSerializer(SerializationConfig config, JavaType type, BeanDescription beanDesc) throws JsonMappingException
JsonMappingException
protected <T extends JavaType> T modifyTypeByAnnotation(SerializationConfig config, Annotated a, T type)
protected static <T extends JavaType> T modifySecondaryTypesByAnnotation(SerializationConfig config, Annotated a, T type)
protected JsonSerializer<Object> _findKeySerializer(SerializerProvider prov, Annotated a) throws JsonMappingException
JsonMappingException
protected JsonSerializer<Object> _findContentSerializer(SerializerProvider prov, Annotated a) throws JsonMappingException
JsonMappingException
protected Object findFilterId(SerializationConfig config, BeanDescription beanDesc)
protected boolean usesStaticTyping(SerializationConfig config, BeanDescription beanDesc, TypeSerializer typeSer)
Copyright © 2014–2015 FasterXML. All rights reserved.