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>
AnHttpMessageConverterthat reads and writescom.google.protobuf.Messagesusing Google Protocol Buffers.To generate
MessageJava classes, you need to install theprotocbinary.This converter supports by default
"application/x-protobuf"and"text/plain"with the official"com.google.protobuf:protobuf-java"library. Other formats can be supported with one of the following additional libraries on the classpath:"application/json","application/xml", and"text/html"(write-only) with the"com.googlecode.protobuf-java-format:protobuf-java-format"third-party library"application/json"with the official"com.google.protobuf:protobuf-java-util"for Protobuf 3 (seeProtobufJsonFormatHttpMessageConverterfor a configurable variant)
Requires Protobuf 2.6 or higher (and Protobuf Java Format 1.4 or higher for formatting). This converter will auto-adapt to Protobuf 3 and its default
protobuf-java-utilJSON format if the Protobuf 2 basedprotobuf-java-formatisn't present; however, for more explicit JSON setup on Protobuf 3, considerProtobufJsonFormatHttpMessageConverter.- Since:
- 4.1
- Author:
- Alex Antonov, Brian Clozel, Juergen Hoeller, Sebastien Deleuze
- See Also:
FormatFactory,JsonFormat,ProtobufJsonFormatHttpMessageConverter
Field Summary
Fields Modifier and Type Field Description static CharsetDEFAULT_CHARSETThe default charset used by the converter.static MediaTypePROTOBUFThe media-type for protobufapplication/x-protobuf.static StringX_PROTOBUF_MESSAGE_HEADERThe HTTP header containing the protobuf message.static StringX_PROTOBUF_SCHEMA_HEADERThe HTTP header containing the protobuf schema.Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger
Constructor Summary
Constructors Constructor Description ProtobufHttpMessageConverter()Construct a newProtobufHttpMessageConverter.ProtobufHttpMessageConverter(com.google.protobuf.ExtensionRegistry extensionRegistry)Construct a newProtobufHttpMessageConverterwith a registry that specifies protocol message extensions.ProtobufHttpMessageConverter(ExtensionRegistryInitializer registryInitializer)Deprecated.as of Spring Framework 5.1, useProtobufHttpMessageConverter(ExtensionRegistry)instead
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleancanWrite(MediaType mediaType)Returnstrueif 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 booleansupports(Class<?> clazz)Indicates whether the given class is supported by this converter.protected voidwriteInternal(com.google.protobuf.Message message, HttpOutputMessage outputMessage)Abstract template method that writes the actual body.Methods inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
addDefaultHeaders, canRead, canRead, canWrite, getContentLength, getDefaultCharset, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, write
Field Detail
DEFAULT_CHARSET
public static final Charset DEFAULT_CHARSET
The default charset used by the converter.
X_PROTOBUF_SCHEMA_HEADER
public static final String X_PROTOBUF_SCHEMA_HEADER
The HTTP header containing the protobuf schema.- See Also:
- Constant Field Values
X_PROTOBUF_MESSAGE_HEADER
public static final String X_PROTOBUF_MESSAGE_HEADER
The HTTP header containing the protobuf message.- See Also:
- Constant Field Values
Constructor Detail
ProtobufHttpMessageConverter
public ProtobufHttpMessageConverter()
Construct a newProtobufHttpMessageConverter.
ProtobufHttpMessageConverter
@Deprecated public ProtobufHttpMessageConverter(@Nullable ExtensionRegistryInitializer registryInitializer)
Deprecated.as of Spring Framework 5.1, useProtobufHttpMessageConverter(ExtensionRegistry)insteadConstruct a newProtobufHttpMessageConverterwith an initializer that allows the registration of message extensions.- Parameters:
registryInitializer- an initializer for message extensions
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 Detail
supports
protected boolean supports(Class<?> clazz)
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
protected MediaType getDefaultContentType(com.google.protobuf.Message message)
Description copied from class:AbstractHttpMessageConverterReturns the default content type for the given type. Called whenAbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.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(java.lang.Class<? extends T>, org.springframework.http.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
protected boolean canWrite(@Nullable MediaType mediaType)
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, org.springframework.http.MediaType, org.springframework.http.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