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:
    java.io.Serializable
  Direct Known Subclasses:
    BeanDeserializerFactory

      public abstract class BasicDeserializerFactory
      extends DeserializerFactory
      implements java.io.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

- - ### Field Summary

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

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

      `NO_DESERIALIZERS`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `BasicDeserializerFactory(DeserializerFactoryConfig config)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `_addDeserializerConstructors(DeserializationContext ctxt, BeanDescription beanDesc, VisibilityChecker<?> vchecker, AnnotationIntrospector intr, CreatorCollector creators, java.util.Map<AnnotatedWithParams,BeanPropertyDefinition[]> creatorParams)`
    `protected void` | `_addDeserializerFactoryMethods(DeserializationContext ctxt, BeanDescription beanDesc, VisibilityChecker<?> vchecker, AnnotationIntrospector intr, CreatorCollector creators, java.util.Map<AnnotatedWithParams,BeanPropertyDefinition[]> creatorParams)`
    `protected boolean` | `_checkIfCreatorPropertyBased(AnnotationIntrospector intr, AnnotatedWithParams creator, BeanPropertyDefinition propDef)`
    `protected void` | `_checkImplicitlyNamedConstructors(DeserializationContext ctxt, BeanDescription beanDesc, VisibilityChecker<?> vchecker, AnnotationIntrospector intr, CreatorCollector creators, java.util.List<AnnotatedConstructor> implicitCtors)`
    `protected ValueInstantiator` | `_constructDefaultValueInstantiator(DeserializationContext ctxt, BeanDescription beanDesc)` Method that will construct standard default `ValueInstantiator` using annotations (like @JsonCreator) and visibility rules
    `protected java.util.Map<AnnotatedWithParams,BeanPropertyDefinition[]>` | `_findCreatorsFromProperties(DeserializationContext ctxt, BeanDescription beanDesc)`
    `protected JsonDeserializer<?>` | `_findCustomArrayDeserializer(ArrayType type, DeserializationConfig config, BeanDescription beanDesc, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer)`
    `protected JsonDeserializer<java.lang.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(java.lang.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(java.lang.Class<? extends JsonNode> type, DeserializationConfig config, BeanDescription beanDesc)`
    `protected PropertyName` | `_findExplicitParamName(AnnotatedParameter param, AnnotationIntrospector intr)` Deprecated.
    `protected PropertyName` | `_findImplicitParamName(AnnotatedParameter param, AnnotationIntrospector intr)`
    `protected AnnotatedMethod` | `_findJsonValueFor(DeserializationConfig config, JavaType enumType)` Deprecated. since 2.8 call `findJsonValueMethod` on `BeanDescription` instead
    `protected PropertyName` | `_findParamName(AnnotatedParameter param, AnnotationIntrospector intr)`
    `protected JavaType` | `_findRemappedType(DeserializationConfig config, java.lang.Class<?> rawType)`
    `protected boolean` | `_handleSingleArgumentConstructor(DeserializationContext ctxt, BeanDescription beanDesc, VisibilityChecker<?> vchecker, AnnotationIntrospector intr, CreatorCollector creators, AnnotatedConstructor ctor, boolean isCreator, boolean isVisible)`
    `protected boolean` | `_handleSingleArgumentFactory(DeserializationConfig config, BeanDescription beanDesc, VisibilityChecker<?> vchecker, AnnotationIntrospector intr, CreatorCollector creators, AnnotatedMethod factory, boolean isCreator)`
    `protected boolean` | `_hasExplicitParamName(AnnotatedParameter param, AnnotationIntrospector intr)` Deprecated.
    `protected CollectionType` | `_mapAbstractCollectionType(JavaType type, DeserializationConfig config)`
    `ValueInstantiator` | `_valueInstantiatorInstance(DeserializationConfig config, Annotated annotated, java.lang.Object instDef)`
    `protected SettableBeanProperty` | `constructCreatorProperty(DeserializationContext ctxt, BeanDescription beanDesc, PropertyName name, int index, AnnotatedParameter param, java.lang.Object injectableValueId)` Method that will construct a property object that represents a logical property passed via Creator (constructor or static factory method)
    `protected EnumResolver` | `constructEnumResolver(java.lang.Class<?> enumClass, DeserializationConfig config, AnnotatedMethod jsonValueMethod)`
    `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.
    `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<java.lang.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.
    `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`.
    `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 java.util.Map<AnnotatedWithParams,BeanPropertyDefinition[]> _findCreatorsFromProperties(DeserializationContext ctxt,
                                                                                                BeanDescription beanDesc)
                                                                                                     throws JsonMappingException

      Throws:
        `JsonMappingException`

    - #### _valueInstantiatorInstance

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

      Throws:
        `JsonMappingException`

    - #### _addDeserializerConstructors

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

      Throws:
        `JsonMappingException`

    - #### _checkImplicitlyNamedConstructors

          protected void _checkImplicitlyNamedConstructors(DeserializationContext ctxt,
                                               BeanDescription beanDesc,
                                               VisibilityChecker<?> vchecker,
                                               AnnotationIntrospector intr,
                                               CreatorCollector creators,
                                               java.util.List<AnnotatedConstructor> implicitCtors)
                                                    throws JsonMappingException

      Throws:
        `JsonMappingException`

    - #### _checkIfCreatorPropertyBased

          protected boolean _checkIfCreatorPropertyBased(AnnotationIntrospector intr,
                                             AnnotatedWithParams creator,
                                             BeanPropertyDefinition propDef)

    - #### _handleSingleArgumentConstructor

          protected boolean _handleSingleArgumentConstructor(DeserializationContext ctxt,
                                                 BeanDescription beanDesc,
                                                 VisibilityChecker<?> vchecker,
                                                 AnnotationIntrospector intr,
                                                 CreatorCollector creators,
                                                 AnnotatedConstructor ctor,
                                                 boolean isCreator,
                                                 boolean isVisible)
                                                      throws JsonMappingException

      Throws:
        `JsonMappingException`

    - #### _addDeserializerFactoryMethods

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

      Throws:
        `JsonMappingException`

    - #### _handleSingleArgumentFactory

          protected boolean _handleSingleArgumentFactory(DeserializationConfig config,
                                             BeanDescription beanDesc,
                                             VisibilityChecker<?> vchecker,
                                             AnnotationIntrospector intr,
                                             CreatorCollector creators,
                                             AnnotatedMethod factory,
                                             boolean isCreator)
                                                  throws JsonMappingException

      Throws:
        `JsonMappingException`

    - #### constructCreatorProperty

          protected SettableBeanProperty constructCreatorProperty(DeserializationContext ctxt,
                                                      BeanDescription beanDesc,
                                                      PropertyName name,
                                                      int index,
                                                      AnnotatedParameter param,
                                                      java.lang.Object injectableValueId)
                                                           throws JsonMappingException

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

    - #### _findParamName

          protected PropertyName _findParamName(AnnotatedParameter param,
                                    AnnotationIntrospector intr)

    - #### _findImplicitParamName

          protected PropertyName _findImplicitParamName(AnnotatedParameter param,
                                            AnnotationIntrospector intr)

    - #### _findExplicitParamName

          @Deprecated
          protected PropertyName _findExplicitParamName(AnnotatedParameter param,
                                                       AnnotationIntrospector intr)

      Deprecated.

    - #### _hasExplicitParamName

          @Deprecated
          protected boolean _hasExplicitParamName(AnnotatedParameter param,
                                                 AnnotationIntrospector intr)

      Deprecated.

    - #### 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`

    - #### 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`

    - #### 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,
                                   java.lang.Class<?> rawType)
                                        throws JsonMappingException

      Throws:
        `JsonMappingException`

    - #### _findCustomTreeNodeDeserializer

          protected JsonDeserializer<?> _findCustomTreeNodeDeserializer(java.lang.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<java.lang.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(java.lang.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<java.lang.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. Returns null if no such annotation found.
      Throws:
        `JsonMappingException`

    - #### 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(java.lang.Class<?> enumClass,
                                           DeserializationConfig config,
                                           AnnotatedMethod jsonValueMethod)

    - #### 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