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

Nested Class Summary
private static class ResourceHttpMessageConverter.ActivationMediaTypeFactory
          Inner class to avoid hard-coded JAF dependency.
 
Field Summary
private static boolean jafPresent
           
 
Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger
 
Constructor Summary
ResourceHttpMessageConverter()
           
 
Method Summary
protected  java.lang.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(java.lang.Class<? extends Resource> clazz, HttpInputMessage inputMessage)
          Abstract template method that reads the actualy object.
protected  boolean supports(java.lang.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
 

Field Detail

jafPresent

private static final boolean jafPresent
Constructor Detail

ResourceHttpMessageConverter

public ResourceHttpMessageConverter()
Method Detail

supports

protected boolean supports(java.lang.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(java.lang.Class<? extends Resource> clazz,
                                HttpInputMessage inputMessage)
                         throws java.io.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:
java.io.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 java.lang.Long getContentLength(Resource resource,
                                          MediaType contentType)
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

writeInternal

protected void writeInternal(Resource resource,
                             HttpOutputMessage outputMessage)
                      throws java.io.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:
java.io.IOException - in case of I/O errors
HttpMessageNotWritableException - in case of conversion errors