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 Details

    • _listeners

      protected final Collection _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

      public void addListener(Object listener)
      Register an event listener.
      Specified by:
      addListener in interface EventManager
    • removeListener

      public boolean removeListener(Object listener)
      Remove an event listener.
      Specified by:
      removeListener in interface EventManager
    • hasListener

      public boolean hasListener(Object listener)
      Return whether the given instance is in the list of listeners.
      Specified by:
      hasListener in interface EventManager
    • hasListeners

      public boolean hasListeners()
      Return true if there are any registered listeners.
      Specified by:
      hasListeners in interface EventManager
    • getListeners

      public Collection getListeners()
      Return a read-only list of listeners.
      Specified by:
      getListeners in interface EventManager
    • fireEvent

      public Exception[] fireEvent(Object event)
      Fire the given event to all listeners.
      Specified by:
      fireEvent in interface EventManager
    • fireEvent

      protected abstract void fireEvent(Object event, Object listener) throws Exception
      Implement this method to fire the given event to the given listener.
      Throws:
      Exception
    • newListenerCollection

      protected Collection newListenerCollection()
      Return a new concurrent container for listeners. Uses a CopyOnWriteArrayList by default.