Class BaseNodeDeserializer<T extends JsonNode>
- All Implemented Interfaces:
NullValueProvider,ValueInstantiator.Gettable
- Direct Known Subclasses:
JsonNodeDeserializer
JsonNode deserializer implementations.
Uses iteration instead of recursion: this allows
handling of very deeply nested input structures.
This class should only be extended by internal Jackson deserializers. It is not intended to be used by custom deserializers.
-
Nested Class Summary
Nested classes/interfaces inherited from class tools.jackson.databind.ValueDeserializer
ValueDeserializer.None -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final booleanprotected final booleanprotected final BooleanFields inherited from class tools.jackson.databind.deser.std.StdDeserializer
_valueClass, _valueType, F_MASK_INT_COERCIONS -
Constructor Summary
ConstructorsModifierConstructorDescriptionBaseNodeDeserializer(Class<T> vc, Boolean supportsUpdates) protectedBaseNodeDeserializer(BaseNodeDeserializer<?> base, boolean mergeArrays, boolean mergeObjects) -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract BaseNodeDeserializer<?>_createWithMerge(boolean mergeArrays, boolean mergeObjects) protected final JsonNodeprotected final ContainerNode<?>_deserializeContainerNoRecursion(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory, tools.jackson.databind.deser.jackson.BaseNodeDeserializer.ContainerStack stack, ContainerNode<?> root) protected final ObjectNode_deserializeObjectAtName(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory, tools.jackson.databind.deser.jackson.BaseNodeDeserializer.ContainerStack stack) Alternate deserialization method used when parser already points to first PROPERTY_NAME and not START_OBJECT.protected final JsonNodeprotected final JsonNodeprotected final JsonNode_fromFloat(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory) protected final JsonNode_fromInt(JsonParser p, int coercionFeatures, JsonNodeFactory nodeFactory) protected final JsonNode_fromInt(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory) protected void_handleDuplicateProperty(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory, String propName, ObjectNode objectNode, JsonNode oldValue, JsonNode newValue) Method called when there is a duplicate value for an Object property.protected BigDecimal_normalize(BigDecimal nr) createContextual(DeserializationContext ctxt, BeanProperty property) Method called to see if a different (or differently configured) deserializer is needed to deserialize values of specified property.deserializeWithType(JsonParser p, DeserializationContext ctxt, TypeDeserializer typeDeserializer) Base implementation that does not assume specific type inclusion mechanism.booleanMethod called to see if deserializer instance is cachable and usable for other properties of same type (type for which instance was created).Method for accessing logical type of values this deserializer produces.supportsUpdate(DeserializationConfig config) Introspection method that may be called to see whether deserializer supports update of an existing value (aka "merging") or not.protected final JsonNodeupdateObject(JsonParser p, DeserializationContext ctxt, ObjectNode node, tools.jackson.databind.deser.jackson.BaseNodeDeserializer.ContainerStack stack) Alternate deserialization method that is to update existingObjectNodeif possible.Methods inherited from class tools.jackson.databind.deser.std.StdDeserializer
_byteOverflow, _checkBooleanToStringCoercion, _checkCoercionFail, _checkDoubleSpecialValue, _checkFloatSpecialValue, _checkFloatToIntCoercion, _checkFloatToStringCoercion, _checkFromStringCoercion, _checkFromStringCoercion, _checkIntToFloatCoercion, _checkIntToStringCoercion, _checkTextualNull, _checkToStringCoercion, _coerceBooleanFromInt, _coercedTypeDesc, _coercedTypeDesc, _coerceIntegral, _deserializeFromArray, _deserializeFromEmptyString, _deserializeFromString, _deserializeWrappedValue, _findCoercionFromBlankString, _findCoercionFromEmptyArray, _findCoercionFromEmptyString, _findNullProvider, _hasTextualNull, _intOverflow, _isBlank, _isFalse, _isIntNumber, _isNaN, _isNegInf, _isPosInf, _isTrue, _neitherNull, _nonNullNumber, _parseBoolean, _parseBooleanPrimitive, _parseBytePrimitive, _parseDate, _parseDate, _parseDateFromArray, _parseDouble, _parseDoublePrimitive, _parseDoublePrimitive, _parseFloatPrimitive, _parseFloatPrimitive, _parseInteger, _parseInteger, _parseIntPrimitive, _parseIntPrimitive, _parseLong, _parseLong, _parseLongPrimitive, _parseLongPrimitive, _parseShortPrimitive, _parseString, _reportFailedNullCoerce, _shortOverflow, _verifyEndArrayForSingle, _verifyNullForPrimitive, _verifyNullForPrimitiveCoercion, _wrapIOFailure, findContentNullProvider, findContentNullStyle, findConvertingContentDeserializer, findDeserializer, findFormatFeature, findFormatOverrides, findValueNullProvider, getValueInstantiator, getValueType, getValueType, handledType, handleMissingEndArrayForSingle, handleNestedArrayForSingle, handleUnknownProperty, isDefaultDeserializer, isDefaultKeyDeserializerMethods inherited from class tools.jackson.databind.ValueDeserializer
deserialize, deserialize, deserializeWithType, findBackReference, getAbsentValue, getDelegatee, getEmptyAccessPattern, getEmptyValue, getKnownPropertyNames, getNullAccessPattern, getNullValue, getObjectIdReader, replaceDelegatee, resolve, unwrappingDeserializer
-
Field Details
-
_supportsUpdates
-
_mergeArrays
protected final boolean _mergeArrays -
_mergeObjects
protected final boolean _mergeObjects
-
-
Constructor Details
-
BaseNodeDeserializer
-
BaseNodeDeserializer
protected BaseNodeDeserializer(BaseNodeDeserializer<?> base, boolean mergeArrays, boolean mergeObjects)
-
-
Method Details
-
deserializeWithType
public Object deserializeWithType(JsonParser p, DeserializationContext ctxt, TypeDeserializer typeDeserializer) throws JacksonException Description copied from class:StdDeserializerBase implementation that does not assume specific type inclusion mechanism. Sub-classes are expected to override this method if they are to handle type information.- Overrides:
deserializeWithTypein classStdDeserializer<T extends JsonNode>typeDeserializer- Deserializer to use for handling type information- Throws:
JacksonException
-
logicalType
Description copied from class:ValueDeserializerMethod for accessing logical type of values this deserializer produces. Typically used for further configuring handling of values, for example, to find which coercions are legal.- Overrides:
logicalTypein classValueDeserializer<T extends JsonNode>- Returns:
- Logical type of values this deserializer produces, if known;
nullif not
-
isCachable
public boolean isCachable()Description copied from class:ValueDeserializerMethod called to see if deserializer instance is cachable and usable for other properties of same type (type for which instance was created).Note that cached instances are still contextualized on per-property basis (but note that
ValueDeserializer.resolve(DeserializationContext)d just once!) This means that in most cases it is safe to cache instances; however, it only makes sense to cache instances if instantiation is expensive, or if instances are heavy-weight.Default implementation returns false, to indicate that no caching is done.
- Overrides:
isCachablein classValueDeserializer<T extends JsonNode>
-
supportsUpdate
Description copied from class:ValueDeserializerIntrospection method that may be called to see whether deserializer supports update of an existing value (aka "merging") or not. Return value should either beBoolean.FALSEif update is not supported at all (immutable values);Boolean.TRUEif update should usually work (regular POJOs, for example), ornullif 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.FALSEreturned, or inclusion ifBoolean.TRUEis specified. If "unknown" case (nullreturned) behavior is to exclude property if global defaults used; or to allow if explicit per-type or property merging is defined.Default implementation returns
nullto allow explicit per-type or per-property attempts.- Overrides:
supportsUpdatein classValueDeserializer<T extends JsonNode>
-
createContextual
Description copied from class:ValueDeserializerMethod called to see if a different (or differently configured) deserializer is needed to deserialize values of specified property. Note that instance that this method is called on is typically shared one and as a result method should NOT modify this instance but rather construct and return a new instance. This instance should only be returned as-is, in case it is already suitable for use.- Overrides:
createContextualin classValueDeserializer<T extends JsonNode>- Parameters:
ctxt- Deserialization context to access configuration, additional deserializers that may be needed by this deserializerproperty- Method, field or constructor parameter that represents the property (and is used to assign deserialized value). Should be available; but there may be cases where caller cannot provide it and null is passed instead (in which case impls usually pass 'this' deserializer as is)- Returns:
- Deserializer to use for deserializing values of specified property; may be this instance or a new instance.
-
_createWithMerge
protected abstract BaseNodeDeserializer<?> _createWithMerge(boolean mergeArrays, boolean mergeObjects) -
_handleDuplicateProperty
protected void _handleDuplicateProperty(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory, String propName, ObjectNode objectNode, JsonNode oldValue, JsonNode newValue) throws JacksonException Method called when there is a duplicate value for an Object property. By default we don't care, and the last value is used. Can be overridden to provide alternate handling, such as throwing an exception, or choosing different strategy for combining values or choosing which one to keep.- Parameters:
propName- Name of the property for which duplicate value was foundobjectNode- Object node that contains valuesoldValue- Value that existed for the object node before newValue was addednewValue- Newly added value just added to the object node- Throws:
JacksonException
-
_deserializeObjectAtName
protected final ObjectNode _deserializeObjectAtName(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory, tools.jackson.databind.deser.jackson.BaseNodeDeserializer.ContainerStack stack) throws JacksonException Alternate deserialization method used when parser already points to first PROPERTY_NAME and not START_OBJECT.- Throws:
JacksonException
-
updateObject
protected final JsonNode updateObject(JsonParser p, DeserializationContext ctxt, ObjectNode node, tools.jackson.databind.deser.jackson.BaseNodeDeserializer.ContainerStack stack) throws JacksonException Alternate deserialization method that is to update existingObjectNodeif possible.- Throws:
JacksonException
-
_deserializeContainerNoRecursion
protected final ContainerNode<?> _deserializeContainerNoRecursion(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory, tools.jackson.databind.deser.jackson.BaseNodeDeserializer.ContainerStack stack, ContainerNode<?> root) throws JacksonException - Throws:
JacksonException
-
_deserializeAnyScalar
protected final JsonNode _deserializeAnyScalar(JsonParser p, DeserializationContext ctxt) throws JacksonException - Throws:
JacksonException
-
_deserializeRareScalar
protected final JsonNode _deserializeRareScalar(JsonParser p, DeserializationContext ctxt) throws JacksonException - Throws:
JacksonException
-
_fromInt
protected final JsonNode _fromInt(JsonParser p, int coercionFeatures, JsonNodeFactory nodeFactory) throws JacksonException - Throws:
JacksonException
-
_fromInt
protected final JsonNode _fromInt(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory) throws JacksonException - Throws:
JacksonException
-
_fromFloat
protected final JsonNode _fromFloat(JsonParser p, DeserializationContext ctxt, JsonNodeFactory nodeFactory) throws JacksonException - Throws:
JacksonException
-
_normalize
-
_fromEmbedded
protected final JsonNode _fromEmbedded(JsonParser p, DeserializationContext ctxt) throws JacksonException - Throws:
JacksonException
-