Class ActionMapper

java.lang.Object
discord4j.common.store.api.ActionMapper

public class ActionMapper extends Object
Holds mappings between concrete StoreAction types and the code to execute when they are invoked.
  • Method Details

    • builder

      public static ActionMapper.Builder builder()
      Initializes a new builder for an ActionMapper.
      Returns:
      a new builder
    • empty

      public static ActionMapper empty()
      Returns an ActionMapper containing no mappings.
      Returns:
      an empty ActionMapper
    • aggregate

      public static ActionMapper aggregate(ActionMapper... mappers)
      Aggregates the mappings contained in the given mappers into a single ActionMapper instance. All mappers must be defining distinct sets of actions, any conflicts will cause an IllegalStateException 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
    • mergeFirst

      @Experimental public static ActionMapper mergeFirst(Collection<ActionMapper> mappers)
      Aggregates a collection of ActionMappers into 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.