com.fasterxml.jackson.databind
Class DeserializationContext

java.lang.Object
  extended by com.fasterxml.jackson.databind.DeserializationContext
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
DefaultDeserializationContext

public abstract class DeserializationContext
extends Object
implements Serializable

Context for the process of deserialization a single root-level value. Used to allow passing in configuration settings and reusable temporary objects (scrap arrays, containers).

Instance life-cycle is such that an partially configured "blueprint" object is registered with ObjectMapper (and ObjectReader, and when an actual instance is needed for deserialization, a fully configured instance will be created using a method in excented API of sub-class (DefaultDeserializationContext.createInstance(com.fasterxml.jackson.databind.DeserializationConfig, com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.InjectableValues)). Each instance is guaranteed to only be used from single-threaded context; instances may be reused iff no configuration has changed.

Defined as abstract class so that implementations must define methods for reconfiguring blueprints and creating instances.

See Also:
Serialized Form

Field Summary
protected  ArrayBuilders _arrayBuilders
           
protected  DeserializerCache _cache
          Object that handle details of JsonDeserializer caching.
protected  DeserializationConfig _config
          Generic deserialization processing configuration
protected  DateFormat _dateFormat
           
protected  DeserializerFactory _factory
          Read-only factory instance; exposed to let owners (ObjectMapper, ObjectReader) access it.
protected  int _featureFlags
          Bitmap of DeserializationFeatures that are enabled
protected  InjectableValues _injectableValues
          Object used for resolving references to injectable values.
protected  ObjectBuffer _objectBuffer
           
protected  JsonParser _parser
          Currently active parser used for deserialization.
protected  Class<?> _view
          Currently active view, if any.
 
Constructor Summary
protected DeserializationContext(DeserializationContext src, DeserializationConfig config, JsonParser jp, InjectableValues injectableValues)
           
protected DeserializationContext(DeserializationContext src, DeserializerFactory factory)
           
protected DeserializationContext(DeserializerFactory df)
           
protected DeserializationContext(DeserializerFactory df, DeserializerCache cache)
           
 
Method Summary
protected  String _calcName(Class<?> cls)
           
protected  String _desc(String desc)
           
protected  String _valueDesc()
           
 boolean canOverrideAccessModifiers()
          Convenience method, functionally equivalent to:
 Calendar constructCalendar(Date d)
          Convenience method for constructing Calendar instance set to specified time, to be modified and used by caller.
 JavaType constructType(Class<?> cls)
          Convenience method, functionally equivalent to:
abstract  JsonDeserializer<Object> deserializerInstance(Annotated annotated, Object deserDef)
           
protected  String determineClassName(Object instance)
           
 JsonMappingException endOfInputException(Class<?> instClass)
           
 Class<?> findClass(String className)
          Helper method to use for locating Class for given name.
 JsonDeserializer<Object> findContextualValueDeserializer(JavaType type, BeanProperty property)
          Method for finding a value deserializer, and creating a contextual version if necessary, for value reached via specified property.
 Object findInjectableValue(Object valueId, BeanProperty forProperty, Object beanInstance)
           
 KeyDeserializer findKeyDeserializer(JavaType keyType, BeanProperty property)
          Convenience method, functionally same as:
abstract  ReadableObjectId findObjectId(Object id, ObjectIdGenerator<?> generator)
          Method called to find and return entry corresponding to given Object Id: will add an entry if necessary, and never returns null
 JsonDeserializer<Object> findRootValueDeserializer(JavaType type)
          Method for finding a deserializer for root-level value.
 Class<?> getActiveView()
          Accessor for locating currently active view, if any; returns null if no view has been set.
 AnnotationIntrospector getAnnotationIntrospector()
           
 ArrayBuilders getArrayBuilders()
          Method for accessing object useful for building arrays of primitive types (such as int[]).
 Base64Variant getBase64Variant()
          Convenience method for accessing the default Base64 encoding used for decoding base64 encoded binary content.
 DeserializationConfig getConfig()
          Method for accessing configuration setting object for currently active deserialization.
protected  DateFormat getDateFormat()
           
 DeserializerFactory getFactory()
          Method for getting current DeserializerFactory.
 Locale getLocale()
          Method for accessing default Locale to use: convenience method for
 JsonNodeFactory getNodeFactory()
          Convenience method, functionally equivalent to:
 JsonParser getParser()
          Method for accessing the currently active parser.
 TimeZone getTimeZone()
          Method for accessing default TimeZone to use: convenience method for
 TypeFactory getTypeFactory()
          Convenience method, functionally equivalent to:
 boolean handleUnknownProperty(JsonParser jp, JsonDeserializer<?> deser, Object instanceOrClass, String propName)
          Method deserializers can call to inform configured DeserializationProblemHandlers of an unrecognized property.
 boolean hasValueDeserializerFor(JavaType type)
          Method for checking whether we could find a deserializer for given type.
 JsonMappingException instantiationException(Class<?> instClass, String msg)
           
 JsonMappingException instantiationException(Class<?> instClass, Throwable t)
          Helper method for constructing instantiation exception for specified type, to indicate problem with physically constructing instance of specified class (missing constructor, exception from constructor)
 boolean isEnabled(DeserializationFeature feat)
          Convenience method for checking whether specified on/off feature is enabled
 boolean isEnabled(MapperFeature feat)
           
abstract  KeyDeserializer keyDeserializerInstance(Annotated annotated, Object deserDef)
           
 ObjectBuffer leaseObjectBuffer()
          Method that can be used to get access to a reusable ObjectBuffer, useful for efficiently constructing Object arrays and Lists.
 JsonMappingException mappingException(Class<?> targetClass)
          Helper method for constructing generic mapping exception for specified type
 JsonMappingException mappingException(Class<?> targetClass, JsonToken token)
           
 JsonMappingException mappingException(String message)
          Helper method for constructing generic mapping exception with specified message and current location information
abstract  ObjectIdGenerator<?> objectIdGeneratorInstance(Annotated annotated, ObjectIdInfo objectIdInfo)
           
 Date parseDate(String dateStr)
          Convenience method for parsing a Date from given String, using currently configured date format (accessed using MapperConfig.getDateFormat()).
 void reportUnknownProperty(Object instanceOrClass, String fieldName, JsonDeserializer<?> deser)
          Helper method for reporting a problem with unhandled unknown exception
 void returnObjectBuffer(ObjectBuffer buf)
          Method to call to return object buffer previously leased with leaseObjectBuffer().
 JsonMappingException unknownTypeException(JavaType type, String id)
          Helper method for constructing exception to indicate that given type id (parsed from JSON) could not be converted to a Java type.
 JsonMappingException weirdKeyException(Class<?> keyClass, String keyValue, String msg)
          Helper method for constructing exception to indicate that given JSON Object field name was not in format to be able to deserialize specified key type.
 JsonMappingException weirdNumberException(Class<?> instClass, String msg)
          Deprecated. 
 JsonMappingException weirdNumberException(Number value, Class<?> instClass, String msg)
          Helper method for constructing exception to indicate that input JSON Number was not suitable for deserializing into given target type.
 JsonMappingException weirdStringException(Class<?> instClass, String msg)
          Deprecated. Since 2.1 should use variant that takes value
 JsonMappingException weirdStringException(String value, Class<?> instClass, String msg)
          Method that will construct an exception suitable for throwing when some String values are acceptable, but the one encountered is not.
 JsonMappingException wrongTokenException(JsonParser jp, JsonToken expToken, String msg)
          Helper method for indicating that the current token was expected to be another token.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_cache

protected final DeserializerCache _cache
Object that handle details of JsonDeserializer caching.


_factory

protected final DeserializerFactory _factory
Read-only factory instance; exposed to let owners (ObjectMapper, ObjectReader) access it.


_config

protected final DeserializationConfig _config
Generic deserialization processing configuration


_featureFlags

protected final int _featureFlags
Bitmap of DeserializationFeatures that are enabled


_view

protected final Class<?> _view
Currently active view, if any.


_parser

protected transient JsonParser _parser
Currently active parser used for deserialization. May be different from the outermost parser when content is buffered.


_injectableValues

protected final InjectableValues _injectableValues
Object used for resolving references to injectable values.


_arrayBuilders

protected transient ArrayBuilders _arrayBuilders

_objectBuffer

protected transient ObjectBuffer _objectBuffer

_dateFormat

protected transient DateFormat _dateFormat
Constructor Detail

DeserializationContext

protected DeserializationContext(DeserializerFactory df)

DeserializationContext

protected DeserializationContext(DeserializerFactory df,
                                 DeserializerCache cache)

DeserializationContext

protected DeserializationContext(DeserializationContext src,
                                 DeserializerFactory factory)

DeserializationContext

protected DeserializationContext(DeserializationContext src,
                                 DeserializationConfig config,
                                 JsonParser jp,
                                 InjectableValues injectableValues)
Method Detail

getFactory

public DeserializerFactory getFactory()
Method for getting current DeserializerFactory.


getConfig

public DeserializationConfig getConfig()
Method for accessing configuration setting object for currently active deserialization.


isEnabled

public final boolean isEnabled(DeserializationFeature feat)
Convenience method for checking whether specified on/off feature is enabled


isEnabled

public final boolean isEnabled(MapperFeature feat)

getAnnotationIntrospector

public final AnnotationIntrospector getAnnotationIntrospector()

getParser

public final JsonParser getParser()
Method for accessing the currently active parser. May be different from the outermost parser when content is buffered.

Use of this method is discouraged: if code has direct access to the active parser, that should be used instead.


findInjectableValue

public final Object findInjectableValue(Object valueId,
                                        BeanProperty forProperty,
                                        Object beanInstance)

getActiveView

public final Class<?> getActiveView()
Accessor for locating currently active view, if any; returns null if no view has been set.


canOverrideAccessModifiers

public final boolean canOverrideAccessModifiers()
Convenience method, functionally equivalent to:
  getConfig().canOverrideAccessModifiers();
 


getBase64Variant

public final Base64Variant getBase64Variant()
Convenience method for accessing the default Base64 encoding used for decoding base64 encoded binary content. Same as calling:
  getConfig().getBase64Variant();


getNodeFactory

public final JsonNodeFactory getNodeFactory()
Convenience method, functionally equivalent to:
  getConfig().getNodeFactory();
 


getTypeFactory

public final TypeFactory getTypeFactory()
Convenience method, functionally equivalent to:
  getConfig().getTypeFactory();
 


getLocale

public Locale getLocale()
Method for accessing default Locale to use: convenience method for
   getConfig().getLocale();


getTimeZone

public TimeZone getTimeZone()
Method for accessing default TimeZone to use: convenience method for
   getConfig().getTimeZone();


hasValueDeserializerFor

public boolean hasValueDeserializerFor(JavaType type)
Method for checking whether we could find a deserializer for given type.


findContextualValueDeserializer

public final JsonDeserializer<Object> findContextualValueDeserializer(JavaType type,
                                                                      BeanProperty property)
                                                               throws JsonMappingException
Method for finding a value deserializer, and creating a contextual version if necessary, for value reached via specified property.

Throws:
JsonMappingException

findRootValueDeserializer

public final JsonDeserializer<Object> findRootValueDeserializer(JavaType type)
                                                         throws JsonMappingException
Method for finding a deserializer for root-level value.

Throws:
JsonMappingException

findKeyDeserializer

public final KeyDeserializer findKeyDeserializer(JavaType keyType,
                                                 BeanProperty property)
                                          throws JsonMappingException
Convenience method, functionally same as:
  getDeserializerProvider().findKeyDeserializer(getConfig(), propertyType, property);

Throws:
JsonMappingException

findObjectId

public abstract ReadableObjectId findObjectId(Object id,
                                              ObjectIdGenerator<?> generator)
Method called to find and return entry corresponding to given Object Id: will add an entry if necessary, and never returns null


constructType

public final JavaType constructType(Class<?> cls)
Convenience method, functionally equivalent to:
  getConfig().constructType(cls);
 


findClass

public Class<?> findClass(String className)
                   throws ClassNotFoundException
Helper method to use for locating Class for given name. Should be used instead of basic Class.forName(className); as it can try using contextual class loader, or use platform-specific workarounds (like on Android, GAE).

Throws:
ClassNotFoundException

deserializerInstance

public abstract JsonDeserializer<Object> deserializerInstance(Annotated annotated,
                                                              Object deserDef)
                                                       throws JsonMappingException
Throws:
JsonMappingException

keyDeserializerInstance

public abstract KeyDeserializer keyDeserializerInstance(Annotated annotated,
                                                        Object deserDef)
                                                 throws JsonMappingException
Throws:
JsonMappingException

objectIdGeneratorInstance

public abstract ObjectIdGenerator<?> objectIdGeneratorInstance(Annotated annotated,
                                                               ObjectIdInfo objectIdInfo)
                                                        throws JsonMappingException
Throws:
JsonMappingException

leaseObjectBuffer

public final ObjectBuffer leaseObjectBuffer()
Method that can be used to get access to a reusable ObjectBuffer, useful for efficiently constructing Object arrays and Lists. Note that leased buffers should be returned once deserializer is done, to allow for reuse during same round of deserialization.


returnObjectBuffer

public final void returnObjectBuffer(ObjectBuffer buf)
Method to call to return object buffer previously leased with leaseObjectBuffer().

Parameters:
buf - Returned object buffer

getArrayBuilders

public final ArrayBuilders getArrayBuilders()
Method for accessing object useful for building arrays of primitive types (such as int[]).


parseDate

public Date parseDate(String dateStr)
               throws IllegalArgumentException
Convenience method for parsing a Date from given String, using currently configured date format (accessed using MapperConfig.getDateFormat()).

Implementation will handle thread-safety issues related to date formats such that first time this method is called, date format is cloned, and cloned instance will be retained for use during this deserialization round.

Throws:
IllegalArgumentException

constructCalendar

public Calendar constructCalendar(Date d)
Convenience method for constructing Calendar instance set to specified time, to be modified and used by caller.


handleUnknownProperty

public boolean handleUnknownProperty(JsonParser jp,
                                     JsonDeserializer<?> deser,
                                     Object instanceOrClass,
                                     String propName)
                              throws IOException,
                                     JsonProcessingException
Method deserializers can call to inform configured DeserializationProblemHandlers of an unrecognized property.

Throws:
IOException
JsonProcessingException

reportUnknownProperty

public void reportUnknownProperty(Object instanceOrClass,
                                  String fieldName,
                                  JsonDeserializer<?> deser)
                           throws JsonMappingException
Helper method for reporting a problem with unhandled unknown exception

Parameters:
instanceOrClass - Either value being populated (if one has been instantiated), or Class that indicates type that would be (or have been) instantiated
deser - Deserializer that had the problem, if called by deserializer (or on behalf of one)
Throws:
JsonMappingException

mappingException

public JsonMappingException mappingException(Class<?> targetClass)
Helper method for constructing generic mapping exception for specified type


mappingException

public JsonMappingException mappingException(Class<?> targetClass,
                                             JsonToken token)

mappingException

public JsonMappingException mappingException(String message)
Helper method for constructing generic mapping exception with specified message and current location information


instantiationException

public JsonMappingException instantiationException(Class<?> instClass,
                                                   Throwable t)
Helper method for constructing instantiation exception for specified type, to indicate problem with physically constructing instance of specified class (missing constructor, exception from constructor)


instantiationException

public JsonMappingException instantiationException(Class<?> instClass,
                                                   String msg)

weirdStringException

@Deprecated
public JsonMappingException weirdStringException(Class<?> instClass,
                                                            String msg)
Deprecated. Since 2.1 should use variant that takes value

Method that will construct an exception suitable for throwing when some String values are acceptable, but the one encountered is not.


weirdStringException

public JsonMappingException weirdStringException(String value,
                                                 Class<?> instClass,
                                                 String msg)
Method that will construct an exception suitable for throwing when some String values are acceptable, but the one encountered is not.

Parameters:
value - String value from input being deserialized
instClass - Type that String should be deserialized into
msg - Message that describes specific problem
Since:
2.1

weirdNumberException

@Deprecated
public JsonMappingException weirdNumberException(Class<?> instClass,
                                                            String msg)
Deprecated. 

Helper method for constructing exception to indicate that input JSON Number was not suitable for deserializing into given type.


weirdNumberException

public JsonMappingException weirdNumberException(Number value,
                                                 Class<?> instClass,
                                                 String msg)
Helper method for constructing exception to indicate that input JSON Number was not suitable for deserializing into given target type.


weirdKeyException

public JsonMappingException weirdKeyException(Class<?> keyClass,
                                              String keyValue,
                                              String msg)
Helper method for constructing exception to indicate that given JSON Object field name was not in format to be able to deserialize specified key type.


wrongTokenException

public JsonMappingException wrongTokenException(JsonParser jp,
                                                JsonToken expToken,
                                                String msg)
Helper method for indicating that the current token was expected to be another token.


unknownTypeException

public JsonMappingException unknownTypeException(JavaType type,
                                                 String id)
Helper method for constructing exception to indicate that given type id (parsed from JSON) could not be converted to a Java type.


endOfInputException

public JsonMappingException endOfInputException(Class<?> instClass)

getDateFormat

protected DateFormat getDateFormat()

determineClassName

protected String determineClassName(Object instance)

_calcName

protected String _calcName(Class<?> cls)

_valueDesc

protected String _valueDesc()

_desc

protected String _desc(String desc)


Copyright © 2012 FasterXML. All Rights Reserved.