Author: jcarman
Date: Thu Jul 22 19:31:48 2010
New Revision: 966818
URL: http://svn.apache.org/viewvc?rev=966818&view=rev
Log:
Using CopyOnWriteArrayList for thread safety.
Modified:
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/event/EventListenerSupport.java
Modified:
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/event/EventListenerSupport.java
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/event/EventListenerSupport.java?rev=966818&r1=966817&r2=966818&view=diff
==============================================================================
---
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/event/EventListenerSupport.java
(original)
+++
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/event/EventListenerSupport.java
Thu Jul 22 19:31:48 2010
@@ -24,6 +24,7 @@ import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.LinkedList;
import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
/**
* An EventListenerSupport object can be used to manage a list of event
listeners of a particular type.
@@ -48,7 +49,7 @@ import java.util.List;
*/
public class EventListenerSupport<L>
{
- private final List<L> listeners = new LinkedList<L>();
+ private final List<L> listeners = new CopyOnWriteArrayList<L>();
private final L proxy;
/**
@@ -110,7 +111,7 @@ public class EventListenerSupport<L>
public void addListener(L listener)
{
Validate.notNull(listener, "Listener object cannot be null.");
- listeners.add(0, listener);
+ listeners.add(listener);
}
/**
@@ -141,9 +142,9 @@ public class EventListenerSupport<L>
{
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
- for (int i = listeners.size() - 1; i >= 0; --i)
+ for (L listener : listeners)
{
- method.invoke(listeners.get(i), args);
+ method.invoke(listener, args);
}
return null;
}