Class ProtobufHttpMessageConverter
java.lang.Object
org.springframework.http.converter.AbstractHttpMessageConverter<com.google.protobuf.Message>
org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter
- All Implemented Interfaces:
HttpMessageConverter<com.google.protobuf.Message>
- Direct Known Subclasses:
ProtobufJsonFormatHttpMessageConverter
public class ProtobufHttpMessageConverter
extends AbstractHttpMessageConverter<com.google.protobuf.Message>
An
HttpMessageConverter that reads and writes
com.google.protobuf.Messages using
Google Protocol Buffers.
To generate Message Java classes, you need to install the protoc binary.
This converter supports by default "application/x-protobuf", "application/*+x-protobuf"
and "text/plain" with the official "com.google.protobuf:protobuf-java" library.
The "application/json" format is also supported with the "com.google.protobuf:protobuf-java-util"
dependency. See ProtobufJsonFormatHttpMessageConverter for a configurable variant.
This converter requires Protobuf 3 or higher as of Spring Framework 6.1.
- Since:
- 4.1
- Author:
- Alex Antonov, Brian Clozel, Juergen Hoeller, Sebastien Deleuze, Kamil Doroszkiewicz
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final CharsetThe default charset used by the converter.static final MediaTypeThe media-type for protobufapplication/*+x-protobuf.static final MediaTypeThe media-type for protobufapplication/x-protobuf.static final StringThe HTTP header containing the protobuf message.static final StringThe HTTP header containing the protobuf schema.Fields inherited from class AbstractHttpMessageConverter
logger -
Constructor Summary
ConstructorsConstructorDescriptionConstruct a newProtobufHttpMessageConverter.ProtobufHttpMessageConverter(com.google.protobuf.ExtensionRegistry extensionRegistry) Construct a newProtobufHttpMessageConverterwith a registry that specifies protocol message extensions. -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanReturnstrueif the given media type includes any of the supported media types.protected MediaTypegetDefaultContentType(com.google.protobuf.Message message) Returns the default content type for the given type.protected com.google.protobuf.MessagereadInternal(Class<? extends com.google.protobuf.Message> clazz, HttpInputMessage inputMessage) Abstract template method that reads the actual object.protected booleanIndicates whether the given class is supported by this converter.protected booleansupportsRepeatableWrites(com.google.protobuf.Message message) Indicates whether this message converter can write the given object multiple times.protected voidwriteInternal(com.google.protobuf.Message message, HttpOutputMessage outputMessage) Abstract template method that writes the actual body.Methods inherited from class AbstractHttpMessageConverter
addDefaultHeaders, canRead, canRead, canWrite, getContentLength, getDefaultCharset, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, writeMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface HttpMessageConverter
getSupportedMediaTypes
-
Field Details
-
DEFAULT_CHARSET
The default charset used by the converter. -
PROTOBUF
The media-type for protobufapplication/x-protobuf. -
PLUS_PROTOBUF
The media-type for protobufapplication/*+x-protobuf. -
X_PROTOBUF_SCHEMA_HEADER
The HTTP header containing the protobuf schema.- See Also:
-
X_PROTOBUF_MESSAGE_HEADER
The HTTP header containing the protobuf message.- See Also:
-
-
Constructor Details
-
ProtobufHttpMessageConverter
public ProtobufHttpMessageConverter()Construct a newProtobufHttpMessageConverter. -
ProtobufHttpMessageConverter
public ProtobufHttpMessageConverter(com.google.protobuf.ExtensionRegistry extensionRegistry) Construct a newProtobufHttpMessageConverterwith a registry that specifies protocol message extensions.- Parameters:
extensionRegistry- the registry to populate
-
-
Method Details
-
supports
Description copied from class:AbstractHttpMessageConverterIndicates whether the given class is supported by this converter.- Specified by:
supportsin classAbstractHttpMessageConverter<com.google.protobuf.Message>- Parameters:
clazz- the class to test for support- Returns:
trueif supported;falseotherwise
-
getDefaultContentType
Description copied from class:AbstractHttpMessageConverterReturns the default content type for the given type. Called whenAbstractHttpMessageConverter.write(T, MediaType, HttpOutputMessage)is invoked without a specified content type parameter.By default, this returns the first element of the
supportedMediaTypesproperty, if any. Can be overridden in subclasses.- Overrides:
getDefaultContentTypein classAbstractHttpMessageConverter<com.google.protobuf.Message>- Parameters:
message- the type to return the content type for- Returns:
- the content type, or
nullif not known
-
readInternal
protected com.google.protobuf.Message readInternal(Class<? extends com.google.protobuf.Message> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException Description copied from class:AbstractHttpMessageConverterAbstract template method that reads the actual object. Invoked fromAbstractHttpMessageConverter.read(Class, HttpInputMessage).- Specified by:
readInternalin classAbstractHttpMessageConverter<com.google.protobuf.Message>- Parameters:
clazz- the type of object to returninputMessage- the HTTP input message to read from- Returns:
- the converted object
- Throws:
IOException- in case of I/O errorsHttpMessageNotReadableException- in case of conversion errors
-
canWrite
Description copied from class:AbstractHttpMessageConverterReturnstrueif the given media type includes any of the supported media types.- Overrides:
canWritein classAbstractHttpMessageConverter<com.google.protobuf.Message>- Parameters:
mediaType- the media type to write, can benullif not specified. Typically the value of anAcceptheader.- Returns:
trueif the supported media types are compatible with the media type, or if the media type isnull
-
writeInternal
protected void writeInternal(com.google.protobuf.Message message, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException Description copied from class:AbstractHttpMessageConverterAbstract template method that writes the actual body. Invoked fromAbstractHttpMessageConverter.write(T, MediaType, HttpOutputMessage).- Specified by:
writeInternalin classAbstractHttpMessageConverter<com.google.protobuf.Message>- Parameters:
message- the object to write to the output messageoutputMessage- the HTTP output message to write to- Throws:
IOException- in case of I/O errorsHttpMessageNotWritableException- in case of conversion errors
-
supportsRepeatableWrites
protected boolean supportsRepeatableWrites(com.google.protobuf.Message message) Description copied from class:AbstractHttpMessageConverterIndicates whether this message converter can write the given object multiple times.The default implementation returns
false.- Overrides:
supportsRepeatableWritesin classAbstractHttpMessageConverter<com.google.protobuf.Message>- Parameters:
message- the object t- Returns:
trueiftcan be written repeatedly;falseotherwise
-