public abstract class

AbstractHttpMessageConverter

extends Object
implements HttpMessageConverter<T>
java.lang.Object
   ↳ org.springframework.http.converter.AbstractHttpMessageConverter<T>
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

Abstract base class for most HttpMessageConverter implementations.

This base class adds support for setting supported MediaTypes, through the supportedMediaTypes bean property. It also adds support for Content-Type and Content-Length when writing to output messages.

Summary

Fields
protected final Log logger Logger available to subclasses
Protected Constructors
AbstractHttpMessageConverter()
Construct an AbstractHttpMessageConverter with no supported media types.
AbstractHttpMessageConverter(MediaType supportedMediaType)
Construct an AbstractHttpMessageConverter with one supported media type.
AbstractHttpMessageConverter(MediaType... supportedMediaTypes)
Construct an AbstractHttpMessageConverter with multiple supported media type.
Public Methods
boolean canRead(Class<?> clazz, MediaType mediaType)
Indicates whether the given class can be read by this converter.

This implementation checks if the given class is supported, and if the supported media types include the given media type.

boolean canWrite(Class<?> clazz, MediaType mediaType)
Indicates whether the given class can be written by this converter.

This implementation checks if the given class is supported, and if the supported media types include the given media type.

List<MediaType> getSupportedMediaTypes()
Return the list of MediaType objects supported by this converter.
final T read(Class<? extends T> clazz, HttpInputMessage inputMessage)
Read an object of the given type form the given input message, and returns it.

This implementation simple delegates to readInternal(Class, HttpInputMessage).

void setSupportedMediaTypes(List<MediaType> supportedMediaTypes)
Set the list of MediaType objects supported by this converter.
final void write(T t, MediaType contentType, HttpOutputMessage outputMessage)
Write an given object to the given output message.

This implementation delegates to getDefaultContentType(Object) if a content type was not provided, calls getContentLength(T, MediaType), and sets the corresponding headers on the output message.

Protected Methods
boolean canRead(MediaType mediaType)
Returns true if any of the supported media types include the given media type.
boolean canWrite(MediaType mediaType)
Returns true if the given media type includes any of the supported media types.
Long getContentLength(T t, MediaType contentType)
Returns the content length for the given type.
MediaType getDefaultContentType(T t)
Returns the default content type for the given type.
abstract T readInternal(Class<? extends T> clazz, HttpInputMessage inputMessage)
Abstract template method that reads the actualy object.
abstract boolean supports(Class<?> clazz)
Indicates whether the given class is supported by this converter.
abstract void writeInternal(T t, HttpOutputMessage outputMessage)
Abstract template method that writes the actual body.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.http.converter.HttpMessageConverter

Fields

protected final Log logger

Logger available to subclasses

Protected Constructors

protected AbstractHttpMessageConverter ()

Construct an AbstractHttpMessageConverter with no supported media types.

protected AbstractHttpMessageConverter (MediaType supportedMediaType)

Construct an AbstractHttpMessageConverter with one supported media type.

Parameters
supportedMediaType the supported media type

protected AbstractHttpMessageConverter (MediaType... supportedMediaTypes)

Construct an AbstractHttpMessageConverter with multiple supported media type.

Parameters
supportedMediaTypes the supported media types

Public Methods

public boolean canRead (Class<?> clazz, MediaType mediaType)

Indicates whether the given class can be read by this converter.

This implementation checks if the given class is supported, and if the supported media types include the given media type.

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

public boolean canWrite (Class<?> clazz, MediaType mediaType)

Indicates whether the given class can be written by this converter.

This implementation checks if the given class is supported, and if the supported media types include the given media type.

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

public List<MediaType> getSupportedMediaTypes ()

Return the list of MediaType objects supported by this converter.

Returns
  • the list of supported media types

public final T read (Class<? extends T> clazz, HttpInputMessage inputMessage)

Read an object of the given type form the given input message, and returns it.

This implementation simple delegates to readInternal(Class, HttpInputMessage). Future implementations might add some default behavior, however.

Parameters
clazz the type of object to return. This type must have previously been passed to the canRead method of this interface, which must have returned true.
inputMessage the HTTP input message to read from
Returns
  • the converted object
Throws
IOException

public void setSupportedMediaTypes (List<MediaType> supportedMediaTypes)

Set the list of MediaType objects supported by this converter.

public final void write (T t, MediaType contentType, HttpOutputMessage outputMessage)

Write an given object to the given output message.

This implementation delegates to getDefaultContentType(Object) if a content type was not provided, calls getContentLength(T, MediaType), and sets the corresponding headers on the output message. It then calls writeInternal(T, HttpOutputMessage).

Parameters
t the object to write to the output message. The type of this object must have previously been passed to the canWrite method of this interface, which must have returned true.
contentType the content type to use when writing. May be null to indicate that the default content type of the converter must be used. If not null, this media type must have previously been passed to the canWrite method of this interface, which must have returned true.
outputMessage the message to write to

Protected Methods

protected boolean canRead (MediaType mediaType)

Returns true if any of the supported media types include the given media type.

Parameters
mediaType the media type to read, can be null if not specified. Typically the value of a Content-Type header.
Returns
  • true if the supported media types include the media type, or if the media type is null

protected boolean canWrite (MediaType mediaType)

Returns true if the given media type includes any of the supported media types.

Parameters
mediaType the media type to write, can be null if not specified. Typically the value of an Accept header.
Returns
  • true if the supported media types are compatible with the media type, or if the media type is null

protected Long getContentLength (T t, MediaType contentType)

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.

Parameters
t the type to return the content length for
Returns
  • the content length, or null if not known

protected MediaType getDefaultContentType (T t)

Returns the default content type for the given type. Called when 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.

Parameters
t the type to return the content type for
Returns
  • the content type, or null if not known

protected abstract T readInternal (Class<? extends T> clazz, HttpInputMessage inputMessage)

Abstract template method that reads the actualy object. Invoked from read(Class, HttpInputMessage).

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

protected abstract boolean supports (Class<?> clazz)

Indicates whether the given class is supported by this converter.

Parameters
clazz the class to test for support
Returns
  • true if supported; false otherwise

protected abstract void writeInternal (T t, HttpOutputMessage outputMessage)

Abstract template method that writes the actual body. Invoked from write(T, MediaType, HttpOutputMessage).

Parameters
t the object to write to the output message
outputMessage the message to write to
Throws
IOException in case of I/O errors
HttpMessageNotWritableException in case of conversion errors