public class ProtobufHttpMessageConverter extends AbstractHttpMessageConverter<com.google.protobuf.Message>
HttpMessageConverter
that can read and write Protobuf
Message
using
Google Protocol buffers.
By default it supports "application/json"
, "application/xml"
,
"text/plain"
and "application/x-protobuf"
while writing also
supports "text/html"
To generate Message Java classes you need to install the protoc binary.
Tested against Protobuf version 2.5.0.
Modifier and Type | Field and Description |
---|---|
static Charset |
DEFAULT_CHARSET |
static MediaType |
PROTOBUF |
static String |
X_PROTOBUF_MESSAGE_HEADER |
static String |
X_PROTOBUF_SCHEMA_HEADER |
logger
Constructor and Description |
---|
ProtobufHttpMessageConverter()
Construct a new instance.
|
ProtobufHttpMessageConverter(ExtensionRegistryInitializer registryInitializer)
Construct a new instance with an
ExtensionRegistryInitializer
that allows the registration of message extensions. |
Modifier and Type | Method and Description |
---|---|
protected boolean |
canWrite(MediaType mediaType)
This method overrides the parent implementation, since this HttpMessageConverter
can also produce
MediaType.HTML "text/html" ContentType. |
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 |
supports(Class<?> clazz)
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.
|
addDefaultHeaders, canRead, canRead, canWrite, getContentLength, getSupportedMediaTypes, read, setSupportedMediaTypes, write
public static final Charset DEFAULT_CHARSET
public static final MediaType PROTOBUF
public static final String X_PROTOBUF_SCHEMA_HEADER
public static final String X_PROTOBUF_MESSAGE_HEADER
public ProtobufHttpMessageConverter()
public ProtobufHttpMessageConverter(ExtensionRegistryInitializer registryInitializer)
ExtensionRegistryInitializer
that allows the registration of message extensions.protected boolean supports(Class<?> clazz)
AbstractHttpMessageConverter
supports
in class AbstractHttpMessageConverter<com.google.protobuf.Message>
clazz
- the class to test for supporttrue
if supported; false
otherwiseprotected com.google.protobuf.Message readInternal(Class<? extends com.google.protobuf.Message> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
AbstractHttpMessageConverter
AbstractHttpMessageConverter.read(java.lang.Class<? extends T>, org.springframework.http.HttpInputMessage)
.readInternal
in class AbstractHttpMessageConverter<com.google.protobuf.Message>
clazz
- the type of object to returninputMessage
- the HTTP input message to read fromIOException
- in case of I/O errorsHttpMessageNotReadableException
- in case of conversion errorsprotected boolean canWrite(MediaType mediaType)
MediaType.HTML "text/html"
ContentType.canWrite
in class AbstractHttpMessageConverter<com.google.protobuf.Message>
mediaType
- the media type to write, can be null
if not specified.
Typically the value of an Accept
header.true
if the supported media types are compatible with the media type,
or if the media type is null
protected void writeInternal(com.google.protobuf.Message message, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException
AbstractHttpMessageConverter
AbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage)
.writeInternal
in class AbstractHttpMessageConverter<com.google.protobuf.Message>
message
- the object to write to the output messageoutputMessage
- the HTTP output message to write toIOException
- in case of I/O errorsHttpMessageNotWritableException
- in case of conversion errorsprotected MediaType getDefaultContentType(com.google.protobuf.Message message)
AbstractHttpMessageConverter
AbstractHttpMessageConverter.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.
getDefaultContentType
in class AbstractHttpMessageConverter<com.google.protobuf.Message>
message
- the type to return the content type fornull
if not known