Class AbstractHttpMessageConverter<T>
java.lang.Object
org.springframework.http.converter.AbstractHttpMessageConverter<T>
- Type Parameters:
- T- the converted object type
- All Implemented Interfaces:
- HttpMessageConverter<T>
- Direct Known Subclasses:
- AbstractGenericHttpMessageConverter,- AbstractSmartHttpMessageConverter,- AbstractWireFeedHttpMessageConverter,- AbstractXmlHttpMessageConverter,- ByteArrayHttpMessageConverter,- ObjectToStringHttpMessageConverter,- ProtobufHttpMessageConverter,- ResourceHttpMessageConverter,- SourceHttpMessageConverter,- StringHttpMessageConverter
public abstract class AbstractHttpMessageConverter<T>
extends Object
implements HttpMessageConverter<T>
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.
- Since:
- 3.0
- Author:
- Arjen Poutsma, Juergen Hoeller, Sebastien Deleuze
- 
Field SummaryFields
- 
Constructor SummaryConstructorsModifierConstructorDescriptionprotectedConstruct anAbstractHttpMessageConverterwith no supported media types.protectedAbstractHttpMessageConverter(Charset defaultCharset, MediaType... supportedMediaTypes) Construct anAbstractHttpMessageConverterwith a default charset and multiple supported media types.protectedAbstractHttpMessageConverter(MediaType supportedMediaType) Construct anAbstractHttpMessageConverterwith one supported media type.protectedAbstractHttpMessageConverter(MediaType... supportedMediaTypes) Construct anAbstractHttpMessageConverterwith multiple supported media types.
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidaddDefaultHeaders(HttpHeaders headers, T t, MediaType contentType) Add default headers to the output message.booleanThis implementation checks if the given class is supported, and if the supported media types include the given media type.protected booleanbooleanprotected booleanReturnstrueif the given media type includes any of the supported media types.protected LonggetContentLength(T t, MediaType contentType) Returns the content length for the given type.Return the default character set, if any.protected MediaTypeReturns the default content type for the given type.Return the list of media types supported by this converter.final Tread(Class<? extends T> clazz, HttpInputMessage inputMessage) This implementation simple delegates toreadInternal(Class, HttpInputMessage).protected abstract TreadInternal(Class<? extends T> clazz, HttpInputMessage inputMessage) Abstract template method that reads the actual object.voidsetDefaultCharset(Charset defaultCharset) Set the default character set, if any.voidsetSupportedMediaTypes(List<MediaType> supportedMediaTypes) Set the list ofMediaTypeobjects supported by this converter.protected abstract booleanIndicates whether the given class is supported by this converter.protected booleanIndicates whether this message converter can write the given object multiple times.final voidwrite(T t, MediaType contentType, HttpOutputMessage outputMessage) This implementation sets the default headers by callingaddDefaultHeaders(org.springframework.http.HttpHeaders, T, org.springframework.http.MediaType), and then callswriteInternal(T, org.springframework.http.HttpOutputMessage).protected abstract voidwriteInternal(T t, HttpOutputMessage outputMessage) Abstract template method that writes the actual body.Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.http.converter.HttpMessageConvertergetSupportedMediaTypes
- 
Field Details- 
loggerLogger available to subclasses.
 
- 
- 
Constructor Details- 
AbstractHttpMessageConverterprotected AbstractHttpMessageConverter()Construct anAbstractHttpMessageConverterwith no supported media types.
- 
AbstractHttpMessageConverterConstruct anAbstractHttpMessageConverterwith one supported media type.- Parameters:
- supportedMediaType- the supported media type
 
- 
AbstractHttpMessageConverterConstruct anAbstractHttpMessageConverterwith multiple supported media types.- Parameters:
- supportedMediaTypes- the supported media types
 
- 
AbstractHttpMessageConverterConstruct anAbstractHttpMessageConverterwith a default charset and multiple supported media types.- Parameters:
- defaultCharset- the default character set
- supportedMediaTypes- the supported media types
- Since:
- 4.3
 
 
- 
- 
Method Details- 
setSupportedMediaTypesSet the list ofMediaTypeobjects supported by this converter.
- 
getSupportedMediaTypesDescription copied from interface:HttpMessageConverterReturn the list of media types supported by this converter. The list may not apply to every possible target element type and calls to this method should typically be guarded viacanWrite(clazz, null. The list may also exclude MIME types supported only for a specific class. Alternatively, useHttpMessageConverter.getSupportedMediaTypes(Class)for a more precise list.- Specified by:
- getSupportedMediaTypesin interface- HttpMessageConverter<T>
- Returns:
- the list of supported media types
 
- 
setDefaultCharsetSet the default character set, if any.- Since:
- 4.3
 
- 
getDefaultCharsetReturn the default character set, if any.- Since:
- 4.3
 
- 
canReadThis implementation checks if the given class is supported, and if the supported media types include the given media type.- Specified by:
- canReadin interface- HttpMessageConverter<T>
- Parameters:
- clazz- the class to test for readability
- mediaType- the media type to read (can be- nullif not specified); typically the value of a- Content-Typeheader.
- Returns:
- trueif readable;- falseotherwise
 
- 
canRead- Parameters:
- mediaType- the media type to read, can be- nullif not specified. Typically the value of a- Content-Typeheader.
- Returns:
- trueif the supported media types include the media type, or if the media type is- null
 
- 
canWriteThis implementation checks if the given class is supported, and if the supported media types include the given media type.- Specified by:
- canWritein interface- HttpMessageConverter<T>
- Parameters:
- clazz- the class to test for writability
- mediaType- the media type to write (can be- nullif not specified); typically the value of an- Acceptheader.
- Returns:
- trueif writable;- falseotherwise
 
- 
canWriteReturnstrueif the given media type includes any of the supported media types.- Parameters:
- mediaType- the media type to write, can be- nullif not specified. Typically the value of an- Acceptheader.
- Returns:
- trueif the supported media types are compatible with the media type, or if the media type is- null
 
- 
readpublic final T read(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException This implementation simple delegates toreadInternal(Class, HttpInputMessage). Future implementations might add some default behavior, however.- Specified by:
- readin interface- HttpMessageConverter<T>
- Parameters:
- clazz- the type of object to return. This type must have previously been passed to the- canReadmethod of this interface, which must have returned- true.
- 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
 
- 
writepublic final void write(T t, @Nullable MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException This implementation sets the default headers by callingaddDefaultHeaders(org.springframework.http.HttpHeaders, T, org.springframework.http.MediaType), and then callswriteInternal(T, org.springframework.http.HttpOutputMessage).- Specified by:
- writein interface- HttpMessageConverter<T>
- Parameters:
- t- the object to write to the output message. The type of this object must have previously been passed to the- canWritemethod of this interface, which must have returned- true.
- contentType- the content type to use when writing. May be- nullto 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- canWritemethod of this interface, which must have returned- true.
- outputMessage- the message to write to
- Throws:
- IOException- in case of I/O errors
- HttpMessageNotWritableException- in case of conversion errors
 
- 
addDefaultHeadersprotected void addDefaultHeaders(HttpHeaders headers, T t, @Nullable MediaType contentType) throws IOException Add default headers to the output message.This implementation delegates to getDefaultContentType(Object)if a content type was not provided, set if necessary the default character set, callsgetContentLength(T, org.springframework.http.MediaType), and sets the corresponding headers.- Throws:
- IOException
- Since:
- 4.2
 
- 
getDefaultContentTypeReturns the default content type for the given type. Called whenwrite(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 supportedMediaTypesproperty, if any. Can be overridden in subclasses.- Parameters:
- t- the type to return the content type for
- Returns:
- the content type, or nullif not known
- Throws:
- IOException
 
- 
getContentLengthReturns 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 nullif not known
- Throws:
- IOException
 
- 
supportsRepeatableWritesIndicates whether this message converter can write the given object multiple times.The default implementation returns false.- Parameters:
- t- the object t
- Returns:
- trueif- tcan be written repeatedly;- falseotherwise
- Since:
- 6.1
 
- 
supportsIndicates whether the given class is supported by this converter.- Parameters:
- clazz- the class to test for support
- Returns:
- trueif supported;- falseotherwise
 
- 
readInternalprotected abstract T readInternal(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException Abstract template method that reads the actual object. Invoked fromread(java.lang.Class<? extends T>, org.springframework.http.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
 
- 
writeInternalprotected abstract void writeInternal(T t, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException Abstract template method that writes the actual body. Invoked fromwrite(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage).- Parameters:
- t- the object to write to the output message
- outputMessage- the HTTP output message to write to
- Throws:
- IOException- in case of I/O errors
- HttpMessageNotWritableException- in case of conversion errors
 
 
-