com.fasterxml.jackson.databind.deser

## Class BasicDeserializerFactory

- java.lang.Object
- - com.fasterxml.jackson.databind.deser.DeserializerFactory
  - - com.fasterxml.jackson.databind.deser.BasicDeserializerFactory

All Implemented Interfaces:
  Serializable

Direct Known Subclasses:
  BeanDeserializerFactory

    public abstract class BasicDeserializerFactory
    extends DeserializerFactory
    implements Serializable

Abstract factory base class that can provide deserializers for standard JDK classes, including collection classes and simple heuristics for "upcasting" common collection interface types (such as `Collection`).

Since all simple deserializers are eagerly instantiated, and there is no additional introspection or customizability of these types, this factory is stateless.

See Also:
  Serialized Form

### Nested Class Summary

Nested Classes
`protected static class` `BasicDeserializerFactory.ContainerDefaultMappings` Helper class to contain default mappings for abstract JDK `Collection` and `Map` types.

### Field Summary

Fields
`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.

### Fields inherited from class com.fasterxml.jackson.databind.deser.DeserializerFactory

`NO_DESERIALIZERS`

### Constructor Summary

Constructors
`protected` `BasicDeserializerFactory(DeserializerFactoryConfig config)`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
`protected void` `_addDeserializerConstructors(DeserializationContext ctxt, BeanDescription beanDesc, VisibilityChecker<?> vchecker, AnnotationIntrospector intr, CreatorCollector creators, Map<AnnotatedWithParams,BeanPropertyDefinition[]> creatorParams)`
`protected void` `_addDeserializerFactoryMethods(DeserializationContext ctxt, BeanDescription beanDesc, VisibilityChecker<?> vchecker, AnnotationIntrospector intr, CreatorCollector creators, Map<AnnotatedWithParams,BeanPropertyDefinition[]> creatorParams)`
`protected void` `_addExplicitAnyCreator(DeserializationContext ctxt, BeanDescription beanDesc, CreatorCollector creators, CreatorCandidate candidate)` Helper method called when there is the explicit "is-creator", but no mode declaration.
`protected void` `_addExplicitDelegatingCreator(DeserializationContext ctxt, BeanDescription beanDesc, CreatorCollector creators, CreatorCandidate candidate)` Helper method called when there is the explicit "is-creator" with mode of "delegating"
`protected void` `_addExplicitPropertyCreator(DeserializationContext ctxt, BeanDescription beanDesc, CreatorCollector creators, CreatorCandidate candidate)` Helper method called when there is the explicit "is-creator" with mode of "properties-based"
`protected ValueInstantiator` `_constructDefaultValueInstantiator(DeserializationContext ctxt, BeanDescription beanDesc)` Method that will construct standard default `ValueInstantiator` using annotations (like @JsonCreator) and visibility rules
`protected Map<AnnotatedWithParams,BeanPropertyDefinition[]>` `_findCreatorsFromProperties(DeserializationContext ctxt, BeanDescription beanDesc)`
`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 AnnotatedMethod` `_findJsonValueFor(DeserializationConfig config, JavaType enumType)` Deprecated. since 2.8 call `findJsonValueMethod` on `BeanDescription` instead
`protected JavaType` `_findRemappedType(DeserializationConfig config, Class<?> rawType)`
`protected PropertyMetadata` `_getSetterInfo(DeserializationContext ctxt, BeanProperty prop, PropertyMetadata metadata)` Helper method copied from `POJOPropertyBuilder` since that won't be applied to creator parameters
`protected boolean` `_handleSingleArgumentCreator(CreatorCollector creators, AnnotatedWithParams ctor, boolean isCreator, boolean isVisible)`
`protected boolean` `_hasCreatorAnnotation(DeserializationContext ctxt, Annotated ann)`
`protected CollectionType` `_mapAbstractCollectionType(JavaType type, DeserializationConfig config)`
`protected MapType` `_mapAbstractMapType(JavaType type, DeserializationConfig config)`
`protected void` `_reportUnwrappedCreatorProperty(DeserializationContext ctxt, BeanDescription beanDesc, AnnotatedParameter param)`
`ValueInstantiator` `_valueInstantiatorInstance(DeserializationConfig config, Annotated annotated, Object instDef)`
`protected SettableBeanProperty` `constructCreatorProperty(DeserializationContext ctxt, BeanDescription beanDesc, PropertyName name, int index, AnnotatedParameter param, 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` `constructEnumResolver(Class<?> enumClass, DeserializationConfig config, AnnotatedMember jsonValueAccessor)`
`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 serializers 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 serializers 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` `modifyTypeByAnnotation(DeserializationContext ctxt, Annotated a, JavaType type)` Deprecated. Since 2.8; call `resolveMemberAndTypeAnnotations(com.fasterxml.jackson.databind.DeserializationContext, com.fasterxml.jackson.databind.introspect.AnnotatedMember, com.fasterxml.jackson.databind.JavaType)` instead
`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.
`protected JavaType` `resolveType(DeserializationContext ctxt, BeanDescription beanDesc, JavaType type, AnnotatedMember member)` Deprecated. since 2.8 call `resolveMemberAndTypeAnnotations(com.fasterxml.jackson.databind.DeserializationContext, com.fasterxml.jackson.databind.introspect.AnnotatedMember, com.fasterxml.jackson.databind.JavaType)` instead.
`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`.

### Methods inherited from class com.fasterxml.jackson.databind.deser.DeserializerFactory

`createBeanDeserializer, createBuilderBasedDeserializer`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### UNWRAPPED_CREATOR_PARAM_NAME

    protected static final PropertyName UNWRAPPED_CREATOR_PARAM_NAME

We need a placeholder for creator properties that don't have name but are marked with `@JsonWrapped` annotation.

#### _factoryConfig

    protected final DeserializerFactoryConfig _factoryConfig

Configuration settings for this factory; immutable instance (just like this factory), new version created via copy-constructor (fluent-style)

### Constructor Detail

#### BasicDeserializerFactory

    protected BasicDeserializerFactory(DeserializerFactoryConfig config)

### Method Detail

#### getFactoryConfig

    public DeserializerFactoryConfig getFactoryConfig()

Method for getting current `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.

#### withConfig

    protected abstract DeserializerFactory withConfig(DeserializerFactoryConfig config)

#### withAdditionalDeserializers

    public final DeserializerFactory withAdditionalDeserializers(Deserializers additional)

Convenience method for creating a new factory instance with additional deserializer provider.

Specified by:
  `withAdditionalDeserializers` in class `DeserializerFactory`

#### withAdditionalKeyDeserializers

    public final DeserializerFactory withAdditionalKeyDeserializers(KeyDeserializers additional)

Convenience method for creating a new factory instance with additional `KeyDeserializers`.

Specified by:
  `withAdditionalKeyDeserializers` in class `DeserializerFactory`

#### withDeserializerModifier

    public final DeserializerFactory withDeserializerModifier(BeanDeserializerModifier modifier)

Convenience method for creating a new factory instance with additional `BeanDeserializerModifier`.

Specified by:
  `withDeserializerModifier` in class `DeserializerFactory`

#### withAbstractTypeResolver

    public final DeserializerFactory withAbstractTypeResolver(AbstractTypeResolver resolver)

Convenience method for creating a new factory instance with additional `AbstractTypeResolver`.

Specified by:
  `withAbstractTypeResolver` in class `DeserializerFactory`

#### withValueInstantiators

    public final DeserializerFactory withValueInstantiators(ValueInstantiators instantiators)

Convenience method for creating a new factory instance with additional `ValueInstantiators`.

Specified by:
  `withValueInstantiators` in class `DeserializerFactory`

#### mapAbstractType

    public JavaType mapAbstractType(DeserializationConfig config,
                                    JavaType type)
                             throws JsonMappingException

Description copied from class: `DeserializerFactory`
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). Will either return passed type, or a more specific type.

Specified by:
  `mapAbstractType` in class `DeserializerFactory`
Throws:
  `JsonMappingException`

#### findValueInstantiator

    public ValueInstantiator findValueInstantiator(DeserializationContext ctxt,
                                                   BeanDescription beanDesc)
                                            throws JsonMappingException

Value instantiator is created both based on creator annotations, and on optional externally provided instantiators (registered through module interface).

Specified by:
  `findValueInstantiator` in class `DeserializerFactory`
Throws:
  `JsonMappingException`

#### _constructDefaultValueInstantiator

    protected ValueInstantiator _constructDefaultValueInstantiator(DeserializationContext ctxt,
                                                                   BeanDescription beanDesc)
                                                            throws JsonMappingException

Method that will construct standard default `ValueInstantiator` using annotations (like @JsonCreator) and visibility rules

Throws:
  `JsonMappingException`

#### _findCreatorsFromProperties

    protected Map<AnnotatedWithParams,BeanPropertyDefinition[]> _findCreatorsFromProperties(DeserializationContext ctxt,
                                                                                            BeanDescription beanDesc)
                                                                                     throws JsonMappingException

Throws:
  `JsonMappingException`

#### _valueInstantiatorInstance

    public ValueInstantiator _valueInstantiatorInstance(DeserializationConfig config,
                                                        Annotated annotated,
                                                        Object instDef)
                                                 throws JsonMappingException

Throws:
  `JsonMappingException`

#### _addDeserializerConstructors

    protected void _addDeserializerConstructors(DeserializationContext ctxt,
                                                BeanDescription beanDesc,
                                                VisibilityChecker<?> vchecker,
                                                AnnotationIntrospector intr,
                                                CreatorCollector creators,
                                                Map<AnnotatedWithParams,BeanPropertyDefinition[]> creatorParams)
                                         throws JsonMappingException

Throws:
  `JsonMappingException`

#### _addExplicitDelegatingCreator

    protected void _addExplicitDelegatingCreator(DeserializationContext ctxt,
                                                 BeanDescription beanDesc,
                                                 CreatorCollector creators,
                                                 CreatorCandidate candidate)
                                          throws JsonMappingException

Helper method called when there is the explicit "is-creator" with mode of "delegating"

Throws:
  `JsonMappingException`
Since:
  2.9.2

#### _addExplicitPropertyCreator

    protected void _addExplicitPropertyCreator(DeserializationContext ctxt,
                                               BeanDescription beanDesc,
                                               CreatorCollector creators,
                                               CreatorCandidate candidate)
                                        throws JsonMappingException

Helper method called when there is the explicit "is-creator" with mode of "properties-based"

Throws:
  `JsonMappingException`
Since:
  2.9.2

#### _addExplicitAnyCreator

    protected void _addExplicitAnyCreator(DeserializationContext ctxt,
                                          BeanDescription beanDesc,
                                          CreatorCollector creators,
                                          CreatorCandidate candidate)
                                   throws JsonMappingException

Helper method called when there is the explicit "is-creator", but no mode declaration.

Throws:
  `JsonMappingException`
Since:
  2.9.2

#### _addDeserializerFactoryMethods

    protected void _addDeserializerFactoryMethods(DeserializationContext ctxt,
                                                  BeanDescription beanDesc,
                                                  VisibilityChecker<?> vchecker,
                                                  AnnotationIntrospector intr,
                                                  CreatorCollector creators,
                                                  Map<AnnotatedWithParams,BeanPropertyDefinition[]> creatorParams)
                                           throws JsonMappingException

Throws:
  `JsonMappingException`

#### _handleSingleArgumentCreator

    protected boolean _handleSingleArgumentCreator(CreatorCollector creators,
                                                   AnnotatedWithParams ctor,
                                                   boolean isCreator,
                                                   boolean isVisible)

#### _reportUnwrappedCreatorProperty

    protected void _reportUnwrappedCreatorProperty(DeserializationContext ctxt,
                                                   BeanDescription beanDesc,
                                                   AnnotatedParameter param)
                                            throws JsonMappingException

Throws:
  `JsonMappingException`

#### constructCreatorProperty

    protected SettableBeanProperty constructCreatorProperty(DeserializationContext ctxt,
                                                            BeanDescription beanDesc,
                                                            PropertyName name,
                                                            int index,
                                                            AnnotatedParameter param,
                                                            JacksonInject.Value injectable)
                                                     throws JsonMappingException

Method that will construct a property object that represents a logical property passed via Creator (constructor or static factory method)

Throws:
  `JsonMappingException`

#### _getSetterInfo

    protected PropertyMetadata _getSetterInfo(DeserializationContext ctxt,
                                              BeanProperty prop,
                                              PropertyMetadata metadata)

Helper method copied from `POJOPropertyBuilder` since that won't be applied to creator parameters

Since:
  2.10

#### createArrayDeserializer

    public JsonDeserializer<?> createArrayDeserializer(DeserializationContext ctxt,
                                                       ArrayType type,
                                                       BeanDescription beanDesc)
                                                throws JsonMappingException

Description copied from class: `DeserializerFactory`
Method called to create (or, for completely immutable deserializers, reuse) a deserializer that can convert JSON content into values of specified Java type.

Specified by:
  `createArrayDeserializer` in class `DeserializerFactory`
  `type` - Type to be deserialized
Throws:
  `JsonMappingException`

#### createCollectionDeserializer

    public JsonDeserializer<?> createCollectionDeserializer(DeserializationContext ctxt,
                                                            CollectionType type,
                                                            BeanDescription beanDesc)
                                                     throws JsonMappingException

Specified by:
  `createCollectionDeserializer` in class `DeserializerFactory`
Throws:
  `JsonMappingException`

#### _mapAbstractCollectionType

    protected CollectionType _mapAbstractCollectionType(JavaType type,
                                                        DeserializationConfig config)

#### createCollectionLikeDeserializer

    public JsonDeserializer<?> createCollectionLikeDeserializer(DeserializationContext ctxt,
                                                                CollectionLikeType type,
                                                                BeanDescription beanDesc)
                                                         throws JsonMappingException

Specified by:
  `createCollectionLikeDeserializer` in class `DeserializerFactory`
Throws:
  `JsonMappingException`

#### createMapDeserializer

    public JsonDeserializer<?> createMapDeserializer(DeserializationContext ctxt,
                                                     MapType type,
                                                     BeanDescription beanDesc)
                                              throws JsonMappingException

Specified by:
  `createMapDeserializer` in class `DeserializerFactory`
Throws:
  `JsonMappingException`

#### _mapAbstractMapType

    protected MapType _mapAbstractMapType(JavaType type,
                                          DeserializationConfig config)

#### createMapLikeDeserializer

    public JsonDeserializer<?> createMapLikeDeserializer(DeserializationContext ctxt,
                                                         MapLikeType type,
                                                         BeanDescription beanDesc)
                                                  throws JsonMappingException

Specified by:
  `createMapLikeDeserializer` in class `DeserializerFactory`
Throws:
  `JsonMappingException`

#### createEnumDeserializer

    public JsonDeserializer<?> createEnumDeserializer(DeserializationContext ctxt,
                                                      JavaType type,
                                                      BeanDescription beanDesc)
                                               throws JsonMappingException

Factory method for constructing serializers of `Enum` types.

Specified by:
  `createEnumDeserializer` in class `DeserializerFactory`
Throws:
  `JsonMappingException`

#### createTreeDeserializer

    public JsonDeserializer<?> createTreeDeserializer(DeserializationConfig config,
                                                      JavaType nodeType,
                                                      BeanDescription beanDesc)
                                               throws JsonMappingException

Description copied from class: `DeserializerFactory`
Method called to create and return a deserializer that can construct JsonNode(s) from JSON content.

Specified by:
  `createTreeDeserializer` in class `DeserializerFactory`
Throws:
  `JsonMappingException`

#### createReferenceDeserializer

    public JsonDeserializer<?> createReferenceDeserializer(DeserializationContext ctxt,
                                                           ReferenceType type,
                                                           BeanDescription beanDesc)
                                                    throws JsonMappingException

Specified by:
  `createReferenceDeserializer` in class `DeserializerFactory`
Throws:
  `JsonMappingException`

#### findTypeDeserializer

    public TypeDeserializer findTypeDeserializer(DeserializationConfig config,
                                                 JavaType baseType)
                                          throws JsonMappingException

Description copied from class: `DeserializerFactory`
Method called to find and create a type information deserializer for given base type, if one is needed. If not needed (no polymorphic handling configured for type), should return null.

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.

Specified by:
  `findTypeDeserializer` in class `DeserializerFactory`
  `baseType` - Declared base type of the value to deserializer (actual deserializer type will be this type or its subtype)
Returns:
  Type deserializer to use for given base type, if one is needed; null if not.
Throws:
  `JsonMappingException`

#### findOptionalStdDeserializer

    protected JsonDeserializer<?> findOptionalStdDeserializer(DeserializationContext ctxt,
                                                              JavaType type,
                                                              BeanDescription beanDesc)
                                                       throws JsonMappingException

Overridable method called after checking all other types.

Throws:
  `JsonMappingException`
Since:
  2.2

#### createKeyDeserializer

    public KeyDeserializer createKeyDeserializer(DeserializationContext ctxt,
                                                 JavaType type)
                                          throws JsonMappingException

Description copied from class: `DeserializerFactory`
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.

Specified by:
  `createKeyDeserializer` in class `DeserializerFactory`
Returns:
  Key deserializer to use for specified type, if one found; null if not (and default key deserializer should be used)
Throws:
  `JsonMappingException`

#### hasExplicitDeserializerFor

    public boolean hasExplicitDeserializerFor(DeserializationConfig config,
                                              Class<?> valueType)

Description copied from class: `DeserializerFactory`
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. Factory itself will check for known JDK-provided types, but registered `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.

Specified by:
  `hasExplicitDeserializerFor` in class `DeserializerFactory`

#### findPropertyTypeDeserializer

    public TypeDeserializer findPropertyTypeDeserializer(DeserializationConfig config,
                                                         JavaType baseType,
                                                         AnnotatedMember annotated)
                                                  throws JsonMappingException

Method called to create a type information deserializer for values of given non-container property, if one is needed. If not needed (no polymorphic handling configured for property), should return null.

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)

Parameters:
  `baseType` - Declared base type of the value to deserializer (actual deserializer type will be this type or its subtype)
Returns:
  Type deserializer to use for given base type, if one is needed; null if not.
Throws:
  `JsonMappingException`

#### findPropertyContentTypeDeserializer

    public TypeDeserializer findPropertyContentTypeDeserializer(DeserializationConfig config,
                                                                JavaType containerType,
                                                                AnnotatedMember propertyEntity)
                                                         throws JsonMappingException

Method called to find and create a type information deserializer for values of given container (list, array, map) property, if one is needed. If not needed (no polymorphic handling configured for property), should return null.

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)

Parameters:
  `containerType` - Type of property; must be a container type
  `propertyEntity` - Field or method that contains container property
Throws:
  `JsonMappingException`

#### findDefaultDeserializer

    public JsonDeserializer<?> findDefaultDeserializer(DeserializationContext ctxt,
                                                       JavaType type,
                                                       BeanDescription beanDesc)
                                                throws JsonMappingException

Helper method called to find one of default serializers for "well-known" platform types: JDK-provided types, and small number of public Jackson API types.

Throws:
  `JsonMappingException`
Since:
  2.2

#### _findRemappedType

    protected JavaType _findRemappedType(DeserializationConfig config,
                                         Class<?> rawType)
                                  throws JsonMappingException

Throws:
  `JsonMappingException`

#### _findCustomTreeNodeDeserializer

    protected JsonDeserializer<?> _findCustomTreeNodeDeserializer(Class<? extends JsonNode> type,
                                                                  DeserializationConfig config,
                                                                  BeanDescription beanDesc)
                                                           throws JsonMappingException

Throws:
  `JsonMappingException`

#### _findCustomReferenceDeserializer

    protected JsonDeserializer<?> _findCustomReferenceDeserializer(ReferenceType type,
                                                                   DeserializationConfig config,
                                                                   BeanDescription beanDesc,
                                                                   TypeDeserializer contentTypeDeserializer,
                                                                   JsonDeserializer<?> contentDeserializer)
                                                            throws JsonMappingException

Throws:
  `JsonMappingException`

#### _findCustomBeanDeserializer

    protected JsonDeserializer<Object> _findCustomBeanDeserializer(JavaType type,
                                                                   DeserializationConfig config,
                                                                   BeanDescription beanDesc)
                                                            throws JsonMappingException

Throws:
  `JsonMappingException`

#### _findCustomArrayDeserializer

    protected JsonDeserializer<?> _findCustomArrayDeserializer(ArrayType type,
                                                               DeserializationConfig config,
                                                               BeanDescription beanDesc,
                                                               TypeDeserializer elementTypeDeserializer,
                                                               JsonDeserializer<?> elementDeserializer)
                                                        throws JsonMappingException

Throws:
  `JsonMappingException`

#### _findCustomCollectionDeserializer

    protected JsonDeserializer<?> _findCustomCollectionDeserializer(CollectionType type,
                                                                    DeserializationConfig config,
                                                                    BeanDescription beanDesc,
                                                                    TypeDeserializer elementTypeDeserializer,
                                                                    JsonDeserializer<?> elementDeserializer)
                                                             throws JsonMappingException

Throws:
  `JsonMappingException`

#### _findCustomCollectionLikeDeserializer

    protected JsonDeserializer<?> _findCustomCollectionLikeDeserializer(CollectionLikeType type,
                                                                        DeserializationConfig config,
                                                                        BeanDescription beanDesc,
                                                                        TypeDeserializer elementTypeDeserializer,
                                                                        JsonDeserializer<?> elementDeserializer)
                                                                 throws JsonMappingException

Throws:
  `JsonMappingException`

#### _findCustomEnumDeserializer

    protected JsonDeserializer<?> _findCustomEnumDeserializer(Class<?> type,
                                                              DeserializationConfig config,
                                                              BeanDescription beanDesc)
                                                       throws JsonMappingException

Throws:
  `JsonMappingException`

#### _findCustomMapDeserializer

    protected JsonDeserializer<?> _findCustomMapDeserializer(MapType type,
                                                             DeserializationConfig config,
                                                             BeanDescription beanDesc,
                                                             KeyDeserializer keyDeserializer,
                                                             TypeDeserializer elementTypeDeserializer,
                                                             JsonDeserializer<?> elementDeserializer)
                                                      throws JsonMappingException

Throws:
  `JsonMappingException`

#### _findCustomMapLikeDeserializer

    protected JsonDeserializer<?> _findCustomMapLikeDeserializer(MapLikeType type,
                                                                 DeserializationConfig config,
                                                                 BeanDescription beanDesc,
                                                                 KeyDeserializer keyDeserializer,
                                                                 TypeDeserializer elementTypeDeserializer,
                                                                 JsonDeserializer<?> elementDeserializer)
                                                          throws JsonMappingException

Throws:
  `JsonMappingException`

#### findDeserializerFromAnnotation

    protected JsonDeserializer<Object> findDeserializerFromAnnotation(DeserializationContext ctxt,
                                                                      Annotated ann)
                                                               throws JsonMappingException

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. Note that deserializer will NOT yet be contextualized so caller needs to take care to call contextualization appropriately. Returns null if no such annotation found.

Throws:
  `JsonMappingException`

#### findKeyDeserializerFromAnnotation

    protected KeyDeserializer findKeyDeserializerFromAnnotation(DeserializationContext ctxt,
                                                                Annotated ann)
                                                         throws JsonMappingException

Helper method called to check if a class or method has annotation that tells which class to use for deserialization of `Map` keys. Returns null if no such annotation found.

Throws:
  `JsonMappingException`

#### findContentDeserializerFromAnnotation

    protected JsonDeserializer<Object> findContentDeserializerFromAnnotation(DeserializationContext ctxt,
                                                                             Annotated ann)
                                                                      throws JsonMappingException

Throws:
  `JsonMappingException`
Since:
  2.9

#### resolveMemberAndTypeAnnotations

    protected JavaType resolveMemberAndTypeAnnotations(DeserializationContext ctxt,
                                                       AnnotatedMember member,
                                                       JavaType type)
                                                throws JsonMappingException

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.

Throws:
  `JsonMappingException`
Since:
  2.8 Combines functionality of `modifyTypeByAnnotation` and `resolveType`

#### constructEnumResolver

    protected EnumResolver constructEnumResolver(Class<?> enumClass,
                                                 DeserializationConfig config,
                                                 AnnotatedMember jsonValueAccessor)

#### _hasCreatorAnnotation

    protected boolean _hasCreatorAnnotation(DeserializationContext ctxt,
                                            Annotated ann)

Since:
  2.9

#### modifyTypeByAnnotation

    @Deprecated
    protected JavaType modifyTypeByAnnotation(DeserializationContext ctxt,
                                                          Annotated a,
                                                          JavaType type)
                                                   throws JsonMappingException

Deprecated. Since 2.8; call `resolveMemberAndTypeAnnotations(com.fasterxml.jackson.databind.DeserializationContext, com.fasterxml.jackson.databind.introspect.AnnotatedMember, com.fasterxml.jackson.databind.JavaType)` instead
Method called to see if given method has annotations that indicate a more specific type than what the argument specifies.

Throws:
  `JsonMappingException`

#### resolveType

    @Deprecated
    protected JavaType resolveType(DeserializationContext ctxt,
                                               BeanDescription beanDesc,
                                               JavaType type,
                                               AnnotatedMember member)
                                        throws JsonMappingException

Deprecated. since 2.8 call `resolveMemberAndTypeAnnotations(com.fasterxml.jackson.databind.DeserializationContext, com.fasterxml.jackson.databind.introspect.AnnotatedMember, com.fasterxml.jackson.databind.JavaType)` instead.

Throws:
  `JsonMappingException`

#### _findJsonValueFor

    @Deprecated
    protected AnnotatedMethod _findJsonValueFor(DeserializationConfig config,
                                                            JavaType enumType)

Deprecated. since 2.8 call `findJsonValueMethod` on `BeanDescription` instead