T
- the element typepublic abstract class AbstractDataBufferDecoder<T> extends AbstractDecoder<T>
Decoder
implementations that can decode
a DataBuffer
directly to the target element type.
Sub-classes must implement decodeDataBuffer(org.springframework.core.io.buffer.DataBuffer, org.springframework.core.ResolvableType, org.springframework.util.MimeType, java.util.Map<java.lang.String, java.lang.Object>)
to provide a way to
transform a DataBuffer
to the target data type. The default
decode(org.reactivestreams.Publisher<org.springframework.core.io.buffer.DataBuffer>, org.springframework.core.ResolvableType, org.springframework.util.MimeType, java.util.Map<java.lang.String, java.lang.Object>)
implementation transforms each individual data buffer while
decodeToMono(org.reactivestreams.Publisher<org.springframework.core.io.buffer.DataBuffer>, org.springframework.core.ResolvableType, org.springframework.util.MimeType, java.util.Map<java.lang.String, java.lang.Object>)
applies "reduce" and transforms the aggregated buffer.
Sub-classes can override decode(org.reactivestreams.Publisher<org.springframework.core.io.buffer.DataBuffer>, org.springframework.core.ResolvableType, org.springframework.util.MimeType, java.util.Map<java.lang.String, java.lang.Object>)
in order to split the input stream
along different boundaries (e.g. on new line characters for String
)
or always reduce to a single data buffer (e.g. Resource
).
logger
Modifier | Constructor and Description |
---|---|
protected |
AbstractDataBufferDecoder(MimeType... supportedMimeTypes) |
Modifier and Type | Method and Description |
---|---|
reactor.core.publisher.Flux<T> |
decode(org.reactivestreams.Publisher<DataBuffer> input,
ResolvableType elementType,
MimeType mimeType,
Map<String,Object> hints)
Decode a
DataBuffer input stream into a Flux of T . |
protected abstract T |
decodeDataBuffer(DataBuffer buffer,
ResolvableType elementType,
MimeType mimeType,
Map<String,Object> hints)
How to decode a
DataBuffer to the target element type. |
reactor.core.publisher.Mono<T> |
decodeToMono(org.reactivestreams.Publisher<DataBuffer> input,
ResolvableType elementType,
MimeType mimeType,
Map<String,Object> hints)
Decode a
DataBuffer input stream into a Mono of T . |
int |
getMaxInMemorySize()
Return the
configured byte count limit. |
void |
setMaxInMemorySize(int byteCount)
Configure a limit on the number of bytes that can be buffered whenever
the input stream needs to be aggregated.
|
canDecode, getDecodableMimeTypes, getLogger, setLogger
protected AbstractDataBufferDecoder(MimeType... supportedMimeTypes)
public void setMaxInMemorySize(int byteCount)
DataBuffer
,
ByteBuffer
, byte[]
,
Resource
, String
, etc.
It can also occur when splitting the input stream, e.g. delimited text,
in which case the limit applies to data buffered between delimiters.
By default in 5.1 this is set to -1, unlimited. In 5.2 the default value for this limit is set to 256K.
byteCount
- the max number of bytes to buffer, or -1 for unlimitedpublic int getMaxInMemorySize()
configured
byte count limit.public reactor.core.publisher.Flux<T> decode(org.reactivestreams.Publisher<DataBuffer> input, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
Decoder
DataBuffer
input stream into a Flux of T
.input
- the DataBuffer
input stream to decodeelementType
- the expected type of elements in the output stream;
this type must have been previously passed to the Decoder.canDecode(org.springframework.core.ResolvableType, org.springframework.util.MimeType)
method and it must have returned true
.mimeType
- the MIME type associated with the input stream (optional)hints
- additional information about how to do encodepublic reactor.core.publisher.Mono<T> decodeToMono(org.reactivestreams.Publisher<DataBuffer> input, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
Decoder
DataBuffer
input stream into a Mono of T
.decodeToMono
in interface Decoder<T>
decodeToMono
in class AbstractDecoder<T>
input
- the DataBuffer
input stream to decodeelementType
- the expected type of elements in the output stream;
this type must have been previously passed to the Decoder.canDecode(org.springframework.core.ResolvableType, org.springframework.util.MimeType)
method and it must have returned true
.mimeType
- the MIME type associated with the input stream (optional)hints
- additional information about how to do encodeprotected abstract T decodeDataBuffer(DataBuffer buffer, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
DataBuffer
to the target element type.