Class AbstractConcurrentEventManager
java.lang.Object
org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager
- All Implemented Interfaces:
Serializable
,EventManager
- Direct Known Subclasses:
AbstractDataCache
,AbstractQueryCache
,BrokerFactoryEventManager
,JDBCEventConnectionDecorator
,RemoteCommitEventManager
,TransactionEventManager
public abstract class AbstractConcurrentEventManager
extends Object
implements EventManager, Serializable
Base event manager that handles adding/removing listeners
and firing events. Meant for high concurrency. This class is
reentrant-safe; listeners can be added and removed by other listeners when
they receive events. The changes will not be visible until the event fire
that initiated the recursive sequence of calls completes, however.
- Author:
- Abe White
- See Also:
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addListener
(Object listener) Register an event listener.Fire the given event to all listeners.protected abstract void
Implement this method to fire the given event to the given listener.Return a read-only list of listeners.boolean
hasListener
(Object listener) Return whether the given instance is in the list of listeners.boolean
Return true if there are any registered listeners.boolean
Whether to fail after the first exception thrown by any listener.protected Collection
Return a new concurrent container for listeners.boolean
removeListener
(Object listener) Remove an event listener.void
setFailFast
(boolean failFast) Whether to fail after the first exception thrown by any listener.
-
Field Details
-
_listeners
-
-
Constructor Details
-
AbstractConcurrentEventManager
public AbstractConcurrentEventManager()Default constructor.
-
-
Method Details
-
isFailFast
public boolean isFailFast()Whether to fail after the first exception thrown by any listener. -
setFailFast
public void setFailFast(boolean failFast) Whether to fail after the first exception thrown by any listener. -
addListener
Register an event listener.- Specified by:
addListener
in interfaceEventManager
-
removeListener
Remove an event listener.- Specified by:
removeListener
in interfaceEventManager
-
hasListener
Return whether the given instance is in the list of listeners.- Specified by:
hasListener
in interfaceEventManager
-
hasListeners
public boolean hasListeners()Return true if there are any registered listeners.- Specified by:
hasListeners
in interfaceEventManager
-
getListeners
Return a read-only list of listeners.- Specified by:
getListeners
in interfaceEventManager
-
fireEvent
Fire the given event to all listeners.- Specified by:
fireEvent
in interfaceEventManager
-
fireEvent
Implement this method to fire the given event to the given listener.- Throws:
Exception
-
newListenerCollection
Return a new concurrent container for listeners. Uses aCopyOnWriteArrayList
by default.
-