com.fasterxml.jackson.databind.deser

## Class DefaultDeserializationContext

- java.lang.Object
- - com.fasterxml.jackson.databind.DatabindContext
  - - com.fasterxml.jackson.databind.DeserializationContext
    - - com.fasterxml.jackson.databind.deser.DefaultDeserializationContext

All Implemented Interfaces:
  Serializable

Direct Known Subclasses:
  DefaultDeserializationContext.Impl

    public abstract class DefaultDeserializationContext
    extends DeserializationContext
    implements Serializable

Complete `DeserializationContext` implementation that adds extended API for `ObjectMapper` (and `ObjectReader`) to call, as well as implements certain parts that base class has left abstract. The remaining abstract methods (`createInstance(com.fasterxml.jackson.databind.DeserializationConfig, com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.InjectableValues)`, `with(com.fasterxml.jackson.databind.deser.DeserializerFactory)`) are left so that custom implementations will properly implement them to return intended subtype.

See Also:
  Serialized Form

### Nested Class Summary

Nested Classes
`static class` `DefaultDeserializationContext.Impl` Actual full concrete implementation

### Field Summary

Fields
`protected LinkedHashMap<ObjectIdGenerator.IdKey,ReadableObjectId>` `_objectIds`

### Fields inherited from class com.fasterxml.jackson.databind.DeserializationContext

`_arrayBuilders, _attributes, _cache, _config, _currentType, _dateFormat, _factory, _featureFlags, _injectableValues, _objectBuffer, _parser, _view`

### Constructor Summary

Constructors
`protected` `DefaultDeserializationContext(DefaultDeserializationContext src)`
`protected` `DefaultDeserializationContext(DefaultDeserializationContext src, DeserializationConfig config, JsonParser jp, InjectableValues values)`
`protected` `DefaultDeserializationContext(DefaultDeserializationContext src, DeserializerFactory factory)`
`protected` `DefaultDeserializationContext(DeserializerFactory df, DeserializerCache cache)` Constructor that will pass specified deserializer factory and cache: cache may be null (in which case default implementation will be used), factory cannot be null

### Method Summary

Methods
`void` `checkUnresolvedObjectId()` Method called to ensure that every object id encounter during processing are resolved.
`DefaultDeserializationContext` `copy()` Method needed to ensure that `ObjectMapper.copy()` will work properly; specifically, that caches are cleared, but settings will otherwise remain identical; and that no sharing of state occurs.
`abstract DefaultDeserializationContext` `createInstance(DeserializationConfig config, JsonParser jp, InjectableValues values)` Method called to create actual usable per-deserialization context instance.
`protected ReadableObjectId` `createReadableObjectId(ObjectIdGenerator.IdKey key)` Overridable factory method to create a new instance of ReadableObjectId or its subclass.
`JsonDeserializer<Object>` `deserializerInstance(Annotated ann, Object deserDef)`
`ReadableObjectId` `findObjectId(Object id, ObjectIdGenerator<?> gen, ObjectIdResolver resolverType)` Method called to find and return entry corresponding to given Object Id: will add an entry if necessary, and never returns null
`KeyDeserializer` `keyDeserializerInstance(Annotated ann, Object deserDef)`
`protected boolean` `tryToResolveUnresolvedObjectId(ReadableObjectId roid)` Overridable helper method called to try to resolve otherwise unresolvable `ReadableObjectId`; and if this succeeds, return `true` to indicate problem has been resolved in some way, so that caller can avoid reporting it as an error.
`abstract DefaultDeserializationContext` `with(DeserializerFactory factory)` Fluent factory method used for constructing a blueprint instance with different factory

### Methods inherited from class com.fasterxml.jackson.databind.DeserializationContext

`_isCompatible, canOverrideAccessModifiers, constructCalendar, constructType, endOfInputException, findClass, findContextualValueDeserializer, findInjectableValue, findKeyDeserializer, findNonContextualValueDeserializer, findRootValueDeserializer, getActiveView, getAnnotationIntrospector, getArrayBuilders, getAttribute, getBase64Variant, getConfig, getContextualType, getDateFormat, getDefaultPropertyFormat, getDeserializationFeatures, getFactory, getLocale, getNodeFactory, getParser, getTimeZone, getTypeFactory, handleInstantiationProblem, handleMissingInstantiator, handleMissingTypeId, handlePrimaryContextualization, handleSecondaryContextualization, handleUnexpectedToken, handleUnexpectedToken, handleUnknownProperty, handleUnknownTypeId, handleWeirdKey, handleWeirdNativeValue, handleWeirdNumberValue, handleWeirdStringValue, hasDeserializationFeatures, hasSomeOfFeatures, hasValueDeserializerFor, instantiationException, instantiationException, invalidTypeIdException, isEnabled, isEnabled, leaseObjectBuffer, mappingException, mappingException, mappingException, mappingException, missingTypeIdException, parseDate, readPropertyValue, readPropertyValue, readValue, readValue, reportBadDefinition, reportBadMerge, reportBadPropertyDefinition, reportBadTypeDefinition, reportInputMismatch, reportInputMismatch, reportInputMismatch, reportInputMismatch, reportMappingException, reportMissingContent, reportTrailingTokens, reportUnknownProperty, reportUnresolvedObjectId, reportWrongTokenException, reportWrongTokenException, reportWrongTokenException, reportWrongTokenException, returnObjectBuffer, setAttribute, unknownTypeException, weirdKeyException, weirdNativeValueException, weirdNumberException, weirdStringException, wrongTokenException, wrongTokenException, wrongTokenException`

### Methods inherited from class com.fasterxml.jackson.databind.DatabindContext

`_colonConcat, _desc, _format, _quotedString, _truncate, constructSpecializedType, constructType, converterInstance, objectIdGeneratorInstance, objectIdResolverInstance, reportBadDefinition, resolveSubType`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### _objectIds

    protected transient LinkedHashMap<ObjectIdGenerator.IdKey,ReadableObjectId> _objectIds

### Constructor Detail

#### DefaultDeserializationContext

    protected DefaultDeserializationContext(DeserializerFactory df,
                                 DeserializerCache cache)

Constructor that will pass specified deserializer factory and cache: cache may be null (in which case default implementation will be used), factory cannot be null

#### DefaultDeserializationContext

    protected DefaultDeserializationContext(DefaultDeserializationContext src,
                                 DeserializationConfig config,
                                 JsonParser jp,
                                 InjectableValues values)

#### DefaultDeserializationContext

    protected DefaultDeserializationContext(DefaultDeserializationContext src,
                                 DeserializerFactory factory)

#### DefaultDeserializationContext

    protected DefaultDeserializationContext(DefaultDeserializationContext src)

Since:
  2.4.4

### Method Detail

#### copy

    public DefaultDeserializationContext copy()

Method needed to ensure that `ObjectMapper.copy()` will work properly; specifically, that caches are cleared, but settings will otherwise remain identical; and that no sharing of state occurs.

Since:
  2.4.4

#### findObjectId

    public ReadableObjectId findObjectId(Object id,
                                ObjectIdGenerator<?> gen,
                                ObjectIdResolver resolverType)

Description copied from class: `DeserializationContext`
Method called to find and return entry corresponding to given Object Id: will add an entry if necessary, and never returns null

Specified by:
  `findObjectId` in class `DeserializationContext`

#### createReadableObjectId

    protected ReadableObjectId createReadableObjectId(ObjectIdGenerator.IdKey key)

Overridable factory method to create a new instance of ReadableObjectId or its subclass. It is meant to be overridden when custom ReadableObjectId is needed for `tryToResolveUnresolvedObjectId(com.fasterxml.jackson.databind.deser.impl.ReadableObjectId)`. Default implementation simply constructs default `ReadableObjectId` with given `key`.

Parameters:
  `key` - The key to associate with the new ReadableObjectId
Returns:
  New ReadableObjectId instance
Since:
  2.7

#### checkUnresolvedObjectId

    public void checkUnresolvedObjectId()
                                 throws UnresolvedForwardReference

Description copied from class: `DeserializationContext`
Method called to ensure that every object id encounter during processing are resolved.

Specified by:
  `checkUnresolvedObjectId` in class `DeserializationContext`
Throws:
  `UnresolvedForwardReference`

#### tryToResolveUnresolvedObjectId

    protected boolean tryToResolveUnresolvedObjectId(ReadableObjectId roid)

Overridable helper method called to try to resolve otherwise unresolvable `ReadableObjectId`; and if this succeeds, return `true` to indicate problem has been resolved in some way, so that caller can avoid reporting it as an error.

Default implementation simply calls `ReadableObjectId.tryToResolveUnresolved(com.fasterxml.jackson.databind.DeserializationContext)` and returns whatever it returns.

Since:
  2.6

#### deserializerInstance

    public JsonDeserializer<Object> deserializerInstance(Annotated ann,
                                                Object deserDef)
                                                  throws JsonMappingException

Specified by:
  `deserializerInstance` in class `DeserializationContext`
Throws:
  `JsonMappingException`

#### keyDeserializerInstance

    public final KeyDeserializer keyDeserializerInstance(Annotated ann,
                                          Object deserDef)
                                                  throws JsonMappingException

Specified by:
  `keyDeserializerInstance` in class `DeserializationContext`
Throws:
  `JsonMappingException`

#### with

    public abstract DefaultDeserializationContext with(DeserializerFactory factory)

Fluent factory method used for constructing a blueprint instance with different factory

#### createInstance

    public abstract DefaultDeserializationContext createInstance(DeserializationConfig config,
                                               JsonParser jp,
                                               InjectableValues values)

Method called to create actual usable per-deserialization context instance.