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 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>
    • getStreamingMediaTypeSeparator

      protected byte @Nullable [] getStreamingMediaTypeSeparator(@Nullable org.springframework.util.MimeType mimeType)
      Return the separator to use for the given mime type.

      By default, this method returns new line "\n" if the given mime type is one of the configured streaming mime types.

      Since:
      7.0.10