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

    Constructors
    Constructor and Description
    `ResourceHttpMessageConverter()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and 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` | `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 actual 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