public class BuilderBasedDeserializer extends BeanDeserializerBase
Note on implementation: much of code has been copied from
BeanDeserializer
; there may be opportunities to
refactor this in future.
JsonDeserializer.None
Modifier and Type | Field and Description |
---|---|
protected AnnotatedMethod |
_buildMethod |
protected JavaType |
_targetType
Type that the builder will produce, target type; as opposed to
`handledType()` which refers to Builder class.
|
_anySetter, _arrayDelegateDeserializer, _backRefs, _beanProperties, _beanType, _delegateDeserializer, _externalTypeIdHandler, _ignorableProps, _ignoreAllUnknown, _includableProps, _injectables, _needViewProcesing, _nonStandardCreation, _objectIdReader, _propertyBasedCreator, _serializationShape, _subDeserializers, _unwrappedPropertyHandler, _valueInstantiator, _vanillaProcessing, TEMP_PROPERTY_NAME
_valueClass, _valueType, F_MASK_ACCEPT_ARRAYS, F_MASK_INT_COERCIONS
Modifier and Type | Method and Description |
---|---|
protected Object |
_deserialize(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
Object builder) |
protected Object |
_deserializeFromArray(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt)
Helper method that allows easy support for array-related coercion features:
checks for either empty array, or single-value array-wrapped value (if coercion
enabled by
CoercionConfigs (since 2.12), and either reports
an exception (if no coercion allowed), or returns appropriate
result value using coercion mechanism indicated. |
protected Object |
_deserializeUsingPropertyBased(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt)
Method called to deserialize bean using "property-based creator":
this means that a non-default constructor or factory method is
called, and then possibly other setters.
|
protected BeanDeserializerBase |
asArrayDeserializer()
Fluent factory for creating a variant that can handle
POJO output as a JSON Array.
|
Object |
deserialize(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt)
Main deserialization method for bean-based objects (POJOs).
|
Object |
deserialize(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
Object value)
Secondary deserialization method, called in cases where POJO
instance is created as part of deserialization, potentially
after collecting some or all of the properties to set.
|
Object |
deserializeFromObject(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt)
General version used when handling needs more advanced
features.
|
protected Object |
deserializeUsingPropertyBasedWithExternalTypeId(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt) |
protected Object |
deserializeUsingPropertyBasedWithUnwrapped(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt) |
protected Object |
deserializeWithExternalTypeId(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt) |
protected Object |
deserializeWithExternalTypeId(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
Object bean) |
protected Object |
deserializeWithUnwrapped(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt)
Method called when there are declared "unwrapped" properties
which need special handling
|
protected Object |
deserializeWithUnwrapped(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
Object builder,
TokenBuffer tokens) |
protected Object |
deserializeWithView(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
Object bean,
Class<?> activeView) |
protected Object |
finishBuild(DeserializationContext ctxt,
Object builder) |
Boolean |
supportsUpdate(DeserializationConfig config)
Introspection method that may be called to see whether deserializer supports
update of an existing value (aka "merging") or not.
|
JsonDeserializer<Object> |
unwrappingDeserializer(NameTransformer unwrapper)
Method that will return deserializer instance that is able
to handle "unwrapped" value instances
If no unwrapped instance can be constructed, will simply
return this object as-is.
|
BeanDeserializerBase |
withBeanProperties(BeanPropertyMap props)
Mutant factory method that custom sub-classes must override; not left as
abstract to prevent more drastic backwards compatibility problems.
|
BeanDeserializerBase |
withByNameInclusion(Set<String> ignorableProps,
Set<String> includableProps) |
BeanDeserializerBase |
withIgnoreAllUnknown(boolean ignoreUnknown) |
BeanDeserializerBase |
withObjectIdReader(ObjectIdReader oir) |
_convertObjectId, _delegateDeserializer, _findPropertyUnwrapper, _findSubclassDeserializer, _handleByNameInclusion, _handleTypedObjectId, _replaceProperty, _resolvedObjectIdProperty, _resolveInnerClassValuedProperty, _resolveManagedReferenceProperty, _resolveMergeAndNullSettings, createContextual, creatorProperties, deserializeFromArray, deserializeFromBoolean, deserializeFromDouble, deserializeFromEmbedded, deserializeFromNumber, deserializeFromObjectId, deserializeFromObjectUsingNonDefault, deserializeFromString, deserializeWithObjectId, deserializeWithType, findBackReference, findConvertingDeserializer, findProperty, findProperty, findProperty, getBeanClass, getEmptyAccessPattern, getEmptyValue, getKnownPropertyNames, getNullAccessPattern, getObjectIdReader, getPropertyCount, getValueInstantiator, getValueType, handledType, handleIgnoredProperty, handlePolymorphic, handleUnknownProperties, handleUnknownProperty, handleUnknownVanilla, hasProperty, hasViews, injectValues, isCachable, isCaseInsensitive, logicalType, properties, replaceProperty, resolve, withIgnorableProperties, wrapAndThrow, wrapInstantiationProblem
_byteOverflow, _checkBooleanToStringCoercion, _checkCoercionFail, _checkDoubleSpecialValue, _checkFloatSpecialValue, _checkFloatToIntCoercion, _checkFloatToStringCoercion, _checkFromStringCoercion, _checkFromStringCoercion, _checkIntToFloatCoercion, _checkIntToStringCoercion, _checkTextualNull, _checkToStringCoercion, _coerceBooleanFromInt, _coercedTypeDesc, _coerceEmptyString, _coerceIntegral, _coerceNullToken, _coerceTextualNull, _deserializeFromEmpty, _deserializeFromEmptyString, _deserializeFromString, _deserializeWrappedValue, _failDoubleToIntCoercion, _findCoercionFromBlankString, _findCoercionFromEmptyArray, _findCoercionFromEmptyString, _findNullProvider, _hasTextualNull, _intOverflow, _isBlank, _isEmptyOrTextualNull, _isFalse, _isIntNumber, _isNaN, _isNegInf, _isPosInf, _isTrue, _neitherNull, _nonNullNumber, _parseBoolean, _parseBooleanFromInt, _parseBooleanPrimitive, _parseBooleanPrimitive, _parseBytePrimitive, _parseDate, _parseDate, _parseDateFromArray, _parseDouble, _parseDouble, _parseDoublePrimitive, _parseDoublePrimitive, _parseDoublePrimitive, _parseFloatPrimitive, _parseFloatPrimitive, _parseFloatPrimitive, _parseInteger, _parseInteger, _parseIntPrimitive, _parseIntPrimitive, _parseLong, _parseLong, _parseLongPrimitive, _parseLongPrimitive, _parseShortPrimitive, _parseString, _parseString, _reportFailedNullCoerce, _shortOverflow, _verifyEndArrayForSingle, _verifyNullForPrimitive, _verifyNullForPrimitiveCoercion, _verifyNullForScalarCoercion, _verifyNumberForScalarCoercion, _verifyStringForScalarCoercion, findContentNullProvider, findContentNullStyle, findConvertingContentDeserializer, findDeserializer, findFormatFeature, findFormatOverrides, findValueNullProvider, getValueClass, getValueType, handleMissingEndArrayForSingle, handleNestedArrayForSingle, isDefaultDeserializer, isDefaultKeyDeserializer
deserializeWithType, getAbsentValue, getDelegatee, getEmptyValue, getNullValue, getNullValue, replaceDelegatee
protected final AnnotatedMethod _buildMethod
protected final JavaType _targetType
public BuilderBasedDeserializer(BeanDeserializerBuilder builder, BeanDescription beanDesc, JavaType targetType, BeanPropertyMap properties, Map<String,SettableBeanProperty> backRefs, Set<String> ignorableProps, boolean ignoreAllUnknown, boolean hasViews)
BeanDeserializerBuilder
.public BuilderBasedDeserializer(BeanDeserializerBuilder builder, BeanDescription beanDesc, JavaType targetType, BeanPropertyMap properties, Map<String,SettableBeanProperty> backRefs, Set<String> ignorableProps, boolean ignoreAllUnknown, Set<String> includableProps, boolean hasViews)
@Deprecated public BuilderBasedDeserializer(BeanDeserializerBuilder builder, BeanDescription beanDesc, BeanPropertyMap properties, Map<String,SettableBeanProperty> backRefs, Set<String> ignorableProps, boolean ignoreAllUnknown, boolean hasViews)
protected BuilderBasedDeserializer(BuilderBasedDeserializer src)
protected BuilderBasedDeserializer(BuilderBasedDeserializer src, boolean ignoreAllUnknown)
protected BuilderBasedDeserializer(BuilderBasedDeserializer src, NameTransformer unwrapper)
public BuilderBasedDeserializer(BuilderBasedDeserializer src, ObjectIdReader oir)
public BuilderBasedDeserializer(BuilderBasedDeserializer src, Set<String> ignorableProps)
public BuilderBasedDeserializer(BuilderBasedDeserializer src, Set<String> ignorableProps, Set<String> includableProps)
public BuilderBasedDeserializer(BuilderBasedDeserializer src, BeanPropertyMap props)
public JsonDeserializer<Object> unwrappingDeserializer(NameTransformer unwrapper)
JsonDeserializer
Default implementation just returns 'this' indicating that no unwrapped variant exists
unwrappingDeserializer
in class BeanDeserializerBase
public BeanDeserializerBase withObjectIdReader(ObjectIdReader oir)
withObjectIdReader
in class BeanDeserializerBase
public BeanDeserializerBase withByNameInclusion(Set<String> ignorableProps, Set<String> includableProps)
withByNameInclusion
in class BeanDeserializerBase
public BeanDeserializerBase withIgnoreAllUnknown(boolean ignoreUnknown)
withIgnoreAllUnknown
in class BeanDeserializerBase
public BeanDeserializerBase withBeanProperties(BeanPropertyMap props)
BeanDeserializerBase
withBeanProperties
in class BeanDeserializerBase
protected BeanDeserializerBase asArrayDeserializer()
BeanDeserializerBase
asArrayDeserializer
in class BeanDeserializerBase
public Boolean supportsUpdate(DeserializationConfig config)
JsonDeserializer
Boolean.FALSE
if update is not supported at all (immutable values);
Boolean.TRUE
if update should usually work (regular POJOs, for example),
or null
if this is either not known, or may sometimes work.
Information gathered is typically used to either prevent merging update for
property (either by skipping, if based on global defaults; or by exception during
deserializer construction if explicit attempt made) if Boolean.FALSE
returned, or inclusion if Boolean.TRUE
is specified. If "unknown" case
(null
returned) behavior is to exclude property if global defaults
used; or to allow if explicit per-type or property merging is defined.
Default implementation returns null
to allow explicit per-type
or per-property attempts.
supportsUpdate
in class BeanDeserializerBase
protected Object finishBuild(DeserializationContext ctxt, Object builder) throws IOException
IOException
public Object deserialize(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt) throws IOException
deserialize
in class JsonDeserializer<Object>
p
- Parsed used for reading JSON contentctxt
- Context that can be used to access information about
this deserialization activity.IOException
public Object deserialize(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, Object value) throws IOException
deserialize
in class JsonDeserializer<Object>
IOException
public Object deserializeFromObject(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt) throws IOException
deserializeFromObject
in class BeanDeserializerBase
IOException
protected Object _deserializeUsingPropertyBased(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt) throws IOException
_deserializeUsingPropertyBased
in class BeanDeserializerBase
IOException
protected final Object _deserialize(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, Object builder) throws IOException
IOException
protected Object _deserializeFromArray(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt) throws IOException
StdDeserializer
CoercionConfigs
(since 2.12), and either reports
an exception (if no coercion allowed), or returns appropriate
result value using coercion mechanism indicated.
This method should NOT be called if Array representation is explicitly supported for type: it should only be called in case it is otherwise unrecognized.
NOTE: in case of unwrapped single element, will handle actual decoding
by calling StdDeserializer._deserializeWrappedValue(com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.DeserializationContext)
, which by default calls
JsonDeserializer.deserialize(JsonParser, DeserializationContext)
.
_deserializeFromArray
in class StdDeserializer<Object>
IOException
protected final Object deserializeWithView(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, Object bean, Class<?> activeView) throws IOException
IOException
protected Object deserializeWithUnwrapped(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt) throws IOException
IOException
protected Object deserializeUsingPropertyBasedWithUnwrapped(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt) throws IOException
IOException
protected Object deserializeWithUnwrapped(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, Object builder, TokenBuffer tokens) throws IOException
IOException
protected Object deserializeWithExternalTypeId(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt) throws IOException
IOException
protected Object deserializeWithExternalTypeId(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, Object bean) throws IOException
IOException
protected Object deserializeUsingPropertyBasedWithExternalTypeId(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt) throws IOException
IOException
Copyright © 2008–2022 FasterXML. All rights reserved.