public class ProtobufHttpMessageConverter extends AbstractHttpMessageConverter<com.google.protobuf.Message>
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 (see ProtobufJsonFormatHttpMessageConverter 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.
FormatFactory,
JsonFormat,
ProtobufJsonFormatHttpMessageConverter| Modifier and Type | Field and Description |
|---|---|
static Charset |
DEFAULT_CHARSET
The default charset used by the converter.
|
static MediaType |
PROTOBUF
The media-type for protobuf
application/x-protobuf. |
static String |
X_PROTOBUF_MESSAGE_HEADER
The HTTP header containing the protobuf message.
|
static String |
X_PROTOBUF_SCHEMA_HEADER
The HTTP header containing the protobuf schema.
|
logger| Constructor and Description |
|---|
ProtobufHttpMessageConverter()
Construct a new
ProtobufHttpMessageConverter. |
ProtobufHttpMessageConverter(com.google.protobuf.ExtensionRegistry extensionRegistry)
Construct a new
ProtobufHttpMessageConverter with a registry that specifies
protocol message extensions. |
ProtobufHttpMessageConverter(ExtensionRegistryInitializer registryInitializer)
Deprecated.
as of Spring Framework 5.1, use
ProtobufHttpMessageConverter(ExtensionRegistry) instead |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
canWrite(MediaType mediaType)
Returns
true 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 |
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, getDefaultCharset, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, writeclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetSupportedMediaTypespublic static final Charset DEFAULT_CHARSET
public static final MediaType PROTOBUF
application/x-protobuf.public static final String X_PROTOBUF_SCHEMA_HEADER
public static final String X_PROTOBUF_MESSAGE_HEADER
public ProtobufHttpMessageConverter()
ProtobufHttpMessageConverter.@Deprecated public ProtobufHttpMessageConverter(@Nullable ExtensionRegistryInitializer registryInitializer)
ProtobufHttpMessageConverter(ExtensionRegistry) insteadProtobufHttpMessageConverter with an
initializer that allows the registration of message extensions.registryInitializer - an initializer for message extensionspublic ProtobufHttpMessageConverter(com.google.protobuf.ExtensionRegistry extensionRegistry)
ProtobufHttpMessageConverter with a registry that specifies
protocol message extensions.extensionRegistry - the registry to populateprotected boolean supports(Class<?> clazz)
AbstractHttpMessageConvertersupports in class AbstractHttpMessageConverter<com.google.protobuf.Message>clazz - the class to test for supporttrue if supported; false otherwiseprotected MediaType getDefaultContentType(com.google.protobuf.Message message)
AbstractHttpMessageConverterAbstractHttpMessageConverter.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 knownprotected com.google.protobuf.Message readInternal(Class<? extends com.google.protobuf.Message> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
AbstractHttpMessageConverterAbstractHttpMessageConverter.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(@Nullable MediaType mediaType)
AbstractHttpMessageConvertertrue if the given media type includes any of the
supported media types.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 nullprotected void writeInternal(com.google.protobuf.Message message,
HttpOutputMessage outputMessage)
throws IOException,
HttpMessageNotWritableException
AbstractHttpMessageConverterAbstractHttpMessageConverter.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 errors