org.springframework.messaging.rsocket

## Class DefaultMetadataExtractor

- java.lang.Object
- - org.springframework.messaging.rsocket.DefaultMetadataExtractor

- All Implemented Interfaces:
    MetadataExtractor, MetadataExtractorRegistry

      public class DefaultMetadataExtractor
      extends Object
      implements MetadataExtractor, MetadataExtractorRegistry

  Default `MetadataExtractor` implementation that relies on `Decoder`s to deserialize the content of metadata entries.

  By default only `"message/x.rsocket.routing.v0"` is extracted and saved under `MetadataExtractor.ROUTE_KEY`. Use `metadataToExtract` methods to specify other metadata mime types of interest to extract.

  Since:
    5.2
  Author:
    Rossen Stoyanchev

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.messaging.rsocket.MetadataExtractor

      `ROUTE_KEY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultMetadataExtractor(Decoder<?>... decoders)` Constructor with decoders for de-serializing metadata entries.
    `DefaultMetadataExtractor(List<Decoder<?>> decoders)` Constructor with list of decoders for de-serializing metadata entries.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Map<String,Object>` | `extract(Payload payload, MimeType metadataMimeType)` Extract a map of values from the given `Payload` metadata.
    `List<? extends Decoder<?>>` | `getDecoders()` Return a read-only list with the configured decoders.
    `<T> void` | `metadataToExtract(MimeType mimeType, Class<T> targetType, BiConsumer<T,Map<String,Object>> mapper)` Variant of `MetadataExtractorRegistry.metadataToExtract(MimeType, Class, String)` that allows custom logic to be used to map the decoded value to any number of values in the output map.
    `<T> void` | `metadataToExtract(MimeType mimeType, ParameterizedTypeReference<T> type, BiConsumer<T,Map<String,Object>> mapper)` Variant of `MetadataExtractorRegistry.metadataToExtract(MimeType, Class, BiConsumer)` that accepts `ParameterizedTypeReference` instead of `Class` for specifying a target type with generic parameters.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.springframework.messaging.rsocket.MetadataExtractorRegistry

      `metadataToExtract, metadataToExtract`

- - ### Constructor Detail

    - #### DefaultMetadataExtractor

          public DefaultMetadataExtractor(Decoder<?>... decoders)

      Constructor with decoders for de-serializing metadata entries.

    - #### DefaultMetadataExtractor

          public DefaultMetadataExtractor(List<Decoder<?>> decoders)

      Constructor with list of decoders for de-serializing metadata entries.

  - ### Method Detail

    - #### getDecoders

          public List<? extends Decoder<?>> getDecoders()

      Return a read-only list with the configured decoders.

    - #### metadataToExtract

          public <T> void metadataToExtract(MimeType mimeType,
                                            Class<T> targetType,
                                            BiConsumer<T,Map<String,Object>> mapper)

      Description copied from interface: `MetadataExtractorRegistry`
      Variant of `MetadataExtractorRegistry.metadataToExtract(MimeType, Class, String)` that allows custom logic to be used to map the decoded value to any number of values in the output map.
      Specified by:
        `metadataToExtract` in interface `MetadataExtractorRegistry`
      Type Parameters:
        `T` - the target value type
      Parameters:
        `mimeType` - the mime type of metadata entries to extract
        `targetType` - the target value type to decode to
        `mapper` - custom logic to add the decoded value to the output map

    - #### metadataToExtract

          public <T> void metadataToExtract(MimeType mimeType,
                                            ParameterizedTypeReference<T> type,
                                            BiConsumer<T,Map<String,Object>> mapper)

      Description copied from interface: `MetadataExtractorRegistry`
      Variant of `MetadataExtractorRegistry.metadataToExtract(MimeType, Class, BiConsumer)` that accepts `ParameterizedTypeReference` instead of `Class` for specifying a target type with generic parameters.
      Specified by:
        `metadataToExtract` in interface `MetadataExtractorRegistry`
      Type Parameters:
        `T` - the target value type
      Parameters:
        `mimeType` - the mime type of metadata entries to extract
        `type` - the target value type to decode to
        `mapper` - custom logic to add the decoded value to the output map

    - #### extract

          public Map<String,Object> extract(Payload payload,
                                            MimeType metadataMimeType)

      Description copied from interface: `MetadataExtractor`
      Extract a map of values from the given `Payload` metadata. The Payload "route", if present, should be saved under `MetadataExtractor.ROUTE_KEY`.
      Specified by:
        `extract` in interface `MetadataExtractor`
      Parameters:
        `payload` - the payload whose metadata should be read
        `metadataMimeType` - the metadata MimeType for the connection.
      Returns:
        name values pairs extracted from the metadata