Class GuavaMultimapDeserializer<T extends com.google.common.collect.Multimap<java.lang.Object,java.lang.Object>>
- 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
,java.io.Serializable
- Direct Known Subclasses:
ArrayListMultimapDeserializer
,HashMultimapDeserializer
,LinkedHashMultimapDeserializer
,LinkedListMultimapDeserializer
public abstract class GuavaMultimapDeserializer<T extends com.google.common.collect.Multimap<java.lang.Object,java.lang.Object>> extends com.fasterxml.jackson.databind.deser.std.StdDeserializer<T> implements com.fasterxml.jackson.databind.deser.ContextualDeserializer
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.reflect.Method
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.private com.fasterxml.jackson.databind.JsonDeserializer<?>
elementDeserializer
private com.fasterxml.jackson.databind.jsontype.TypeDeserializer
elementTypeDeserializer
private com.fasterxml.jackson.databind.KeyDeserializer
keyDeserializer
private static java.util.List<java.lang.String>
METHOD_NAMES
private com.fasterxml.jackson.databind.deser.NullValueProvider
nullProvider
private static long
serialVersionUID
private boolean
skipNullValues
private com.fasterxml.jackson.databind.type.MapLikeType
type
-
Constructor Summary
Constructors Constructor Description 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(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, java.lang.reflect.Method creatorMethod, com.fasterxml.jackson.databind.deser.NullValueProvider nvp)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description 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, java.lang.reflect.Method method, com.fasterxml.jackson.databind.deser.NullValueProvider np)
private java.lang.Throwable
_peel(java.lang.Throwable t)
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
createMultimap()
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 java.lang.reflect.Method
findTransformer(java.lang.Class<?> rawType)
private java.lang.Object
getCurrentTokenValue(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt)
com.fasterxml.jackson.databind.type.LogicalType
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 Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
METHOD_NAMES
private static final java.util.List<java.lang.String> 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
private final java.lang.reflect.Method 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 Detail
-
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, java.lang.reflect.Method creatorMethod, com.fasterxml.jackson.databind.deser.NullValueProvider nvp)
-
-
Method Detail
-
findTransformer
private static java.lang.reflect.Method findTransformer(java.lang.Class<?> rawType)
-
createMultimap
protected abstract T createMultimap()
-
logicalType
public com.fasterxml.jackson.databind.type.LogicalType logicalType()
- Overrides:
logicalType
in classcom.fasterxml.jackson.databind.JsonDeserializer<T extends com.google.common.collect.Multimap<java.lang.Object,java.lang.Object>>
-
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, java.lang.reflect.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 java.io.IOException
- Specified by:
deserialize
in classcom.fasterxml.jackson.databind.JsonDeserializer<T extends com.google.common.collect.Multimap<java.lang.Object,java.lang.Object>>
- Throws:
java.io.IOException
-
deserializeContents
private T deserializeContents(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) throws java.io.IOException
- Throws:
java.io.IOException
-
deserializeFromSingleValue
private T deserializeFromSingleValue(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) throws java.io.IOException
- Throws:
java.io.IOException
-
getCurrentTokenValue
private java.lang.Object getCurrentTokenValue(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt) throws java.io.IOException
- Throws:
java.io.IOException
-
expect
private void expect(com.fasterxml.jackson.core.JsonParser p, com.fasterxml.jackson.core.JsonToken token) throws java.io.IOException
- Throws:
java.io.IOException
-
_peel
private java.lang.Throwable _peel(java.lang.Throwable t)
-
-