org.codehaus.jackson.map
Class DeserializerFactory

java.lang.Object
  extended by org.codehaus.jackson.map.DeserializerFactory
Direct Known Subclasses:
BasicDeserializerFactory

public abstract class DeserializerFactory
extends Object

Abstract class that defines API used by DeserializerProvider to obtain actual JsonDeserializer instances from multiple distinct factories.

Since there are multiple broad categories of deserializers, there are multiple factory methods:

All above methods take 2 type arguments, except for the first one which takes just a single argument.


Nested Class Summary
static class DeserializerFactory.Config
          Configuration settings container class for bean deserializer factory
 
Field Summary
protected static Deserializers[] NO_DESERIALIZERS
           
 
Constructor Summary
DeserializerFactory()
           
 
Method Summary
 JsonDeserializer<?> createArrayDeserializer(DeserializationConfig config, ArrayType type, DeserializerProvider p)
          Deprecated. Since 1.7 should use method that takes in property definition
abstract  JsonDeserializer<?> createArrayDeserializer(DeserializationConfig config, DeserializerProvider p, ArrayType type, BeanProperty property)
          Method called to create (or, for completely immutable deserializers, reuse) a deserializer that can convert JSON content into values of specified Java type.
abstract  JsonDeserializer<Object> createBeanDeserializer(DeserializationConfig config, DeserializerProvider p, JavaType type, BeanProperty property)
          Method called to create (or, for completely immutable deserializers, reuse) a deserializer that can convert JSON content into values of specified Java "bean" (POJO) type.
 JsonDeserializer<Object> createBeanDeserializer(DeserializationConfig config, JavaType type, DeserializerProvider p)
          Deprecated. Since 1.7 should use method that takes in property definition
 JsonDeserializer<?> createCollectionDeserializer(DeserializationConfig config, CollectionType type, DeserializerProvider p)
          Deprecated. Since 1.7 should use method that takes in property definition
abstract  JsonDeserializer<?> createCollectionDeserializer(DeserializationConfig config, DeserializerProvider p, CollectionType type, BeanProperty property)
           
abstract  JsonDeserializer<?> createCollectionLikeDeserializer(DeserializationConfig config, DeserializerProvider p, CollectionLikeType type, BeanProperty property)
           
 JsonDeserializer<?> createEnumDeserializer(DeserializationConfig config, Class<?> enumClass, DeserializerProvider p)
          Deprecated. Since 1.7 should use method that takes in property definition
abstract  JsonDeserializer<?> createEnumDeserializer(DeserializationConfig config, DeserializerProvider p, JavaType type, BeanProperty property)
           
 KeyDeserializer createKeyDeserializer(DeserializationConfig config, JavaType type, BeanProperty property)
          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.
abstract  JsonDeserializer<?> createMapDeserializer(DeserializationConfig config, DeserializerProvider p, MapType type, BeanProperty property)
           
 JsonDeserializer<?> createMapDeserializer(DeserializationConfig config, MapType type, DeserializerProvider p)
          Deprecated. Since 1.7 should use method that takes in property definition
abstract  JsonDeserializer<?> createMapLikeDeserializer(DeserializationConfig config, DeserializerProvider p, MapLikeType type, BeanProperty property)
           
 JsonDeserializer<?> createTreeDeserializer(DeserializationConfig config, Class<? extends JsonNode> nodeClass, DeserializerProvider p)
          Deprecated. Since 1.7 should use method that takes in property definition
abstract  JsonDeserializer<?> createTreeDeserializer(DeserializationConfig config, DeserializerProvider p, JavaType type, BeanProperty property)
          Method called to create and return a deserializer that can construct JsonNode(s) from JSON content.
 TypeDeserializer findTypeDeserializer(DeserializationConfig config, JavaType baseType)
          Deprecated. Since 1.7 should use method that takes in property definition
 TypeDeserializer findTypeDeserializer(DeserializationConfig config, JavaType baseType, BeanProperty property)
          Method called to find and create a type information deserializer for given base type, if one is needed.
abstract  DeserializerFactory.Config getConfig()
           
 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.
abstract  DeserializerFactory withConfig(DeserializerFactory.Config config)
          Method used for creating a new instance of this factory, but with different configuration.
 DeserializerFactory withDeserializerModifier(BeanDeserializerModifier modifier)
          Convenience method for creating a new factory instance with additional BeanDeserializerModifier.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_DESERIALIZERS

protected static final Deserializers[] NO_DESERIALIZERS
Constructor Detail

DeserializerFactory

public DeserializerFactory()
Method Detail

getConfig

public abstract DeserializerFactory.Config getConfig()
Since:
1.7

withConfig

public abstract DeserializerFactory withConfig(DeserializerFactory.Config config)
Method used for creating a new instance of this factory, but with different configuration. Reason for specifying factory method (instead of plain constructor) is to allow proper sub-classing of factories.

Note that custom sub-classes must override implementation of this method, as it usually requires instantiating a new instance of factory type. Check out javadocs for BeanDeserializerFactory for more details.

Since:
1.7

withAdditionalDeserializers

public final DeserializerFactory withAdditionalDeserializers(Deserializers additional)
Convenience method for creating a new factory instance with additional deserializer provider.

Since:
1.7

withAdditionalKeyDeserializers

public final DeserializerFactory withAdditionalKeyDeserializers(KeyDeserializers additional)
Convenience method for creating a new factory instance with additional KeyDeserializers.

Since:
1.8

withDeserializerModifier

public final DeserializerFactory withDeserializerModifier(BeanDeserializerModifier modifier)
Convenience method for creating a new factory instance with additional BeanDeserializerModifier.

Since:
1.7

withAbstractTypeResolver

public final DeserializerFactory withAbstractTypeResolver(AbstractTypeResolver resolver)
Convenience method for creating a new factory instance with additional AbstractTypeResolver.

Since:
1.7

createBeanDeserializer

public abstract JsonDeserializer<Object> createBeanDeserializer(DeserializationConfig config,
                                                                DeserializerProvider p,
                                                                JavaType type,
                                                                BeanProperty property)
                                                         throws JsonMappingException
Method called to create (or, for completely immutable deserializers, reuse) a deserializer that can convert JSON content into values of specified Java "bean" (POJO) type. At this point it is known that the type is not otherwise recognized as one of structured types (array, Collection, Map) or a well-known JDK type (enum, primitives/wrappers, String); this method only gets called if other options are exhausted. This also means that this method can be overridden to add support for custom types.

Parameters:
type - Type to be deserialized
p - Provider that can be called to create deserializers for contained member types
Throws:
JsonMappingException

createArrayDeserializer

public abstract JsonDeserializer<?> createArrayDeserializer(DeserializationConfig config,
                                                            DeserializerProvider p,
                                                            ArrayType type,
                                                            BeanProperty property)
                                                     throws JsonMappingException
Method called to create (or, for completely immutable deserializers, reuse) a deserializer that can convert JSON content into values of specified Java type.

Parameters:
type - Type to be deserialized
p - Provider that can be called to create deserializers for contained member types
Throws:
JsonMappingException

createCollectionDeserializer

public abstract JsonDeserializer<?> createCollectionDeserializer(DeserializationConfig config,
                                                                 DeserializerProvider p,
                                                                 CollectionType type,
                                                                 BeanProperty property)
                                                          throws JsonMappingException
Throws:
JsonMappingException

createCollectionLikeDeserializer

public abstract JsonDeserializer<?> createCollectionLikeDeserializer(DeserializationConfig config,
                                                                     DeserializerProvider p,
                                                                     CollectionLikeType type,
                                                                     BeanProperty property)
                                                              throws JsonMappingException
Throws:
JsonMappingException
Since:
1.8

createEnumDeserializer

public abstract JsonDeserializer<?> createEnumDeserializer(DeserializationConfig config,
                                                           DeserializerProvider p,
                                                           JavaType type,
                                                           BeanProperty property)
                                                    throws JsonMappingException
Throws:
JsonMappingException

createMapDeserializer

public abstract JsonDeserializer<?> createMapDeserializer(DeserializationConfig config,
                                                          DeserializerProvider p,
                                                          MapType type,
                                                          BeanProperty property)
                                                   throws JsonMappingException
Throws:
JsonMappingException

createMapLikeDeserializer

public abstract JsonDeserializer<?> createMapLikeDeserializer(DeserializationConfig config,
                                                              DeserializerProvider p,
                                                              MapLikeType type,
                                                              BeanProperty property)
                                                       throws JsonMappingException
Throws:
JsonMappingException
Since:
1.8

createTreeDeserializer

public abstract JsonDeserializer<?> createTreeDeserializer(DeserializationConfig config,
                                                           DeserializerProvider p,
                                                           JavaType type,
                                                           BeanProperty property)
                                                    throws JsonMappingException
Method called to create and return a deserializer that can construct JsonNode(s) from JSON content.

Throws:
JsonMappingException

createKeyDeserializer

public KeyDeserializer createKeyDeserializer(DeserializationConfig config,
                                             JavaType type,
                                             BeanProperty property)
                                      throws JsonMappingException
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.

Returns:
Key deserializer to use for specified type, if one found; null if not (and default key deserializer should be used)
Throws:
JsonMappingException
Since:
1.8

findTypeDeserializer

public TypeDeserializer findTypeDeserializer(DeserializationConfig config,
                                             JavaType baseType,
                                             BeanProperty property)
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.

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.
Since:
1.5

findTypeDeserializer

@Deprecated
public final TypeDeserializer findTypeDeserializer(DeserializationConfig config,
                                                              JavaType baseType)
Deprecated. Since 1.7 should use method that takes in property definition

Note: declared final to prevent sub-classes from overriding; choice is between hard compile-time error and nastier runtime errors as this method should not be called by core framework any more.


createBeanDeserializer

@Deprecated
public final JsonDeserializer<Object> createBeanDeserializer(DeserializationConfig config,
                                                                        JavaType type,
                                                                        DeserializerProvider p)
                                                      throws JsonMappingException
Deprecated. Since 1.7 should use method that takes in property definition

Note: declared final to prevent sub-classes from overriding; choice is between hard compile-time error and nastier runtime errors as this method should not be called by core framework any more.

Throws:
JsonMappingException

createArrayDeserializer

@Deprecated
public final JsonDeserializer<?> createArrayDeserializer(DeserializationConfig config,
                                                                    ArrayType type,
                                                                    DeserializerProvider p)
                                                  throws JsonMappingException
Deprecated. Since 1.7 should use method that takes in property definition

Note: declared final to prevent sub-classes from overriding; choice is between hard compile-time error and nastier runtime errors as this method should not be called by core framework any more.

Throws:
JsonMappingException

createCollectionDeserializer

@Deprecated
public final JsonDeserializer<?> createCollectionDeserializer(DeserializationConfig config,
                                                                         CollectionType type,
                                                                         DeserializerProvider p)
                                                       throws JsonMappingException
Deprecated. Since 1.7 should use method that takes in property definition

Note: declared final to prevent sub-classes from overriding; choice is between hard compile-time error and nastier runtime errors as this method should not be called by core framework any more.

Throws:
JsonMappingException

createEnumDeserializer

@Deprecated
public final JsonDeserializer<?> createEnumDeserializer(DeserializationConfig config,
                                                                   Class<?> enumClass,
                                                                   DeserializerProvider p)
                                                 throws JsonMappingException
Deprecated. Since 1.7 should use method that takes in property definition

Note: declared final to prevent sub-classes from overriding; choice is between hard compile-time error and nastier runtime errors as this method should not be called by core framework any more.

Throws:
JsonMappingException

createMapDeserializer

@Deprecated
public final JsonDeserializer<?> createMapDeserializer(DeserializationConfig config,
                                                                  MapType type,
                                                                  DeserializerProvider p)
                                                throws JsonMappingException
Deprecated. Since 1.7 should use method that takes in property definition

Note: declared final to prevent sub-classes from overriding; choice is between hard compile-time error and nastier runtime errors as this method should not be called by core framework any more.

Throws:
JsonMappingException

createTreeDeserializer

@Deprecated
public final JsonDeserializer<?> createTreeDeserializer(DeserializationConfig config,
                                                                   Class<? extends JsonNode> nodeClass,
                                                                   DeserializerProvider p)
                                                 throws JsonMappingException
Deprecated. Since 1.7 should use method that takes in property definition

Note: declared final to prevent sub-classes from overriding; choice is between hard compile-time error and nastier runtime errors as this method should not be called by core framework any more.

Throws:
JsonMappingException