|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object fulmine.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 useMethod Detail |
---|
public final boolean subscribe(ISubscriptionParameters parameters)
ISubscriptionManager
ISubscription
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 ISubscriptionManager
parameters
- 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)
ISubscriptionManager
IEventListener
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 ISubscriptionManager
parameters
- 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 existedpublic final boolean removeListener(ISubscriptionParameters parameters, IEventListener listener)
ISubscriptionManager
IEventListener
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 ISubscriptionManager
parameters
- 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)
ISubscriptionManager
IEventListener
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 ISubscriptionManager
parameters
- 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 ISubscriptionManager
parameters
- 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)
ISubscriptionManager
ISubscription
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 ISubscriptionManager
source
- 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)
ISubscriptionManager
Collection
of the currently subscribed
event sources that are matched by the subscription parameters.
This does a matching operation to find any other ISubscription
s
that would include
these parameters and then adds the IEventSource
s to the
collection to return.
This is not a key lookup operation.
getSubscribedSources
in interface ISubscriptionManager
parameters
- 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()
ISubscriptionManager
Collection
of all the event sources that
are currently subscribed for.
getSubscribedSources
in interface ISubscriptionManager
Collection
of all the event source
instances that are currently subscribed forpublic final boolean includes(IAddressable parameters)
ISubscriptionManager
ISubscription
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 ISubscriptionManager
parameters
- 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)
ISubscriptionManager
IEventSource
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 ISubscriptionManager
identity
- identifies the attributes of the created event sourcepublic void eventSourceDestroyed(IAddressable identity)
ISubscriptionManager
IEventSource
is destroyed. Complimentary
to ISubscriptionManager.eventSourceCreated(IAddressable)
.
eventSourceDestroyed
in interface ISubscriptionManager
identity
- 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 sourceprotected 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()
AbstractLifeCycle
RuntimeException
or subclass
thereof.
doDestroy
in class AbstractLifeCycle
protected AsyncLog getLog()
AbstractLifeCycle
getLog
in class AbstractLifeCycle
protected 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 |