Module org.refcodes.eventbus
Package org.refcodes.eventbus
Class AbstractEventBus<E extends org.refcodes.observer.GenericEvent<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.mixin.EventMetaData,H>
- java.lang.Object
-
- org.refcodes.eventbus.AbstractEventBus<E,O,MATCH,META,H>
-
- Type Parameters:
E
- the element typeO
- the generic typeMATCH
- the generic typeMETA
- the generic typeH
- the generic type
- All Implemented Interfaces:
org.refcodes.component.Destroyable
,org.refcodes.component.HandleLookup<H,O>
,DispatchStrategyAccessor
,EventBusObservable<E,O,MATCH,H>
,EventBusPublisher<E>
,GenericEventBus<E,O,MATCH,META,H>
,org.refcodes.matcher.Matcher<E>
,org.refcodes.observer.EventMatcher<E>
,org.refcodes.observer.Publisher<E>
- Direct Known Subclasses:
EventBusImpl
public abstract class AbstractEventBus<E extends org.refcodes.observer.GenericEvent<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.mixin.EventMetaData,H> extends Object implements GenericEventBus<E,O,MATCH,META,H>
The Class AbstractEventBus.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.refcodes.component.Destroyable
org.refcodes.component.Destroyable.DestroyAutomaton
-
Nested classes/interfaces inherited from interface org.refcodes.eventbus.DispatchStrategyAccessor
DispatchStrategyAccessor.DispatchStrategyMutator, DispatchStrategyAccessor.DispatchStrategyProperty
-
-
Constructor Summary
Constructors Constructor Description AbstractEventBus(boolean isDaemon, org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.AbstractEventBus(org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.AbstractEventBus(org.refcodes.component.HandleGenerator<H> aHandleGenerator, ExecutorService aExecutorService)
Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.AbstractEventBus(DispatchStrategy aDispatchStrategy, boolean isDaemon, org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.AbstractEventBus(DispatchStrategy aDispatchStrategy, org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.AbstractEventBus(DispatchStrategy aDispatchStrategy, org.refcodes.component.HandleGenerator<H> aHandleGenerator, ExecutorService aExecutorService)
Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
cascadeDispatch(E aEvent, Object aMonitor)
Hook implementing the cascaded dispatch method as ofDispatchStrategy.CASCADE
void
destroy()
Shuts down anyExecutorService
by callingExecutorService.shutdown()
causing theGenericEventBus
to be disposed.DispatchStrategy
getDispatchStrategy()
Retrieves theDispatchStrategy
property from the property.boolean
hasHandle(H aHandle)
boolean
isMatching(E aEvent)
O
lookupHandle(H aHandle)
protected void
parallelDispatch(E aEvent)
Hook implementing the parallel dispatch method as ofDispatchStrategy.PARALLEL
void
publishEvent(E aEvent, DispatchStrategy aDispatchStrategy)
Publishes an event using the givenDispatchStrategy
.O
removeHandle(H aHandle)
protected void
sequentialDispatch(E aEvent)
Hook implementing the sequential dispatch method as ofDispatchStrategy.SEQUENTIAL
H
subscribe(MATCH aEventMatcher, O aObserver)
Subscribes a listener to the event bus.void
unsubscribeAll(O aObserver)
Unsubscribes all registrations to a specific listener, even if that listener is involved in several subscriptions.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.refcodes.eventbus.EventBusObservable
subscribe, subscribe
-
Methods inherited from interface org.refcodes.eventbus.GenericEventBus
onAction, onAction, onActions, onActions, onAlias, onAlias, onCatchAll, onChannel, onChannel, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onEvent, onGroup, onGroup, onType, onUniversalId, onUniversalId, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent, publishEvent
-
-
-
-
Constructor Detail
-
AbstractEventBus
public AbstractEventBus(boolean isDaemon, org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.
-
AbstractEventBus
public AbstractEventBus(org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.- Parameters:
aHandleGenerator
- The handle generator to be used.
-
AbstractEventBus
public AbstractEventBus(org.refcodes.component.HandleGenerator<H> aHandleGenerator, ExecutorService aExecutorService)
Constructs theAbstractEventBus
with theDispatchStrategy
beingDispatchStrategy.CASCADE
when publishing events and the given handle generator.- Parameters:
aHandleGenerator
- The handle generator to be used.aExecutorService
- TheExecutorService
to be used when creating threads.
-
AbstractEventBus
public AbstractEventBus(DispatchStrategy aDispatchStrategy, org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.- Parameters:
aDispatchStrategy
- TheDispatchStrategy
to be used when publishing events.aHandleGenerator
- The handle generator to be used.
-
AbstractEventBus
public AbstractEventBus(DispatchStrategy aDispatchStrategy, boolean isDaemon, org.refcodes.component.HandleGenerator<H> aHandleGenerator)
Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.- Parameters:
aDispatchStrategy
- TheDispatchStrategy
to be used when publishing events.isDaemon
- True when to create daemon dispatchThread
instances (shutdown upon last applicationThread
shutdown), else applicationThread
instances are created for dispatch.aHandleGenerator
- The handle generator to be used.
-
AbstractEventBus
public AbstractEventBus(DispatchStrategy aDispatchStrategy, org.refcodes.component.HandleGenerator<H> aHandleGenerator, ExecutorService aExecutorService)
Constructs theAbstractEventBus
with the givenDispatchStrategy
when publishing events and the given handle generator.- Parameters:
aDispatchStrategy
- TheDispatchStrategy
to be used when publishing events.aHandleGenerator
- The handle generator to be used.aExecutorService
- TheExecutorService
to be used when creating threads.
-
-
Method Detail
-
isMatching
public boolean isMatching(E aEvent)
-
subscribe
public H subscribe(MATCH aEventMatcher, O aObserver)
Subscribes a listener to the event bus. In case the handle is being ignored, use the "unsubscribeAll" method where all subscriptions for a listener are removed.- Specified by:
subscribe
in interfaceEventBusObservable<E extends org.refcodes.observer.GenericEvent<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.mixin.EventMetaData>
- Parameters:
aEventMatcher
- TheEventMatcher
to guard theObserver
.aObserver
- TheObserver
to subscribe.- Returns:
- A handle to unsubscribe this combination.
-
unsubscribeAll
public void unsubscribeAll(O aObserver)
Unsubscribes all registrations to a specific listener, even if that listener is involved in several subscriptions.- Specified by:
unsubscribeAll
in interfaceEventBusObservable<E extends org.refcodes.observer.GenericEvent<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.mixin.EventMetaData>
- Parameters:
aObserver
- the observer
-
hasHandle
public boolean hasHandle(H aHandle)
-
lookupHandle
public O lookupHandle(H aHandle) throws org.refcodes.component.UnknownHandleRuntimeException
-
removeHandle
public O removeHandle(H aHandle) throws org.refcodes.component.UnknownHandleRuntimeException
-
getDispatchStrategy
public DispatchStrategy getDispatchStrategy()
Retrieves theDispatchStrategy
property from the property. Determines in whichDispatchStrategy
status a component is in.- Specified by:
getDispatchStrategy
in interfaceDispatchStrategyAccessor
- Returns:
- Returns the
DispatchStrategy
property stored by the property.
-
publishEvent
public void publishEvent(E aEvent, DispatchStrategy aDispatchStrategy)
Publishes an event using the givenDispatchStrategy
.- Specified by:
publishEvent
in interfaceGenericEventBus<E extends org.refcodes.observer.GenericEvent<?>,O extends org.refcodes.observer.Observer<E>,MATCH extends org.refcodes.observer.EventMatcher<E>,META extends org.refcodes.mixin.EventMetaData,H>
- Parameters:
aEvent
- aEvent The event to be published.aDispatchStrategy
- TheDispatchStrategy
to be used when publishing the event.
-
destroy
public void destroy()
Shuts down anyExecutorService
by callingExecutorService.shutdown()
causing theGenericEventBus
to be disposed.- Specified by:
destroy
in interfaceorg.refcodes.component.Destroyable
-
sequentialDispatch
protected void sequentialDispatch(E aEvent)
Hook implementing the sequential dispatch method as ofDispatchStrategy.SEQUENTIAL
- Parameters:
aEvent
- The event to be dispatched sequentially.
-
parallelDispatch
protected void parallelDispatch(E aEvent)
Hook implementing the parallel dispatch method as ofDispatchStrategy.PARALLEL
- Parameters:
aEvent
- The event to be dispatched sequentially.
-
cascadeDispatch
protected void cascadeDispatch(E aEvent, Object aMonitor)
Hook implementing the cascaded dispatch method as ofDispatchStrategy.CASCADE
- Parameters:
aEvent
- The event to be dispatched cascading.aMonitor
- The monitor used for synchronizing this cascade.
-
-