Package org.apache.commons.lang3.event
Class EventListenerSupport<L>
- java.lang.Object
-
- org.apache.commons.lang3.event.EventListenerSupport<L>
-
- Type Parameters:
L
- the type of event listener that is supported by this proxy.
- All Implemented Interfaces:
java.io.Serializable
public class EventListenerSupport<L> extends java.lang.Object implements java.io.Serializable
Manages a list of event listeners of a given generic type. This class providesaddListener(Object)
andremoveListener(Object)
methods for managing listeners, as well as afire()
method for firing events to the listeners.For example, to support ActionEvents:
public class MyActionEventSource { private EventListenerSupport<ActionListener> actionListeners = EventListenerSupport.create(ActionListener.class); public void someMethodThatFiresAction() { ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "something"); actionListeners.fire().actionPerformed(e); } }
Events are fired
Serializing an
EventListenerSupport
instance will result in any non-Serializable
listeners being silently dropped.- Since:
- 3.0
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
EventListenerSupport.ProxyInvocationHandler
Invokes listeners throughEventListenerSupport.ProxyInvocationHandler.invoke(Object, Method, Object[])
in the order added to the underlyingList
.
-
Constructor Summary
Constructors Constructor Description EventListenerSupport(java.lang.Class<L> listenerInterface)
Constructs an EventListenerSupport object which supports the provided listener interface.EventListenerSupport(java.lang.Class<L> listenerInterface, java.lang.ClassLoader classLoader)
Constructs an EventListenerSupport object which supports the provided listener interface using the specified class loader to create the JDK dynamic proxy.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addListener(L listener)
Adds an event listener.void
addListener(L listener, boolean allowDuplicate)
Adds an event listener.static <T> EventListenerSupport<T>
create(java.lang.Class<T> listenerInterface)
Creates an EventListenerSupport object which supports the specified listener type.protected java.lang.reflect.InvocationHandler
createInvocationHandler()
Creates theInvocationHandler
responsible for calling to the managed listeners.L
fire()
Returns a proxy object which can be used to call listener methods on all of the registered event listeners.L[]
getListeners()
Gets an array containing the currently registered listeners.void
removeListener(L listener)
Removes an event listener.
-
-
-
Constructor Detail
-
EventListenerSupport
public EventListenerSupport(java.lang.Class<L> listenerInterface)
Constructs an EventListenerSupport object which supports the provided listener interface.- Parameters:
listenerInterface
- the type of listener interface that will receive events posted using this class.- Throws:
java.lang.NullPointerException
- iflistenerInterface
isnull
.java.lang.IllegalArgumentException
- iflistenerInterface
is not an interface.
-
EventListenerSupport
public EventListenerSupport(java.lang.Class<L> listenerInterface, java.lang.ClassLoader classLoader)
Constructs an EventListenerSupport object which supports the provided listener interface using the specified class loader to create the JDK dynamic proxy.- Parameters:
listenerInterface
- the listener interface.classLoader
- the class loader.- Throws:
java.lang.NullPointerException
- iflistenerInterface
orclassLoader
isnull
.java.lang.IllegalArgumentException
- iflistenerInterface
is not an interface.
-
-
Method Detail
-
create
public static <T> EventListenerSupport<T> create(java.lang.Class<T> listenerInterface)
Creates an EventListenerSupport object which supports the specified listener type.- Type Parameters:
T
- the type of the listener interface- Parameters:
listenerInterface
- the type of listener interface that will receive events posted using this class.- Returns:
- an EventListenerSupport object which supports the specified listener type.
- Throws:
java.lang.NullPointerException
- iflistenerInterface
isnull
.java.lang.IllegalArgumentException
- iflistenerInterface
is not an interface.
-
addListener
public void addListener(L listener)
Adds an event listener.Listeners are called in the order added.
- Parameters:
listener
- the event listener (may not benull
).- Throws:
java.lang.NullPointerException
- iflistener
isnull
.
-
addListener
public void addListener(L listener, boolean allowDuplicate)
Adds an event listener. Will not add a pre-existing listener object to the list ifallowDuplicate
is false.Listeners are called in the order added.
- Parameters:
listener
- the event listener (may not benull
).allowDuplicate
- the flag for determining if duplicate listener objects are allowed to be registered.- Throws:
java.lang.NullPointerException
- iflistener
isnull
.- Since:
- 3.5
-
createInvocationHandler
protected java.lang.reflect.InvocationHandler createInvocationHandler()
Creates theInvocationHandler
responsible for calling to the managed listeners. Subclasses can override to provide custom behavior.- Returns:
- ProxyInvocationHandler
-
fire
public L fire()
Returns a proxy object which can be used to call listener methods on all of the registered event listeners. All calls made to this proxy will be forwarded to all registered listeners.- Returns:
- a proxy object which can be used to call listener methods on all of the registered event listeners
-
getListeners
public L[] getListeners()
Gets an array containing the currently registered listeners. Modification to this array's elements will have no effect on theEventListenerSupport
instance.- Returns:
- L[]
-
removeListener
public void removeListener(L listener)
Removes an event listener.- Parameters:
listener
- the event listener (may not benull
).- Throws:
java.lang.NullPointerException
- iflistener
isnull
.
-
-