Class AbstractJackson2HttpMessageConverter

All Implemented Interfaces:
GenericHttpMessageConverter<Object>, HttpMessageConverter<Object>
Direct Known Subclasses:
MappingJackson2CborHttpMessageConverter, MappingJackson2HttpMessageConverter, MappingJackson2SmileHttpMessageConverter, MappingJackson2XmlHttpMessageConverter, MappingJackson2YamlHttpMessageConverter

@Deprecated(since="7.0", forRemoval=true) public abstract class AbstractJackson2HttpMessageConverter extends AbstractGenericHttpMessageConverter<Object>
Deprecated, for removal: This API element is subject to removal in a future version.
Abstract base class for Jackson based and content type independent HttpMessageConverter implementations.
Since:
4.1
Author:
Arjen Poutsma, Keith Donald, Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze, Sam Brannen
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected com.fasterxml.jackson.databind.ObjectMapper
    Deprecated, for removal: This API element is subject to removal in a future version.
     

    Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter

    logger
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    AbstractJackson2HttpMessageConverter(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
    Deprecated, for removal: This API element is subject to removal in a future version.
     
    protected
    AbstractJackson2HttpMessageConverter(com.fasterxml.jackson.databind.ObjectMapper objectMapper, MediaType supportedMediaType)
    Deprecated, for removal: This API element is subject to removal in a future version.
     
    protected
    AbstractJackson2HttpMessageConverter(com.fasterxml.jackson.databind.ObjectMapper objectMapper, MediaType... supportedMediaTypes)
    Deprecated, for removal: This API element is subject to removal in a future version.
     
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    canRead(Class<?> clazz, @Nullable MediaType mediaType)
    Deprecated, for removal: This API element is subject to removal in a future version.
    This implementation checks if the given class is supported, and if the supported media types include the given media type.
    boolean
    canRead(Type type, @Nullable Class<?> contextClass, @Nullable MediaType mediaType)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Indicates whether the given type can be read by this converter.
    boolean
    canWrite(Class<?> clazz, @Nullable MediaType mediaType)
    Deprecated, for removal: This API element is subject to removal in a future version.
    This implementation checks if the given class is supported, and if the supported media types include the given media type.
    protected com.fasterxml.jackson.databind.ObjectReader
    customizeReader(com.fasterxml.jackson.databind.ObjectReader reader, com.fasterxml.jackson.databind.JavaType javaType)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Subclasses can use this method to customize ObjectReader used for reading values.
    protected com.fasterxml.jackson.databind.ObjectWriter
    customizeWriter(com.fasterxml.jackson.databind.ObjectWriter writer, @Nullable com.fasterxml.jackson.databind.JavaType javaType, @Nullable MediaType contentType)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Subclasses can use this method to customize ObjectWriter used for writing values.
    protected Charset
    Deprecated, for removal: This API element is subject to removal in a future version.
    Determine the charset to use for JSON input.
    protected @Nullable Long
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns the content length for the given type.
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns the default content type for the given type.
    protected com.fasterxml.jackson.databind.JavaType
    getJavaType(Type type, @Nullable Class<?> contextClass)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Return the Jackson JavaType for the specified type and context class.
    protected com.fasterxml.jackson.core.JsonEncoding
    Deprecated, for removal: This API element is subject to removal in a future version.
    Determine the JSON encoding to use for the given content type.
    protected List<MediaType>
    Deprecated, for removal: This API element is subject to removal in a future version.
    Return the supported media type(s) for ProblemDetail.
    com.fasterxml.jackson.databind.ObjectMapper
    Deprecated, for removal: This API element is subject to removal in a future version.
    Return the main ObjectMapper in use.
    Map<MediaType, com.fasterxml.jackson.databind.ObjectMapper>
    Deprecated, for removal: This API element is subject to removal in a future version.
    Return ObjectMapper registrations for the given class, if any.
    Deprecated, for removal: This API element is subject to removal in a future version.
    Return the list of media types supported by this converter for the given class.
    protected void
    Deprecated, for removal: This API element is subject to removal in a future version.
    Determine whether to log the given exception coming from a ObjectMapper.canDeserialize(com.fasterxml.jackson.databind.JavaType) / ObjectMapper.canSerialize(java.lang.Class<?>) check.
    read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Read an object of the given type from the given input message, and returns it.
    protected Object
    readInternal(Class<?> clazz, HttpInputMessage inputMessage)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Abstract template method that reads the actual object.
    void
    registerObjectMappersForType(Class<?> clazz, Consumer<Map<MediaType, com.fasterxml.jackson.databind.ObjectMapper>> registrar)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Configure the ObjectMapper instances to use for the given Class.
    void
    setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Configure the main ObjectMapper to use for Object conversion.
    void
    setPrettyPrint(boolean prettyPrint)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Whether to use the DefaultPrettyPrinter when writing JSON.
    void
    setSupportedMediaTypes(List<MediaType> supportedMediaTypes)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Set the list of MediaType objects supported by this converter.
    protected boolean
    Deprecated, for removal: This API element is subject to removal in a future version.
    Indicates whether this message converter can write the given object multiple times.
    protected void
    writeInternal(Object object, @Nullable Type type, HttpOutputMessage outputMessage)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Abstract template method that writes the actual body.
    protected void
    writePrefix(com.fasterxml.jackson.core.JsonGenerator generator, Object object)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Write a prefix before the main content.
    protected void
    writeSuffix(com.fasterxml.jackson.core.JsonGenerator generator, Object object)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Write a suffix after the main content.

    Methods inherited from class org.springframework.http.converter.AbstractGenericHttpMessageConverter

    canWrite, supports, write, writeInternal

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.springframework.http.converter.HttpMessageConverter

    getSupportedMediaTypes, read, write
  • Field Details

    • defaultObjectMapper

      protected com.fasterxml.jackson.databind.ObjectMapper defaultObjectMapper
      Deprecated, for removal: This API element is subject to removal in a future version.
  • Constructor Details

    • AbstractJackson2HttpMessageConverter

      protected AbstractJackson2HttpMessageConverter(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
      Deprecated, for removal: This API element is subject to removal in a future version.
    • AbstractJackson2HttpMessageConverter

      protected AbstractJackson2HttpMessageConverter(com.fasterxml.jackson.databind.ObjectMapper objectMapper, MediaType supportedMediaType)
      Deprecated, for removal: This API element is subject to removal in a future version.
    • AbstractJackson2HttpMessageConverter

      protected AbstractJackson2HttpMessageConverter(com.fasterxml.jackson.databind.ObjectMapper objectMapper, MediaType... supportedMediaTypes)
      Deprecated, for removal: This API element is subject to removal in a future version.
  • Method Details

    • setSupportedMediaTypes

      public void setSupportedMediaTypes(List<MediaType> supportedMediaTypes)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class: AbstractHttpMessageConverter
      Set the list of MediaType objects supported by this converter.
      Overrides:
      setSupportedMediaTypes in class AbstractHttpMessageConverter<Object>
    • setObjectMapper

      public void setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Configure the main ObjectMapper to use for Object conversion. If not set, a default ObjectMapper instance is created.

      Setting a custom-configured ObjectMapper is one way to take further control of the JSON serialization process. For example, an extended SerializerFactory can be configured that provides custom serializers for specific types. Another option for refining the serialization process is to use Jackson's provided annotations on the types to be serialized, in which case a custom-configured ObjectMapper is unnecessary.

      See Also:
    • getObjectMapper

      public com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Return the main ObjectMapper in use.
    • registerObjectMappersForType

      public void registerObjectMappersForType(Class<?> clazz, Consumer<Map<MediaType, com.fasterxml.jackson.databind.ObjectMapper>> registrar)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Configure the ObjectMapper instances to use for the given Class. This is useful when you want to deviate from the default ObjectMapper or have the ObjectMapper vary by MediaType.

      Note: Use of this method effectively turns off use of the default ObjectMapper and supportedMediaTypes for the given class. Therefore it is important for the mappings configured here to include every MediaType that must be supported for the given class.

      Parameters:
      clazz - the type of Object to register ObjectMapper instances for
      registrar - a consumer to populate or otherwise update the MediaType-to-ObjectMapper associations for the given Class
      Since:
      5.3.4
    • getObjectMappersForType

      public Map<MediaType, com.fasterxml.jackson.databind.ObjectMapper> getObjectMappersForType(Class<?> clazz)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Return ObjectMapper registrations for the given class, if any.
      Parameters:
      clazz - the class to look up for registrations for
      Returns:
      a map with registered MediaType-to-ObjectMapper registrations, or empty if in case of no registrations for the given class.
      Since:
      5.3.4
    • getSupportedMediaTypes

      public List<MediaType> getSupportedMediaTypes(Class<?> clazz)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from interface: HttpMessageConverter
      Return the list of media types supported by this converter for the given class. The list may differ from HttpMessageConverter.getSupportedMediaTypes() if the converter does not support the given Class or if it supports it only for a subset of media types.
      Parameters:
      clazz - the type of class to check
      Returns:
      the list of media types supported for the given class
    • getMediaTypesForProblemDetail

      protected List<MediaType> getMediaTypesForProblemDetail()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Return the supported media type(s) for ProblemDetail. By default, an empty list, unless overridden in subclasses.
      Since:
      6.0.5
    • setPrettyPrint

      public void setPrettyPrint(boolean prettyPrint)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Whether to use the DefaultPrettyPrinter when writing JSON. This is a shortcut for setting up an ObjectMapper as follows:
       ObjectMapper mapper = new ObjectMapper();
       mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
       converter.setObjectMapper(mapper);
       
    • canRead

      public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class: AbstractHttpMessageConverter
      This implementation checks if the given class is supported, and if the supported media types include the given media type.
      Specified by:
      canRead in interface HttpMessageConverter<Object>
      Overrides:
      canRead in class AbstractHttpMessageConverter<Object>
      Parameters:
      clazz - the class to test for readability
      mediaType - the media type to read (can be null if not specified); typically the value of a Content-Type header.
      Returns:
      true if readable; false otherwise
    • canRead

      public boolean canRead(Type type, @Nullable Class<?> contextClass, @Nullable MediaType mediaType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from interface: GenericHttpMessageConverter
      Indicates whether the given type can be read by this converter. This method should perform the same checks as HttpMessageConverter.canRead(Class, MediaType) with additional ones related to the generic type.
      Specified by:
      canRead in interface GenericHttpMessageConverter<Object>
      Overrides:
      canRead in class AbstractGenericHttpMessageConverter<Object>
      Parameters:
      type - the (potentially generic) type to test for readability
      contextClass - a context class for the target type, for example a class in which the target type appears in a method signature (can be null)
      mediaType - the media type to read, can be null if not specified. Typically, the value of a Content-Type header.
      Returns:
      true if readable; false otherwise
    • canWrite

      public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class: AbstractHttpMessageConverter
      This implementation checks if the given class is supported, and if the supported media types include the given media type.
      Specified by:
      canWrite in interface HttpMessageConverter<Object>
      Overrides:
      canWrite in class AbstractHttpMessageConverter<Object>
      Parameters:
      clazz - the class to test for writability
      mediaType - the media type to write (can be null if not specified); typically the value of an Accept header.
      Returns:
      true if writable; false otherwise
    • logWarningIfNecessary

      protected void logWarningIfNecessary(Type type, @Nullable Throwable cause)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Determine whether to log the given exception coming from a ObjectMapper.canDeserialize(com.fasterxml.jackson.databind.JavaType) / ObjectMapper.canSerialize(java.lang.Class<?>) check.
      Parameters:
      type - the class that Jackson tested for (de-)serializability
      cause - the Jackson-thrown exception to evaluate (typically a JsonMappingException)
      Since:
      4.3
    • read

      public Object read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from interface: GenericHttpMessageConverter
      Read an object of the given type from the given input message, and returns it.
      Parameters:
      type - the (potentially generic) type of object to return. This type must have previously been passed to the canRead method of this interface, which must have returned true.
      contextClass - a context class for the target type, for example a class in which the target type appears in a method signature (can be null)
      inputMessage - the HTTP input message to read from
      Returns:
      the converted object
      Throws:
      IOException - in case of I/O errors
      HttpMessageNotReadableException - in case of conversion errors
    • readInternal

      protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class: AbstractHttpMessageConverter
      Specified by:
      readInternal in class AbstractHttpMessageConverter<Object>
      Parameters:
      clazz - the type of object to return
      inputMessage - the HTTP input message to read from
      Returns:
      the converted object
      Throws:
      IOException - in case of I/O errors
      HttpMessageNotReadableException - in case of conversion errors
    • customizeReader

      protected com.fasterxml.jackson.databind.ObjectReader customizeReader(com.fasterxml.jackson.databind.ObjectReader reader, com.fasterxml.jackson.databind.JavaType javaType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Subclasses can use this method to customize ObjectReader used for reading values.
      Parameters:
      reader - the reader instance to customize
      javaType - the target type of element values to read to
      Returns:
      the customized ObjectReader
      Since:
      6.0
    • getCharset

      protected Charset getCharset(@Nullable MediaType contentType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Determine the charset to use for JSON input.

      By default this is either the charset from the input MediaType or otherwise falling back on UTF-8. Can be overridden in subclasses.

      Parameters:
      contentType - the content type of the HTTP input message
      Returns:
      the charset to use
      Since:
      5.1.18
    • writeInternal

      protected void writeInternal(Object object, @Nullable Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class: AbstractGenericHttpMessageConverter
      Specified by:
      writeInternal in class AbstractGenericHttpMessageConverter<Object>
      Parameters:
      object - the object to write to the output message
      type - the type of object to write (may be null)
      outputMessage - the HTTP output message to write to
      Throws:
      IOException - in case of I/O errors
      HttpMessageNotWritableException - in case of conversion errors
    • customizeWriter

      protected com.fasterxml.jackson.databind.ObjectWriter customizeWriter(com.fasterxml.jackson.databind.ObjectWriter writer, @Nullable com.fasterxml.jackson.databind.JavaType javaType, @Nullable MediaType contentType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Subclasses can use this method to customize ObjectWriter used for writing values.
      Parameters:
      writer - the writer instance to customize
      javaType - the type of element values to write
      contentType - the selected media type
      Returns:
      the customized ObjectWriter
      Since:
      6.0
    • writePrefix

      protected void writePrefix(com.fasterxml.jackson.core.JsonGenerator generator, Object object) throws IOException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Write a prefix before the main content.
      Parameters:
      generator - the generator to use for writing content.
      object - the object to write to the output message.
      Throws:
      IOException
    • writeSuffix

      protected void writeSuffix(com.fasterxml.jackson.core.JsonGenerator generator, Object object) throws IOException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Write a suffix after the main content.
      Parameters:
      generator - the generator to use for writing content.
      object - the object to write to the output message.
      Throws:
      IOException
    • getJavaType

      protected com.fasterxml.jackson.databind.JavaType getJavaType(Type type, @Nullable Class<?> contextClass)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Return the Jackson JavaType for the specified type and context class.
      Parameters:
      type - the generic type to return the Jackson JavaType for
      contextClass - a context class for the target type, for example a class in which the target type appears in a method signature (can be null)
      Returns:
      the Jackson JavaType
    • getJsonEncoding

      protected com.fasterxml.jackson.core.JsonEncoding getJsonEncoding(@Nullable MediaType contentType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Determine the JSON encoding to use for the given content type.
      Parameters:
      contentType - the media type as requested by the caller
      Returns:
      the JSON encoding to use (never null)
    • getDefaultContentType

      protected @Nullable MediaType getDefaultContentType(Object object) throws IOException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class: AbstractHttpMessageConverter
      Returns the default content type for the given type. Called when AbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage) is invoked without a specified content type parameter.

      By default, this returns the first element of the supportedMediaTypes property, if any. Can be overridden in subclasses.

      Overrides:
      getDefaultContentType in class AbstractHttpMessageConverter<Object>
      Parameters:
      object - the type to return the content type for
      Returns:
      the content type, or null if not known
      Throws:
      IOException
    • getContentLength

      protected @Nullable Long getContentLength(Object object, @Nullable MediaType contentType) throws IOException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class: AbstractHttpMessageConverter
      Returns the content length for the given type.

      By default, this returns null, meaning that the content length is unknown. Can be overridden in subclasses.

      Overrides:
      getContentLength in class AbstractHttpMessageConverter<Object>
      Parameters:
      object - the type to return the content length for
      Returns:
      the content length, or null if not known
      Throws:
      IOException
    • supportsRepeatableWrites

      protected boolean supportsRepeatableWrites(Object o)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class: AbstractHttpMessageConverter
      Indicates whether this message converter can write the given object multiple times.

      The default implementation returns false.

      Overrides:
      supportsRepeatableWrites in class AbstractHttpMessageConverter<Object>
      Parameters:
      o - the object t
      Returns:
      true if t can be written repeatedly; false otherwise