Package org.springframework.http.codec.protobuf

# 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 `Message`s 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:
  - `ProtobufJsonDecoder`

## Constructor Summary

Constructors
Constructor
Description
`ProtobufJsonEncoder()`
Construct a new `ProtobufJsonEncoder` using a default `JsonFormat.Printer` instance.
`ProtobufJsonEncoder(com.google.protobuf.util.JsonFormat.Printer printer)`
Construct a new `ProtobufJsonEncoder` using the given `JsonFormat.Printer` instance.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`canEncode(org.springframework.core.ResolvableType elementType, org.springframework.util.MimeType mimeType)`
`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, org.springframework.util.MimeType mimeType, Map<String,Object> hints)`
`org.springframework.core.io.buffer.DataBuffer`
`encodeValue(com.google.protobuf.Message message, org.springframework.core.io.buffer.DataBufferFactory bufferFactory, org.springframework.core.ResolvableType valueType, org.springframework.util.MimeType mimeType, Map<String,Object> hints)`
`List<org.springframework.util.MimeType>`
`getEncodableMimeTypes()`
`List<MediaType>`
`getStreamingMediaTypes()`
Return "streaming" media types for which flushing should be performed automatically vs at the end of the input stream.

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

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

### Methods inherited from interface org.springframework.core.codec.Encoder

`getEncodableMimeTypes`

### Methods inherited from interface org.springframework.http.codec.HttpMessageEncoder

`getEncodeHints`

## 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>`