Package discord4j.common.store.api
Class ActionMapper
java.lang.Object
discord4j.common.store.api.ActionMapper
Holds mappings between concrete
StoreAction types and the code to execute when they are invoked.-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionstatic ActionMapperaggregate(ActionMapper... mappers) Aggregates the mappings contained in the givenmappersinto a singleActionMapperinstance.static ActionMapper.Builderbuilder()Initializes a new builder for anActionMapper.static ActionMapperempty()Returns anActionMappercontaining no mappings.<R> Optional<Function<StoreAction<R>,? extends Publisher<R>>> findHandlerForAction(StoreAction<R> action) Retrieves the handler associated to the given action based on its concrete type.static ActionMappermergeFirst(Collection<ActionMapper> mappers) Aggregates a collection ofActionMappersinto a single instance.
-
Method Details
-
builder
Initializes a new builder for anActionMapper.- Returns:
- a new builder
-
empty
Returns anActionMappercontaining no mappings.- Returns:
- an empty
ActionMapper
-
aggregate
Aggregates the mappings contained in the givenmappersinto a singleActionMapperinstance. All mappers must be defining distinct sets of actions, any conflicts will cause anIllegalStateExceptionto be thrown.- Parameters:
mappers- the mappers to aggregate- Returns:
- an aggregated
ActionMapper - Throws:
IllegalStateException- if two or more mappers define a mapping for the same action type
-
mergeFirst
Aggregates a collection ofActionMappersinto a single instance. Mappers with matching actions will be merged by preserving the first declared one.- Parameters:
mappers- the mappers to aggregate- Returns:
- an aggregated
ActionMapper, merging any overlap by preserving the first mapper by collection order
-
findHandlerForAction
public <R> Optional<Function<StoreAction<R>,? extends Publisher<R>>> findHandlerForAction(StoreAction<R> action) Retrieves the handler associated to the given action based on its concrete type.- Type Parameters:
R- the return type of the action, to ensure type safety- Parameters:
action- the action to retrieve the handler for- Returns:
- the handler for the given action, or
Optional.empty()if not found.
-