public abstract class BasicDeserializerFactory extends DeserializerFactory implements Serializable
Collection
).
Since all simple deserializers are eagerly instantiated, and there is no additional introspection or customizability of these types, this factory is stateless.
Modifier and Type | Class and Description |
---|---|
protected static class |
BasicDeserializerFactory.ContainerDefaultMappings
Helper class to contain default mappings for abstract JDK
Collection
and Map types. |
Modifier and Type | Field and Description |
---|---|
protected DeserializerFactoryConfig |
_factoryConfig
Configuration settings for this factory; immutable instance (just like this
factory), new version created via copy-constructor (fluent-style)
|
protected static PropertyName |
UNWRAPPED_CREATOR_PARAM_NAME
We need a placeholder for creator properties that don't have name
but are marked with `@JsonWrapped` annotation.
|
NO_DESERIALIZERS
Modifier | Constructor and Description |
---|---|
protected |
BasicDeserializerFactory(DeserializerFactoryConfig config) |
Modifier and Type | Method and Description |
---|---|
protected ValueInstantiator |
_constructDefaultValueInstantiator(DeserializationContext ctxt,
BeanDescription beanDesc)
Method that will construct standard default
ValueInstantiator
using annotations (like @JsonCreator) and visibility rules |
protected JsonDeserializer<?> |
_findCustomArrayDeserializer(ArrayType type,
DeserializationConfig config,
BeanDescription beanDesc,
TypeDeserializer elementTypeDeserializer,
JsonDeserializer<?> elementDeserializer) |
protected JsonDeserializer<Object> |
_findCustomBeanDeserializer(JavaType type,
DeserializationConfig config,
BeanDescription beanDesc) |
protected JsonDeserializer<?> |
_findCustomCollectionDeserializer(CollectionType type,
DeserializationConfig config,
BeanDescription beanDesc,
TypeDeserializer elementTypeDeserializer,
JsonDeserializer<?> elementDeserializer) |
protected JsonDeserializer<?> |
_findCustomCollectionLikeDeserializer(CollectionLikeType type,
DeserializationConfig config,
BeanDescription beanDesc,
TypeDeserializer elementTypeDeserializer,
JsonDeserializer<?> elementDeserializer) |
protected JsonDeserializer<?> |
_findCustomEnumDeserializer(Class<?> type,
DeserializationConfig config,
BeanDescription beanDesc) |
protected JsonDeserializer<?> |
_findCustomMapDeserializer(MapType type,
DeserializationConfig config,
BeanDescription beanDesc,
KeyDeserializer keyDeserializer,
TypeDeserializer elementTypeDeserializer,
JsonDeserializer<?> elementDeserializer) |
protected JsonDeserializer<?> |
_findCustomMapLikeDeserializer(MapLikeType type,
DeserializationConfig config,
BeanDescription beanDesc,
KeyDeserializer keyDeserializer,
TypeDeserializer elementTypeDeserializer,
JsonDeserializer<?> elementDeserializer) |
protected JsonDeserializer<?> |
_findCustomReferenceDeserializer(ReferenceType type,
DeserializationConfig config,
BeanDescription beanDesc,
TypeDeserializer contentTypeDeserializer,
JsonDeserializer<?> contentDeserializer) |
protected JsonDeserializer<?> |
_findCustomTreeNodeDeserializer(Class<? extends JsonNode> type,
DeserializationConfig config,
BeanDescription beanDesc) |
protected JavaType |
_findRemappedType(DeserializationConfig config,
Class<?> rawType) |
protected boolean |
_hasCreatorAnnotation(MapperConfig<?> config,
Annotated ann) |
protected CollectionType |
_mapAbstractCollectionType(JavaType type,
DeserializationConfig config) |
protected MapType |
_mapAbstractMapType(JavaType type,
DeserializationConfig config) |
ValueInstantiator |
_valueInstantiatorInstance(DeserializationConfig config,
Annotated annotated,
Object instDef) |
protected SettableBeanProperty |
constructCreatorProperty(DeserializationContext ctxt,
BeanDescription beanDesc,
PropertyName name,
int index,
AnnotatedParameter param,
com.fasterxml.jackson.annotation.JacksonInject.Value injectable)
Method that will construct a property object that represents
a logical property passed via Creator (constructor or static
factory method)
|
protected EnumResolver |
constructEnumNamingStrategyResolver(DeserializationConfig config,
AnnotatedClass annotatedClass)
Factory method used to resolve an instance of
CompactStringObjectMap
with EnumNamingStrategy applied for the target class. |
protected EnumResolver |
constructEnumNamingStrategyResolver(DeserializationConfig config,
Class<?> enumClass,
AnnotatedClass annotatedClass)
Deprecated.
Since 2.16: use
constructEnumNamingStrategyResolver(DeserializationConfig, AnnotatedClass) instead. |
protected EnumResolver |
constructEnumResolver(Class<?> enumClass,
DeserializationConfig config,
BeanDescription beanDesc) |
JsonDeserializer<?> |
createArrayDeserializer(DeserializationContext ctxt,
ArrayType type,
BeanDescription beanDesc)
Method called to create (or, for completely immutable deserializers,
reuse) a deserializer that can convert JSON content into values of
specified Java type.
|
JsonDeserializer<?> |
createCollectionDeserializer(DeserializationContext ctxt,
CollectionType type,
BeanDescription beanDesc) |
JsonDeserializer<?> |
createCollectionLikeDeserializer(DeserializationContext ctxt,
CollectionLikeType type,
BeanDescription beanDesc) |
JsonDeserializer<?> |
createEnumDeserializer(DeserializationContext ctxt,
JavaType type,
BeanDescription beanDesc)
Factory method for constructing deserializers of
Enum types. |
KeyDeserializer |
createKeyDeserializer(DeserializationContext ctxt,
JavaType type)
Method called to find if factory knows how to create a key deserializer
for specified type; currently this means checking if a module has registered
possible deserializers.
|
JsonDeserializer<?> |
createMapDeserializer(DeserializationContext ctxt,
MapType type,
BeanDescription beanDesc) |
JsonDeserializer<?> |
createMapLikeDeserializer(DeserializationContext ctxt,
MapLikeType type,
BeanDescription beanDesc) |
JsonDeserializer<?> |
createReferenceDeserializer(DeserializationContext ctxt,
ReferenceType type,
BeanDescription beanDesc) |
JsonDeserializer<?> |
createTreeDeserializer(DeserializationConfig config,
JavaType nodeType,
BeanDescription beanDesc)
Method called to create and return a deserializer that can construct
JsonNode(s) from JSON content.
|
protected JsonDeserializer<Object> |
findContentDeserializerFromAnnotation(DeserializationContext ctxt,
Annotated ann) |
JsonDeserializer<?> |
findDefaultDeserializer(DeserializationContext ctxt,
JavaType type,
BeanDescription beanDesc)
Helper method called to find one of default deserializers for "well-known"
platform types: JDK-provided types, and small number of public Jackson
API types.
|
protected JsonDeserializer<Object> |
findDeserializerFromAnnotation(DeserializationContext ctxt,
Annotated ann)
Helper method called to check if a class or method
has annotation that tells which class to use for deserialization; and if
so, to instantiate, that deserializer to use.
|
protected KeyDeserializer |
findKeyDeserializerFromAnnotation(DeserializationContext ctxt,
Annotated ann)
Helper method called to check if a class or method
has annotation that tells which class to use for deserialization of
Map keys. |
protected JsonDeserializer<?> |
findOptionalStdDeserializer(DeserializationContext ctxt,
JavaType type,
BeanDescription beanDesc)
Overridable method called after checking all other types.
|
TypeDeserializer |
findPropertyContentTypeDeserializer(DeserializationConfig config,
JavaType containerType,
AnnotatedMember propertyEntity)
Method called to find and create a type information deserializer for values of
given container (list, array, map) property, if one is needed.
|
TypeDeserializer |
findPropertyTypeDeserializer(DeserializationConfig config,
JavaType baseType,
AnnotatedMember annotated)
Method called to create a type information deserializer for values of
given non-container property, if one is needed.
|
TypeDeserializer |
findTypeDeserializer(DeserializationConfig config,
JavaType baseType)
Method called to find and create a type information deserializer for given base type,
if one is needed.
|
ValueInstantiator |
findValueInstantiator(DeserializationContext ctxt,
BeanDescription beanDesc)
Value instantiator is created both based on creator annotations,
and on optional externally provided instantiators (registered through
module interface).
|
DeserializerFactoryConfig |
getFactoryConfig()
Method for getting current
DeserializerFactoryConfig . |
boolean |
hasExplicitDeserializerFor(DeserializationConfig config,
Class<?> valueType)
Method that can be used to check if databind module has explicitly declared deserializer
for given (likely JDK) type, explicit meaning that there is specific deserializer for
given type as opposed to auto-generated "Bean" deserializer.
|
JavaType |
mapAbstractType(DeserializationConfig config,
JavaType type)
Method that can be called to try to resolve an abstract type
(interface, abstract class) into a concrete type, or at least
something "more concrete" (abstract class instead of interface).
|
protected JavaType |
resolveMemberAndTypeAnnotations(DeserializationContext ctxt,
AnnotatedMember member,
JavaType type)
Helper method used to resolve additional type-related annotation information
like type overrides, or handler (serializer, deserializer) overrides,
so that from declared field, property or constructor parameter type
is used as the base and modified based on annotations, if any.
|
DeserializerFactory |
withAbstractTypeResolver(AbstractTypeResolver resolver)
Convenience method for creating a new factory instance with additional
AbstractTypeResolver . |
DeserializerFactory |
withAdditionalDeserializers(Deserializers additional)
Convenience method for creating a new factory instance with additional deserializer
provider.
|
DeserializerFactory |
withAdditionalKeyDeserializers(KeyDeserializers additional)
Convenience method for creating a new factory instance with additional
KeyDeserializers . |
protected abstract DeserializerFactory |
withConfig(DeserializerFactoryConfig config) |
DeserializerFactory |
withDeserializerModifier(BeanDeserializerModifier modifier)
Convenience method for creating a new factory instance with additional
BeanDeserializerModifier . |
DeserializerFactory |
withValueInstantiators(ValueInstantiators instantiators)
Convenience method for creating a new factory instance with additional
ValueInstantiators . |
createBeanDeserializer, createBuilderBasedDeserializer
protected static final PropertyName UNWRAPPED_CREATOR_PARAM_NAME
protected final DeserializerFactoryConfig _factoryConfig
protected BasicDeserializerFactory(DeserializerFactoryConfig config)
public DeserializerFactoryConfig getFactoryConfig()
DeserializerFactoryConfig
.
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.
protected abstract DeserializerFactory withConfig(DeserializerFactoryConfig config)
public final DeserializerFactory withAdditionalDeserializers(Deserializers additional)
withAdditionalDeserializers
in class DeserializerFactory
public final DeserializerFactory withAdditionalKeyDeserializers(KeyDeserializers additional)
KeyDeserializers
.withAdditionalKeyDeserializers
in class DeserializerFactory
public final DeserializerFactory withDeserializerModifier(BeanDeserializerModifier modifier)
BeanDeserializerModifier
.withDeserializerModifier
in class DeserializerFactory
public final DeserializerFactory withAbstractTypeResolver(AbstractTypeResolver resolver)
AbstractTypeResolver
.withAbstractTypeResolver
in class DeserializerFactory
public final DeserializerFactory withValueInstantiators(ValueInstantiators instantiators)
ValueInstantiators
.withValueInstantiators
in class DeserializerFactory
public JavaType mapAbstractType(DeserializationConfig config, JavaType type) throws JsonMappingException
DeserializerFactory
mapAbstractType
in class DeserializerFactory
JsonMappingException
public ValueInstantiator findValueInstantiator(DeserializationContext ctxt, BeanDescription beanDesc) throws JsonMappingException
findValueInstantiator
in class DeserializerFactory
JsonMappingException
protected ValueInstantiator _constructDefaultValueInstantiator(DeserializationContext ctxt, BeanDescription beanDesc) throws JsonMappingException
ValueInstantiator
using annotations (like @JsonCreator) and visibility rulesJsonMappingException
public ValueInstantiator _valueInstantiatorInstance(DeserializationConfig config, Annotated annotated, Object instDef) throws JsonMappingException
JsonMappingException
protected SettableBeanProperty constructCreatorProperty(DeserializationContext ctxt, BeanDescription beanDesc, PropertyName name, int index, AnnotatedParameter param, com.fasterxml.jackson.annotation.JacksonInject.Value injectable) throws JsonMappingException
JsonMappingException
public JsonDeserializer<?> createArrayDeserializer(DeserializationContext ctxt, ArrayType type, BeanDescription beanDesc) throws JsonMappingException
DeserializerFactory
createArrayDeserializer
in class DeserializerFactory
type
- Type to be deserializedJsonMappingException
public JsonDeserializer<?> createCollectionDeserializer(DeserializationContext ctxt, CollectionType type, BeanDescription beanDesc) throws JsonMappingException
createCollectionDeserializer
in class DeserializerFactory
JsonMappingException
protected CollectionType _mapAbstractCollectionType(JavaType type, DeserializationConfig config)
public JsonDeserializer<?> createCollectionLikeDeserializer(DeserializationContext ctxt, CollectionLikeType type, BeanDescription beanDesc) throws JsonMappingException
createCollectionLikeDeserializer
in class DeserializerFactory
JsonMappingException
public JsonDeserializer<?> createMapDeserializer(DeserializationContext ctxt, MapType type, BeanDescription beanDesc) throws JsonMappingException
createMapDeserializer
in class DeserializerFactory
JsonMappingException
protected MapType _mapAbstractMapType(JavaType type, DeserializationConfig config)
public JsonDeserializer<?> createMapLikeDeserializer(DeserializationContext ctxt, MapLikeType type, BeanDescription beanDesc) throws JsonMappingException
createMapLikeDeserializer
in class DeserializerFactory
JsonMappingException
public JsonDeserializer<?> createEnumDeserializer(DeserializationContext ctxt, JavaType type, BeanDescription beanDesc) throws JsonMappingException
Enum
types.createEnumDeserializer
in class DeserializerFactory
JsonMappingException
public JsonDeserializer<?> createTreeDeserializer(DeserializationConfig config, JavaType nodeType, BeanDescription beanDesc) throws JsonMappingException
DeserializerFactory
createTreeDeserializer
in class DeserializerFactory
JsonMappingException
public JsonDeserializer<?> createReferenceDeserializer(DeserializationContext ctxt, ReferenceType type, BeanDescription beanDesc) throws JsonMappingException
createReferenceDeserializer
in class DeserializerFactory
JsonMappingException
public TypeDeserializer findTypeDeserializer(DeserializationConfig config, JavaType baseType) throws JsonMappingException
DeserializerFactory
Note that this method is usually only directly called for values of container (Collection, array, Map) types and root values, but not for bean property values.
findTypeDeserializer
in class DeserializerFactory
baseType
- Declared base type of the value to deserializer (actual
deserializer type will be this type or its subtype)JsonMappingException
protected JsonDeserializer<?> findOptionalStdDeserializer(DeserializationContext ctxt, JavaType type, BeanDescription beanDesc) throws JsonMappingException
JsonMappingException
public KeyDeserializer createKeyDeserializer(DeserializationContext ctxt, JavaType type) throws JsonMappingException
DeserializerFactory
createKeyDeserializer
in class DeserializerFactory
JsonMappingException
public boolean hasExplicitDeserializerFor(DeserializationConfig config, Class<?> valueType)
DeserializerFactory
Module
s
are also called to see if they might provide explicit deserializer.
Main use for this method is with Safe Default Typing (and generally Safe Polymorphic Deserialization), during which it is good to be able to check that given raw type is explicitly supported and as such "known type" (as opposed to potentially dangerous "gadget type" which could be exploited).
This matches Deserializers.Base.hasDeserializerFor(Class)
method, which is
the mechanism used to determine if a Module
might provide an explicit
deserializer instead of core databind.
hasExplicitDeserializerFor
in class DeserializerFactory
public TypeDeserializer findPropertyTypeDeserializer(DeserializationConfig config, JavaType baseType, AnnotatedMember annotated) throws JsonMappingException
Note that this method is only called for non-container bean properties, and not for values in container types or root values (or container properties)
baseType
- Declared base type of the value to deserializer (actual
deserializer type will be this type or its subtype)JsonMappingException
public TypeDeserializer findPropertyContentTypeDeserializer(DeserializationConfig config, JavaType containerType, AnnotatedMember propertyEntity) throws JsonMappingException
Note that this method is only called for container bean properties, and not for values in container types or root values (or non-container properties)
containerType
- Type of property; must be a container typepropertyEntity
- Field or method that contains container propertyJsonMappingException
public JsonDeserializer<?> findDefaultDeserializer(DeserializationContext ctxt, JavaType type, BeanDescription beanDesc) throws JsonMappingException
JsonMappingException
protected JavaType _findRemappedType(DeserializationConfig config, Class<?> rawType) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<?> _findCustomTreeNodeDeserializer(Class<? extends JsonNode> type, DeserializationConfig config, BeanDescription beanDesc) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<?> _findCustomReferenceDeserializer(ReferenceType type, DeserializationConfig config, BeanDescription beanDesc, TypeDeserializer contentTypeDeserializer, JsonDeserializer<?> contentDeserializer) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<Object> _findCustomBeanDeserializer(JavaType type, DeserializationConfig config, BeanDescription beanDesc) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<?> _findCustomArrayDeserializer(ArrayType type, DeserializationConfig config, BeanDescription beanDesc, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<?> _findCustomCollectionDeserializer(CollectionType type, DeserializationConfig config, BeanDescription beanDesc, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<?> _findCustomCollectionLikeDeserializer(CollectionLikeType type, DeserializationConfig config, BeanDescription beanDesc, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<?> _findCustomEnumDeserializer(Class<?> type, DeserializationConfig config, BeanDescription beanDesc) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<?> _findCustomMapDeserializer(MapType type, DeserializationConfig config, BeanDescription beanDesc, KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<?> _findCustomMapLikeDeserializer(MapLikeType type, DeserializationConfig config, BeanDescription beanDesc, KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<Object> findDeserializerFromAnnotation(DeserializationContext ctxt, Annotated ann) throws JsonMappingException
JsonMappingException
protected KeyDeserializer findKeyDeserializerFromAnnotation(DeserializationContext ctxt, Annotated ann) throws JsonMappingException
Map
keys.
Returns null if no such annotation found.JsonMappingException
protected JsonDeserializer<Object> findContentDeserializerFromAnnotation(DeserializationContext ctxt, Annotated ann) throws JsonMappingException
JsonMappingException
protected JavaType resolveMemberAndTypeAnnotations(DeserializationContext ctxt, AnnotatedMember member, JavaType type) throws JsonMappingException
JsonMappingException
modifyTypeByAnnotation
and resolveType
protected EnumResolver constructEnumResolver(Class<?> enumClass, DeserializationConfig config, BeanDescription beanDesc)
protected EnumResolver constructEnumNamingStrategyResolver(DeserializationConfig config, AnnotatedClass annotatedClass)
CompactStringObjectMap
with EnumNamingStrategy
applied for the target class.@Deprecated protected EnumResolver constructEnumNamingStrategyResolver(DeserializationConfig config, Class<?> enumClass, AnnotatedClass annotatedClass)
constructEnumNamingStrategyResolver(DeserializationConfig, AnnotatedClass)
instead.CompactStringObjectMap
with EnumNamingStrategy
applied for the target class.protected boolean _hasCreatorAnnotation(MapperConfig<?> config, Annotated ann)
Copyright © 2008–2024 FasterXML. All rights reserved.