Class EventsManager<T>

java.lang.Object
dev.comfast.experimental.events.EventsManager<T>
Type Parameters:
T - Class which will be passed in every event.

@Experimental public class EventsManager<T> extends Object
Manager for events. Please use EventsApi.get(String, Class) to create/get instances of this class.
  • Method Details

    • addListener

      public void addListener(String listenerKey, EventListener<T> listener)
      Add listener to this manager.
      Parameters:
      listenerKey - Unique key to access / remove listener
      listener - Listener instance
    • removeListener

      public void removeListener(String name)
      Remove listener by its key
    • notifyBefore

      public void notifyBefore(BeforeEvent<T> e)
      Notify all event listeners about failed event.
      
       var beforeEvent = new BeforeEvent<>(null, "someAction");
       manager.notifyBefore(beforeEvent);
       // do someAction()
       
    • notifyAfter

      public void notifyAfter(AfterEvent<T> e)
      Notify all event listeners about failed event.
      
       var beforeEvent = new BeforeEvent<>(null, "someAction");
       manager.notifyBefore(beforeEvent);
       var someResult = someAction();
       manager.notifyAfter(beforeEvent.passed(someResult));
       
    • notifyFailed

      public void notifyFailed(FailedEvent<T> e)
      Notify all event listeners about failed event.
      
       var beforeEvent = new BeforeEvent<>(null, "someAction");
       manager.notifyBefore(beforeEvent);
       try { something failed }
       catch(Exception e) {
          manager.notifyFailed(beforeEvent.failed(e));
          throw e;
       }
       
    • action

      public void action(BeforeEvent<T> event, Runnable actionFunc)
      Embed action between events: "before", "after" and "failed".
      See Also:
    • action

      public <R> R action(BeforeEvent<T> event, Supplier<R> actionFunc)
      Embed action between events: "before", "after" and "failed".

      Capture action result to be available in AfterEvent

      Type Parameters:
      R - type of action result
      Parameters:
      event - new instance of BeforeEvent. Created it just before action call.
      actionFunc - action to call
      Returns:
      action result