Class SimpleSerializers

java.lang.Object
tools.jackson.databind.ser.Serializers.Base
tools.jackson.databind.module.SimpleSerializers
All Implemented Interfaces:
Serializable, Serializers

public class SimpleSerializers extends Serializers.Base implements Serializable
Simple implementation Serializers which allows registration of serializers based on raw (type erased class). It can work well for basic bean and scalar type serializers, but is not a good fit for handling generic types (like Maps and Collections).

Type registrations are assumed to be general; meaning that registration of serializer for a super type will also be used for handling subtypes, unless an exact match is found first. As an example, handler for CharSequence would also be used serializing StringBuilder instances, unless a direct mapping was found.

See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • _classMappings

      protected HashMap<ClassKey, ValueSerializer<?>> _classMappings
      Class-based mappings that are used both for exact and sub-class matches.
    • _interfaceMappings

      protected HashMap<ClassKey, ValueSerializer<?>> _interfaceMappings
      Interface-based matches.
    • _hasEnumSerializer

      protected boolean _hasEnumSerializer
      Flag to help find "generic" enum serializer, if one has been registered.
  • Constructor Details

    • SimpleSerializers

      public SimpleSerializers()
    • SimpleSerializers

      public SimpleSerializers(List<ValueSerializer<?>> sers)
  • Method Details

    • addSerializer

      public SimpleSerializers addSerializer(ValueSerializer<?> ser)
      Method for adding given serializer for type that ValueSerializer.handledType() specifies (which MUST return a non-null class; and CANNOT be Object, as a sanity check). For serializers that do not declare handled type, use the variant that takes two arguments.
      Parameters:
      ser -
    • addSerializer

      public <T> SimpleSerializers addSerializer(Class<? extends T> type, ValueSerializer<T> ser)
    • addSerializers

      public SimpleSerializers addSerializers(List<ValueSerializer<?>> sers)
    • findSerializer

      public ValueSerializer<?> findSerializer(SerializationConfig config, JavaType type, BeanDescription.Supplier beanDescRef, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides)
      Description copied from interface: Serializers
      Fallback ethod called by serialization framework first time a serializer is needed for given type, which is not of any more specific type (like enum, tree node, reference or container type) for which other methods are called).

      Basically called for types for which none of other callbacks are called.

      Specified by:
      findSerializer in interface Serializers
      Parameters:
      config - Serialization configuration in use
      type - Fully resolved type of instances to serialize
      beanDescRef - Accessor to additional information about type
      formatOverrides - (nullable) Optional format overrides (usually from property definition), to change definitions that beanDesc may have (and which are NOT included). Usually combined calling Serializers.Base#calculateEffectiveFormat.
      Returns:
      Configured serializer to use for the type; or null if implementation does not recognize or support type
    • findEnumSerializer

      public ValueSerializer<?> findEnumSerializer(SerializationConfig config, JavaType type, BeanDescription.Supplier beanDescRef, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides)
      Description copied from interface: Serializers
      Method called by serialization framework first time a serializer is needed for given Enum type.
      Specified by:
      findEnumSerializer in interface Serializers
      Parameters:
      formatOverrides - (nullable) Optional format overrides (usually from property definition), to change definitions that beanDescRef may have (and which are NOT included). Usually combined calling Serializers.Base#calculateEffectiveFormat.
    • findTreeNodeSerializer

      public ValueSerializer<?> findTreeNodeSerializer(SerializationConfig config, JavaType type, BeanDescription.Supplier beanDescRef, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides)
      Description copied from interface: Serializers
      Method called by serialization framework first time a serializer is needed for given TreeNode (usually JsonNode) type.
      Specified by:
      findTreeNodeSerializer in interface Serializers
      Parameters:
      formatOverrides - (nullable) Optional format overrides (usually from property definition), to change definitions that beanDescRef may have (and which are NOT included). Usually combined calling Serializers.Base#calculateEffectiveFormat.
    • findArraySerializer

      public ValueSerializer<?> findArraySerializer(SerializationConfig config, ArrayType type, BeanDescription.Supplier beanDescRef, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides, TypeSerializer elementTypeSerializer, ValueSerializer<Object> elementValueSerializer)
      Description copied from interface: Serializers
      Method called by serialization framework first time a serializer is needed for specified array type. Implementation should return a serializer instance if it supports specified type; or null if it does not.
      Specified by:
      findArraySerializer in interface Serializers
      Parameters:
      formatOverrides - (nullable) Optional format overrides (usually from property definition), to change definitions that beanDesc may have (and which are NOT included). Usually combined calling Serializers.Base#calculateEffectiveFormat.
    • findCollectionSerializer

      public ValueSerializer<?> findCollectionSerializer(SerializationConfig config, CollectionType type, BeanDescription.Supplier beanDescRef, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides, TypeSerializer elementTypeSerializer, ValueSerializer<Object> elementValueSerializer)
      Description copied from interface: Serializers
      Method called by serialization framework first time a serializer is needed for specified Collection type. Implementation should return a serializer instance if it supports specified type; or null if it does not.
      Specified by:
      findCollectionSerializer in interface Serializers
      Parameters:
      formatOverrides - (nullable) Optional format overrides (usually from property definition), to change definitions that beanDesc may have (and which are NOT included). Usually combined calling Serializers.Base#calculateEffectiveFormat.
    • findCollectionLikeSerializer

      public ValueSerializer<?> findCollectionLikeSerializer(SerializationConfig config, CollectionLikeType type, BeanDescription.Supplier beanDescRef, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides, TypeSerializer elementTypeSerializer, ValueSerializer<Object> elementValueSerializer)
      Description copied from interface: Serializers
      Method called by serialization framework first time a serializer is needed for specified "Collection-like" type (type that acts like Collection, but does not implement it). Implementation should return a serializer instance if it supports specified type; or null if it does not.
      Specified by:
      findCollectionLikeSerializer in interface Serializers
      Parameters:
      formatOverrides - (nullable) Optional format overrides (usually from property definition), to change definitions that beanDesc may have (and which are NOT included). Usually combined calling Serializers.Base#calculateEffectiveFormat.
    • findMapSerializer

      public ValueSerializer<?> findMapSerializer(SerializationConfig config, MapType type, BeanDescription.Supplier beanDescRef, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides, ValueSerializer<Object> keySerializer, TypeSerializer elementTypeSerializer, ValueSerializer<Object> elementValueSerializer)
      Description copied from interface: Serializers
      Method called by serialization framework first time a serializer is needed for specified Map type. Implementation should return a serializer instance if it supports specified type; or null if it does not.
      Specified by:
      findMapSerializer in interface Serializers
      Parameters:
      formatOverrides - (nullable) Optional format overrides (usually from property definition), to change definitions that beanDesc may have (and which are NOT included). Usually combined calling Serializers.Base#calculateEffectiveFormat.
    • findMapLikeSerializer

      public ValueSerializer<?> findMapLikeSerializer(SerializationConfig config, MapLikeType type, BeanDescription.Supplier beanDescRef, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides, ValueSerializer<Object> keySerializer, TypeSerializer elementTypeSerializer, ValueSerializer<Object> elementValueSerializer)
      Description copied from interface: Serializers
      Method called by serialization framework first time a serializer is needed for specified "Map-like" type (type that acts like Map, but does not implement it). Implementation should return a serializer instance if it supports specified type; or null if it does not.
      Specified by:
      findMapLikeSerializer in interface Serializers
      Parameters:
      formatOverrides - (nullable) Optional format overrides (usually from property definition), to change definitions that beanDesc may have (and which are NOT included). Usually combined calling Serializers.Base#calculateEffectiveFormat.
    • findReferenceSerializer

      public ValueSerializer<?> findReferenceSerializer(SerializationConfig config, ReferenceType type, BeanDescription.Supplier beanDescRef, com.fasterxml.jackson.annotation.JsonFormat.Value formatOverrides, TypeSerializer contentTypeSerializer, ValueSerializer<Object> contentValueSerializer)
      Description copied from interface: Serializers
      Method called by serialization framework first time a serializer is needed for given ReferenceType
      Specified by:
      findReferenceSerializer in interface Serializers
      Parameters:
      formatOverrides - (nullable) Optional format overrides (usually from property definition), to change definitions that beanDesc may have (and which are NOT included). Usually combined calling Serializers.Base#calculateEffectiveFormat.
    • _findSerializer

      protected ValueSerializer<?> _findSerializer(SerializationConfig config, JavaType type)
    • _findInterfaceMapping

      protected ValueSerializer<?> _findInterfaceMapping(Class<?> cls, ClassKey key)
    • _addSerializer

      protected void _addSerializer(Class<?> cls, ValueSerializer<?> ser)