public class DefaultMetadataExtractor extends Object implements MetadataExtractor
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.
COMPOSITE_METADATA, ROUTE_KEY, ROUTING
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.
|
Modifier and Type | Method and Description |
---|---|
Map<String,Object> |
extract(io.rsocket.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.
|
void |
metadataToExtract(MimeType mimeType,
Class<?> targetType,
String name)
Decode metadata entries with the given
MimeType to the specified
target class, and store the decoded value in the output map under the
given name. |
<T> void |
metadataToExtract(MimeType mimeType,
Class<T> targetType,
BiConsumer<T,Map<String,Object>> mapper)
Variant of
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. |
void |
metadataToExtract(MimeType mimeType,
ParameterizedTypeReference<?> targetType,
String name)
Variant of
metadataToExtract(MimeType, Class, String) that accepts
ParameterizedTypeReference instead of Class for
specifying a target type with generic parameters. |
<T> void |
metadataToExtract(MimeType mimeType,
ParameterizedTypeReference<T> type,
BiConsumer<T,Map<String,Object>> mapper)
Variant of
metadataToExtract(MimeType, Class, BiConsumer) that
accepts ParameterizedTypeReference instead of Class for
specifying a target type with generic parameters. |
public DefaultMetadataExtractor(Decoder<?>... decoders)
public List<? extends Decoder<?>> getDecoders()
public void metadataToExtract(MimeType mimeType, Class<?> targetType, @Nullable String name)
MimeType
to the specified
target class, and store the decoded value in the output map under the
given name.mimeType
- the mime type of metadata entries to extracttargetType
- the target value type to decode toname
- assign a name for the decoded value; if not provided, then
the mime type is used as the keypublic void metadataToExtract(MimeType mimeType, ParameterizedTypeReference<?> targetType, @Nullable String name)
metadataToExtract(MimeType, Class, String)
that accepts
ParameterizedTypeReference
instead of Class
for
specifying a target type with generic parameters.mimeType
- the mime type of metadata entries to extracttargetType
- the target value type to decode topublic <T> void metadataToExtract(MimeType mimeType, Class<T> targetType, BiConsumer<T,Map<String,Object>> mapper)
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
- the target value typemimeType
- the mime type of metadata entries to extracttargetType
- the target value type to decode tomapper
- custom logic to add the decoded value to the output mappublic <T> void metadataToExtract(MimeType mimeType, ParameterizedTypeReference<T> type, BiConsumer<T,Map<String,Object>> mapper)
metadataToExtract(MimeType, Class, BiConsumer)
that
accepts ParameterizedTypeReference
instead of Class
for
specifying a target type with generic parameters.T
- the target value typemimeType
- the mime type of metadata entries to extracttype
- the target value type to decode tomapper
- custom logic to add the decoded value to the output mappublic Map<String,Object> extract(io.rsocket.Payload payload, MimeType metadataMimeType)
MetadataExtractor
Payload
metadata.
The Payload "route", if present, should be saved under MetadataExtractor.ROUTE_KEY
.extract
in interface MetadataExtractor
payload
- the payload whose metadata should be readmetadataMimeType
- the metadata MimeType for the connection.