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 Java Activation Framework (JAF) - if available - is used to determine the
Content-Type
of written resources. If JAF is not available,application/octet-stream
is used.- 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()
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()
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, 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