|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.jackson.map.DeserializerProvider
org.codehaus.jackson.map.deser.StdDeserializerProvider
public class StdDeserializerProvider
Default DeserializerProvider
implementation.
Handles low-level caching (non-root) aspects of deserializer
handling; all construction details are delegated to configured
DeserializerFactory
instance that the provider owns.
Nested Class Summary | |
---|---|
protected static class |
StdDeserializerProvider.WrappedDeserializer
Simple deserializer that will call configured type deserializer, passing in configured data deserializer, and exposing it all as a simple deserializer. |
Field Summary | |
---|---|
protected ConcurrentHashMap<JavaType,JsonDeserializer<Object>> |
_cachedDeserializers
We will also cache some dynamically constructed deserializers; specifically, ones that are expensive to construct. |
protected DeserializerFactory |
_factory
Factory responsible for constructing actual deserializers, if not one of pre-configured types. |
protected HashMap<JavaType,JsonDeserializer<Object>> |
_incompleteDeserializers
During deserializer construction process we may need to keep track of partially completed deserializers, to resolve cyclic dependencies. |
Constructor Summary | |
---|---|
StdDeserializerProvider()
Default constructor. |
|
StdDeserializerProvider(DeserializerFactory f)
|
Method Summary | |
---|---|
protected JsonDeserializer<Object> |
_createAndCache2(DeserializationConfig config,
JavaType type,
JavaType referrer,
String refPropName)
Method that handles actual construction (via factory) and caching (both intermediate and eventual) |
protected JsonDeserializer<Object> |
_createAndCacheValueDeserializer(DeserializationConfig config,
JavaType type,
JavaType referrer,
String refPropName)
Method that will try to create a deserializer for given type, and resolve and cache it if necessary |
protected JsonDeserializer<Object> |
_createDeserializer(DeserializationConfig config,
JavaType type,
JavaType referrer,
String refPropName)
|
protected JsonDeserializer<Object> |
_findCachedDeserializer(JavaType type)
|
protected KeyDeserializer |
_handleUnknownKeyDeserializer(JavaType type)
|
protected JsonDeserializer<Object> |
_handleUnknownValueDeserializer(JavaType type)
|
protected void |
_resolveDeserializer(DeserializationConfig config,
ResolvableDeserializer ser)
|
int |
cachedDeserializersCount()
Method that can be used to determine how many deserializers this provider is caching currently (if it does caching: default implementation does) Exact count depends on what kind of deserializers get cached; default implementation caches only dynamically constructed deserializers, but not eagerly constructed standard deserializers (which is different from how serializer provider works). |
KeyDeserializer |
findKeyDeserializer(DeserializationConfig config,
JavaType type)
Method called to get hold of a deserializer to use for deserializing keys for Map . |
JsonDeserializer<Object> |
findTypedValueDeserializer(DeserializationConfig config,
JavaType type)
Method called to locate deserializer for given type, as well as matching type deserializer (if one is needed); and if type deserializer is needed, construct a "wrapped" deserializer that can extract and use type information for calling actual deserializer. |
JsonDeserializer<Object> |
findValueDeserializer(DeserializationConfig config,
JavaType type,
JavaType referrer,
String refPropName)
Method called to get hold of a deserializer for a value of given type; or if no such deserializer can be found, a default handler (which may do a best-effort generic serialization or just simply throw an exception when invoked). |
void |
flushCachedDeserializers()
Method that will drop all dynamically constructed deserializers (ones that are counted as result value for cachedDeserializersCount() ). |
boolean |
hasValueDeserializerFor(DeserializationConfig config,
JavaType type)
Method that can be called to find out whether a deserializer can be found for given type |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final ConcurrentHashMap<JavaType,JsonDeserializer<Object>> _cachedDeserializers
Given that we don't expect much concurrency for additions (should very quickly converge to zero after startup), let's explicitly define a low concurrency setting.
protected final HashMap<JavaType,JsonDeserializer<Object>> _incompleteDeserializers
protected DeserializerFactory _factory
Constructor Detail |
---|
public StdDeserializerProvider()
new StdDeserializerProvider(BeanDeserializerFactory.instance);
public StdDeserializerProvider(DeserializerFactory f)
Method Detail |
---|
public JsonDeserializer<Object> findValueDeserializer(DeserializationConfig config, JavaType type, JavaType referrer, String refPropName) throws JsonMappingException
DeserializerProvider
Note: this method is only called for value types; not for keys.
Key deserializers can be accessed using DeserializerProvider.findKeyDeserializer(org.codehaus.jackson.map.DeserializationConfig, org.codehaus.jackson.type.JavaType)
.
findValueDeserializer
in class DeserializerProvider
type
- Declared type of the value to deserializer (obtained using
'setter' method signature and/or type annotationsreferrer
- Type that contains the value, if any: null for
root-level object.refPropName
- Logical name of the property within instance of
referrer
, if through a property (field). Null for
Collection and Array types, where reference is not through a
field, as well as for "any property" fallback references
JsonMappingException
- if there are fatal problems with
accessing suitable deserializer; including that of not
finding any serializerpublic JsonDeserializer<Object> findTypedValueDeserializer(DeserializationConfig config, JavaType type) throws JsonMappingException
DeserializerProvider
Since this method is only called for root elements, no referral information is taken.
findTypedValueDeserializer
in class DeserializerProvider
JsonMappingException
public KeyDeserializer findKeyDeserializer(DeserializationConfig config, JavaType type) throws JsonMappingException
DeserializerProvider
Map
.
findKeyDeserializer
in class DeserializerProvider
JsonMappingException
- if there are fatal problems with
accessing suitable key deserializer; including that of not
finding any serializerpublic boolean hasValueDeserializerFor(DeserializationConfig config, JavaType type)
hasValueDeserializerFor
in class DeserializerProvider
public int cachedDeserializersCount()
DeserializerProvider
The main use case for this method is to allow conditional flushing of deserializer cache, if certain number of entries is reached.
cachedDeserializersCount
in class DeserializerProvider
public void flushCachedDeserializers()
cachedDeserializersCount()
).
This can be used to remove memory usage (in case some deserializers are
only used once or so), or to force re-construction of deserializers after
configuration changes for mapper than owns the provider.
flushCachedDeserializers
in class DeserializerProvider
protected JsonDeserializer<Object> _findCachedDeserializer(JavaType type)
protected JsonDeserializer<Object> _createAndCacheValueDeserializer(DeserializationConfig config, JavaType type, JavaType referrer, String refPropName) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<Object> _createAndCache2(DeserializationConfig config, JavaType type, JavaType referrer, String refPropName) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<Object> _createDeserializer(DeserializationConfig config, JavaType type, JavaType referrer, String refPropName) throws JsonMappingException
JsonMappingException
protected void _resolveDeserializer(DeserializationConfig config, ResolvableDeserializer ser) throws JsonMappingException
JsonMappingException
protected JsonDeserializer<Object> _handleUnknownValueDeserializer(JavaType type) throws JsonMappingException
JsonMappingException
protected KeyDeserializer _handleUnknownKeyDeserializer(JavaType type) throws JsonMappingException
JsonMappingException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |