org.springframework.http.converter
Class ResourceHttpMessageConverter

java.lang.Object
  extended by org.springframework.http.converter.AbstractHttpMessageConverter<Resource>
      extended by org.springframework.http.converter.ResourceHttpMessageConverter
All Implemented Interfaces:
HttpMessageConverter<Resource>

public class ResourceHttpMessageConverter
extends AbstractHttpMessageConverter<Resource>

Implementation of HttpMessageConverter that can read and write Resources.

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

Field Summary
 
Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger
 
Constructor Summary
ResourceHttpMessageConverter()
           
 
Method Summary
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 actualy object.
protected  boolean supports(Class<?> clazz)
          Indicates whether the given class is supported by this converter.
protected  void writeInternal(Resource resource, HttpOutputMessage outputMessage)
          Abstract template method that writes the actual body.
 
Methods inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
canRead, canRead, canWrite, canWrite, getSupportedMediaTypes, read, setSupportedMediaTypes, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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 class AbstractHttpMessageConverter<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 actualy object. Invoked from AbstractHttpMessageConverter.read(java.lang.Class, org.springframework.http.HttpInputMessage).

Specified by:
readInternal in class AbstractHttpMessageConverter<Resource>
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

getDefaultContentType

protected MediaType getDefaultContentType(Resource resource)
Description copied from class: AbstractHttpMessageConverter
Returns the default content type for the given type. Called when AbstractHttpMessageConverter.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 class AbstractHttpMessageConverter<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 class AbstractHttpMessageConverter<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 from AbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage).

Specified by:
writeInternal in class AbstractHttpMessageConverter<Resource>
Parameters:
resource - 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