org.apache.openjpa.lib.util.concurrent
Class AbstractConcurrentEventManager

java.lang.Object
  extended by org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager
All Implemented Interfaces:
EventManager
Direct Known Subclasses:
JDBCEventConnectionDecorator

public abstract class AbstractConcurrentEventManager
extends java.lang.Object
implements EventManager

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

Constructor Summary
AbstractConcurrentEventManager()
          Default constructor.
 
Method Summary
 void addListener(java.lang.Object listener)
          Register an event listener.
 java.lang.Exception[] fireEvent(java.lang.Object event)
          Fire the given event to all listeners.
protected abstract  void fireEvent(java.lang.Object event, java.lang.Object listener)
          Implement this method to fire the given event to the given listener.
 java.util.Collection getListeners()
          Return a read-only list of listeners.
 boolean hasListener(java.lang.Object listener)
          Return whether the given instance is in the list of listeners.
 boolean hasListeners()
          Return true if there are any registered listeners.
protected  java.util.Collection newListenerCollection()
          Return a new concurrent container for listeners.
 boolean removeListener(java.lang.Object listener)
          Remove an event listener.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractConcurrentEventManager

public AbstractConcurrentEventManager()
Default constructor.

Method Detail

addListener

public void addListener(java.lang.Object listener)
Register an event listener.

Specified by:
addListener in interface EventManager

removeListener

public boolean removeListener(java.lang.Object listener)
Remove an event listener.

Specified by:
removeListener in interface EventManager

hasListener

public boolean hasListener(java.lang.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 java.util.Collection getListeners()
Return a read-only list of listeners.

Specified by:
getListeners in interface EventManager

fireEvent

public java.lang.Exception[] fireEvent(java.lang.Object event)
Fire the given event to all listeners.

Specified by:
fireEvent in interface EventManager

fireEvent

protected abstract void fireEvent(java.lang.Object event,
                                  java.lang.Object listener)
                           throws java.lang.Exception
Implement this method to fire the given event to the given listener.

Throws:
java.lang.Exception

newListenerCollection

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



Copyright © 2006 Apache Software Foundation. All Rights Reserved.