Class GuavaMultimapDeserializer<T extends com.google.common.collect.Multimap<Object,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, 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

    Fields
    Modifier and Type
    Field
    Description
    private 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 static final List<String>
     
    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

    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, Method creatorMethod, com.fasterxml.jackson.databind.deser.NullValueProvider nvp)
     
  • Method Summary

    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, 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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • METHOD_NAMES

      private static final List<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 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 a LinkedListMultimap 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

      private static Method findTransformer(Class<?> rawType)
    • createMultimap

      protected abstract T createMultimap()
    • logicalType

      public com.fasterxml.jackson.databind.type.LogicalType logicalType()
      Overrides:
      logicalType in class com.fasterxml.jackson.databind.JsonDeserializer<T extends com.google.common.collect.Multimap<Object,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 interface com.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 class com.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

      private Throwable _peel(Throwable t)