Interface EventDispatcher<E extends org.refcodes.observer.Event<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.observer.EventMetaData,H>

Type Parameters:
E - the Event type.
O - The event's source
MATCH - the EventMatcher type.
META - the EventMetaData type.
H - the HandleGenerator type.
All Superinterfaces:
DispatchStrategyAccessor, EventBusObservable<E,O,MATCH,H>, EventBusPublisher<E>, org.refcodes.component.HandleLookup<H,O>, org.refcodes.matcher.Matchable<E>, org.refcodes.observer.Publisher<E>
All Known Subinterfaces:
EventBroker<EVT,MATCH>
All Known Implementing Classes:
AbstractEventBus, EventBus

public interface EventDispatcher<E extends org.refcodes.observer.Event<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.observer.EventMetaData,H> extends EventBusPublisher<E>, EventBusObservable<E,O,MATCH,H>, DispatchStrategyAccessor
The EventDispatcher is the (virtual) machine wide manager for ActionEvent handling. TIPP: In order to distinguish MetaDataActionEvent instances from each other, create an actions enumeration, enumerating the various event actions you support. Pass the actual action you intend to notify upon to the according constructor, as an Observer you may use the declarative method EventMatcherSugar.actionEqualWith(Object) to test whether your action was notified (or a simple switch case statement).
  • Method Details

    • publishEvent

      default void publishEvent(E aEvent)
      Publishes an event using the DispatchStrategy as returned by DispatchStrategyAccessor.getDispatchStrategy().
      Specified by:
      publishEvent in interface org.refcodes.observer.Publisher<E extends org.refcodes.observer.Event<?>>
    • publishEvent

      void publishEvent(E aEvent, DispatchStrategy aDispatchStrategy)
      Publishes an event using the given DispatchStrategy.
      Parameters:
      aEvent - aEvent The event to be published.
      aDispatchStrategy - The DispatchStrategy to be used when publishing the event.
    • onEvent

      String onEvent(Class<?> aPublisherType, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes.
      Parameters:
      aPublisherType - The type of the event publisher.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(String aChannel, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes.
      Parameters:
      aChannel - The channel name on which the event is receivable.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(String aAlias, String aGroup, String aChannel, String aUid, Class<?> aPublisherType, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes.
      Parameters:
      aAlias - The alias property.
      aGroup - The group property.
      aChannel - The channel property.
      aUid - The UID (Universal-TID) property.
      aPublisherType - The type of the event publisher.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Enum<?> aAction, Class<?> aPublisherType, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes.
      Parameters:
      aAction - The action which this represents.
      aPublisherType - The type of the event publisher.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Enum<?> aAction, String aChannel, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes.
      Parameters:
      aAction - The action which this represents.
      aChannel - The channel name on which the event is receivable.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Enum<?> aAction, String aAlias, String aGroup, String aChannel, String aUid, Class<?> aPublisherType, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes.
      Parameters:
      aAction - The action which this represents.
      aAlias - The alias property.
      aGroup - The group property.
      aChannel - The channel property.
      aUid - The UID (Universal-TID) property.
      aPublisherType - The type of the event publisher.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Enum<?> aAction, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes. Your Observable may be of the required type!
      Parameters:
      aAction - The action which this represents.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onAlias

      String onAlias(String aAlias, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given name.
      Parameters:
      aAlias - The name for which to subscribe.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onChannel

      String onChannel(String aChannel, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events for the given channel.
      Parameters:
      aChannel - The channel to which to subscribe to.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onGroup

      String onGroup(String aGroup, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events for the given group.
      Parameters:
      aGroup - The group to which to subscribe to.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onUniversalId

      String onUniversalId(String aUid, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events for the given Universal-TID.
      Parameters:
      aUid - The Universal-TID to which to subscribe to.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onAction

      String onAction(Enum<?> aAction, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events for the given action.
      Parameters:
      aAction - The action to which to subscribe to.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onActions

      String onActions(O aObserver, Enum<?>... aActions)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events for the given action.
      Parameters:
      aObserver - The observer to be notified.
      aActions - The actions to which to subscribe to.
      Returns:
      A handle to unsubscribe this combination.
    • onCatchAll

      String onCatchAll(O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes all events passing the Event-Bus. Call it a "catch-all" hook.
      Parameters:
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Class<E> aEventType, Class<?> aPublisherType, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes. Your Observable may be of the required type!
      Parameters:
      aEventType - The event type to subscribe for.
      aPublisherType - The type of the event publisher.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Class<E> aEventType, String aChannel, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes. Your Observable may be of the required type!
      Parameters:
      aEventType - The event type to subscribe for.
      aChannel - The channel name on which the event is receivable.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Class<E> aEventType, String aAlias, String aGroup, String aChannel, String aUid, Class<?> aPublisherType, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes. Your Observable may be of the required type!
      Parameters:
      aEventType - The event type to subscribe for.
      aAlias - The alias property.
      aGroup - The group property.
      aChannel - The channel property.
      aUid - The UID (Universal-TID) property.
      aPublisherType - The type of the event publisher.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Class<E> aEventType, Enum<?> aAction, Class<?> aPublisherType, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes. Your Observable may be of the required type!
      Parameters:
      aEventType - The event type to subscribe for.
      aAction - The action which this represents.
      aPublisherType - The type of the event publisher.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Class<E> aEventType, Enum<?> aAction, String aChannel, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes. Your Observable may be of the required type!
      Parameters:
      aEventType - The event type to subscribe for.
      aAction - The action which this represents.
      aChannel - The channel name on which the event is receivable.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Class<E> aEventType, Enum<?> aAction, String aAlias, String aGroup, String aChannel, String aUid, Class<?> aPublisherType, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes. Your Observable may be of the required type!
      Parameters:
      aEventType - The event type to subscribe for.
      aAction - The action which this represents.
      aAlias - The alias property.
      aGroup - The group property.
      aChannel - The channel property.
      aUid - The UID (Universal-TID) property.
      aPublisherType - The type of the event publisher.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onEvent

      String onEvent(Class<E> aEventType, Enum<?> aAction, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given attributes. Your Observable may be of the required type!
      Parameters:
      aEventType - The event type to subscribe for.
      aAction - The action which this represents.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onType

      <EVT extends E> String onType(Class<EVT> aEventType, org.refcodes.observer.Observer<EVT> aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events of the given type. Your Observable may be of the required type!
      Type Parameters:
      EVT - The type of the event to subscribe for.
      Parameters:
      aEventType - The event type to subscribe for.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onAlias

      String onAlias(Class<E> aEventType, String aName, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events with the given name.
      Parameters:
      aEventType - The event type to subscribe for.
      aName - The name for which to subscribe.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onChannel

      String onChannel(Class<E> aEventType, String aChannel, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events for the given channel.
      Parameters:
      aEventType - The event type to subscribe for.
      aChannel - The channel to which to subscribe to.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onGroup

      String onGroup(Class<E> aEventType, String aGroup, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events for the given group.
      Parameters:
      aEventType - The event type to subscribe for.
      aGroup - The group to which to subscribe to.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onUniversalId

      String onUniversalId(Class<E> aEventType, String aUid, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events for the given Universal-TID.
      Parameters:
      aEventType - The event type to subscribe for.
      aUid - The Universal-TID to which to subscribe to.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onAction

      String onAction(Class<E> aEventType, Enum<?> aAction, O aObserver)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events for the given action.
      Parameters:
      aEventType - The event type to subscribe for.
      aAction - The action to which to subscribe to.
      aObserver - The observer to be notified.
      Returns:
      A handle to unsubscribe this combination.
    • onActions

      String onActions(Class<E> aEventType, O aObserver, Enum<?>... aActions)
      Similar to the more generic method EventBusObservable.subscribe(EventMatcher, Observer) THOUGH subscribes for events for the given action.
      Parameters:
      aEventType - The event type to subscribe for.
      aObserver - The observer to be notified.
      aActions - The actions to which to subscribe to.
      Returns:
      A handle to unsubscribe this combination.
    • publishEvent

      void publishEvent(Class<?> aPublisherType)
      Fires an event with the according properties.
      Parameters:
      aPublisherType - The type of the event publisher.
    • publishEvent

      void publishEvent(String aChannel)
      Fires an event with the according properties.
      Parameters:
      aChannel - The channel name on which the event is receivable.
    • publishEvent

      void publishEvent(String aAlias, String aGroup, String aChannel, String aUid, Class<?> aPublisherType)
      Fires an event with the according properties.
      Parameters:
      aAlias - The alias property.
      aGroup - The group property.
      aChannel - The channel property.
      aUid - The UID (Universal-TID) property.
      aPublisherType - The type of the event publisher.
    • publishEvent

      void publishEvent(Enum<?> aAction, Class<?> aPublisherType)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
      aPublisherType - The type of the event publisher.
    • publishEvent

      void publishEvent(Enum<?> aAction, String aChannel)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
      aChannel - The channel name on which the event is receivable.
    • publishEvent

      void publishEvent(Enum<?> aAction, String aChannel, Class<?> aPublisherType)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
      aChannel - The channel name on which the event is receivable.
      aPublisherType - The publisher type for the EventMetaData.
    • publishEvent

      void publishEvent(Enum<?> aAction, String aAlias, String aGroup, String aChannel, String aUid, Class<?> aPublisherType)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
      aAlias - The alias property.
      aGroup - The group property.
      aChannel - The channel property.
      aUid - The UID (Universal-TID) property.
      aPublisherType - The type of the event publisher.
    • publishEvent

      void publishEvent(META aEventMetaData)
      Fires an event with the according properties.
      Parameters:
      aEventMetaData - The Meta-Data to be supplied by the event.
    • publishEvent

      void publishEvent(Enum<?> aAction, META aEventMetaData)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
      aEventMetaData - The Meta-Data to be supplied by the event.
    • publishEvent

      void publishEvent(Enum<?> aAction)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
    • publishEvent

      void publishEvent(Class<?> aPublisherType, DispatchStrategy aStrategy)
      Fires an event with the according properties.
      Parameters:
      aPublisherType - The type of the event publisher.
      aStrategy - The DispatchStrategy to use when dispatching the event.
    • publishEvent

      void publishEvent(String aChannel, DispatchStrategy aStrategy)
      Fires an event with the according properties.
      Parameters:
      aChannel - The channel name on which the event is receivable.
      aStrategy - The DispatchStrategy to use when dispatching the event.
    • publishEvent

      void publishEvent(String aAlias, String aGroup, String aChannel, String aUid, Class<?> aPublisherType, DispatchStrategy aStrategy)
      Fires an event with the according properties.
      Parameters:
      aAlias - The alias property.
      aGroup - The group property.
      aChannel - The channel property.
      aUid - The UID (Universal-TID) property.
      aPublisherType - The type of the event publisher.
      aStrategy - The DispatchStrategy to use when dispatching the event.
    • publishEvent

      void publishEvent(Enum<?> aAction, Class<?> aPublisherType, DispatchStrategy aStrategy)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
      aPublisherType - The type of the event publisher.
      aStrategy - The DispatchStrategy to use when dispatching the event.
    • publishEvent

      void publishEvent(Enum<?> aAction, String aChannel, DispatchStrategy aStrategy)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
      aChannel - The channel name on which the event is receivable.
      aStrategy - The DispatchStrategy to use when dispatching the event.
    • publishEvent

      void publishEvent(Enum<?> aAction, String aAlias, String aGroup, String aChannel, String aUid, Class<?> aPublisherType, DispatchStrategy aStrategy)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
      aAlias - The alias property.
      aGroup - The group property.
      aChannel - The channel property.
      aUid - The UID (Universal-TID) property.
      aPublisherType - The type of the event publisher.
      aStrategy - The DispatchStrategy to use when dispatching the event.
    • publishEvent

      void publishEvent(META aEventMetaData, DispatchStrategy aStrategy)
      Fires an event with the according properties.
      Parameters:
      aEventMetaData - The Meta-Data to be supplied by the event.
      aStrategy - The DispatchStrategy to use when dispatching the event.
    • publishEvent

      void publishEvent(Enum<?> aAction, META aEventMetaData, DispatchStrategy aStrategy)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
      aEventMetaData - The Meta-Data to be supplied by the event.
      aStrategy - The DispatchStrategy to use when dispatching the event.
    • publishEvent

      void publishEvent(Enum<?> aAction, DispatchStrategy aStrategy)
      Fires an event with the according properties.
      Parameters:
      aAction - The action which this represents.
      aStrategy - The DispatchStrategy to use when dispatching the event.