AbstractTypeResolver implementation, which is
based on static mapping from abstract super types into
sub types (concrete or abstract), but retaining generic
parameterization.
Can be used for things like specifying which implementation of
java.util.Collection to use:
SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); // To make all properties declared as Collection, List, to LinkedList resolver.addMapping(Collection.class, LinkedList.class); resolver.addMapping(List.class, LinkedList.class);Can also be used as an alternative to per-class annotations when defining concrete implementations; however, only works with abstract types (since this is only called for abstract types)
| Modifier and Type | Field and Description |
|---|---|
| protected final HashMap | _mappings
Mappings from super types to subtypes |
| private static final long |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| public <T> SimpleAbstractTypeResolver | Returns: This resolver, to allow chaining of initializationsAbstract type to resolve superType, Class<? extends T> Sub-class of superType, to map superTo to subType)Method for adding a mapping from super type to specific subtype. |
| public JavaType | findTypeMapping(DeserializationConfig
Configuration in use config, JavaType Type to find mapping for type)Overrides com. |
| public JavaType | resolveAbstractType(DeserializationConfig
Configuration in use config, JavaType Type to resolve type)Overrides com.
Deprecated
Older variant of resolveAbstractType(DeserializationConfig, BeanDescription);
obsoleted in 2.7
|
| public JavaType | resolveAbstractType(DeserializationConfig
Configuration in use config, BeanDescription Description of the POJO type to resolve typeDesc)Overrides com. |
| _mappings | back to summary |
|---|---|
| protected final HashMap<ClassKey, Class<?>> _mappings Mappings from super types to subtypes | |
| serialVersionUID | back to summary |
|---|---|
| private static final long serialVersionUID | |
| SimpleAbstractTypeResolver | back to summary |
|---|---|
| public SimpleAbstractTypeResolver() | |
| addMapping | back to summary |
|---|---|
| public <T> SimpleAbstractTypeResolver addMapping(Class<T> superType, Class<? extends T> subType) Method for adding a mapping from super type to specific subtype.
Arguments will be checked by method, to ensure that
| |
| findTypeMapping | back to summary |
|---|---|
| public JavaType findTypeMapping(DeserializationConfig config, JavaType type) Overrides com. Doc from com. Try to locate a subtype for given abstract type, to either resolve
to a concrete type, or at least to a more-specific (and hopefully supported)
abstract type, one which may have registered deserializers.
Method is called before trying to locate registered deserializers
(as well as standard abstract type defaulting that core Jackson does),
so it is typically implemented to add custom mappings of common abstract
types (like specify which concrete implementation to use for binding
Note that this method does not necessarily have to do full resolution of bindings; that is, it is legal to return type that could be further resolved: caller is expected to keep calling this method on registered resolvers, until a concrete type is located.
| |
| resolveAbstractType | back to summary |
|---|---|
| public JavaType resolveAbstractType(DeserializationConfig config, JavaType type) Overrides com. Doc from com. Deprecated
Older variant of
| |
| resolveAbstractType | back to summary |
|---|---|
| public JavaType resolveAbstractType(DeserializationConfig config, BeanDescription typeDesc) Overrides com. Doc from com. Method called to try to resolve an abstract type into concrete type (usually for purposes of deserializing), when no concrete implementation was found. It will be called after checking all other possibilities, including defaulting.
| |