org.springframework.http.codec

## Class ResourceHttpMessageWriter

- java.lang.Object
- - org.springframework.http.codec.ResourceHttpMessageWriter

- All Implemented Interfaces:
    HttpMessageWriter<Resource>

      public class ResourceHttpMessageWriter
      extends Object
      implements HttpMessageWriter<Resource>

  `HttpMessageWriter` that can write a `Resource`.

  Also an implementation of `HttpMessageWriter` with support for writing one or more `ResourceRegion`'s based on the HTTP ranges specified in the request.

  For reading to a Resource, use `ResourceDecoder` wrapped with `DecoderHttpMessageReader`.

  Since:
    5.0
  Author:
    Arjen Poutsma, Brian Clozel, Rossen Stoyanchev
  See Also:
    `ResourceEncoder`, `ResourceRegionEncoder`, `HttpRange`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ResourceHttpMessageWriter()`
    `ResourceHttpMessageWriter(int bufferSize)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `canWrite(ResolvableType elementType, MediaType mediaType)` Whether the given object type is supported by this writer.
    `List<MediaType>` | `getWritableMediaTypes()` Return the list of media types supported by this Writer.
    `reactor.core.publisher.Mono<Void>` | `write(Publisher<? extends Resource> inputStream, ResolvableType elementType, MediaType mediaType, ReactiveHttpOutputMessage message, Map<String,Object> hints)` Write a given stream of object to the output message.
    `reactor.core.publisher.Mono<Void>` | `write(Publisher<? extends Resource> inputStream, ResolvableType actualType, ResolvableType elementType, MediaType mediaType, ServerHttpRequest request, ServerHttpResponse response, Map<String,Object> hints)` Server-side only alternative to `HttpMessageWriter.write(Publisher, ResolvableType, MediaType, ReactiveHttpOutputMessage, Map)` with additional context available.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.springframework.http.codec.HttpMessageWriter

      `getWritableMediaTypes`

- - ### Constructor Detail

    - #### ResourceHttpMessageWriter

          public ResourceHttpMessageWriter()

    - #### ResourceHttpMessageWriter

          public ResourceHttpMessageWriter(int bufferSize)

  - ### Method Detail

    - #### canWrite

          public boolean canWrite(ResolvableType elementType,
                                  @Nullable
                                  MediaType mediaType)

      Description copied from interface: `HttpMessageWriter`
      Whether the given object type is supported by this writer.
      Specified by:
        `canWrite` in interface `HttpMessageWriter<Resource>`
      Parameters:
        `elementType` - the type of object to check
        `mediaType` - the media type for the write (possibly `null`)
      Returns:
        `true` if writable, `false` otherwise

    - #### getWritableMediaTypes

          public List<MediaType> getWritableMediaTypes()

      Description copied from interface: `HttpMessageWriter`
      Return the list of media types supported by this Writer. The list may not apply to every possible target element type and calls to this method should typically be guarded via `canWrite(elementType, null)`. The list may also exclude media types supported only for a specific element type. Alternatively, use `HttpMessageWriter.getWritableMediaTypes(ResolvableType)` for a more precise list.
      Specified by:
        `getWritableMediaTypes` in interface `HttpMessageWriter<Resource>`
      Returns:
        the general list of supported media types

    - #### write

          public reactor.core.publisher.Mono<Void> write(Publisher<? extends Resource> inputStream,
                                                         ResolvableType elementType,
                                                         @Nullable
                                                         MediaType mediaType,
                                                         ReactiveHttpOutputMessage message,
                                                         Map<String,Object> hints)

      Description copied from interface: `HttpMessageWriter`
      Write a given stream of object to the output message.
      Specified by:
        `write` in interface `HttpMessageWriter<Resource>`
      Parameters:
        `inputStream` - the objects to write
        `elementType` - the type of objects in the stream which must have been previously checked via `HttpMessageWriter.canWrite(ResolvableType, MediaType)`
        `mediaType` - the content type for the write (possibly `null` to indicate that the default content type of the writer must be used)
        `message` - the message to write to
        `hints` - additional information about how to encode and write
      Returns:
        indicates completion or error

    - #### write

          public reactor.core.publisher.Mono<Void> write(Publisher<? extends Resource> inputStream,
                                                         @Nullable
                                                         ResolvableType actualType,
                                                         ResolvableType elementType,
                                                         @Nullable
                                                         MediaType mediaType,
                                                         ServerHttpRequest request,
                                                         ServerHttpResponse response,
                                                         Map<String,Object> hints)

      Description copied from interface: `HttpMessageWriter`
      Server-side only alternative to `HttpMessageWriter.write(Publisher, ResolvableType, MediaType, ReactiveHttpOutputMessage, Map)` with additional context available.
      Specified by:
        `write` in interface `HttpMessageWriter<Resource>`
        `actualType` - the actual return type of the method that returned the value; for annotated controllers, the `MethodParameter` can be accessed via `ResolvableType.getSource()`.
        `elementType` - the type of Objects in the input stream
        `mediaType` - the content type to use (possibly `null` indicating the default content type of the writer should be used)
        `request` - the current request
        `response` - the current response
      Returns:
        a `Mono` that indicates completion of writing or error