Class ProtobufJsonEncoder

java.lang.Object
org.springframework.http.codec.protobuf.ProtobufJsonEncoder
All Implemented Interfaces:
org.springframework.core.codec.Encoder<com.google.protobuf.Message>, HttpMessageEncoder<com.google.protobuf.Message>

public class ProtobufJsonEncoder extends Object implements HttpMessageEncoder<com.google.protobuf.Message>
A Encoder that writes Messages as JSON.

To generate Message Java classes, you need to install the protoc binary.

This encoder requires Protobuf 3.29 or higher, and supports "application/json" and "application/*+json" with the official "com.google.protobuf:protobuf-java-util" library.

Since:
6.2
Author:
Brian Clozel
See Also:
  • Constructor Details

    • ProtobufJsonEncoder

      public ProtobufJsonEncoder()
      Construct a new ProtobufJsonEncoder using a default JsonFormat.Printer instance.
    • ProtobufJsonEncoder

      public ProtobufJsonEncoder(com.google.protobuf.util.JsonFormat.Printer printer)
      Construct a new ProtobufJsonEncoder using the given JsonFormat.Printer instance.
  • Method Details

    • getStreamingMediaTypes

      public List<MediaType> getStreamingMediaTypes()
      Description copied from interface: HttpMessageEncoder
      Return "streaming" media types for which flushing should be performed automatically vs at the end of the input stream.
      Specified by:
      getStreamingMediaTypes in interface HttpMessageEncoder<com.google.protobuf.Message>
    • getEncodableMimeTypes

      public List<org.springframework.util.MimeType> getEncodableMimeTypes()
      Specified by:
      getEncodableMimeTypes in interface org.springframework.core.codec.Encoder<com.google.protobuf.Message>
    • canEncode

      public boolean canEncode(org.springframework.core.ResolvableType elementType, @Nullable org.springframework.util.MimeType mimeType)
      Specified by:
      canEncode in interface org.springframework.core.codec.Encoder<com.google.protobuf.Message>
    • encode

      public reactor.core.publisher.Flux<org.springframework.core.io.buffer.DataBuffer> encode(Publisher<? extends com.google.protobuf.Message> inputStream, org.springframework.core.io.buffer.DataBufferFactory bufferFactory, org.springframework.core.ResolvableType elementType, @Nullable org.springframework.util.MimeType mimeType, @Nullable Map<String,Object> hints)
      Specified by:
      encode in interface org.springframework.core.codec.Encoder<com.google.protobuf.Message>
    • encodeValue

      public org.springframework.core.io.buffer.DataBuffer encodeValue(com.google.protobuf.Message message, org.springframework.core.io.buffer.DataBufferFactory bufferFactory, org.springframework.core.ResolvableType valueType, @Nullable org.springframework.util.MimeType mimeType, @Nullable Map<String,Object> hints)
      Specified by:
      encodeValue in interface org.springframework.core.codec.Encoder<com.google.protobuf.Message>