Package org.springframework.http.codec
Class EncoderHttpMessageWriter<T>
- java.lang.Object
- org.springframework.http.codec.EncoderHttpMessageWriter<T>
- Type Parameters:
T
- the type of objects in the input stream
- All Implemented Interfaces:
HttpMessageWriter<T>
- Direct Known Subclasses:
ProtobufHttpMessageWriter
public class EncoderHttpMessageWriter<T> extends Object implements HttpMessageWriter<T>
HttpMessageWriter
that wraps and delegates to anEncoder
.Also a
HttpMessageWriter
that pre-resolves encoding hints from the extra information available on the server side such as the request or controller method annotations.- Since:
- 5.0
- Author:
- Arjen Poutsma, Sebastien Deleuze, Rossen Stoyanchev, Brian Clozel, Sam Brannen
Constructor Summary
Constructors Constructor Description EncoderHttpMessageWriter(Encoder<T> encoder)
Create an instance wrapping the givenEncoder
.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canWrite(ResolvableType elementType, MediaType mediaType)
Whether the given object type is supported by this writer.Encoder<T>
getEncoder()
Return theEncoder
of this writer.List<MediaType>
getWritableMediaTypes()
Return theMediaType
's that this writer supports.protected Map<String,Object>
getWriteHints(ResolvableType streamType, ResolvableType elementType, MediaType mediaType, ServerHttpRequest request, ServerHttpResponse response)
Get additional hints for encoding for example based on the server request or annotations from controller method parameters.reactor.core.publisher.Mono<Void>
write(org.reactivestreams.Publisher<? extends T> inputStream, ResolvableType actualType, ResolvableType elementType, MediaType mediaType, ServerHttpRequest request, ServerHttpResponse response, Map<String,Object> hints)
Server-side only alternative toHttpMessageWriter.write(Publisher, ResolvableType, MediaType, ReactiveHttpOutputMessage, Map)
with additional context available.reactor.core.publisher.Mono<Void>
write(org.reactivestreams.Publisher<? extends T> inputStream, ResolvableType elementType, MediaType mediaType, ReactiveHttpOutputMessage message, Map<String,Object> hints)
Write an given stream of object to the output message.
Constructor Detail
EncoderHttpMessageWriter
public EncoderHttpMessageWriter(Encoder<T> encoder)
Create an instance wrapping the givenEncoder
.
Method Detail
getEncoder
public Encoder<T> getEncoder()
Return theEncoder
of this writer.
getWritableMediaTypes
public List<MediaType> getWritableMediaTypes()
Description copied from interface:HttpMessageWriter
Return theMediaType
's that this writer supports.- Specified by:
getWritableMediaTypes
in interfaceHttpMessageWriter<T>
canWrite
public boolean canWrite(ResolvableType elementType, @Nullable MediaType mediaType)
Description copied from interface:HttpMessageWriter
Whether the given object type is supported by this writer.- Specified by:
canWrite
in interfaceHttpMessageWriter<T>
- Parameters:
elementType
- the type of object to checkmediaType
- the media type for the write (possiblynull
)- Returns:
true
if writable,false
otherwise
write
public reactor.core.publisher.Mono<Void> write(org.reactivestreams.Publisher<? extends T> inputStream, ResolvableType elementType, @Nullable MediaType mediaType, ReactiveHttpOutputMessage message, Map<String,Object> hints)
Description copied from interface:HttpMessageWriter
Write an given stream of object to the output message.- Specified by:
write
in interfaceHttpMessageWriter<T>
- Parameters:
inputStream
- the objects to writeelementType
- the type of objects in the stream which must have been previously checked viaHttpMessageWriter.canWrite(ResolvableType, MediaType)
mediaType
- the content type for the write (possiblynull
to indicate that the default content type of the writer must be used)message
- the message to write tohints
- additional information about how to encode and write- Returns:
- indicates completion or error
write
public reactor.core.publisher.Mono<Void> write(org.reactivestreams.Publisher<? extends T> inputStream, ResolvableType actualType, ResolvableType elementType, @Nullable MediaType mediaType, ServerHttpRequest request, ServerHttpResponse response, Map<String,Object> hints)
Description copied from interface:HttpMessageWriter
Server-side only alternative toHttpMessageWriter.write(Publisher, ResolvableType, MediaType, ReactiveHttpOutputMessage, Map)
with additional context available.- Specified by:
write
in interfaceHttpMessageWriter<T>
actualType
- the actual return type of the method that returned the value; for annotated controllers, theMethodParameter
can be accessed viaResolvableType.getSource()
.elementType
- the type of Objects in the input streammediaType
- the content type to use (possiblynull
indicating the default content type of the writer should be used)request
- the current requestresponse
- the current response- Returns:
- a
Mono
that indicates completion of writing or error
getWriteHints
protected Map<String,Object> getWriteHints(ResolvableType streamType, ResolvableType elementType, @Nullable MediaType mediaType, ServerHttpRequest request, ServerHttpResponse response)
Get additional hints for encoding for example based on the server request or annotations from controller method parameters. By default, delegate to the encoder if it is an instance ofHttpMessageEncoder
.