org.springframework.http.codec.protobuf

## Class ProtobufHttpMessageWriter

- java.lang.Object
- - org.springframework.http.codec.EncoderHttpMessageWriter<com.google.protobuf.Message>
  - - org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter

- All Implemented Interfaces:
    HttpMessageWriter<com.google.protobuf.Message>

      public class ProtobufHttpMessageWriter
      extends EncoderHttpMessageWriter<com.google.protobuf.Message>

  `HttpMessageWriter` that can write a protobuf `Message` and adds `X-Protobuf-Schema`, `X-Protobuf-Message` headers and a `delimited=true` parameter is added to the content type if a flux is serialized.

  For `HttpMessageReader`, just use `new DecoderHttpMessageReader(new ProtobufDecoder())`.

  Since:
    5.1
  Author:
    Sebastien Deleuze
  See Also:
    `ProtobufEncoder`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProtobufHttpMessageWriter()` Create a new `ProtobufHttpMessageWriter` with a default `ProtobufEncoder`.
    `ProtobufHttpMessageWriter(Encoder<com.google.protobuf.Message> encoder)` Create a new `ProtobufHttpMessageWriter` with the given encoder.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `reactor.core.publisher.Mono<Void>` | `write(Publisher<? extends com.google.protobuf.Message> inputStream, ResolvableType elementType, MediaType mediaType, ReactiveHttpOutputMessage message, Map<String,Object> hints)` Write a given stream of object to the output message.

    - ### Methods inherited from class org.springframework.http.codec.EncoderHttpMessageWriter

      `canWrite, getEncoder, getWritableMediaTypes, getWritableMediaTypes, getWriteHints, write`

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

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

- - ### Constructor Detail

    - #### ProtobufHttpMessageWriter

          public ProtobufHttpMessageWriter()

      Create a new `ProtobufHttpMessageWriter` with a default `ProtobufEncoder`.

    - #### ProtobufHttpMessageWriter

          public ProtobufHttpMessageWriter(Encoder<com.google.protobuf.Message> encoder)

      Create a new `ProtobufHttpMessageWriter` with the given encoder.
      Parameters:
        `encoder` - the Protobuf message encoder to use

  - ### Method Detail

    - #### write

          public reactor.core.publisher.Mono<Void> write(Publisher<? extends com.google.protobuf.Message> 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<com.google.protobuf.Message>`
      Overrides:
        `write` in class `EncoderHttpMessageWriter<com.google.protobuf.Message>`
      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