java.lang.Object
com.fasterxml.jackson.databind.JsonDeserializer<T>
com.fasterxml.jackson.databind.deser.std.StdDeserializer<T>
com.fasterxml.jackson.datatype.guava.deser.multimap.GuavaMultimapDeserializer<T>
- All Implemented Interfaces:
com.fasterxml.jackson.databind.deser.ContextualDeserializer
,com.fasterxml.jackson.databind.deser.NullValueProvider
,com.fasterxml.jackson.databind.deser.ValueInstantiator.Gettable
,Serializable
- Direct Known Subclasses:
ArrayListMultimapDeserializer
,HashMultimapDeserializer
,LinkedHashMultimapDeserializer
,LinkedListMultimapDeserializer
public abstract class GuavaMultimapDeserializer<T extends com.google.common.collect.Multimap<Object,Object>>
extends com.fasterxml.jackson.databind.deser.std.StdDeserializer<T>
implements com.fasterxml.jackson.databind.deser.ContextualDeserializer
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonDeserializer
com.fasterxml.jackson.databind.JsonDeserializer.None
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Method
Since we have to use a method to transform from a known multi-map type into actual one, we'll resolve method just once, use it.private final com.fasterxml.jackson.databind.JsonDeserializer
<?> private final com.fasterxml.jackson.databind.jsontype.TypeDeserializer
private final com.fasterxml.jackson.databind.KeyDeserializer
private final com.fasterxml.jackson.databind.deser.NullValueProvider
private static final long
private final boolean
private final com.fasterxml.jackson.databind.type.MapLikeType
Fields inherited from class com.fasterxml.jackson.databind.deser.std.StdDeserializer
_valueClass, _valueType, F_MASK_ACCEPT_ARRAYS, F_MASK_INT_COERCIONS
-
Constructor Summary
ConstructorsConstructorDescriptionGuavaMultimapDeserializer
(com.fasterxml.jackson.databind.type.MapLikeType type, com.fasterxml.jackson.databind.KeyDeserializer keyDeserializer, com.fasterxml.jackson.databind.jsontype.TypeDeserializer elementTypeDeserializer, com.fasterxml.jackson.databind.JsonDeserializer<?> elementDeserializer) GuavaMultimapDeserializer
(com.fasterxml.jackson.databind.type.MapLikeType type, com.fasterxml.jackson.databind.KeyDeserializer keyDeserializer, com.fasterxml.jackson.databind.jsontype.TypeDeserializer elementTypeDeserializer, com.fasterxml.jackson.databind.JsonDeserializer<?> elementDeserializer, Method creatorMethod, com.fasterxml.jackson.databind.deser.NullValueProvider nvp) -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract com.fasterxml.jackson.databind.JsonDeserializer
<?> _createContextual
(com.fasterxml.jackson.databind.type.MapLikeType t, com.fasterxml.jackson.databind.KeyDeserializer kd, com.fasterxml.jackson.databind.jsontype.TypeDeserializer vtd, com.fasterxml.jackson.databind.JsonDeserializer<?> vd, Method method, com.fasterxml.jackson.databind.deser.NullValueProvider np) private Throwable
com.fasterxml.jackson.databind.JsonDeserializer
<?> createContextual
(com.fasterxml.jackson.databind.DeserializationContext ctxt, com.fasterxml.jackson.databind.BeanProperty property) We need to use this method to properly handle possible contextual variants of key and value deserializers, as well as type deserializers.protected abstract T
deserialize
(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) private T
deserializeContents
(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) private T
deserializeFromSingleValue
(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) private void
expect
(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.core.JsonToken token) private static Method
findTransformer
(Class<?> rawType) private Object
getCurrentTokenValue
(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) com.fasterxml.jackson.databind.type.LogicalType
Methods inherited from class com.fasterxml.jackson.databind.deser.std.StdDeserializer
_byteOverflow, _checkBooleanToStringCoercion, _checkCoercionFail, _checkDoubleSpecialValue, _checkFloatSpecialValue, _checkFloatToIntCoercion, _checkFloatToStringCoercion, _checkFromStringCoercion, _checkFromStringCoercion, _checkIntToFloatCoercion, _checkIntToStringCoercion, _checkTextualNull, _checkToStringCoercion, _coerceBooleanFromInt, _coercedTypeDesc, _coercedTypeDesc, _coerceEmptyString, _coerceIntegral, _coerceNullToken, _coerceTextualNull, _deserializeFromArray, _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, deserializeWithType, findContentNullProvider, findContentNullStyle, findConvertingContentDeserializer, findDeserializer, findFormatFeature, findFormatOverrides, findValueNullProvider, getValueClass, getValueInstantiator, getValueType, getValueType, handledType, handleMissingEndArrayForSingle, handleNestedArrayForSingle, handleUnknownProperty, isDefaultDeserializer, isDefaultKeyDeserializer
Methods inherited from class com.fasterxml.jackson.databind.JsonDeserializer
deserialize, deserializeWithType, findBackReference, getAbsentValue, getDelegatee, getEmptyAccessPattern, getEmptyValue, getEmptyValue, getKnownPropertyNames, getNullAccessPattern, getNullValue, getNullValue, getObjectIdReader, isCachable, replaceDelegatee, supportsUpdate, unwrappingDeserializer
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
METHOD_NAMES
-
type
private final com.fasterxml.jackson.databind.type.MapLikeType type -
keyDeserializer
private final com.fasterxml.jackson.databind.KeyDeserializer keyDeserializer -
elementTypeDeserializer
private final com.fasterxml.jackson.databind.jsontype.TypeDeserializer elementTypeDeserializer -
elementDeserializer
private final com.fasterxml.jackson.databind.JsonDeserializer<?> elementDeserializer -
nullProvider
private final com.fasterxml.jackson.databind.deser.NullValueProvider nullProvider -
skipNullValues
private final boolean skipNullValues -
creatorMethod
Since we have to use a method to transform from a known multi-map type into actual one, we'll resolve method just once, use it. Note that if this is set to null, we can just construct aLinkedListMultimap
instance and be done with it.
-
-
Constructor Details
-
GuavaMultimapDeserializer
public GuavaMultimapDeserializer(com.fasterxml.jackson.databind.type.MapLikeType type, com.fasterxml.jackson.databind.KeyDeserializer keyDeserializer, com.fasterxml.jackson.databind.jsontype.TypeDeserializer elementTypeDeserializer, com.fasterxml.jackson.databind.JsonDeserializer<?> elementDeserializer) -
GuavaMultimapDeserializer
public GuavaMultimapDeserializer(com.fasterxml.jackson.databind.type.MapLikeType type, com.fasterxml.jackson.databind.KeyDeserializer keyDeserializer, com.fasterxml.jackson.databind.jsontype.TypeDeserializer elementTypeDeserializer, com.fasterxml.jackson.databind.JsonDeserializer<?> elementDeserializer, Method creatorMethod, com.fasterxml.jackson.databind.deser.NullValueProvider nvp)
-
-
Method Details
-
findTransformer
-
createMultimap
-
logicalType
public com.fasterxml.jackson.databind.type.LogicalType logicalType() -
createContextual
public com.fasterxml.jackson.databind.JsonDeserializer<?> createContextual(com.fasterxml.jackson.databind.DeserializationContext ctxt, com.fasterxml.jackson.databind.BeanProperty property) throws com.fasterxml.jackson.databind.JsonMappingException We need to use this method to properly handle possible contextual variants of key and value deserializers, as well as type deserializers.- Specified by:
createContextual
in interfacecom.fasterxml.jackson.databind.deser.ContextualDeserializer
- Throws:
com.fasterxml.jackson.databind.JsonMappingException
-
_createContextual
protected abstract com.fasterxml.jackson.databind.JsonDeserializer<?> _createContextual(com.fasterxml.jackson.databind.type.MapLikeType t, com.fasterxml.jackson.databind.KeyDeserializer kd, com.fasterxml.jackson.databind.jsontype.TypeDeserializer vtd, com.fasterxml.jackson.databind.JsonDeserializer<?> vd, Method method, com.fasterxml.jackson.databind.deser.NullValueProvider np) -
deserialize
public T deserialize(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) throws IOException - Specified by:
deserialize
in classcom.fasterxml.jackson.databind.JsonDeserializer<T extends com.google.common.collect.Multimap<Object,
Object>> - Throws:
IOException
-
deserializeContents
private T deserializeContents(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) throws IOException - Throws:
IOException
-
deserializeFromSingleValue
private T deserializeFromSingleValue(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) throws IOException - Throws:
IOException
-
getCurrentTokenValue
private Object getCurrentTokenValue(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) throws IOException - Throws:
IOException
-
expect
private void expect(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.core.JsonToken token) throws IOException - Throws:
IOException
-
_peel
-