Class StringDecoder

All Implemented Interfaces:
Decoder<String>

public final class StringDecoder extends AbstractDataBufferDecoder<String>
Decode from a data buffer stream to a String stream, either splitting or aggregating incoming data chunks to realign along newlines delimiters and produce a stream of strings. This is useful for streaming but is also necessary to ensure that that multibyte characters can be decoded correctly, avoiding split-character issues. The default delimiters used by default are \n and \r\n but that can be customized.
Since:
5.0
Author:
Sebastien Deleuze, Brian Clozel, Arjen Poutsma, Mark Paluch
See Also:
  • Field Details

    • DEFAULT_CHARSET

      public static final Charset DEFAULT_CHARSET
      The default charset to use, i.e. "UTF-8".
    • DEFAULT_DELIMITERS

      public static final List<String> DEFAULT_DELIMITERS
      The default delimiter strings to use, i.e. \r\n and \n.
  • Method Details

    • setDefaultCharset

      public void setDefaultCharset(Charset defaultCharset)
      Set the default character set to fall back on if the MimeType does not specify any.

      By default this is UTF-8.

      Parameters:
      defaultCharset - the charset to fall back on
      Since:
      5.2.9
    • getDefaultCharset

      public Charset getDefaultCharset()
      Return the configured defaultCharset.
      Since:
      5.2.9
    • 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<String>
      Overrides:
      canDecode in class AbstractDecoder<String>
      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
    • decode

      public reactor.core.publisher.Flux<String> decode(Publisher<DataBuffer> input, 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<String>
      Overrides:
      decode in class AbstractDataBufferDecoder<String>
      Parameters:
      input - 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
    • decode

      public String decode(DataBuffer dataBuffer, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String,Object> hints)
      Description copied from interface: Decoder
      Decode a data buffer to an Object of type T. This is useful for scenarios, that distinct messages (or events) are decoded and handled individually, in fully aggregated form.
      Parameters:
      dataBuffer - the DataBuffer to decode
      elementType - the expected output type
      mimeType - the MIME type associated with the data
      hints - additional information about how to do decode
      Returns:
      the decoded value, possibly null
    • textPlainOnly

      public static StringDecoder textPlainOnly()
      Create a StringDecoder for "text/plain".
    • textPlainOnly

      public static StringDecoder textPlainOnly(List<String> delimiters, boolean stripDelimiter)
      Create a StringDecoder for "text/plain".
      Parameters:
      delimiters - delimiter strings to use to split the input stream
      stripDelimiter - whether to remove delimiters from the resulting input strings
    • allMimeTypes

      public static StringDecoder allMimeTypes()
      Create a StringDecoder that supports all MIME types.
    • allMimeTypes

      public static StringDecoder allMimeTypes(List<String> delimiters, boolean stripDelimiter)
      Create a StringDecoder that supports all MIME types.
      Parameters:
      delimiters - delimiter strings to use to split the input stream
      stripDelimiter - whether to remove delimiters from the resulting input strings