Class JacksonResponseConverterFunction
java.lang.Object
com.linecorp.armeria.server.annotation.JacksonResponseConverterFunction
- All Implemented Interfaces:
ResponseConverterFunction
public final class JacksonResponseConverterFunction
extends Object
implements ResponseConverterFunction
A response converter implementation which creates an
HttpResponse
with
content-type: application/json; charset=utf-8
or content-type: application/json-seq
.
The objects published from a Publisher
or Stream
would be converted into JSON Text Sequences
if a ProducesJsonSequences
annotation is specified on an annotated service method.
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 ObjectMapper
.- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionCreates an instance with the defaultObjectMapper
.Creates an instance with the specifiedObjectMapper
. -
Method Summary
Modifier and TypeMethodDescriptionconvertResponse
(ServiceRequestContext ctx, ResponseHeaders headers, @Nullable Object result, HttpHeaders trailers) ReturnsHttpResponse
instance corresponds to the givenresult
.isResponseStreaming
(Type returnType, @Nullable MediaType produceType) Returns whether anHttpResponse
of an annotated service should be streamed.
-
Constructor Details
-
JacksonResponseConverterFunction
public JacksonResponseConverterFunction()Creates an instance with the defaultObjectMapper
. -
JacksonResponseConverterFunction
Creates an instance with the specifiedObjectMapper
.
-
-
Method Details
-
isResponseStreaming
Description copied from interface:ResponseConverterFunction
Returns whether anHttpResponse
of an annotated service should be streamed.null
if this converter cannot convert theresponseType
to anHttpResponse
.true
can be returned if the response is a streaming type, or theResponseConverterFunction
has not been optimized for theresponseType
through overriding this method for backward compatibility.This method is used as a performance optimization hint. If the
returnType
andproduceType
are not a streaming response, it is recommended to returnfalse
for the better performance.Note that you should never return
false
for a streaming response. The non-streaming response is aggregated before being sent.- Specified by:
isResponseStreaming
in interfaceResponseConverterFunction
- Parameters:
returnType
- the return type of the annotated service.produceType
- the negotiated producible media type of the annotated service.null
if the media type negotiation is not used for the service.
-
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()
if this converter cannot convert theresult
to theHttpResponse
.- Specified by:
convertResponse
in interfaceResponseConverterFunction
- Parameters:
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 annotated method returns anHttpResult
or aResponseEntity
, the headers provided by them will be given as they are. 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 returns anHttpResult
or aResponseEntity
, the trailers provided by them will be given as they are. Please note that the additional trailers set byServiceRequestContext.mutateAdditionalResponseTrailers(Consumer)
andAdditionalTrailer
are not included in this trailers.- Throws:
Exception
-