|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectfulmine.AbstractLifeCycle
fulmine.event.subscription.SubscriptionManager
public abstract class SubscriptionManager
Base implementation of a subscription manager.
This is thread safe. Access on the internal collection of
ISubscription instances is synchronized just enough to get the
subscription. The subscription implementations are assumed to be thread safe.
| Constructor Summary | |
|---|---|
SubscriptionManager(IFrameworkContext context,
ISubscriptionFactory factory)
Standard constructor |
|
| Method Summary | |
|---|---|
boolean |
addListener(ISubscriptionParameters parameters,
IEventListener listener)
Add the listener to the IEventListener instances associated with
the ISubscription represented by the parameters. |
protected abstract void |
doAddListener(ISubscriptionParameters parameters,
IEventListener listener)
Called as the final step in addListener(ISubscriptionParameters, IEventListener). |
protected void |
doDestroy()
Overridden in subclasses to perform custom logic on destruction. |
protected abstract void |
doEventSourceCreated(IAddressable id)
Called as the final step in the eventSourceCreated(IAddressable)
method. |
protected abstract boolean |
doEventSourceExists(IAddressable id)
Template method to identify if the IEventSource identified by the
IAddressable argument exists. |
protected abstract IEventSource |
doGetEventSource(IAddressable id)
Template method to get the IEventSource identified by the
IAddressable argument. |
protected abstract Collection<? extends IEventSource> |
doGetEventSources()
Template method to get the collection of IEventSource instances
the manager will operate over. |
protected void |
doRaiseSubscribeEvent(ISubscriptionParameters parameters)
|
protected void |
doRaiseUnsubscribeEvent(ISubscriptionParameters parameters)
|
void |
eventSourceCreated(IAddressable identity)
Method to invoke when a new IEventSource is created. |
void |
eventSourceDestroyed(IAddressable identity)
Method to invoke when an IEventSource is destroyed. |
protected IFrameworkContext |
getContext()
|
List<IEventListener> |
getListeners(ISubscriptionParameters parameters)
Get a copy of the IEventListener instances that have been
added to the subscription identified by the parameters. |
protected AsyncLog |
getLog()
Get the log to use for the object hierarchy |
Collection<IEventSource> |
getSubscribedSources()
Get a copy of the Collection of all the event sources that
are currently subscribed for. |
Collection<IEventSource> |
getSubscribedSources(ISubscriptionParameters parameters)
Get a copy of the Collection of the currently subscribed
event sources that are matched by the subscription parameters. |
protected ISubscription |
getSubscription(ISubscriptionParameters parameters)
|
protected Map<ISubscriptionParameters,ISubscription> |
getSubscriptions()
Get the current subscriptions parameters to subscription. |
boolean |
includes(IAddressable parameters)
Determine if there is at least one ISubscription instance whose
subscription parameters include the parameters passed in. |
boolean |
isSubscribed(IEventSource source)
Determine if there is at least one ISubscription that has a match
reference for the event source. |
boolean |
removeListener(ISubscriptionParameters parameters,
IEventListener listener)
Remove the listener from the IEventListener instances associated
with the ISubscription represented by the parameters. |
boolean |
subscribe(ISubscriptionParameters parameters)
Create an ISubscription for the event source(s) represented in
the subscription parameters. |
String |
toString()
|
boolean |
unsubscribe(ISubscriptionParameters parameters)
Remove the subscription represented by the parameters. |
| Methods inherited from class fulmine.AbstractLifeCycle |
|---|
checkActive, destroy, doStart, finalize, isActive, start |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface fulmine.ILifeCycle |
|---|
isActive, start |
| Methods inherited from interface fulmine.IDestroyable |
|---|
destroy |
| Constructor Detail |
|---|
public SubscriptionManager(IFrameworkContext context,
ISubscriptionFactory factory)
context - the context to usefactory - the container subscription factory to use| Method Detail |
|---|
public final boolean subscribe(ISubscriptionParameters parameters)
ISubscriptionManagerISubscription for the event source(s) represented in
the subscription parameters. The created subscription is keyed against
the parameters argument.
This is an idempotent operation.
subscribe in interface ISubscriptionManagerparameters - the subscription parameters identifying the subscription
true if the subscription was created,
false if it already existedISubscriptionManager.getSubscribedSources(ISubscriptionParameters),
ISubscriptionManager.unsubscribe(ISubscriptionParameters)protected final ISubscription getSubscription(ISubscriptionParameters parameters)
public final boolean addListener(ISubscriptionParameters parameters,
IEventListener listener)
ISubscriptionManagerIEventListener instances associated with
the ISubscription represented by the parameters. The subscription
is found using the same lookup semantics as
#getSubscription(ISubscriptionParameters).
On adding, the subscription will register the listener with any currently
matched IEventSource instances.
This is an idempotent operation.
addListener in interface ISubscriptionManagerparameters - the subscription parameters identifying the subscriptionlistener - the listener to add to the subscription's list of listeners
true if the listener was added, false
if it already existed
public final boolean removeListener(ISubscriptionParameters parameters,
IEventListener listener)
ISubscriptionManagerIEventListener instances associated
with the ISubscription represented by the parameters. The
subscription is found using the same lookup semantics as
#getSubscription(ISubscriptionParameters).
On removal, the subscription will unregister the listener from any
currently matched IEventSource instances.
This is an idempotent operation.
removeListener in interface ISubscriptionManagerparameters - the subscription parameters identifying the subscriptionlistener - the listener to remove from the subscription's list of
listeners
true if the listener was removed, false
if it was not foundpublic final List<IEventListener> getListeners(ISubscriptionParameters parameters)
ISubscriptionManagerIEventListener instances that have been
added to the subscription identified by the parameters. The subscription
is found using a key lookup operation; the subscription is found by
association with the parameters.
This operation performs no semantic matching with wildcards, it is a key lookup operation.
getListeners in interface ISubscriptionManagerparameters - the subscription parameters identifying the subscription
IEventListener instances for the identified
subscription or Collections.emptyList()public final boolean unsubscribe(ISubscriptionParameters parameters)
ISubscriptionManager
This unregisters the listener(s) associated with the subscription from
the event source(s) that the subscription matched and destroys the
associated ISubscription instance.
This is an idempotent operation.
unsubscribe in interface ISubscriptionManagerparameters - the subscription parameters identifying the subscription
true if a subscription was found, false
otherwiseISubscriptionManager.getSubscribedSources(ISubscriptionParameters),
ISubscriptionManager.subscribe(ISubscriptionParameters)public final boolean isSubscribed(IEventSource source)
ISubscriptionManagerISubscription that has a match
reference for the event source.
This checks if the event source is already subscribed. To find out if
this source would be subscribed, use
#includes(ISubscriptionParameters).
isSubscribed in interface ISubscriptionManagersource - the event source to check for at least one subscription within
this manager
true if the source is found in at least one
subscription within this managerpublic final Collection<IEventSource> getSubscribedSources(ISubscriptionParameters parameters)
ISubscriptionManagerCollection of the currently subscribed
event sources that are matched by the subscription parameters.
This does a matching operation to find any other ISubscriptions
that would include
these parameters and then adds the IEventSources to the
collection to return.
This is not a key lookup operation.
getSubscribedSources in interface ISubscriptionManagerparameters - the subscription parameters to match against event sources
currently subscribed for
Collection of the event sources currently
subscribed for and that are matched by the subscription
parameters argumentpublic final Collection<IEventSource> getSubscribedSources()
ISubscriptionManagerCollection of all the event sources that
are currently subscribed for.
getSubscribedSources in interface ISubscriptionManagerCollection of all the event source
instances that are currently subscribed forpublic final boolean includes(IAddressable parameters)
ISubscriptionManagerISubscription instance whose
subscription parameters include the parameters passed in.
This operation is not a key lookup and will search through all subscriptions until one is found that would include the parameters.
includes in interface ISubscriptionManagerparameters - the parameters to check
true if there is at least one subscription instance
that includes the parametersISubscriptionParameters.includes(IAddressable)public final void eventSourceCreated(IAddressable identity)
ISubscriptionManagerIEventSource is created. This
provides the manager with the mechanism to be notified when event sources
are created and go through existing subscriptions to identify if the new
event source should be subscribed for.
eventSourceCreated in interface ISubscriptionManageridentity - identifies the attributes of the created event sourcepublic void eventSourceDestroyed(IAddressable identity)
ISubscriptionManagerIEventSource is destroyed. Complimentary
to ISubscriptionManager.eventSourceCreated(IAddressable).
eventSourceDestroyed in interface ISubscriptionManageridentity - identifies the attributes of the destroyed event sourceprotected void doRaiseSubscribeEvent(ISubscriptionParameters parameters)
protected void doRaiseUnsubscribeEvent(ISubscriptionParameters parameters)
protected final Map<ISubscriptionParameters,ISubscription> getSubscriptions()
protected abstract Collection<? extends IEventSource> doGetEventSources()
IEventSource instances
the manager will operate over.
IEventSource instancesprotected abstract IEventSource doGetEventSource(IAddressable id)
IEventSource identified by the
IAddressable argument.
id - identifies the event source
IEventSource implementation to useprotected abstract boolean doEventSourceExists(IAddressable id)
IEventSource identified by the
IAddressable argument exists.
id - identifies the event source
true if the container exists in the current context
scopeprotected abstract void doEventSourceCreated(IAddressable id)
eventSourceCreated(IAddressable)
method. This provides sub-classes with an opportunity to perform any post
creation work.
identity - identifies the event source
protected abstract void doAddListener(ISubscriptionParameters parameters,
IEventListener listener)
addListener(ISubscriptionParameters, IEventListener).
Sub-classes can perform necessary closure work when the listener is
added.
parameters - the subscription parameters identifying the subscripion(s)listener - the listener addedprotected void doDestroy()
AbstractLifeCycleRuntimeException or subclass
thereof.
doDestroy in class AbstractLifeCycleprotected AsyncLog getLog()
AbstractLifeCycle
getLog in class AbstractLifeCycleprotected IFrameworkContext getContext()
public final String toString()
toString in class AbstractLifeCycle
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||