Class ResourceHttpMessageConverter
- java.lang.Object
- org.springframework.http.converter.AbstractHttpMessageConverter<Resource>
- org.springframework.http.converter.ResourceHttpMessageConverter
- All Implemented Interfaces:
HttpMessageConverter<Resource>
public class ResourceHttpMessageConverter extends AbstractHttpMessageConverter<Resource>
Implementation ofHttpMessageConverter
that can read/writeResources
and supports byte range requests.By default, this converter can read all media types. The
MediaTypeFactory
is used to determine theContent-Type
of written resources.- Since:
- 3.0.2
- Author:
- Arjen Poutsma, Juergen Hoeller, Kazuki Shimizu
Field Summary
Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger
Constructor Summary
Constructors Constructor Description ResourceHttpMessageConverter()
Create a new instance of theResourceHttpMessageConverter
that supports read streaming, i.e.ResourceHttpMessageConverter(boolean supportsReadStreaming)
Create a new instance of theResourceHttpMessageConverter
.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Long
getContentLength(Resource resource, MediaType contentType)
Returns the content length for the given type.protected MediaType
getDefaultContentType(Resource resource)
Returns the default content type for the given type.protected Resource
readInternal(Class<? extends Resource> clazz, HttpInputMessage inputMessage)
Abstract template method that reads the actual object.protected boolean
supports(Class<?> clazz)
Indicates whether the given class is supported by this converter.protected void
writeContent(Resource resource, HttpOutputMessage outputMessage)
protected void
writeInternal(Resource resource, HttpOutputMessage outputMessage)
Abstract template method that writes the actual body.Methods inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
addDefaultHeaders, canRead, canRead, canWrite, canWrite, getDefaultCharset, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, write
Constructor Detail
ResourceHttpMessageConverter
public ResourceHttpMessageConverter()
Create a new instance of theResourceHttpMessageConverter
that supports read streaming, i.e. can convert anHttpInputMessage
toInputStreamResource
.
ResourceHttpMessageConverter
public ResourceHttpMessageConverter(boolean supportsReadStreaming)
Create a new instance of theResourceHttpMessageConverter
.- Parameters:
supportsReadStreaming
- whether the converter should support read streaming, i.e. convert toInputStreamResource
- Since:
- 5.0
Method Detail
supports
protected boolean supports(Class<?> clazz)
Description copied from class:AbstractHttpMessageConverter
Indicates whether the given class is supported by this converter.- Specified by:
supports
in classAbstractHttpMessageConverter<Resource>
- Parameters:
clazz
- the class to test for support- Returns:
true
if supported;false
otherwise
readInternal
protected Resource readInternal(Class<? extends Resource> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
Description copied from class:AbstractHttpMessageConverter
Abstract template method that reads the actual object. Invoked fromAbstractHttpMessageConverter.read(java.lang.Class<? extends T>, org.springframework.http.HttpInputMessage)
.- Specified by:
readInternal
in classAbstractHttpMessageConverter<Resource>
- Parameters:
clazz
- the type of object to returninputMessage
- the HTTP input message to read from- Returns:
- the converted object
- Throws:
IOException
- in case of I/O errorsHttpMessageNotReadableException
- in case of conversion errors
getDefaultContentType
protected MediaType getDefaultContentType(Resource resource)
Description copied from class:AbstractHttpMessageConverter
Returns the default content type for the given type. Called whenAbstractHttpMessageConverter.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 classAbstractHttpMessageConverter<Resource>
- Parameters:
resource
- the type to return the content type for- Returns:
- the content type, or
null
if not known
getContentLength
protected Long getContentLength(Resource resource, @Nullable MediaType contentType) throws IOException
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 classAbstractHttpMessageConverter<Resource>
- Parameters:
resource
- the type to return the content length for- Returns:
- the content length, or
null
if not known - Throws:
IOException
writeInternal
protected void writeInternal(Resource resource, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException
Description copied from class:AbstractHttpMessageConverter
Abstract template method that writes the actual body. Invoked fromAbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage)
.- Specified by:
writeInternal
in classAbstractHttpMessageConverter<Resource>
- Parameters:
resource
- the object to write to the output messageoutputMessage
- the HTTP output message to write to- Throws:
IOException
- in case of I/O errorsHttpMessageNotWritableException
- in case of conversion errors
writeContent
protected void writeContent(Resource resource, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException