public abstract class DeserializationContext extends DatabindContext implements Serializable
Instance life-cycle is such that a partially configured "blueprint" object
is registered with ObjectMapper
(and ObjectReader
,
and when actual instance is needed for deserialization,
a fully configured instance will be created using a method in extended internal
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 if (and only if) no configuration has changed.
Defined as abstract class so that implementations must define methods for reconfiguring blueprints and creating instances.
Modifier and Type | Field and Description |
---|---|
protected ArrayBuilders |
_arrayBuilders |
protected ContextAttributes |
_attributes
Lazily-constructed holder for per-call attributes.
|
protected DeserializerCache |
_cache
Object that handle details of
JsonDeserializer caching. |
protected DeserializationConfig |
_config
Generic deserialization processing configuration
|
protected LinkedNode<JavaType> |
_currentType
Type of
JsonDeserializer (or, more specifically,
ContextualDeserializer ) that is being
contextualized currently. |
protected DateFormat |
_dateFormat |
protected DeserializerFactory |
_factory
Read-only factory instance; exposed to let
owners (
ObjectMapper , ObjectReader )
access it. |
protected int |
_featureFlags
Bitmap of
DeserializationFeature s that are enabled |
protected InjectableValues |
_injectableValues
Object used for resolving references to injectable
values.
|
protected ObjectBuffer |
_objectBuffer |
protected com.fasterxml.jackson.core.JsonParser |
_parser
Currently active parser used for deserialization.
|
protected com.fasterxml.jackson.core.util.JacksonFeatureSet<com.fasterxml.jackson.core.StreamReadCapability> |
_readCapabilities
Capabilities of the input format.
|
protected Class<?> |
_view
Currently active view, if any.
|
Modifier | Constructor and Description |
---|---|
protected |
DeserializationContext(DeserializationContext src)
Copy-constructor for use with
copy() by ObjectMapper.copy() . |
protected |
DeserializationContext(DeserializationContext src,
DeserializationConfig config)
Constructor used for creating bogus per-call style instance, but
without underlying parser: needed for deserializer pre-fetching
|
protected |
DeserializationContext(DeserializationContext src,
DeserializationConfig config,
com.fasterxml.jackson.core.JsonParser p,
InjectableValues injectableValues)
Constructor used for creating actual per-call instances.
|
protected |
DeserializationContext(DeserializationContext src,
DeserializerCache cache) |
protected |
DeserializationContext(DeserializationContext src,
DeserializerFactory factory) |
protected |
DeserializationContext(DeserializerFactory df,
DeserializerCache cache) |
Modifier and Type | Method and Description |
---|---|
protected DateFormat |
_getDateFormat() |
protected boolean |
_isCompatible(Class<?> target,
Object value) |
protected String |
_shapeForToken(com.fasterxml.jackson.core.JsonToken t)
Helper method for constructing description like "Object value" given
JsonToken encountered. |
TokenBuffer |
bufferAsCopyOfValue(com.fasterxml.jackson.core.JsonParser p)
Convenience method, equivalent to:
TokenBuffer buffer = ctxt.bufferForInputBuffering(parser);
buffer.copyCurrentStructure(parser);
return buffer;
NOTE: the whole "current value" that parser points to is read and
buffered, including Object and Array values (if parser pointing to
start marker).
|
TokenBuffer |
bufferForInputBuffering()
Convenience method that is equivalent to:
ctxt.bufferForInputBuffering(ctxt.getParser());
|
TokenBuffer |
bufferForInputBuffering(com.fasterxml.jackson.core.JsonParser p)
Factory method used for creating
TokenBuffer to temporarily
contain copy of content read from specified parser; usually for purpose
of reading contents later on (possibly augmeneted with injected additional
content) |
boolean |
canOverrideAccessModifiers()
Convenience method for accessing serialization view in use (if any); equivalent to:
getConfig().canOverrideAccessModifiers();
|
abstract void |
checkUnresolvedObjectId()
Method called to ensure that every object id encounter during processing
are resolved.
|
Calendar |
constructCalendar(Date d)
Convenience method for constructing Calendar instance set
to specified time, to be modified and used by caller.
|
JavaType |
constructSpecializedType(JavaType baseType,
Class<?> subclass)
Convenience method for constructing subtypes, retaining generic
type parameter (if any).
|
JavaType |
constructType(Class<?> cls)
Convenience method, functionally equivalent to:
getConfig().constructType(cls);
|
abstract JsonDeserializer<Object> |
deserializerInstance(Annotated annotated,
Object deserDef) |
String |
extractScalarFromObject(com.fasterxml.jackson.core.JsonParser p,
JsonDeserializer<?> deser,
Class<?> scalarType)
Method to call in case incoming shape is Object Value (and parser thereby
points to
JsonToken.START_OBJECT token),
but a Scalar value (potentially coercible from String value) is expected. |
Class<?> |
findClass(String className)
Helper method that is to be used when resolving basic class name into
Class instance, the reason being that it may be necessary to work around
various ClassLoader limitations, as well as to handle primitive type
signatures.
|
CoercionAction |
findCoercionAction(LogicalType targetType,
Class<?> targetClass,
CoercionInputShape inputShape)
General-purpose accessor for finding what to do when specified coercion
from shape that is now always allowed to be coerced from is requested.
|
CoercionAction |
findCoercionFromBlankString(LogicalType targetType,
Class<?> targetClass,
CoercionAction actionIfBlankNotAllowed)
More specialized accessor called in case of input being a blank
String (one consisting of only white space characters with length of at least one).
|
JsonDeserializer<Object> |
findContextualValueDeserializer(JavaType type,
BeanProperty prop)
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 prop)
Convenience method, functionally same as:
getDeserializerProvider().findKeyDeserializer(getConfig(), prop.getType(), prop);
|
JsonDeserializer<Object> |
findNonContextualValueDeserializer(JavaType type)
Variant that will try to locate deserializer for current type, but without
performing any contextualization (unlike
findContextualValueDeserializer(com.fasterxml.jackson.databind.JavaType, com.fasterxml.jackson.databind.BeanProperty) )
or checking for need to create a TypeDeserializer (unlike
findRootValueDeserializer(JavaType) . |
abstract ReadableObjectId |
findObjectId(Object id,
com.fasterxml.jackson.annotation.ObjectIdGenerator<?> generator,
com.fasterxml.jackson.annotation.ObjectIdResolver resolver)
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()
Convenience method for accessing serialization view in use (if any); equivalent to:
getConfig().getAnnotationIntrospector();
|
ArrayBuilders |
getArrayBuilders()
Method for accessing object useful for building arrays of
primitive types (such as int[]).
|
Object |
getAttribute(Object key)
Method for accessing attributes available in this context.
|
com.fasterxml.jackson.core.Base64Variant |
getBase64Variant()
Convenience method for accessing the default Base64 encoding
used for decoding base64 encoded binary content.
|
DeserializationConfig |
getConfig()
Accessor to currently active configuration (both per-request configs
and per-mapper config).
|
JavaType |
getContextualType()
Accessor to
JavaType of currently contextualized
ContextualDeserializer , if any. |
DatatypeFeatures |
getDatatypeFeatures() |
com.fasterxml.jackson.annotation.JsonFormat.Value |
getDefaultPropertyFormat(Class<?> baseType) |
int |
getDeserializationFeatures()
Bulk access method for getting the bit mask of all
DeserializationFeature s
that are enabled. |
DeserializerFactory |
getFactory()
Method for getting current
DeserializerFactory . |
Locale |
getLocale()
Method for accessing default Locale to use: convenience method for
getConfig().getLocale();
|
JsonNodeFactory |
getNodeFactory()
Convenience method, functionally equivalent to:
getConfig().getNodeFactory();
|
com.fasterxml.jackson.core.JsonParser |
getParser()
Method for accessing the currently active parser.
|
TimeZone |
getTimeZone()
Method for accessing default TimeZone to use: convenience method for
getConfig().getTimeZone();
|
TypeFactory |
getTypeFactory() |
void |
handleBadMerge(JsonDeserializer<?> deser)
Method that deserializer may call if it is called to do an update ("merge")
but deserializer operates on a non-mergeable type.
|
Object |
handleInstantiationProblem(Class<?> instClass,
Object argument,
Throwable t)
Method that deserializers should call if they fail to instantiate value
due to an exception that was thrown by constructor (or other mechanism used
to create instances).
|
Object |
handleMissingInstantiator(Class<?> instClass,
ValueInstantiator valueInst,
com.fasterxml.jackson.core.JsonParser p,
String msg,
Object... msgArgs)
Method that deserializers should call if they fail to instantiate value
due to lack of viable instantiator (usually creator, that is, constructor
or static factory method).
|
JavaType |
handleMissingTypeId(JavaType baseType,
TypeIdResolver idResolver,
String extraDesc) |
JsonDeserializer<?> |
handlePrimaryContextualization(JsonDeserializer<?> deser,
BeanProperty prop,
JavaType type)
Method called for primary property deserializers (ones
directly created to deserialize values of a POJO property),
to handle details of resolving
ContextualDeserializer with given property context. |
JsonDeserializer<?> |
handleSecondaryContextualization(JsonDeserializer<?> deser,
BeanProperty prop,
JavaType type)
Method called for secondary property deserializers (ones
NOT directly created to deal with an annotatable POJO property,
but instead created as a component -- such as value deserializers
for structured types, or deserializers for root values)
to handle details of resolving
ContextualDeserializer with given property context. |
Object |
handleUnexpectedToken(Class<?> instClass,
com.fasterxml.jackson.core.JsonParser p)
Method that deserializers should call if the first token of the value to
deserialize is of unexpected type (that is, type of token that deserializer
cannot handle).
|
Object |
handleUnexpectedToken(Class<?> instClass,
com.fasterxml.jackson.core.JsonToken t,
com.fasterxml.jackson.core.JsonParser p,
String msg,
Object... msgArgs)
Method that deserializers should call if the first token of the value to
deserialize is of unexpected type (that is, type of token that deserializer
cannot handle).
|
Object |
handleUnexpectedToken(JavaType targetType,
com.fasterxml.jackson.core.JsonParser p)
Method that deserializers should call if the first token of the value to
deserialize is of unexpected type (that is, type of token that deserializer
cannot handle).
|
Object |
handleUnexpectedToken(JavaType targetType,
com.fasterxml.jackson.core.JsonToken t,
com.fasterxml.jackson.core.JsonParser p,
String msg,
Object... msgArgs)
Method that deserializers should call if the first token of the value to
deserialize is of unexpected type (that is, type of token that deserializer
cannot handle).
|
boolean |
handleUnknownProperty(com.fasterxml.jackson.core.JsonParser p,
JsonDeserializer<?> deser,
Object instanceOrClass,
String propName)
Method that deserializers should call if they encounter an unrecognized
property (and once that is not explicitly designed as ignorable), to
inform possibly configured
DeserializationProblemHandler s and
let it handle the problem. |
JavaType |
handleUnknownTypeId(JavaType baseType,
String id,
TypeIdResolver idResolver,
String extraDesc)
Method that deserializers should call if they encounter a type id
(for polymorphic deserialization) that cannot be resolved to an
actual type; usually since there is no mapping defined.
|
Object |
handleWeirdKey(Class<?> keyClass,
String keyValue,
String msg,
Object... msgArgs)
Method that deserializers should call if they encounter a String value
that cannot be converted to expected key of a
Map
valued property. |
Object |
handleWeirdNativeValue(JavaType targetType,
Object badValue,
com.fasterxml.jackson.core.JsonParser p) |
Object |
handleWeirdNumberValue(Class<?> targetClass,
Number value,
String msg,
Object... msgArgs)
Method that deserializers should call if they encounter a numeric value
that cannot be converted to target property type, in cases where some
numeric values could be acceptable (either with different settings,
or different numeric value).
|
Object |
handleWeirdStringValue(Class<?> targetClass,
String value,
String msg,
Object... msgArgs)
Method that deserializers should call if they encounter a String value
that cannot be converted to target property type, in cases where some
String values could be acceptable (either with different settings,
or different value).
|
boolean |
hasDeserializationFeatures(int featureMask)
Bulk access method for checking that all features specified by
mask are enabled.
|
boolean |
hasSomeOfFeatures(int featureMask)
Bulk access method for checking that at least one of features specified by
mask is enabled.
|
boolean |
hasValueDeserializerFor(JavaType type,
AtomicReference<Throwable> cause)
Method for checking whether we could find a deserializer
for given type.
|
JsonMappingException |
instantiationException(Class<?> instClass,
String msg0)
Helper method for constructing instantiation exception for specified type,
to indicate that instantiation failed due to missing instantiator
(creator; constructor or factory method).
|
JsonMappingException |
instantiationException(Class<?> instClass,
Throwable cause)
Helper method for constructing instantiation exception for specified type,
to indicate problem with physically constructing instance of
specified class (missing constructor, exception from constructor)
Note that most of the time this method should NOT be called directly; instead,
handleInstantiationProblem(java.lang.Class<?>, java.lang.Object, java.lang.Throwable) should be called which will call this method
if necessary. |
JsonMappingException |
invalidTypeIdException(JavaType baseType,
String typeId,
String extraDesc)
Helper method for constructing exception to indicate that given type id
could not be resolved to a valid subtype of specified base type.
|
boolean |
isEnabled(DatatypeFeature feature)
Method for checking whether specified datatype
feature is enabled or not.
|
boolean |
isEnabled(DeserializationFeature feat)
Convenience method for checking whether specified on/off
feature is enabled
|
boolean |
isEnabled(MapperFeature feature)
Convenience method for checking whether specified Mapper
feature is enabled or not.
|
boolean |
isEnabled(com.fasterxml.jackson.core.StreamReadCapability cap)
Accessor for checking whether input format has specified capability
or not.
|
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 |
missingTypeIdException(JavaType baseType,
String extraDesc) |
Date |
parseDate(String dateStr)
Convenience method for parsing a Date from given String, using
currently configured date format (accessed using
MapperConfig.getDateFormat() ). |
<T> T |
readPropertyValue(com.fasterxml.jackson.core.JsonParser p,
BeanProperty prop,
Class<T> type)
Convenience method that may be used by composite or container deserializers,
for reading one-off values for the composite type, taking into account
annotations that the property (passed to this method -- usually property that
has custom serializer that called this method) has.
|
<T> T |
readPropertyValue(com.fasterxml.jackson.core.JsonParser p,
BeanProperty prop,
JavaType type)
Same as
readPropertyValue(JsonParser, BeanProperty, Class) but with
fully resolved JavaType as target: needs to be used for generic types,
for example. |
JsonNode |
readTree(com.fasterxml.jackson.core.JsonParser p)
Convenience method for reading the value that passed
JsonParser
points to as a JsonNode . |
<T> T |
readTreeAsValue(JsonNode n,
Class<T> targetType)
Helper method similar to
ObjectReader.treeToValue(TreeNode, Class)
which will read contents of given tree (JsonNode )
and bind them into specified target type. |
<T> T |
readTreeAsValue(JsonNode n,
JavaType targetType)
Same as
readTreeAsValue(JsonNode, Class) but will fully resolved
JavaType as targetType
NOTE: deserializer implementations should be careful not to try to recursively
deserialize into target type deserializer has registered itself to handle. |
<T> T |
readValue(com.fasterxml.jackson.core.JsonParser p,
Class<T> type)
Convenience method that may be used by composite or container deserializers,
for reading one-off values contained (for sequences, it is more efficient
to actually fetch deserializer once for the whole collection).
|
<T> T |
readValue(com.fasterxml.jackson.core.JsonParser p,
JavaType type) |
<T> T |
reportBadCoercion(JsonDeserializer<?> src,
Class<?> targetType,
Object inputValue,
String msg,
Object... msgArgs)
Helper method used to indicate a problem with input in cases where specific
input coercion was not allowed.
|
<T> T |
reportBadDefinition(JavaType type,
String msg)
Helper method called to indicate a generic problem that stems from type
definition(s), not input data, or input/output state; typically this
means throwing a
InvalidDefinitionException . |
<T> T |
reportBadPropertyDefinition(BeanDescription bean,
BeanPropertyDefinition prop,
String msg,
Object... msgArgs)
Helper method called to indicate problem in POJO (serialization) definitions or settings
regarding specific property (of a type), unrelated to actual JSON content to map.
|
<T> T |
reportBadTypeDefinition(BeanDescription bean,
String msg,
Object... msgArgs)
Helper method called to indicate problem in POJO (serialization) definitions or settings
regarding specific Java type, unrelated to actual JSON content to map.
|
<T> T |
reportInputMismatch(BeanProperty prop,
String msg,
Object... msgArgs)
Helper method used to indicate a problem with input in cases where more
specific
reportXxx() method was not available. |
<T> T |
reportInputMismatch(Class<?> targetType,
String msg,
Object... msgArgs)
Helper method used to indicate a problem with input in cases where more
specific
reportXxx() method was not available. |
<T> T |
reportInputMismatch(JavaType targetType,
String msg,
Object... msgArgs)
Helper method used to indicate a problem with input in cases where more
specific
reportXxx() method was not available. |
<T> T |
reportInputMismatch(JsonDeserializer<?> src,
String msg,
Object... msgArgs)
Helper method used to indicate a problem with input in cases where more
specific
reportXxx() method was not available. |
<T> T |
reportPropertyInputMismatch(Class<?> targetType,
String propertyName,
String msg,
Object... msgArgs)
Helper method used to indicate a problem with input in cases where more
specific
reportXxx() method was not available. |
<T> T |
reportPropertyInputMismatch(JavaType targetType,
String propertyName,
String msg,
Object... msgArgs)
Helper method used to indicate a problem with input in cases where more
specific
reportXxx() method was not available. |
<T> T |
reportTrailingTokens(Class<?> targetType,
com.fasterxml.jackson.core.JsonParser p,
com.fasterxml.jackson.core.JsonToken trailingToken) |
<T> T |
reportUnresolvedObjectId(ObjectIdReader oidReader,
Object bean) |
void |
reportWrongTokenException(Class<?> targetType,
com.fasterxml.jackson.core.JsonToken expToken,
String msg,
Object... msgArgs)
Method for deserializers to call
when the token encountered was of type different than what should
be seen at that position, usually within a sequence of expected tokens.
|
void |
reportWrongTokenException(JavaType targetType,
com.fasterxml.jackson.core.JsonToken expToken,
String msg,
Object... msgArgs)
Method for deserializers to call
when the token encountered was of type different than what should
be seen at that position, usually within a sequence of expected tokens.
|
void |
reportWrongTokenException(JsonDeserializer<?> deser,
com.fasterxml.jackson.core.JsonToken expToken,
String msg,
Object... msgArgs)
Method for deserializers to call
when the token encountered was of type different than what should
be seen at that position, usually within a sequence of expected tokens.
|
void |
returnObjectBuffer(ObjectBuffer buf)
Method to call to return object buffer previously leased with
leaseObjectBuffer() . |
DeserializationContext |
setAttribute(Object key,
Object value)
Method for setting per-call value of given attribute.
|
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 |
weirdNativeValueException(Object value,
Class<?> instClass)
Helper method for constructing exception to indicate that input JSON
token of type "native value" (see
JsonToken.VALUE_EMBEDDED_OBJECT )
is of incompatible type (and there is no delegating creator or such to use)
and can not be used to construct value of specified type (usually POJO). |
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(String value,
Class<?> instClass,
String msgBase)
Helper method for constructing exception to indicate that input JSON
String was not suitable for deserializing into given target type.
|
JsonMappingException |
wrongTokenException(com.fasterxml.jackson.core.JsonParser p,
Class<?> targetType,
com.fasterxml.jackson.core.JsonToken expToken,
String extra) |
JsonMappingException |
wrongTokenException(com.fasterxml.jackson.core.JsonParser p,
JavaType targetType,
com.fasterxml.jackson.core.JsonToken expToken,
String extra)
Helper method for constructing
JsonMappingException to indicate
that the token encountered was of type different than what should
be seen at that position, usually within a sequence of expected tokens. |
_colonConcat, _desc, _format, _quotedString, _throwNotASubtype, _throwSubtypeClassNotAllowed, _throwSubtypeNameNotAllowed, _truncate, constructType, converterInstance, objectIdGeneratorInstance, objectIdResolverInstance, reportBadDefinition, resolveAndValidateSubType, resolveSubType
protected final DeserializerCache _cache
JsonDeserializer
caching.protected final DeserializerFactory _factory
ObjectMapper
, ObjectReader
)
access it.protected final DeserializationConfig _config
protected final int _featureFlags
DeserializationFeature
s that are enabledprotected final com.fasterxml.jackson.core.util.JacksonFeatureSet<com.fasterxml.jackson.core.StreamReadCapability> _readCapabilities
protected final Class<?> _view
protected transient com.fasterxml.jackson.core.JsonParser _parser
protected final InjectableValues _injectableValues
protected transient ArrayBuilders _arrayBuilders
protected transient ObjectBuffer _objectBuffer
protected transient DateFormat _dateFormat
protected transient ContextAttributes _attributes
protected LinkedNode<JavaType> _currentType
JsonDeserializer
(or, more specifically,
ContextualDeserializer
) that is being
contextualized currently.protected DeserializationContext(DeserializerFactory df, DeserializerCache cache)
protected DeserializationContext(DeserializationContext src, DeserializerFactory factory)
protected DeserializationContext(DeserializationContext src, DeserializerCache cache)
protected DeserializationContext(DeserializationContext src, DeserializationConfig config, com.fasterxml.jackson.core.JsonParser p, InjectableValues injectableValues)
protected DeserializationContext(DeserializationContext src, DeserializationConfig config)
protected DeserializationContext(DeserializationContext src)
copy()
by ObjectMapper.copy()
.
Only called on blueprint objects.public DeserializationConfig getConfig()
DatabindContext
getConfig
in class DatabindContext
public final Class<?> getActiveView()
DatabindContext
getActiveView
in class DatabindContext
public final boolean canOverrideAccessModifiers()
DatabindContext
getConfig().canOverrideAccessModifiers();
canOverrideAccessModifiers
in class DatabindContext
public final boolean isEnabled(MapperFeature feature)
DatabindContext
getConfig().isEnabled(feature);
isEnabled
in class DatabindContext
public final boolean isEnabled(DatatypeFeature feature)
DatabindContext
isEnabled
in class DatabindContext
public final DatatypeFeatures getDatatypeFeatures()
getDatatypeFeatures
in class DatabindContext
public final com.fasterxml.jackson.annotation.JsonFormat.Value getDefaultPropertyFormat(Class<?> baseType)
getDefaultPropertyFormat
in class DatabindContext
public final AnnotationIntrospector getAnnotationIntrospector()
DatabindContext
getConfig().getAnnotationIntrospector();
getAnnotationIntrospector
in class DatabindContext
public final TypeFactory getTypeFactory()
getTypeFactory
in class DatabindContext
public JavaType constructSpecializedType(JavaType baseType, Class<?> subclass) throws IllegalArgumentException
DatabindContext
Note: since 2.11 handling has varied a bit across serialization, deserialization.
constructSpecializedType
in class DatabindContext
IllegalArgumentException
public Locale getLocale()
getConfig().getLocale();
getLocale
in class DatabindContext
public TimeZone getTimeZone()
getConfig().getTimeZone();
getTimeZone
in class DatabindContext
public Object getAttribute(Object key)
DatabindContext
ObjectReader
or ObjectWriter
have lower
precedence.getAttribute
in class DatabindContext
key
- Key of the attribute to getpublic DeserializationContext setAttribute(Object key, Object value)
DatabindContext
setAttribute
in class DatabindContext
key
- Key of the attribute to setvalue
- Value to set attribute topublic JavaType getContextualType()
JavaType
of currently contextualized
ContextualDeserializer
, if any.
This is sometimes useful for generic JsonDeserializer
s that
do not get passed (or do not retain) type information when being
constructed: happens for example for deserializers constructed
from annotations.ContextualDeserializer
being contextualized,
if process is on-going; null if not.public DeserializerFactory getFactory()
DeserializerFactory
.public final boolean isEnabled(DeserializationFeature feat)
public final boolean isEnabled(com.fasterxml.jackson.core.StreamReadCapability cap)
public final int getDeserializationFeatures()
DeserializationFeature
s
that are enabled.public final boolean hasDeserializationFeatures(int featureMask)
public final boolean hasSomeOfFeatures(int featureMask)
public final com.fasterxml.jackson.core.JsonParser getParser()
Use of this method is discouraged: if code has direct access to the active parser, that should be used instead.
public final Object findInjectableValue(Object valueId, BeanProperty forProperty, Object beanInstance) throws JsonMappingException
JsonMappingException
public final com.fasterxml.jackson.core.Base64Variant getBase64Variant()
getConfig().getBase64Variant();
public final JsonNodeFactory getNodeFactory()
getConfig().getNodeFactory();
public CoercionAction findCoercionAction(LogicalType targetType, Class<?> targetClass, CoercionInputShape inputShape)
targetType
- Logical target type of coerciontargetClass
- Physical target type of coercioninputShape
- Input shape to coerce frompublic CoercionAction findCoercionFromBlankString(LogicalType targetType, Class<?> targetClass, CoercionAction actionIfBlankNotAllowed)
actionIfBlankNotAllowed
, otherwise returns action for
CoercionInputShape.EmptyString
.targetType
- Logical target type of coerciontargetClass
- Physical target type of coercionactionIfBlankNotAllowed
- Return value to use in case "blanks as empty"
is not allowedpublic TokenBuffer bufferForInputBuffering(com.fasterxml.jackson.core.JsonParser p)
TokenBuffer
to temporarily
contain copy of content read from specified parser; usually for purpose
of reading contents later on (possibly augmeneted with injected additional
content)public final TokenBuffer bufferForInputBuffering()
ctxt.bufferForInputBuffering(ctxt.getParser());
public TokenBuffer bufferAsCopyOfValue(com.fasterxml.jackson.core.JsonParser p) throws IOException
TokenBuffer buffer = ctxt.bufferForInputBuffering(parser); buffer.copyCurrentStructure(parser); return buffer;
NOTE: the whole "current value" that parser points to is read and buffered, including Object and Array values (if parser pointing to start marker).
IOException
public boolean hasValueDeserializerFor(JavaType type, AtomicReference<Throwable> cause)
type
- Type to checkcause
- (optional) Reference set to root cause if no deserializer
could be found due to exception (to find the reason for failure)public final JsonDeserializer<Object> findContextualValueDeserializer(JavaType type, BeanProperty prop) throws JsonMappingException
JsonMappingException
public final JsonDeserializer<Object> findNonContextualValueDeserializer(JavaType type) throws JsonMappingException
findContextualValueDeserializer(com.fasterxml.jackson.databind.JavaType, com.fasterxml.jackson.databind.BeanProperty)
)
or checking for need to create a TypeDeserializer
(unlike
findRootValueDeserializer(JavaType)
.
This method is usually called from within ResolvableDeserializer.resolve(com.fasterxml.jackson.databind.DeserializationContext)
,
and expectation is that caller then calls either
handlePrimaryContextualization(JsonDeserializer, BeanProperty, JavaType)
or
handleSecondaryContextualization(JsonDeserializer, BeanProperty, JavaType)
at a
later point, as necessary.JsonMappingException
public final JsonDeserializer<Object> findRootValueDeserializer(JavaType type) throws JsonMappingException
JsonMappingException
public final KeyDeserializer findKeyDeserializer(JavaType keyType, BeanProperty prop) throws JsonMappingException
getDeserializerProvider().findKeyDeserializer(getConfig(), prop.getType(), prop);
JsonMappingException
public abstract ReadableObjectId findObjectId(Object id, com.fasterxml.jackson.annotation.ObjectIdGenerator<?> generator, com.fasterxml.jackson.annotation.ObjectIdResolver resolver)
public abstract void checkUnresolvedObjectId() throws UnresolvedForwardReference
UnresolvedForwardReference
public final JavaType constructType(Class<?> cls)
getConfig().constructType(cls);
public Class<?> findClass(String className) throws ClassNotFoundException
ClassNotFoundException
public final ObjectBuffer leaseObjectBuffer()
public final void returnObjectBuffer(ObjectBuffer buf)
leaseObjectBuffer()
.buf
- Returned object bufferpublic final ArrayBuilders getArrayBuilders()
public abstract JsonDeserializer<Object> deserializerInstance(Annotated annotated, Object deserDef) throws JsonMappingException
JsonMappingException
public abstract KeyDeserializer keyDeserializerInstance(Annotated annotated, Object deserDef) throws JsonMappingException
JsonMappingException
public JsonDeserializer<?> handlePrimaryContextualization(JsonDeserializer<?> deser, BeanProperty prop, JavaType type) throws JsonMappingException
ContextualDeserializer
with given property context.prop
- Property for which the given primary deserializer is used; never null.JsonMappingException
public JsonDeserializer<?> handleSecondaryContextualization(JsonDeserializer<?> deser, BeanProperty prop, JavaType type) throws JsonMappingException
ContextualDeserializer
with given property context.
Given that these deserializers are not directly related to given property
(or, in case of root value property, to any property), annotations
accessible may or may not be relevant.prop
- Property for which deserializer is used, if any; null
when deserializing root valuesJsonMappingException
public Date parseDate(String dateStr) throws IllegalArgumentException
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.
IllegalArgumentException
public Calendar constructCalendar(Date d)
public String extractScalarFromObject(com.fasterxml.jackson.core.JsonParser p, JsonDeserializer<?> deser, Class<?> scalarType) throws IOException
JsonToken.START_OBJECT
token),
but a Scalar value (potentially coercible from String value) is expected.
This would typically be used to deserializer a Number, Boolean value or some other
"simple" unstructured value type.p
- Actual parser to read content fromdeser
- Deserializer that needs extracted String valuescalarType
- Immediate type of scalar to extract; usually type deserializer
handles but not always (for example, deserializer for int[]
would pass
scalar type of int
)null
(exception should be thrown if no suitable
value found)IOException
- If there are problems either reading content (underlying parser
problem) or finding expected scalar valuepublic <T> T readValue(com.fasterxml.jackson.core.JsonParser p, Class<T> type) throws IOException
NOTE: when deserializing values of properties contained in composite types,
rather use readPropertyValue(JsonParser, BeanProperty, Class)
;
this method does not allow use of contextual annotations.
IOException
public <T> T readValue(com.fasterxml.jackson.core.JsonParser p, JavaType type) throws IOException
IOException
public <T> T readPropertyValue(com.fasterxml.jackson.core.JsonParser p, BeanProperty prop, Class<T> type) throws IOException
p
- Parser that points to the first token of the value to readprop
- Logical property of a POJO being typetype
that was readIOException
public <T> T readPropertyValue(com.fasterxml.jackson.core.JsonParser p, BeanProperty prop, JavaType type) throws IOException
readPropertyValue(JsonParser, BeanProperty, Class)
but with
fully resolved JavaType
as target: needs to be used for generic types,
for example.IOException
public JsonNode readTree(com.fasterxml.jackson.core.JsonParser p) throws IOException
JsonParser
points to as a JsonNode
.p
- Parser that points to the first token of the value to readJsonNode
IOException
public <T> T readTreeAsValue(JsonNode n, Class<T> targetType) throws IOException
ObjectReader.treeToValue(TreeNode, Class)
which will read contents of given tree (JsonNode
)
and bind them into specified target type. This is often used in two-phase
deserialization in which content is first read as a tree, then manipulated
(adding and/or removing properties of Object values, for example),
and finally converted into actual target type using default deserialization
logic for the type.
NOTE: deserializer implementations should be careful not to try to recursively deserialize into target type deserializer has registered itself to handle.
n
- Tree value to convert, if not null
: if null
, will simply
return null
targetType
- Type to deserialize contents of n
into (if n
not null
)null
(if n
was null
or a value of
type type
that was read from non-null
n
argumentIOException
public <T> T readTreeAsValue(JsonNode n, JavaType targetType) throws IOException
readTreeAsValue(JsonNode, Class)
but will fully resolved
JavaType
as targetType
NOTE: deserializer implementations should be careful not to try to recursively deserialize into target type deserializer has registered itself to handle.
n
- Tree value to converttargetType
- Type to deserialize contents of n
intotype
that was readIOException
public boolean handleUnknownProperty(com.fasterxml.jackson.core.JsonParser p, JsonDeserializer<?> deser, Object instanceOrClass, String propName) throws IOException
DeserializationProblemHandler
s and
let it handle the problem.IOException
public Object handleWeirdKey(Class<?> keyClass, String keyValue, String msg, Object... msgArgs) throws IOException
Map
valued property.
Default implementation will try to call DeserializationProblemHandler.handleWeirdNumberValue(com.fasterxml.jackson.databind.DeserializationContext, java.lang.Class<?>, java.lang.Number, java.lang.String)
on configured handlers, if any, to allow for recovery; if recovery does not
succeed, will throw InvalidFormatException
with given message.keyClass
- Expected type for keykeyValue
- String value from which to deserialize keymsg
- Error message template caller wants to use if exception is to be thrownmsgArgs
- Optional arguments to use for message, if anyIOException
- To indicate unrecoverable problem, usually based on msg
public Object handleWeirdStringValue(Class<?> targetClass, String value, String msg, Object... msgArgs) throws IOException
DeserializationProblemHandler.handleWeirdStringValue(com.fasterxml.jackson.databind.DeserializationContext, java.lang.Class<?>, java.lang.String, java.lang.String)
on configured handlers, if any, to allow for recovery; if recovery does not
succeed, will throw InvalidFormatException
with given message.targetClass
- Type of property into which incoming number should be convertedvalue
- String value from which to deserialize property valuemsg
- Error message template caller wants to use if exception is to be thrownmsgArgs
- Optional arguments to use for message, if anyIOException
- To indicate unrecoverable problem, usually based on msg
public Object handleWeirdNumberValue(Class<?> targetClass, Number value, String msg, Object... msgArgs) throws IOException
DeserializationProblemHandler.handleWeirdNumberValue(com.fasterxml.jackson.databind.DeserializationContext, java.lang.Class<?>, java.lang.Number, java.lang.String)
on configured handlers, if any, to allow for recovery; if recovery does not
succeed, will throw InvalidFormatException
with given message.targetClass
- Type of property into which incoming number should be convertedvalue
- Number value from which to deserialize property valuemsg
- Error message template caller wants to use if exception is to be thrownmsgArgs
- Optional arguments to use for message, if anyIOException
- To indicate unrecoverable problem, usually based on msg
public Object handleWeirdNativeValue(JavaType targetType, Object badValue, com.fasterxml.jackson.core.JsonParser p) throws IOException
IOException
public Object handleMissingInstantiator(Class<?> instClass, ValueInstantiator valueInst, com.fasterxml.jackson.core.JsonParser p, String msg, Object... msgArgs) throws IOException
instClass
- Type that was to be instantiatedvalueInst
- (optional) Value instantiator to be used, if any; null if type does not
use one for instantiation (custom deserialiers don't; standard POJO deserializer does)p
- Parser that points to the JSON value to decodeinstClass
IOException
ValueInstantiator
)public Object handleInstantiationProblem(Class<?> instClass, Object argument, Throwable t) throws IOException
DeserializationProblemHandler.handleInstantiationProblem(com.fasterxml.jackson.databind.DeserializationContext, java.lang.Class<?>, java.lang.Object, java.lang.Throwable)
on configured handlers, if any, to allow for recovery; if recovery does not
succeed, will throw exception constructed with instantiationException(java.lang.Class<?>, java.lang.Throwable)
.instClass
- Type that was to be instantiatedargument
- (optional) Argument that was passed to constructor or equivalent
instantiator; often a String
.t
- Exception that caused failureinstClass
IOException
public Object handleUnexpectedToken(Class<?> instClass, com.fasterxml.jackson.core.JsonParser p) throws IOException
JsonToken.START_ARRAY
instead of
JsonToken.VALUE_NUMBER_INT
or JsonToken.VALUE_NUMBER_FLOAT
.instClass
- Type that was to be instantiatedp
- Parser that points to the JSON value to decodeinstClass
IOException
public Object handleUnexpectedToken(Class<?> instClass, com.fasterxml.jackson.core.JsonToken t, com.fasterxml.jackson.core.JsonParser p, String msg, Object... msgArgs) throws IOException
JsonToken.START_ARRAY
instead of
JsonToken.VALUE_NUMBER_INT
or JsonToken.VALUE_NUMBER_FLOAT
.instClass
- Type that was to be instantiatedt
- Token encountered that does match expectedp
- Parser that points to the JSON value to decodeinstClass
IOException
public Object handleUnexpectedToken(JavaType targetType, com.fasterxml.jackson.core.JsonParser p) throws IOException
JsonToken.START_ARRAY
instead of
JsonToken.VALUE_NUMBER_INT
or JsonToken.VALUE_NUMBER_FLOAT
.targetType
- Type that was to be instantiatedp
- Parser that points to the JSON value to decodeinstClass
IOException
public Object handleUnexpectedToken(JavaType targetType, com.fasterxml.jackson.core.JsonToken t, com.fasterxml.jackson.core.JsonParser p, String msg, Object... msgArgs) throws IOException
JsonToken.START_ARRAY
instead of
JsonToken.VALUE_NUMBER_INT
or JsonToken.VALUE_NUMBER_FLOAT
.targetType
- Type that was to be instantiatedt
- Token encountered that does not match expectedp
- Parser that points to the JSON value to decodeinstClass
IOException
public JavaType handleUnknownTypeId(JavaType baseType, String id, TypeIdResolver idResolver, String extraDesc) throws IOException
DeserializationProblemHandler.handleUnknownTypeId(com.fasterxml.jackson.databind.DeserializationContext, com.fasterxml.jackson.databind.JavaType, java.lang.String, com.fasterxml.jackson.databind.jsontype.TypeIdResolver, java.lang.String)
on configured handlers, if any, to allow for recovery; if recovery does not
succeed, will throw exception constructed with invalidTypeIdException(com.fasterxml.jackson.databind.JavaType, java.lang.String, java.lang.String)
.baseType
- Base type from which resolution startsid
- Type id that could not be convertedextraDesc
- Additional problem description to add to default exception message,
if resolution fails.JavaType
that id resolves toIOException
- To indicate unrecoverable problem, if resolution cannot
be made to workpublic JavaType handleMissingTypeId(JavaType baseType, TypeIdResolver idResolver, String extraDesc) throws IOException
IOException
public void handleBadMerge(JsonDeserializer<?> deser) throws JsonMappingException
MapperFeature.IGNORE_MERGE_FOR_UNMERGEABLE
is enabled,
this method will simply return null; otherwise InvalidDefinitionException
will be thrown.JsonMappingException
public void reportWrongTokenException(JsonDeserializer<?> deser, com.fasterxml.jackson.core.JsonToken expToken, String msg, Object... msgArgs) throws JsonMappingException
JsonMappingException
and no
recovery is attempted (via DeserializationProblemHandler
, as
problem is considered to be difficult to recover from, in general.JsonMappingException
public void reportWrongTokenException(JavaType targetType, com.fasterxml.jackson.core.JsonToken expToken, String msg, Object... msgArgs) throws JsonMappingException
JsonMappingException
and no
recovery is attempted (via DeserializationProblemHandler
, as
problem is considered to be difficult to recover from, in general.JsonMappingException
public void reportWrongTokenException(Class<?> targetType, com.fasterxml.jackson.core.JsonToken expToken, String msg, Object... msgArgs) throws JsonMappingException
JsonMappingException
and no
recovery is attempted (via DeserializationProblemHandler
, as
problem is considered to be difficult to recover from, in general.JsonMappingException
public <T> T reportUnresolvedObjectId(ObjectIdReader oidReader, Object bean) throws JsonMappingException
JsonMappingException
public <T> T reportInputMismatch(JsonDeserializer<?> src, String msg, Object... msgArgs) throws JsonMappingException
reportXxx()
method was not available.JsonMappingException
public <T> T reportInputMismatch(Class<?> targetType, String msg, Object... msgArgs) throws JsonMappingException
reportXxx()
method was not available.JsonMappingException
public <T> T reportInputMismatch(JavaType targetType, String msg, Object... msgArgs) throws JsonMappingException
reportXxx()
method was not available.JsonMappingException
public <T> T reportInputMismatch(BeanProperty prop, String msg, Object... msgArgs) throws JsonMappingException
reportXxx()
method was not available.JsonMappingException
public <T> T reportPropertyInputMismatch(Class<?> targetType, String propertyName, String msg, Object... msgArgs) throws JsonMappingException
reportXxx()
method was not available.JsonMappingException
public <T> T reportPropertyInputMismatch(JavaType targetType, String propertyName, String msg, Object... msgArgs) throws JsonMappingException
reportXxx()
method was not available.JsonMappingException
public <T> T reportBadCoercion(JsonDeserializer<?> src, Class<?> targetType, Object inputValue, String msg, Object... msgArgs) throws JsonMappingException
JsonMappingException
public <T> T reportTrailingTokens(Class<?> targetType, com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.core.JsonToken trailingToken) throws JsonMappingException
JsonMappingException
public <T> T reportBadTypeDefinition(BeanDescription bean, String msg, Object... msgArgs) throws JsonMappingException
JsonMappingException
.reportBadTypeDefinition
in class DatabindContext
JsonMappingException
public <T> T reportBadPropertyDefinition(BeanDescription bean, BeanPropertyDefinition prop, String msg, Object... msgArgs) throws JsonMappingException
JsonMappingException
.JsonMappingException
public <T> T reportBadDefinition(JavaType type, String msg) throws JsonMappingException
DatabindContext
InvalidDefinitionException
.reportBadDefinition
in class DatabindContext
JsonMappingException
public JsonMappingException wrongTokenException(com.fasterxml.jackson.core.JsonParser p, JavaType targetType, com.fasterxml.jackson.core.JsonToken expToken, String extra)
JsonMappingException
to indicate
that the token encountered was of type different than what should
be seen at that position, usually within a sequence of expected tokens.
Note that most of the time this method should NOT be directly called;
instead, reportWrongTokenException(com.fasterxml.jackson.databind.JsonDeserializer<?>, com.fasterxml.jackson.core.JsonToken, java.lang.String, java.lang.Object...)
should be called and will
call this method as necessary.public JsonMappingException wrongTokenException(com.fasterxml.jackson.core.JsonParser p, Class<?> targetType, com.fasterxml.jackson.core.JsonToken expToken, String extra)
public JsonMappingException weirdKeyException(Class<?> keyClass, String keyValue, String msg)
handleWeirdKey(java.lang.Class<?>, java.lang.String, java.lang.String, java.lang.Object...)
should be called which will call this method
if necessary.public JsonMappingException weirdStringException(String value, Class<?> instClass, String msgBase)
handleWeirdStringValue(java.lang.Class<?>, java.lang.String, java.lang.String, java.lang.Object...)
should be called which will call this method
if necessary.value
- String value from input being deserializedinstClass
- Type that String should be deserialized intomsgBase
- Message that describes specific problempublic JsonMappingException weirdNumberException(Number value, Class<?> instClass, String msg)
handleWeirdNumberValue(java.lang.Class<?>, java.lang.Number, java.lang.String, java.lang.Object...)
should be called which will call this method
if necessary.public JsonMappingException weirdNativeValueException(Object value, Class<?> instClass)
JsonToken.VALUE_EMBEDDED_OBJECT
)
is of incompatible type (and there is no delegating creator or such to use)
and can not be used to construct value of specified type (usually POJO).
Note that most of the time this method should NOT be called; instead,
handleWeirdNativeValue(com.fasterxml.jackson.databind.JavaType, java.lang.Object, com.fasterxml.jackson.core.JsonParser)
should be called which will call this methodpublic JsonMappingException instantiationException(Class<?> instClass, Throwable cause)
Note that most of the time this method should NOT be called directly; instead,
handleInstantiationProblem(java.lang.Class<?>, java.lang.Object, java.lang.Throwable)
should be called which will call this method
if necessary.
public JsonMappingException instantiationException(Class<?> instClass, String msg0)
Note that most of the time this method should NOT be called; instead,
handleMissingInstantiator(java.lang.Class<?>, com.fasterxml.jackson.databind.deser.ValueInstantiator, com.fasterxml.jackson.core.JsonParser, java.lang.String, java.lang.Object...)
should be called which will call this method
if necessary.
public JsonMappingException invalidTypeIdException(JavaType baseType, String typeId, String extraDesc)
DatabindContext
Note that most of the time this method should NOT be called directly: instead,
method handleUnknownTypeId()
should be called which will call this method
if necessary.
invalidTypeIdException
in class DatabindContext
public JsonMappingException missingTypeIdException(JavaType baseType, String extraDesc)
protected DateFormat _getDateFormat()
protected String _shapeForToken(com.fasterxml.jackson.core.JsonToken t)
JsonToken
encountered.Copyright © 2008–2024 FasterXML. All rights reserved.