org.codehaus.jackson.map.DeserializerFactory Maven / Gradle / Ivy
package org.codehaus.jackson.map;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.type.*;
import org.codehaus.jackson.type.JavaType;
/**
* Abstract class that defines API used by {@link DeserializerProvider}
* to obtain actual
* {@link JsonDeserializer} instances from multiple distinct factories.
*
* Since there are multiple broad categories of deserializers, there are
* multiple factory methods:
*
* - There is one method to support JSON scalar types: here access is
* by declared value type
*
* - For JSON "Array" type, we need 2 methods: one to deal with expected
* Java arrays; and the other for other Java containers (Lists, Sets)
*
* - For JSON "Object" type, we need 2 methods: one to deal with
* expected Java {@link java.util.Map}s, and another for actual
* Java objects (beans)
*
*
*
* All above methods take 2 type arguments, except for the first one
* which takes just a single argument.
*/
public abstract class DeserializerFactory
{
/*
/*********************************************************
/* Basic DeserializerFactory API:
/*********************************************************
*/
/**
* 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.
*
* @param type Type to be deserialized
* @param p Provider that can be called to create deserializers for
* contained member types
*/
public abstract JsonDeserializer