Class AbstractJackson2Decoder
java.lang.Object
org.springframework.http.codec.json.Jackson2CodecSupport
org.springframework.http.codec.json.AbstractJackson2Decoder
- All Implemented Interfaces:
org.springframework.core.codec.Decoder<Object>,HttpMessageDecoder<Object>
- Direct Known Subclasses:
Jackson2CborDecoder,Jackson2JsonDecoder,Jackson2SmileDecoder
public abstract class AbstractJackson2Decoder
extends Jackson2CodecSupport
implements HttpMessageDecoder<Object>
Abstract base class for Jackson 2.x decoding, leveraging non-blocking parsing.
- Since:
- 5.0
- Author:
- Sebastien Deleuze, Rossen Stoyanchev, Arjen Poutsma
- See Also:
-
Field Summary
Fields inherited from class org.springframework.http.codec.json.Jackson2CodecSupport
JSON_VIEW_HINT, logger -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractJackson2Decoder(ObjectMapper mapper, org.springframework.util.MimeType... mimeTypes) Constructor with a JacksonObjectMapperto use. -
Method Summary
Modifier and TypeMethodDescriptionbooleancanDecode(org.springframework.core.ResolvableType elementType, org.springframework.util.MimeType mimeType) protected ObjectReadercustomizeReader(ObjectReader reader, org.springframework.core.ResolvableType elementType, Map<String, Object> hints) Subclasses can use this method to customizeObjectReaderused for reading values.reactor.core.publisher.Flux<Object>decode(Publisher<org.springframework.core.io.buffer.DataBuffer> input, org.springframework.core.ResolvableType elementType, org.springframework.util.MimeType mimeType, Map<String, Object> hints) decode(org.springframework.core.io.buffer.DataBuffer dataBuffer, org.springframework.core.ResolvableType targetType, org.springframework.util.MimeType mimeType, Map<String, Object> hints) reactor.core.publisher.Mono<Object>decodeToMono(Publisher<org.springframework.core.io.buffer.DataBuffer> input, org.springframework.core.ResolvableType elementType, org.springframework.util.MimeType mimeType, Map<String, Object> hints) protected <A extends Annotation>
AgetAnnotation(org.springframework.core.MethodParameter parameter, Class<A> annotType) List<org.springframework.util.MimeType>List<org.springframework.util.MimeType>getDecodableMimeTypes(org.springframework.core.ResolvableType targetType) getDecodeHints(org.springframework.core.ResolvableType actualType, org.springframework.core.ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response) Get decoding hints based on the server request or annotations on the target controller method parameter.intReturn theconfiguredbyte count limit.protected reactor.core.publisher.Flux<org.springframework.core.io.buffer.DataBuffer>processInput(Publisher<org.springframework.core.io.buffer.DataBuffer> input, org.springframework.core.ResolvableType elementType, org.springframework.util.MimeType mimeType, Map<String, Object> hints) Process the input publisher into a flux.voidsetMaxInMemorySize(int byteCount) Set the max number of bytes that can be buffered by this decoder.Methods inherited from class org.springframework.http.codec.json.Jackson2CodecSupport
getHints, getJavaType, getMediaTypesForProblemDetail, getMimeTypes, getMimeTypes, getObjectMapper, getObjectMapperRegistrations, getObjectMappersForType, getParameter, logWarningIfNecessary, registerObjectMappersForType, selectObjectMapper, setObjectMapper, supportsMimeType
-
Constructor Details
-
AbstractJackson2Decoder
protected AbstractJackson2Decoder(ObjectMapper mapper, org.springframework.util.MimeType... mimeTypes) Constructor with a JacksonObjectMapperto use.
-
-
Method Details
-
setMaxInMemorySize
public void setMaxInMemorySize(int byteCount) Set the max number of bytes that can be buffered by this decoder. This is either the size of the entire input when decoding as a whole, or the size of one top-level JSON object within a JSON stream. When the limit is exceeded,DataBufferLimitExceptionis raised.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 theconfiguredbyte count limit.- Since:
- 5.1.11
-
canDecode
public boolean canDecode(org.springframework.core.ResolvableType elementType, @Nullable org.springframework.util.MimeType mimeType) - Specified by:
canDecodein interfaceorg.springframework.core.codec.Decoder<Object>
-
decode
public reactor.core.publisher.Flux<Object> decode(Publisher<org.springframework.core.io.buffer.DataBuffer> input, org.springframework.core.ResolvableType elementType, @Nullable org.springframework.util.MimeType mimeType, @Nullable Map<String, Object> hints) - Specified by:
decodein interfaceorg.springframework.core.codec.Decoder<Object>
-
processInput
protected reactor.core.publisher.Flux<org.springframework.core.io.buffer.DataBuffer> processInput(Publisher<org.springframework.core.io.buffer.DataBuffer> input, org.springframework.core.ResolvableType elementType, @Nullable org.springframework.util.MimeType mimeType, @Nullable Map<String, Object> hints) Process the input publisher into a flux. Default implementation returnsFlux.from(Publisher), but subclasses can choose to customize this behavior.- Parameters:
input- theDataBufferinput stream to processelementType- the expected type of elements in the output streammimeType- the MIME type associated with the input stream (optional)hints- additional information about how to do encode- Returns:
- the processed flux
- Since:
- 5.1.14
-
decodeToMono
public reactor.core.publisher.Mono<Object> decodeToMono(Publisher<org.springframework.core.io.buffer.DataBuffer> input, org.springframework.core.ResolvableType elementType, @Nullable org.springframework.util.MimeType mimeType, @Nullable Map<String, Object> hints) - Specified by:
decodeToMonoin interfaceorg.springframework.core.codec.Decoder<Object>
-
decode
public Object decode(org.springframework.core.io.buffer.DataBuffer dataBuffer, org.springframework.core.ResolvableType targetType, @Nullable org.springframework.util.MimeType mimeType, @Nullable Map<String, Object> hints) throws org.springframework.core.codec.DecodingException- Specified by:
decodein interfaceorg.springframework.core.codec.Decoder<Object>- Throws:
org.springframework.core.codec.DecodingException
-
customizeReader
protected ObjectReader customizeReader(ObjectReader reader, org.springframework.core.ResolvableType elementType, @Nullable Map<String, Object> hints) Subclasses can use this method to customizeObjectReaderused for reading values.- Parameters:
reader- the reader instance to customizeelementType- the target type of element values to read tohints- a map with serialization hints; the Reactor Context, when available, may be accessed under the keyContextView.class.getName()- Returns:
- the customized
ObjectReaderto use - Since:
- 6.0
-
getDecodeHints
public Map<String,Object> getDecodeHints(org.springframework.core.ResolvableType actualType, org.springframework.core.ResolvableType elementType, ServerHttpRequest request, ServerHttpResponse response) Description copied from interface:HttpMessageDecoderGet decoding hints based on the server request or annotations on the target controller method parameter.- Specified by:
getDecodeHintsin interfaceHttpMessageDecoder<Object>- Parameters:
actualType- the actual target type to decode to, possibly a reactive wrapper and sourced fromMethodParameter, i.e. providing access to method parameter annotationselementType- the element type withinFlux/Monothat we're trying to decode torequest- the current requestresponse- the current response- Returns:
- a Map with hints, possibly empty
-
getDecodableMimeTypes
- Specified by:
getDecodableMimeTypesin interfaceorg.springframework.core.codec.Decoder<Object>
-
getDecodableMimeTypes
public List<org.springframework.util.MimeType> getDecodableMimeTypes(org.springframework.core.ResolvableType targetType) - Specified by:
getDecodableMimeTypesin interfaceorg.springframework.core.codec.Decoder<Object>
-
getAnnotation
protected <A extends Annotation> A getAnnotation(org.springframework.core.MethodParameter parameter, Class<A> annotType) - Specified by:
getAnnotationin classJackson2CodecSupport
-