public class SimpleAbstractTypeResolver extends AbstractTypeResolver implements Serializable
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
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 HashMap<ClassKey,Class<?>> |
_mappings
Mappings from super types to subtypes
|
Constructor and Description |
---|
SimpleAbstractTypeResolver() |
Modifier and Type | Method and Description |
---|---|
<T> SimpleAbstractTypeResolver |
addMapping(Class<T> superType,
Class<? extends T> subType)
Method for adding a mapping from super type to specific subtype.
|
JavaType |
findTypeMapping(DeserializationConfig config,
JavaType type)
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.
|
JavaType |
resolveAbstractType(DeserializationConfig config,
BeanDescription typeDesc)
Method called to try to resolve an abstract type into
concrete type (usually for purposes of deserializing),
when no concrete implementation was found.
|
JavaType |
resolveAbstractType(DeserializationConfig config,
JavaType type)
Deprecated.
|
public <T> SimpleAbstractTypeResolver addMapping(Class<T> superType, Class<? extends T> subType)
superType
is abstract (since resolver is never called for concrete classes);
as well as to ensure that there is supertype/subtype relationship
(to ensure there won't be cycles during resolution).superType
- Abstract type to resolvesubType
- Sub-class of superType, to map superTo topublic JavaType findTypeMapping(DeserializationConfig config, JavaType type)
AbstractTypeResolver
List
s).
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.
findTypeMapping
in class AbstractTypeResolver
config
- Configuration in use; should always be of type
DeserializationConfig
@Deprecated public JavaType resolveAbstractType(DeserializationConfig config, JavaType type)
AbstractTypeResolver
AbstractTypeResolver.resolveAbstractType(DeserializationConfig, BeanDescription)
;
obsoleted in 2.7resolveAbstractType
in class AbstractTypeResolver
public JavaType resolveAbstractType(DeserializationConfig config, BeanDescription typeDesc)
AbstractTypeResolver
resolveAbstractType
in class AbstractTypeResolver
config
- Configuration in use; should always be of type
DeserializationConfig
typeDesc
- Description of the POJO type to resolveCopyright © 2018 JBoss by Red Hat. All rights reserved.