org.springframework.http.codec.json

Class AbstractJackson2Encoder

  • All Implemented Interfaces:
    Encoder<java.lang.Object>, HttpMessageEncoder<java.lang.Object>
    Direct Known Subclasses:
    Jackson2JsonEncoder, Jackson2SmileEncoder


    public abstract class AbstractJackson2Encoder
    extends Jackson2CodecSupport
    implements HttpMessageEncoder<java.lang.Object>
    Base class providing support methods for Jackson 2.9 encoding. For non-streaming use cases, Flux elements are collected into a List before serialization for performance reason.
    Since:
    5.0
    Author:
    Sebastien Deleuze, Arjen Poutsma
    • Constructor Detail

    • Method Detail

      • canEncode

        public boolean canEncode(ResolvableType elementType,
                                 @Nullable
                                 MimeType mimeType)
        Description copied from interface: Encoder
        Whether the encoder supports the given source element type and the MIME type for the output stream.
        Specified by:
        canEncode in interface Encoder<java.lang.Object>
        Parameters:
        elementType - the type of elements in the source stream
        mimeType - the MIME type for the output stream (can be null if not specified)
        Returns:
        true if supported, false otherwise
      • encode

        public reactor.core.publisher.Flux<DataBuffer> encode(org.reactivestreams.Publisher<?> inputStream,
                                                              DataBufferFactory bufferFactory,
                                                              ResolvableType elementType,
                                                              @Nullable
                                                              MimeType mimeType,
                                                              @Nullable
                                                              java.util.Map<java.lang.String,java.lang.Object> hints)
        Description copied from interface: Encoder
        Encode a stream of Objects of type T into a DataBuffer output stream.
        Specified by:
        encode in interface Encoder<java.lang.Object>
        Parameters:
        inputStream - the input stream of Objects to encode. If the input should be encoded as a single value rather than as a stream of elements, an instance of Mono should be used.
        bufferFactory - for creating output stream DataBuffer's
        elementType - the expected type of elements in the input stream; this type must have been previously passed to the Encoder.canEncode(org.springframework.core.ResolvableType, org.springframework.util.MimeType) method and it must have returned true.
        mimeType - the MIME type for the output stream (optional)
        hints - additional information about how to do encode
        Returns:
        the output stream
      • getJsonEncoding

        protected JsonEncoding getJsonEncoding(@Nullable
                                               MimeType mimeType)
        Determine the JSON encoding to use for the given mime type.
        Parameters:
        mimeType - the mime type as requested by the caller
        Returns:
        the JSON encoding to use (never null)
        Since:
        5.0.5
      • getEncodableMimeTypes

        public java.util.List<MimeType> getEncodableMimeTypes()
        Description copied from interface: Encoder
        Return the list of mime types this encoder supports.
        Specified by:
        getEncodableMimeTypes in interface Encoder<java.lang.Object>
      • getStreamingMediaTypes

        public java.util.List<MediaType> getStreamingMediaTypes()
        Description copied from interface: HttpMessageEncoder
        Return "streaming" media types for which flushing should be performed automatically vs at the end of the input stream.
        Specified by:
        getStreamingMediaTypes in interface HttpMessageEncoder<java.lang.Object>
      • getEncodeHints

        public java.util.Map<java.lang.String,java.lang.Object> getEncodeHints(@Nullable
                                                                               ResolvableType actualType,
                                                                               ResolvableType elementType,
                                                                               @Nullable
                                                                               MediaType mediaType,
                                                                               ServerHttpRequest request,
                                                                               ServerHttpResponse response)
        Description copied from interface: HttpMessageEncoder
        Get decoding hints based on the server request or annotations on the target controller method parameter.
        Specified by:
        getEncodeHints in interface HttpMessageEncoder<java.lang.Object>
        Parameters:
        actualType - the actual source type to encode, possibly a reactive wrapper and sourced from MethodParameter, i.e. providing access to method annotations.
        elementType - the element type within Flux/Mono that we're trying to encode.
        request - the current request
        response - the current response
        Returns:
        a Map with hints, possibly empty