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
-
Method Summary
Modifier and TypeMethodDescriptionstatic ActionMapper
aggregate
(ActionMapper... mappers) Aggregates the mappings contained in the givenmappers
into a singleActionMapper
instance.static ActionMapper.Builder
builder()
Initializes a new builder for anActionMapper
.static ActionMapper
empty()
Returns anActionMapper
containing 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.
-
Method Details
-
builder
Initializes a new builder for anActionMapper
.- Returns:
- a new builder
-
empty
Returns anActionMapper
containing no mappings.- Returns:
- an empty
ActionMapper
-
aggregate
Aggregates the mappings contained in the givenmappers
into a singleActionMapper
instance. All mappers must be defining distinct sets of actions, any conflicts will cause anIllegalStateException
to 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
-
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.
-