Class EventHandlerBuilder<State,​Event>


  • public final class EventHandlerBuilder<State,​Event>
    extends java.lang.Object
    • Constructor Detail

      • EventHandlerBuilder

        public EventHandlerBuilder()
    • Method Detail

      • forState

        public EventHandlerBuilderByState<State,​State,​Event> forState​(java.util.function.Predicate<State> statePredicate)
        Use this method to define event handlers that are selected when the passed predicate holds true.

        Note: event handlers are selected in the order they are added. Once a matching is found, it's selected for handling the event and no further lookup is done. Therefore you must make sure that their matching conditions don't overlap, otherwise you risk to 'shadow' part of your event handlers.

        Parameters:
        statePredicate - The handlers defined by this builder are used when the statePredicate is true

        Returns:
        A new, mutable, EventHandlerBuilderByState
      • forState

        public <S extends StateEventHandlerBuilderByState<S,​State,​Event> forState​(java.lang.Class<S> stateClass,
                                                                                                java.util.function.Predicate<S> statePredicate)
        Use this method to define event handlers that are selected when the passed predicate holds true for a given subtype of your model. Useful when the model is defined as class hierarchy.

        Note: event handlers are selected in the order they are added. Once a matching is found, it's selected for handling the event and no further lookup is done. Therefore you must make sure that their matching conditions don't overlap, otherwise you risk to 'shadow' part of your event handlers.

        Parameters:
        stateClass - The handlers defined by this builder are used when the state is an instance of the stateClass
        statePredicate - The handlers defined by this builder are used when the statePredicate is true

        Returns:
        A new, mutable, EventHandlerBuilderByState
      • forStateType

        public <S extends StateEventHandlerBuilderByState<S,​State,​Event> forStateType​(java.lang.Class<S> stateClass)
        Use this method to define command handlers for a given subtype of your model. Useful when the model is defined as class hierarchy.

        Note: event handlers are selected in the order they are added. Once a matching is found, it's selected for handling the event and no further lookup is done. Therefore you must make sure that their matching conditions don't overlap, otherwise you risk to 'shadow' part of your event handlers.

        Parameters:
        stateClass - The handlers defined by this builder are used when the state is an instance of the stateClass

        Returns:
        A new, mutable, EventHandlerBuilderByState
      • forNullState

        public EventHandlerBuilderByState<State,​State,​Event> forNullState()
        The handlers defined by this builder are used when the state is null. This variant is particular useful when the empty state of your model is defined as null.

        Note: event handlers are selected in the order they are added. Once a matching is found, it's selected for handling the event and no further lookup is done. Therefore you must make sure that their matching conditions don't overlap, otherwise you risk to 'shadow' part of your event handlers.

        Returns:
        A new, mutable, EventHandlerBuilderByState
      • forNonNullState

        public EventHandlerBuilderByState<State,​State,​Event> forNonNullState()
        The handlers defined by this builder are used for any not null state.

        Note: event handlers are selected in the order they are added. Once a matching is found, it's selected for handling the event and no further lookup is done. Therefore you must make sure that their matching conditions don't overlap, otherwise you risk to 'shadow' part of your event handlers.

        Returns:
        A new, mutable, EventHandlerBuilderByState
      • forAnyState

        public EventHandlerBuilderByState<State,​State,​Event> forAnyState()
        The handlers defined by this builder are used for any state. This variant is particular useful for models that have a single type (ie: no class hierarchy).

        Note: event handlers are selected in the order they are added. Once a matching is found, it's selected for handling the event and no further lookup is done. Therefore you must make sure that their matching conditions don't overlap, otherwise you risk to 'shadow' part of your event handlers. Extra care should be taken when using forAnyState() as it will match any state. Any event handler define after it will never be reached.

        Returns:
        A new, mutable, EventHandlerBuilderByState