Class AbstractDataBufferDecoder<T>
- java.lang.Object
- org.springframework.core.codec.AbstractDecoder<T>
- org.springframework.core.codec.AbstractDataBufferDecoder<T>
- Type Parameters:
T
- the element type
- All Implemented Interfaces:
Decoder<T>
- Direct Known Subclasses:
ByteArrayDecoder
,ByteBufferDecoder
,DataBufferDecoder
,ResourceDecoder
,StringDecoder
public abstract class AbstractDataBufferDecoder<T> extends AbstractDecoder<T>
Abstract base class forDecoder
implementations that can decode aDataBuffer
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 aDataBuffer
to the target data type. The defaultdecode(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 whiledecodeToMono(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 forString
) or always reduce to a single data buffer (e.g.Resource
).- Since:
- 5.0
- Author:
- Rossen Stoyanchev
Field Summary
Fields inherited from class org.springframework.core.codec.AbstractDecoder
logger
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractDataBufferDecoder(MimeType... supportedMimeTypes)
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description reactor.core.publisher.Flux<T>
decode(org.reactivestreams.Publisher<DataBuffer> input, ResolvableType elementType, MimeType mimeType, Map<String,Object> hints)
Decode aDataBuffer
input stream into a Flux ofT
.protected T
decodeDataBuffer(DataBuffer buffer, ResolvableType elementType, MimeType mimeType, Map<String,Object> hints)
Deprecated.as of 5.2, please implementDecoder.decode(DataBuffer, ResolvableType, MimeType, Map)
insteadreactor.core.publisher.Mono<T>
decodeToMono(org.reactivestreams.Publisher<DataBuffer> input, ResolvableType elementType, MimeType mimeType, Map<String,Object> hints)
Decode aDataBuffer
input stream into a Mono ofT
.int
getMaxInMemorySize()
Return theconfigured
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.Methods inherited from class org.springframework.core.codec.AbstractDecoder
canDecode, getDecodableMimeTypes, getLogger, setLogger
Constructor Detail
AbstractDataBufferDecoder
protected AbstractDataBufferDecoder(MimeType... supportedMimeTypes)
Method Detail
setMaxInMemorySize
public void setMaxInMemorySize(int byteCount)
Configure a limit on the number of bytes that can be buffered whenever the input stream needs to be aggregated. This can be a result of decoding to a singleDataBuffer
,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 this is set to 256K.
- Parameters:
byteCount
- the max number of bytes to buffer, or -1 for unlimited- Since:
- 5.1.11
getMaxInMemorySize
public int getMaxInMemorySize()
Return theconfigured
byte count limit.- Since:
- 5.1.11
decode
public reactor.core.publisher.Flux<T> decode(org.reactivestreams.Publisher<DataBuffer> input, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
Description copied from interface:Decoder
Decode aDataBuffer
input stream into a Flux ofT
.- Parameters:
input
- theDataBuffer
input stream to decodeelementType
- the expected type of elements in the output stream; this type must have been previously passed to theDecoder.canDecode(org.springframework.core.ResolvableType, org.springframework.util.MimeType)
method and it must have returnedtrue
.mimeType
- the MIME type associated with the input stream (optional)hints
- additional information about how to do encode- Returns:
- the output stream with decoded elements
decodeToMono
public reactor.core.publisher.Mono<T> decodeToMono(org.reactivestreams.Publisher<DataBuffer> input, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
Description copied from interface:Decoder
Decode aDataBuffer
input stream into a Mono ofT
.- Specified by:
decodeToMono
in interfaceDecoder<T>
- Overrides:
decodeToMono
in classAbstractDecoder<T>
- Parameters:
input
- theDataBuffer
input stream to decodeelementType
- the expected type of elements in the output stream; this type must have been previously passed to theDecoder.canDecode(org.springframework.core.ResolvableType, org.springframework.util.MimeType)
method and it must have returnedtrue
.mimeType
- the MIME type associated with the input stream (optional)hints
- additional information about how to do encode- Returns:
- the output stream with the decoded element
decodeDataBuffer
@Deprecated @Nullable protected T decodeDataBuffer(DataBuffer buffer, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
Deprecated.as of 5.2, please implementDecoder.decode(DataBuffer, ResolvableType, MimeType, Map)
insteadHow to decode aDataBuffer
to the target element type.