Class ProtobufEncoder
java.lang.Object
org.springframework.http.codec.protobuf.ProtobufCodecSupport
org.springframework.http.codec.protobuf.ProtobufEncoder
- All Implemented Interfaces:
org.springframework.core.codec.Encoder<com.google.protobuf.Message>, HttpMessageEncoder<com.google.protobuf.Message>
public class ProtobufEncoder
extends ProtobufCodecSupport
implements HttpMessageEncoder<com.google.protobuf.Message>
An
Encoder that writes Messages
using Google Protocol Buffers.
Flux are serialized using delimited Protobuf messages with the size of each message specified before the message itself. Single values are serialized using regular Protobuf message format (without the size prepended before the message).
To generate Message Java classes, you need to install the protoc binary.
This encoder requires Protobuf 3.29 or higher, and supports
"application/x-protobuf" and "application/octet-stream" with the official
"com.google.protobuf:protobuf-java" library.
- Since:
- 5.1
- Author:
- Sebastien Deleuze
- See Also:
-
Field Summary
Fields inherited from class ProtobufCodecSupport
MIME_TYPES -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancanEncode(org.springframework.core.ResolvableType elementType, @Nullable 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, @Nullable org.springframework.util.MimeType mimeType, @Nullable Map<String, Object> hints) org.springframework.core.io.buffer.DataBufferencodeValue(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) List<org.springframework.util.MimeType> Return "streaming" media types for which flushing should be performed automatically vs at the end of the input stream.protected voidsetMimeTypes(List<org.springframework.util.MimeType> mimeTypes) protected voidwriteMessage(com.google.protobuf.Message message, boolean delimited, OutputStream outputStream) Use write methods onMessageto write to the givenOutputStream.Methods inherited from class ProtobufCodecSupport
getMimeTypes, supportsMimeTypeMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.core.codec.Encoder
getEncodableMimeTypesMethods inherited from interface HttpMessageEncoder
getEncodeHints
-
Constructor Details
-
ProtobufEncoder
public ProtobufEncoder()
-
-
Method Details
-
setMimeTypes
- Overrides:
setMimeTypesin classProtobufCodecSupport
-
getStreamingMediaTypes
Description copied from interface:HttpMessageEncoderReturn "streaming" media types for which flushing should be performed automatically vs at the end of the input stream.- Specified by:
getStreamingMediaTypesin interfaceHttpMessageEncoder<com.google.protobuf.Message>
-
getEncodableMimeTypes
- Specified by:
getEncodableMimeTypesin interfaceorg.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:
canEncodein interfaceorg.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:
encodein interfaceorg.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:
encodeValuein interfaceorg.springframework.core.codec.Encoder<com.google.protobuf.Message>
-
writeMessage
protected void writeMessage(com.google.protobuf.Message message, boolean delimited, OutputStream outputStream) throws IOException Use write methods onMessageto write to the givenOutputStream.- Throws:
IOException- Since:
- 7.0
-