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.
    &nbsp;

    Fields inherited from class&nbsp;AbstractHttpMessageConverter

    logger
  • Constructor summary

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

    Modifier and Type
    Method
    Description
    boolean
    canRead(Class<?>&nbsp;clazz, @Nullable MediaType&nbsp;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&nbsp;type, @Nullable Class<?>&nbsp;contextClass, @Nullable MediaType&nbsp;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<?>&nbsp;clazz, @Nullable MediaType&nbsp;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&nbsp;reader, com.fasterxml.jackson.databind.JavaType&nbsp;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&nbsp;writer, @Nullable com.fasterxml.jackson.databind.JavaType&nbsp;javaType, @Nullable MediaType&nbsp;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
    getCharset(@Nullable MediaType&nbsp;contentType)
    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
    getContentLength(Object&nbsp;object, @Nullable MediaType&nbsp;contentType)
    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&nbsp;type, @Nullable Class<?>&nbsp;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(JavaType) / ObjectMapper.canserialize(Class) check.
    read(Type&nbsp;type, @Nullable Class<?>&nbsp;contextClass, HttpInputMessage&nbsp;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<?>&nbsp;clazz, HttpInputMessage&nbsp;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<?>&nbsp;clazz, Consumer<Map<MediaType, com.fasterxml.jackson.databind.ObjectMapper>>&nbsp;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&nbsp;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&nbsp;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>&nbsp;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&nbsp;object, @Nullable Type&nbsp;type, HttpOutputMessage&nbsp;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&nbsp;generator, Object&nbsp;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&nbsp;generator, Object&nbsp;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&nbsp;Object

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

    Methods inherited from interface&nbsp;HttpMessageConverter

    getsupportedMediaTypes, read, write
  • Field Details

    • defaultObjectMapper

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

    • AbstractJackson2HttpMessageConverter

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

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

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

    • setsupportedMediaTypes

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

      public&nbsp;void&nbsp;setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper&nbsp;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&nbsp;com.fasterxml.jackson.databind.ObjectMapper&nbsp;getObjectMapper()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Return the main ObjectMapper in use.
    • registerObjectMappersForType

      public&nbsp;void&nbsp;registerObjectMappersForType(Class<?>&nbsp;clazz, Consumer<Map<MediaType, com.fasterxml.jackson.databind.ObjectMapper>>&nbsp;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&nbsp;Map<MediaType, com.fasterxml.jackson.databind.ObjectMapper>&nbsp;getObjectMappersForType(Class<?>&nbsp;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&nbsp;List<MediaType>&nbsp;getsupportedMediaTypes(Class<?>&nbsp;clazz)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from interface:&nbsp;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&nbsp;List<MediaType>&nbsp;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&nbsp;void&nbsp;setPrettyPrint(boolean&nbsp;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&nbsp;boolean&nbsp;canRead(Class<?>&nbsp;clazz, @Nullable MediaType&nbsp;mediaType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class:&nbsp;AbstractHttpMessageConverter
      This implementation checks if the given class is supported, and if the supported media types include the given media type.
      specified by:
      canRead&nbsp;in interface&nbsp;HttpMessageConverter<Object>
      Overrides:
      canRead&nbsp;in class&nbsp;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&nbsp;boolean&nbsp;canRead(Type&nbsp;type, @Nullable Class<?>&nbsp;contextClass, @Nullable MediaType&nbsp;mediaType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from interface:&nbsp;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&nbsp;in interface&nbsp;GenericHttpMessageConverter<Object>
      Overrides:
      canRead&nbsp;in class&nbsp;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&nbsp;boolean&nbsp;canWrite(Class<?>&nbsp;clazz, @Nullable MediaType&nbsp;mediaType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class:&nbsp;AbstractHttpMessageConverter
      This implementation checks if the given class is supported, and if the supported media types include the given media type.
      specified by:
      canWrite&nbsp;in interface&nbsp;HttpMessageConverter<Object>
      Overrides:
      canWrite&nbsp;in class&nbsp;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&nbsp;void&nbsp;logWarningIfNecessary(Type&nbsp;type, @Nullable Throwable&nbsp;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(JavaType) / ObjectMapper.canserialize(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&nbsp;Object&nbsp;read(Type&nbsp;type, @Nullable Class<?>&nbsp;contextClass, HttpInputMessage&nbsp;inputMessage) throws IOException, HttpMessageNotReadableException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from interface:&nbsp;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&nbsp;Object&nbsp;readInternal(Class<?>&nbsp;clazz, HttpInputMessage&nbsp;inputMessage) throws IOException, HttpMessageNotReadableException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class:&nbsp;AbstractHttpMessageConverter
      Abstract template method that reads the actual object. Invoked from AbstractHttpMessageConverter.read(Class, HttpInputMessage).
      specified by:
      readInternal&nbsp;in class&nbsp;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&nbsp;com.fasterxml.jackson.databind.ObjectReader&nbsp;customizeReader(com.fasterxml.jackson.databind.ObjectReader&nbsp;reader, com.fasterxml.jackson.databind.JavaType&nbsp;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&nbsp;Charset&nbsp;getCharset(@Nullable MediaType&nbsp;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&nbsp;void&nbsp;writeInternal(Object&nbsp;object, @Nullable Type&nbsp;type, HttpOutputMessage&nbsp;outputMessage) throws IOException, HttpMessageNotWritableException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class:&nbsp;AbstractGenericHttpMessageConverter
      Abstract template method that writes the actual body. Invoked from AbstractGenericHttpMessageConverter.write(T, Type, MediaType, HttpOutputMessage).
      specified by:
      writeInternal&nbsp;in class&nbsp;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&nbsp;com.fasterxml.jackson.databind.ObjectWriter&nbsp;customizeWriter(com.fasterxml.jackson.databind.ObjectWriter&nbsp;writer, @Nullable com.fasterxml.jackson.databind.JavaType&nbsp;javaType, @Nullable MediaType&nbsp;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&nbsp;void&nbsp;writePrefix(com.fasterxml.jackson.core.JsonGenerator&nbsp;generator, Object&nbsp;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&nbsp;void&nbsp;writesuffix(com.fasterxml.jackson.core.JsonGenerator&nbsp;generator, Object&nbsp;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&nbsp;com.fasterxml.jackson.databind.JavaType&nbsp;getJavaType(Type&nbsp;type, @Nullable Class<?>&nbsp;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&nbsp;com.fasterxml.jackson.core.JsonEncoding&nbsp;getJsonEncoding(@Nullable MediaType&nbsp;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&nbsp;@Nullable MediaType&nbsp;getDefaultContentType(Object&nbsp;object) throws IOException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class:&nbsp;AbstractHttpMessageConverter
      Returns the default content type for the given type. Called when AbstractHttpMessageConverter.write(T, MediaType, 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&nbsp;in class&nbsp;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&nbsp;@Nullable Long&nbsp;getContentLength(Object&nbsp;object, @Nullable MediaType&nbsp;contentType) throws IOException
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class:&nbsp;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&nbsp;in class&nbsp;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&nbsp;boolean&nbsp;supportsRepeatableWrites(Object&nbsp;o)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Description copied from class:&nbsp;AbstractHttpMessageConverter
      Indicates whether this message converter can write the given object multiple times.

      The default implementation returns false.

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