Class KotlinSerializationBinaryDecoder<T extends kotlinx.serialization.BinaryFormat>

java.lang.Object
org.springframework.http.codec.KotlinSerializationSupport<T>
org.springframework.http.codec.KotlinSerializationBinaryDecoder<T>
Type Parameters:
T - the type of BinaryFormat
All Implemented Interfaces:
Decoder<Object>
Direct Known Subclasses:
KotlinSerializationCborDecoder, KotlinSerializationProtobufDecoder

public abstract class KotlinSerializationBinaryDecoder<T extends kotlinx.serialization.BinaryFormat> extends KotlinSerializationSupport<T> implements Decoder<Object>
Abstract base class for Decoder implementations that defer to Kotlin binary serializers.
Since:
6.0
Author:
Sebastien Deleuze, Iain Henderson, Arjen Poutsma
  • Constructor Details

    • KotlinSerializationBinaryDecoder

      public KotlinSerializationBinaryDecoder(T format, MimeType... supportedMimeTypes)
  • Method Details

    • 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 single DataBuffer, ByteBuffer, byte[], Resource, String, etc. It can also occur when splitting the input stream, for example, 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
    • getMaxInMemorySize

      public int getMaxInMemorySize()
      Return the configured byte count limit.
    • canDecode

      public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType)
      Description copied from interface: Decoder
      Whether the decoder supports the given target element type and the MIME type of the source stream.
      Specified by:
      canDecode in interface Decoder<T extends kotlinx.serialization.BinaryFormat>
      Parameters:
      elementType - the target element type for the output stream
      mimeType - the mime type associated with the stream to decode (can be null if not specified)
      Returns:
      true if supported, false otherwise
    • getDecodableMimeTypes

      public List<MimeType> getDecodableMimeTypes()
      Description copied from interface: Decoder
      Return the list of MIME types supported by this Decoder. The list may not apply to every possible target element type and calls to this method should typically be guarded via canDecode(elementType, null). The list may also exclude MIME types supported only for a specific element type. Alternatively, use Decoder.getDecodableMimeTypes(ResolvableType) for a more precise list.
      Specified by:
      getDecodableMimeTypes in interface Decoder<T extends kotlinx.serialization.BinaryFormat>
      Returns:
      the list of supported MIME types
    • getDecodableMimeTypes

      public List<MimeType> getDecodableMimeTypes(ResolvableType targetType)
      Description copied from interface: Decoder
      Return the list of MIME types supported by this Decoder for the given type of element. This list may differ from Decoder.getDecodableMimeTypes() if the Decoder doesn't support the given element type or if it supports it only for a subset of MIME types.
      Specified by:
      getDecodableMimeTypes in interface Decoder<T extends kotlinx.serialization.BinaryFormat>
      Parameters:
      targetType - the type of element to check for decoding
      Returns:
      the list of MIME types supported for the given target type
    • decode

      public reactor.core.publisher.Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
      Description copied from interface: Decoder
      Decode a DataBuffer input stream into a Flux of T.
      Specified by:
      decode in interface Decoder<T extends kotlinx.serialization.BinaryFormat>
      Parameters:
      inputStream - the DataBuffer input stream to decode
      elementType - 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 decode
      Returns:
      the output stream with decoded elements
    • decodeToMono

      public reactor.core.publisher.Mono<Object> decodeToMono(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
      Description copied from interface: Decoder
      Decode a DataBuffer input stream into a Mono of T.
      Specified by:
      decodeToMono in interface Decoder<T extends kotlinx.serialization.BinaryFormat>
      Parameters:
      inputStream - the DataBuffer input stream to decode
      elementType - 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 decode
      Returns:
      the output stream with the decoded element