java.lang.Object
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind.deser.Deserializers.Base
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind.module.SimpleDeserializers
All Implemented Interfaces:
Deserializers, Serializable

public class SimpleDeserializers extends Deserializers.Base implements Serializable
Simple implementation Deserializers which allows registration of deserializers based on raw (type erased class). It can work well for basic bean and scalar type deserializers, but is not a good fit for handling generic types (like Maps and Collections or array types).

Unlike SimpleSerializers, this class does not currently support generic mappings; all mappings must be to exact declared deserialization type.

See Also:
  • Field Details

    • _classMappings

      protected HashMap<ClassKey,JsonDeserializer<?>> _classMappings
    • _hasEnumDeserializer

      protected boolean _hasEnumDeserializer
      Flag to help find "generic" enum deserializer, if one has been registered.
      Since:
      2.3
  • Constructor Details

    • SimpleDeserializers

      public SimpleDeserializers()
    • SimpleDeserializers

      public SimpleDeserializers(Map<Class<?>,JsonDeserializer<?>> desers)
      Since:
      2.1
  • Method Details

    • addDeserializer

      public <T> void addDeserializer(Class<T> forClass, JsonDeserializer<? extends T> deser)
    • addDeserializers

      public void addDeserializers(Map<Class<?>,JsonDeserializer<?>> desers)
      Since:
      2.1
    • findArrayDeserializer

      public JsonDeserializer<?> findArrayDeserializer(ArrayType type, DeserializationConfig config, BeanDescription beanDesc, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
      Description copied from interface: Deserializers
      Method called to locate serializer for specified array type.

      Deserializer for element type may be passed, if configured explicitly at higher level (by annotations, typically), but usually are not. Type deserializer for element is passed if one is needed based on contextual information (annotations on declared element class; or on field or method type is associated with).

      Specified by:
      findArrayDeserializer in interface Deserializers
      Overrides:
      findArrayDeserializer in class Deserializers.Base
      Parameters:
      type - Type of array instances to deserialize
      config - Configuration in effect
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers
      elementTypeDeserializer - If element type needs polymorphic type handling, this is the type information deserializer to use; should usually be used as is when constructing array deserializer.
      elementDeserializer - Deserializer to use for elements, if explicitly defined (by using annotations, for exmple). May be null, in which case it should be resolved here (or using ResolvableDeserializer callback)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findBeanDeserializer

      public JsonDeserializer<?> findBeanDeserializer(JavaType type, DeserializationConfig config, BeanDescription beanDesc) throws JsonMappingException
      Description copied from interface: Deserializers
      Method called to locate deserializer for specified value type which does not belong to any other category (not an Enum, Collection, Map, Array, reference value or tree node)
      Specified by:
      findBeanDeserializer in interface Deserializers
      Overrides:
      findBeanDeserializer in class Deserializers.Base
      Parameters:
      type - Bean type to deserialize
      config - Configuration in effect
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findCollectionDeserializer

      public JsonDeserializer<?> findCollectionDeserializer(CollectionType type, DeserializationConfig config, BeanDescription beanDesc, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
      Description copied from interface: Deserializers
      Method called to locate serializer for specified Collection (List, Set etc) type.

      Deserializer for element type may be passed, if configured explicitly at higher level (by annotations, typically), but usually are not. Type deserializer for element is passed if one is needed based on contextual information (annotations on declared element class; or on field or method type is associated with).

      Specified by:
      findCollectionDeserializer in interface Deserializers
      Overrides:
      findCollectionDeserializer in class Deserializers.Base
      Parameters:
      type - Type of collection instances to deserialize
      config - Configuration in effect
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers
      elementTypeDeserializer - If element type needs polymorphic type handling, this is the type information deserializer to use; should usually be used as is when constructing array deserializer.
      elementDeserializer - Deserializer to use for elements, if explicitly defined (by using annotations, for exmple). May be null, in which case it should be resolved here (or using ResolvableDeserializer callback)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findCollectionLikeDeserializer

      public JsonDeserializer<?> findCollectionLikeDeserializer(CollectionLikeType type, DeserializationConfig config, BeanDescription beanDesc, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
      Description copied from interface: Deserializers
      Method called to locate serializer for specified "Collection-like" type (one that acts like Collection but does not implement it).

      Deserializer for element type may be passed, if configured explicitly at higher level (by annotations, typically), but usually are not. Type deserializer for element is passed if one is needed based on contextual information (annotations on declared element class; or on field or method type is associated with).

      Specified by:
      findCollectionLikeDeserializer in interface Deserializers
      Overrides:
      findCollectionLikeDeserializer in class Deserializers.Base
      Parameters:
      type - Type of instances to deserialize
      config - Configuration in effect
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers
      elementTypeDeserializer - If element type needs polymorphic type handling, this is the type information deserializer to use; should usually be used as is when constructing array deserializer.
      elementDeserializer - Deserializer to use for elements, if explicitly defined (by using annotations, for exmple). May be null, in which case it should be resolved here (or using ResolvableDeserializer callback)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findEnumDeserializer

      public JsonDeserializer<?> findEnumDeserializer(Class<?> type, DeserializationConfig config, BeanDescription beanDesc) throws JsonMappingException
      Description copied from interface: Deserializers
      Method called to locate deserializer for specified Enum type.
      Specified by:
      findEnumDeserializer in interface Deserializers
      Overrides:
      findEnumDeserializer in class Deserializers.Base
      Parameters:
      type - Type of Enum instances to deserialize
      config - Configuration in effect
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findTreeNodeDeserializer

      public JsonDeserializer<?> findTreeNodeDeserializer(Class<? extends JsonNode> nodeType, DeserializationConfig config, BeanDescription beanDesc) throws JsonMappingException
      Description copied from interface: Deserializers
      Method called to locate deserializer for specified JSON tree node type.
      Specified by:
      findTreeNodeDeserializer in interface Deserializers
      Overrides:
      findTreeNodeDeserializer in class Deserializers.Base
      Parameters:
      nodeType - Specific type of JSON tree nodes to deserialize (subtype of JsonNode)
      config - Configuration in effect
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findReferenceDeserializer

      public JsonDeserializer<?> findReferenceDeserializer(ReferenceType refType, DeserializationConfig config, BeanDescription beanDesc, TypeDeserializer contentTypeDeserializer, JsonDeserializer<?> contentDeserializer) throws JsonMappingException
      Description copied from interface: Deserializers
      Method called to locate deserializer for value that is of referential type,
      Specified by:
      findReferenceDeserializer in interface Deserializers
      Overrides:
      findReferenceDeserializer in class Deserializers.Base
      Parameters:
      refType - Specific referential type to deserialize
      config - Configuration in effect
      beanDesc - Definition of the reference type that contains class annotations and other information typically needed for building deserializers
      contentTypeDeserializer - Possible type deserializer for referenced value
      contentDeserializer - Value deserializer to use for referenced value, if indicated by property annotation
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findMapDeserializer

      public JsonDeserializer<?> findMapDeserializer(MapType type, DeserializationConfig config, BeanDescription beanDesc, KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
      Description copied from interface: Deserializers
      Method called to locate deserializer for specified Map type.

      Deserializer for element type may be passed, if configured explicitly at higher level (by annotations, typically), but usually are not. Type deserializer for element is passed if one is needed based on contextual information (annotations on declared element class; or on field or method type is associated with).

      Similarly, a KeyDeserializer may be passed, but this is only done if there is a specific configuration override (annotations) to indicate instance to use. Otherwise null is passed, and key deserializer needs to be obtained later during resolution (using ResolvableDeserializer.resolve(edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind.DeserializationContext)).

      Specified by:
      findMapDeserializer in interface Deserializers
      Overrides:
      findMapDeserializer in class Deserializers.Base
      Parameters:
      type - Type of Map instances to deserialize
      config - Configuration in effect
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers
      keyDeserializer - Key deserializer use, if it is defined via annotations or other configuration; null if default key deserializer for key type can be used.
      elementTypeDeserializer - If element type needs polymorphic type handling, this is the type information deserializer to use; should usually be used as is when constructing array deserializer.
      elementDeserializer - Deserializer to use for elements, if explicitly defined (by using annotations, for exmple). May be null, in which case it should be resolved here (or using ResolvableDeserializer callback)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • findMapLikeDeserializer

      public JsonDeserializer<?> findMapLikeDeserializer(MapLikeType type, DeserializationConfig config, BeanDescription beanDesc, KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException
      Description copied from interface: Deserializers
      Method called to locate serializer for specified "Map-like" type (one that acts like Map but does not implement it).

      Deserializer for element type may be passed, if configured explicitly at higher level (by annotations, typically), but usually are not. Type deserializer for element is passed if one is needed based on contextual information (annotations on declared element class; or on field or method type is associated with).

      Similarly, a KeyDeserializer may be passed, but this is only done if there is a specific configuration override (annotations) to indicate instance to use. Otherwise null is passed, and key deserializer needs to be obtained later during resolution (using ResolvableDeserializer.resolve(edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind.DeserializationContext)).

      Specified by:
      findMapLikeDeserializer in interface Deserializers
      Overrides:
      findMapLikeDeserializer in class Deserializers.Base
      Parameters:
      type - Type of Map instances to deserialize
      config - Configuration in effect
      beanDesc - Definition of the enumeration type that contains class annotations and other information typically needed for building deserializers
      keyDeserializer - Key deserializer use, if it is defined via annotations or other configuration; null if default key deserializer for key type can be used.
      elementTypeDeserializer - If element type needs polymorphic type handling, this is the type information deserializer to use; should usually be used as is when constructing array deserializer.
      elementDeserializer - Deserializer to use for elements, if explicitly defined (by using annotations, for exmple). May be null, in which case it should be resolved here (or using ResolvableDeserializer callback)
      Returns:
      Deserializer to use for the type; or null if this provider does not know how to construct it
      Throws:
      JsonMappingException
    • hasDeserializerFor

      public boolean hasDeserializerFor(DeserializationConfig config, Class<?> valueType)
      Description copied from interface: Deserializers
      Method that may be called to check whether this deserializer provider would provide deserializer for values of given type, without attempting to construct (and possibly fail in some cases) actual deserializer. Mostly needed to support validation of polymorphic type ids.

      Note: implementations should take care NOT to claim supporting types that they do not recognize as this could to incorrect assumption of safe support by caller.

      Method added in Jackson 2.13 now that Java 8 default implementations are available for use with interface definitions.

      Specified by:
      hasDeserializerFor in interface Deserializers