Class MultimapSerializer

java.lang.Object
com.fasterxml.jackson.databind.JsonSerializer<com.google.common.collect.Multimap<?,?>>
com.fasterxml.jackson.databind.ser.std.StdSerializer<com.google.common.collect.Multimap<?,?>>
com.fasterxml.jackson.databind.ser.ContainerSerializer<com.google.common.collect.Multimap<?,?>>
com.fasterxml.jackson.datatype.guava.ser.MultimapSerializer
All Implemented Interfaces:
com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable, com.fasterxml.jackson.databind.jsonschema.SchemaAware, com.fasterxml.jackson.databind.ser.ContextualSerializer, Serializable

public class MultimapSerializer extends com.fasterxml.jackson.databind.ser.ContainerSerializer<com.google.common.collect.Multimap<?,?>> implements com.fasterxml.jackson.databind.ser.ContextualSerializer
Serializer for Guava's Multimap values. Output format encloses all value sets in JSON Array, regardless of number of values; this to reduce complexity (and inaccuracy) of trying to handle cases where values themselves would be serialized as arrays (in which cases determining whether given array is a wrapper or value gets complicated and unreliable).
See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonSerializer

    com.fasterxml.jackson.databind.JsonSerializer.None
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap
    If value type can not be statically determined, mapping from runtime value types to serializers are stored in this object.
    protected final Object
    Id of the property filter to use, if any; null if none.
    protected final Set<String>
    Set of entries to omit during serialization, if any
    private final com.fasterxml.jackson.databind.JsonSerializer<Object>
     
    private final com.fasterxml.jackson.databind.BeanProperty
     
    protected final boolean
    Flag set if output is forced to be sorted by keys (usually due to annotation).
    private final com.fasterxml.jackson.databind.type.MapLikeType
     
    private final com.fasterxml.jackson.databind.JsonSerializer<Object>
     
    private final com.fasterxml.jackson.databind.jsontype.TypeSerializer
     
    private static final long
     

    Fields inherited from class com.fasterxml.jackson.databind.ser.std.StdSerializer

    _handledType
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
     
    MultimapSerializer(com.fasterxml.jackson.databind.type.MapLikeType type, com.fasterxml.jackson.databind.BeanDescription beanDesc, com.fasterxml.jackson.databind.JsonSerializer<Object> keySerializer, com.fasterxml.jackson.databind.jsontype.TypeSerializer vts, com.fasterxml.jackson.databind.JsonSerializer<Object> valueSerializer, Set<String> ignoredEntries, Object filterId)
     
    protected
    MultimapSerializer(MultimapSerializer src, com.fasterxml.jackson.databind.BeanProperty property, com.fasterxml.jackson.databind.JsonSerializer<?> keySerializer, com.fasterxml.jackson.databind.jsontype.TypeSerializer vts, com.fasterxml.jackson.databind.JsonSerializer<?> valueSerializer, Set<String> ignoredEntries, Object filterId, boolean sortKeys)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected final com.fasterxml.jackson.databind.JsonSerializer<Object>
    _findAndAddDynamic(com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap map, com.fasterxml.jackson.databind.JavaType type, com.fasterxml.jackson.databind.SerializerProvider provider)
     
    protected final com.fasterxml.jackson.databind.JsonSerializer<Object>
    _findAndAddDynamic(com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap map, Class<?> type, com.fasterxml.jackson.databind.SerializerProvider provider)
     
    protected com.google.common.collect.Multimap<?,?>
    _orderEntriesByKey(com.google.common.collect.Multimap<?,?> value, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider provider)
     
    protected com.fasterxml.jackson.databind.ser.ContainerSerializer<?>
    _withValueTypeSerializer(com.fasterxml.jackson.databind.jsontype.TypeSerializer typeSer)
     
    void
    acceptJsonFormatVisitor(com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper visitor, com.fasterxml.jackson.databind.JavaType typeHint)
     
    com.fasterxml.jackson.databind.JsonSerializer<?>
    createContextual(com.fasterxml.jackson.databind.SerializerProvider provider, com.fasterxml.jackson.databind.BeanProperty property)
     
    com.fasterxml.jackson.databind.JsonSerializer<?>
     
    com.fasterxml.jackson.databind.JavaType
     
    boolean
    hasSingleElement(com.google.common.collect.Multimap<?,?> map)
     
    boolean
    isEmpty(com.fasterxml.jackson.databind.SerializerProvider prov, com.google.common.collect.Multimap<?,?> value)
     
    void
    serialize(com.google.common.collect.Multimap<?,?> value, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider provider)
     
    private final void
    serializeFields(com.google.common.collect.Multimap<?,?> mmap, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider provider)
     
    private final void
    serializeFilteredFields(com.google.common.collect.Multimap<?,?> mmap, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider provider)
     
    void
    serializeWithType(com.google.common.collect.Multimap<?,?> value, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider provider, com.fasterxml.jackson.databind.jsontype.TypeSerializer typeSer)
     
    withResolved(com.fasterxml.jackson.databind.BeanProperty property, com.fasterxml.jackson.databind.JsonSerializer<?> keySer, com.fasterxml.jackson.databind.jsontype.TypeSerializer vts, com.fasterxml.jackson.databind.JsonSerializer<?> valueSer, Set<String> ignored, Object filterId, boolean sortKeys)
     

    Methods inherited from class com.fasterxml.jackson.databind.ser.ContainerSerializer

    hasContentTypeAnnotation, withValueTypeSerializer

    Methods inherited from class com.fasterxml.jackson.databind.ser.std.StdSerializer

    _neitherNull, _nonEmpty, createSchemaNode, createSchemaNode, findAnnotatedContentSerializer, findContextualConvertingSerializer, findConvertingContentSerializer, findFormatFeature, findFormatOverrides, findIncludeOverrides, findPropertyFilter, getSchema, getSchema, handledType, isDefaultSerializer, visitArrayFormat, visitArrayFormat, visitFloatFormat, visitIntFormat, visitIntFormat, visitStringFormat, visitStringFormat, wrapAndThrow, wrapAndThrow

    Methods inherited from class com.fasterxml.jackson.databind.JsonSerializer

    getDelegatee, isEmpty, isUnwrappingSerializer, properties, replaceDelegatee, unwrappingSerializer, usesObjectId, withFilterId, withIgnoredProperties

    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:
    • _type

      private final com.fasterxml.jackson.databind.type.MapLikeType _type
    • _property

      private final com.fasterxml.jackson.databind.BeanProperty _property
    • _keySerializer

      private final com.fasterxml.jackson.databind.JsonSerializer<Object> _keySerializer
    • _valueTypeSerializer

      private final com.fasterxml.jackson.databind.jsontype.TypeSerializer _valueTypeSerializer
    • _valueSerializer

      private final com.fasterxml.jackson.databind.JsonSerializer<Object> _valueSerializer
    • _ignoredEntries

      protected final Set<String> _ignoredEntries
      Set of entries to omit during serialization, if any
      Since:
      2.5
    • _dynamicValueSerializers

      protected com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap _dynamicValueSerializers
      If value type can not be statically determined, mapping from runtime value types to serializers are stored in this object.
      Since:
      2.5
    • _filterId

      protected final Object _filterId
      Id of the property filter to use, if any; null if none.
      Since:
      2.5
    • _sortKeys

      protected final boolean _sortKeys
      Flag set if output is forced to be sorted by keys (usually due to annotation).
      Since:
      2.15
  • Constructor Details

    • MultimapSerializer

      public MultimapSerializer(com.fasterxml.jackson.databind.type.MapLikeType type, com.fasterxml.jackson.databind.BeanDescription beanDesc, com.fasterxml.jackson.databind.JsonSerializer<Object> keySerializer, com.fasterxml.jackson.databind.jsontype.TypeSerializer vts, com.fasterxml.jackson.databind.JsonSerializer<Object> valueSerializer, Set<String> ignoredEntries, Object filterId)
    • MultimapSerializer

      protected MultimapSerializer(MultimapSerializer src, com.fasterxml.jackson.databind.BeanProperty property, com.fasterxml.jackson.databind.JsonSerializer<?> keySerializer, com.fasterxml.jackson.databind.jsontype.TypeSerializer vts, com.fasterxml.jackson.databind.JsonSerializer<?> valueSerializer, Set<String> ignoredEntries, Object filterId, boolean sortKeys)
      Since:
      2.5
  • Method Details

    • withResolved

      protected MultimapSerializer withResolved(com.fasterxml.jackson.databind.BeanProperty property, com.fasterxml.jackson.databind.JsonSerializer<?> keySer, com.fasterxml.jackson.databind.jsontype.TypeSerializer vts, com.fasterxml.jackson.databind.JsonSerializer<?> valueSer, Set<String> ignored, Object filterId, boolean sortKeys)
    • _withValueTypeSerializer

      protected com.fasterxml.jackson.databind.ser.ContainerSerializer<?> _withValueTypeSerializer(com.fasterxml.jackson.databind.jsontype.TypeSerializer typeSer)
      Specified by:
      _withValueTypeSerializer in class com.fasterxml.jackson.databind.ser.ContainerSerializer<com.google.common.collect.Multimap<?,?>>
    • createContextual

      public com.fasterxml.jackson.databind.JsonSerializer<?> createContextual(com.fasterxml.jackson.databind.SerializerProvider provider, com.fasterxml.jackson.databind.BeanProperty property) throws com.fasterxml.jackson.databind.JsonMappingException
      Specified by:
      createContextual in interface com.fasterxml.jackson.databind.ser.ContextualSerializer
      Throws:
      com.fasterxml.jackson.databind.JsonMappingException
    • getContentSerializer

      public com.fasterxml.jackson.databind.JsonSerializer<?> getContentSerializer()
      Specified by:
      getContentSerializer in class com.fasterxml.jackson.databind.ser.ContainerSerializer<com.google.common.collect.Multimap<?,?>>
    • getContentType

      public com.fasterxml.jackson.databind.JavaType getContentType()
      Specified by:
      getContentType in class com.fasterxml.jackson.databind.ser.ContainerSerializer<com.google.common.collect.Multimap<?,?>>
    • hasSingleElement

      public boolean hasSingleElement(com.google.common.collect.Multimap<?,?> map)
      Specified by:
      hasSingleElement in class com.fasterxml.jackson.databind.ser.ContainerSerializer<com.google.common.collect.Multimap<?,?>>
    • isEmpty

      public boolean isEmpty(com.fasterxml.jackson.databind.SerializerProvider prov, com.google.common.collect.Multimap<?,?> value)
      Overrides:
      isEmpty in class com.fasterxml.jackson.databind.JsonSerializer<com.google.common.collect.Multimap<?,?>>
    • serialize

      public void serialize(com.google.common.collect.Multimap<?,?> value, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider provider) throws IOException
      Specified by:
      serialize in class com.fasterxml.jackson.databind.ser.std.StdSerializer<com.google.common.collect.Multimap<?,?>>
      Throws:
      IOException
    • serializeWithType

      public void serializeWithType(com.google.common.collect.Multimap<?,?> value, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider provider, com.fasterxml.jackson.databind.jsontype.TypeSerializer typeSer) throws IOException
      Overrides:
      serializeWithType in class com.fasterxml.jackson.databind.JsonSerializer<com.google.common.collect.Multimap<?,?>>
      Throws:
      IOException
    • serializeFields

      private final void serializeFields(com.google.common.collect.Multimap<?,?> mmap, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider provider) throws IOException
      Throws:
      IOException
    • serializeFilteredFields

      private final void serializeFilteredFields(com.google.common.collect.Multimap<?,?> mmap, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider provider) throws IOException
      Throws:
      IOException
    • acceptJsonFormatVisitor

      public void acceptJsonFormatVisitor(com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper visitor, com.fasterxml.jackson.databind.JavaType typeHint) throws com.fasterxml.jackson.databind.JsonMappingException
      Specified by:
      acceptJsonFormatVisitor in interface com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable
      Overrides:
      acceptJsonFormatVisitor in class com.fasterxml.jackson.databind.ser.std.StdSerializer<com.google.common.collect.Multimap<?,?>>
      Throws:
      com.fasterxml.jackson.databind.JsonMappingException
    • _orderEntriesByKey

      protected com.google.common.collect.Multimap<?,?> _orderEntriesByKey(com.google.common.collect.Multimap<?,?> value, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider provider) throws IOException
      Throws:
      IOException
      Since:
      2.15
    • _findAndAddDynamic

      protected final com.fasterxml.jackson.databind.JsonSerializer<Object> _findAndAddDynamic(com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap map, Class<?> type, com.fasterxml.jackson.databind.SerializerProvider provider) throws com.fasterxml.jackson.databind.JsonMappingException
      Throws:
      com.fasterxml.jackson.databind.JsonMappingException
    • _findAndAddDynamic

      protected final com.fasterxml.jackson.databind.JsonSerializer<Object> _findAndAddDynamic(com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap map, com.fasterxml.jackson.databind.JavaType type, com.fasterxml.jackson.databind.SerializerProvider provider) throws com.fasterxml.jackson.databind.JsonMappingException
      Throws:
      com.fasterxml.jackson.databind.JsonMappingException