## org.springframework.http.converter
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 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<? extends T>, 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