Class ProtobufResponseConverterFunction
java.lang.Object
com.linecorp.armeria.server.protobuf.ProtobufResponseConverterFunction
- All Implemented Interfaces:
ResponseConverterFunction
@UnstableApi
public final class ProtobufResponseConverterFunction
extends Object
implements ResponseConverterFunction
A
ResponseConverterFunction
which creates an HttpResponse
with
content-type: application/protobuf
or content-type: application/json; charset=utf-8
.
If the returned object is an instance of MessageLite
, the object can be converted to either
Protocol Buffers or
JSON format.
Conversion of multiple Protobuf messages
A sequence of Protocol Buffer messages can not be handled by thisResponseConverterFunction
,
because Protocol Buffers wire format is not self-delimiting.
See
Streaming Multiple Messages
for more information.
However, Publisher
, Stream
and Iterable
are supported when converting to
JSON array.
JavaScript Object Notation (JSON) Text Sequences
is also supported for Publisher
, Stream
.
Note that this ResponseConverterFunction
is applied to an annotated service by default,
so you don't have to specify this converter explicitly unless you want to use your own JsonFormat.Printer
.
The JsonFormat.printer()
is used by default to format the response content.
-
Constructor Summary
ConstructorDescriptionCreates an instance with the defaultJsonFormat.Printer
.ProtobufResponseConverterFunction
(JsonFormat.Printer jsonPrinter) Creates an instance with the specifiedJsonFormat.Printer
. -
Method Summary
Modifier and TypeMethodDescriptionconvertResponse
(ServiceRequestContext ctx, ResponseHeaders headers, @Nullable Object result, HttpHeaders trailers) ReturnsHttpResponse
instance corresponds to the givenresult
.
-
Constructor Details
-
ProtobufResponseConverterFunction
public ProtobufResponseConverterFunction()Creates an instance with the defaultJsonFormat.Printer
. -
ProtobufResponseConverterFunction
Creates an instance with the specifiedJsonFormat.Printer
.
-
-
Method Details
-
convertResponse
public HttpResponse convertResponse(ServiceRequestContext ctx, ResponseHeaders headers, @Nullable @Nullable Object result, HttpHeaders trailers) throws Exception Description copied from interface:ResponseConverterFunction
ReturnsHttpResponse
instance corresponds to the givenresult
. CallsResponseConverterFunction.fallthrough()
or throws aFallthroughException
if this converter cannot convert theresult
to theHttpResponse
.- Specified by:
convertResponse
in interfaceResponseConverterFunction
headers
- The HTTP headers that you might want to use to create theHttpResponse
. The status of headers isHttpStatus.OK
by default orHttpStatus.NO_CONTENT
if the annotated method returnsvoid
, unless you specify it withStatusCode
on the method. The headers also will include aMediaType
ifServiceRequestContext.negotiatedResponseMediaType()
returns it. If the method returnsHttpResult
, this headers is the same headers fromHttpResult.headers()
Please note that the additional headers set byServiceRequestContext.mutateAdditionalResponseHeaders(Consumer)
andAdditionalHeader
are not included in this headers.result
- The result of the service method.trailers
- The HTTP trailers that you might want to use to create theHttpResponse
. If the annotated method returnsHttpResult
, this trailers is the same trailers fromHttpResult.trailers()
. Please note that the additional trailers set byServiceRequestContext.mutateAdditionalResponseTrailers(Consumer)
andAdditionalTrailer
are not included in this trailers.- Throws:
Exception
-