Package org.springframework.http.codec
Class DecoderHttpMessageReader<T>
java.lang.Object
org.springframework.http.codec.DecoderHttpMessageReader<T>
- Type Parameters:
T
- the type of objects in the decoded output stream
- All Implemented Interfaces:
HttpMessageReader<T>
- Direct Known Subclasses:
ResourceHttpMessageReader
HttpMessageReader
that wraps and delegates to a Decoder
.
Also a HttpMessageReader
that pre-resolves decoding hints
from the extra information available on the server side such as the request
or controller method parameter annotations.
- Since:
- 5.0
- Author:
- Arjen Poutsma, Sebastien Deleuze, Rossen Stoyanchev
-
Constructor Summary
ConstructorDescriptionDecoderHttpMessageReader
(Decoder<T> decoder) Create an instance wrapping the givenDecoder
. -
Method Summary
Modifier and TypeMethodDescriptionboolean
canRead
(ResolvableType elementType, MediaType mediaType) Whether the given object type is supported by this reader.protected MediaType
getContentType
(HttpMessage inputMessage) Determine the Content-Type of the HTTP message based on the "Content-Type" header or otherwise default toMediaType.APPLICATION_OCTET_STREAM
.Return theDecoder
of this reader.Return the list of media types supported by this reader.getReadableMediaTypes
(ResolvableType elementType) Return the list of media types supported by this Reader for the given type of element.getReadHints
(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response) Get additional hints for decoding for example based on the server request or annotations from controller method parameters.getReadHints
(ResolvableType elementType, ReactiveHttpInputMessage message) Get additional hints for decoding based on the input HTTP message.reactor.core.publisher.Flux<T>
read
(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) Server-side only alternative toHttpMessageReader.read(ResolvableType, ReactiveHttpInputMessage, Map)
with additional context available.reactor.core.publisher.Flux<T>
read
(ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) Read from the input message and decode to a stream of objects.reactor.core.publisher.Mono<T>
readMono
(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) Server-side only alternative toHttpMessageReader.readMono(ResolvableType, ReactiveHttpInputMessage, Map)
with additional, context available.reactor.core.publisher.Mono<T>
readMono
(ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) Read from the input message and decode to a single object.
-
Constructor Details
-
DecoderHttpMessageReader
Create an instance wrapping the givenDecoder
.
-
-
Method Details
-
getDecoder
Return theDecoder
of this reader. -
getReadableMediaTypes
Description copied from interface:HttpMessageReader
Return the list of media types supported by this reader. The list may not apply to every possible target element type and calls to this method should typically be guarded viacanWrite(elementType, null)
. The list may also exclude media types supported only for a specific element type. Alternatively, useHttpMessageReader.getReadableMediaTypes(ResolvableType)
for a more precise list.- Specified by:
getReadableMediaTypes
in interfaceHttpMessageReader<T>
- Returns:
- the general list of supported media types
-
getReadableMediaTypes
Description copied from interface:HttpMessageReader
Return the list of media types supported by this Reader for the given type of element. This list may differ fromHttpMessageReader.getReadableMediaTypes()
if the Reader doesn't support the element type, or if it supports it only for a subset of media types.- Specified by:
getReadableMediaTypes
in interfaceHttpMessageReader<T>
- Parameters:
elementType
- the type of element to read- Returns:
- the list of media types supported for the given class
-
canRead
Description copied from interface:HttpMessageReader
Whether the given object type is supported by this reader.- Specified by:
canRead
in interfaceHttpMessageReader<T>
- Parameters:
elementType
- the type of object to checkmediaType
- the media type for the read (possiblynull
)- Returns:
true
if readable,false
otherwise
-
read
public reactor.core.publisher.Flux<T> read(ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) Description copied from interface:HttpMessageReader
Read from the input message and decode to a stream of objects.- Specified by:
read
in interfaceHttpMessageReader<T>
- Parameters:
elementType
- the type of objects in the stream which must have been previously checked viaHttpMessageReader.canRead(ResolvableType, MediaType)
message
- the message to read fromhints
- additional information about how to read and decode the input- Returns:
- the decoded stream of elements
-
readMono
public reactor.core.publisher.Mono<T> readMono(ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) Description copied from interface:HttpMessageReader
Read from the input message and decode to a single object.- Specified by:
readMono
in interfaceHttpMessageReader<T>
- Parameters:
elementType
- the type of objects in the stream which must have been previously checked viaHttpMessageReader.canRead(ResolvableType, MediaType)
message
- the message to read fromhints
- additional information about how to read and decode the input- Returns:
- the decoded object
-
getContentType
Determine the Content-Type of the HTTP message based on the "Content-Type" header or otherwise default toMediaType.APPLICATION_OCTET_STREAM
.- Parameters:
inputMessage
- the HTTP message- Returns:
- the MediaType, possibly
null
.
-
getReadHints
protected Map<String,Object> getReadHints(ResolvableType elementType, ReactiveHttpInputMessage message) Get additional hints for decoding based on the input HTTP message.- Since:
- 5.3
-
read
public reactor.core.publisher.Flux<T> read(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) Description copied from interface:HttpMessageReader
Server-side only alternative toHttpMessageReader.read(ResolvableType, ReactiveHttpInputMessage, Map)
with additional context available.- Specified by:
read
in interfaceHttpMessageReader<T>
- Parameters:
actualType
- the actual type of the target method parameter; for annotated controllers, theMethodParameter
can be accessed viaResolvableType.getSource()
.elementType
- the type of Objects in the output streamrequest
- the current requestresponse
- the current responsehints
- additional information about how to read the body- Returns:
- the decoded stream of elements
-
readMono
public reactor.core.publisher.Mono<T> readMono(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) Description copied from interface:HttpMessageReader
Server-side only alternative toHttpMessageReader.readMono(ResolvableType, ReactiveHttpInputMessage, Map)
with additional, context available.- Specified by:
readMono
in interfaceHttpMessageReader<T>
- Parameters:
actualType
- the actual type of the target method parameter; for annotated controllers, theMethodParameter
can be accessed viaResolvableType.getSource()
.elementType
- the type of Objects in the output streamrequest
- the current requestresponse
- the current responsehints
- additional information about how to read the body- Returns:
- the decoded stream of elements
-
getReadHints
protected Map<String,Object> getReadHints(ResolvableType actualType, ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response) Get additional hints for decoding for example based on the server request or annotations from controller method parameters. By default, delegate to the decoder if it is an instance ofHttpMessageDecoder
.
-