Class ProtobufHttpMessageConverter
- All Implemented Interfaces:
HttpMessageConverter<com.google.protobuf.Message>
- Direct Known Subclasses:
ProtobufJsonFormatHttpMessageConverter
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"
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 (seeProtobufJsonFormatHttpMessageConverter
for 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-util
JSON
format if the Protobuf 2 based protobuf-java-format
isn't present; however, for more
explicit JSON setup on Protobuf 3, consider ProtobufJsonFormatHttpMessageConverter
.
- Since:
- 4.1
- Author:
- Alex Antonov, Brian Clozel, Juergen Hoeller, Sebastien Deleuze
- See Also:
-
FormatFactory
JsonFormat
ProtobufJsonFormatHttpMessageConverter
-
Field Summary
Modifier and TypeFieldDescriptionstatic final Charset
The default charset used by the converter.static final MediaType
The media-type for protobufapplication/x-protobuf
.static final String
The HTTP header containing the protobuf message.static final String
The HTTP header containing the protobuf schema.Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger
-
Constructor Summary
ConstructorDescriptionConstruct a newProtobufHttpMessageConverter
.ProtobufHttpMessageConverter
(com.google.protobuf.ExtensionRegistry extensionRegistry) Construct a newProtobufHttpMessageConverter
with a registry that specifies protocol message extensions. -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
Returnstrue
if the given media type includes any of the supported media types.protected MediaType
getDefaultContentType
(com.google.protobuf.Message message) Returns the default content type for the given type.protected com.google.protobuf.Message
readInternal
(Class<? extends com.google.protobuf.Message> clazz, HttpInputMessage inputMessage) Abstract template method that reads the actual object.protected boolean
Indicates whether the given class is supported by this converter.protected void
writeInternal
(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
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.http.converter.HttpMessageConverter
getSupportedMediaTypes
-
Field Details
-
DEFAULT_CHARSET
The default charset used by the converter. -
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 newProtobufHttpMessageConverter
with a registry that specifies protocol message extensions.- Parameters:
extensionRegistry
- the registry to populate
-
-
Method Details
-
supports
Description copied from class:AbstractHttpMessageConverter
Indicates whether the given class is supported by this converter.- Specified by:
supports
in classAbstractHttpMessageConverter<com.google.protobuf.Message>
- Parameters:
clazz
- the class to test for support- Returns:
true
if supported;false
otherwise
-
getDefaultContentType
Description copied from class:AbstractHttpMessageConverter
Returns 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
supportedMediaTypes
property, if any. Can be overridden in subclasses.- Overrides:
getDefaultContentType
in classAbstractHttpMessageConverter<com.google.protobuf.Message>
- Parameters:
message
- the type to return the content type for- Returns:
- the content type, or
null
if 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:AbstractHttpMessageConverter
Abstract template method that reads the actual object. Invoked fromAbstractHttpMessageConverter.read(java.lang.Class<? extends T>, org.springframework.http.HttpInputMessage)
.- Specified by:
readInternal
in 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:AbstractHttpMessageConverter
Returnstrue
if the given media type includes any of the supported media types.- Overrides:
canWrite
in classAbstractHttpMessageConverter<com.google.protobuf.Message>
- Parameters:
mediaType
- the media type to write, can benull
if not specified. Typically the value of anAccept
header.- Returns:
true
if 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:AbstractHttpMessageConverter
Abstract template method that writes the actual body. Invoked fromAbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage)
.- Specified by:
writeInternal
in 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
-