Author: wesw
Date: Mon Dec 1 22:41:52 2008
New Revision: 722386
URL: http://svn.apache.org/viewvc?rev=722386&view=rev
Log:
incorporating Concurrency API. Per WW-2880, thanks for the patch Mathias Bogaert
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java?rev=722386&r1=722385&r2=722386&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
Mon Dec 1 22:41:52 2008
@@ -31,6 +31,7 @@
import java.util.Locale;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
@@ -105,7 +106,7 @@
* Store list of DispatcherListeners.
*/
private static List<DispatcherListener> dispatcherListeners =
- new ArrayList<DispatcherListener>();
+ new CopyOnWriteArrayList<DispatcherListener>();
/**
* Store ConfigurationManager instance, set on init.
@@ -169,7 +170,7 @@
*
* @param listener The listener to add
*/
- public static synchronized void addDispatcherListener(DispatcherListener
listener) {
+ public static void addDispatcherListener(DispatcherListener listener) {
dispatcherListeners.add(listener);
}
@@ -178,7 +179,7 @@
*
* @param listener The listener
*/
- public static synchronized void
removeDispatcherListener(DispatcherListener listener) {
+ public static void removeDispatcherListener(DispatcherListener listener) {
dispatcherListeners.remove(listener);
}
@@ -264,11 +265,9 @@
instance.set(null);
// clean up DispatcherListeners
- synchronized(Dispatcher.class) {
- if (dispatcherListeners.size() > 0) {
- for (DispatcherListener l : dispatcherListeners) {
- l.dispatcherDestroyed(this);
- }
+ if (!dispatcherListeners.isEmpty()) {
+ for (DispatcherListener l : dispatcherListeners) {
+ l.dispatcherDestroyed(this);
}
}
@@ -382,15 +381,6 @@
paramsWorkaroundEnabled =
"true".equals(container.getInstance(String.class,
StrutsConstants.STRUTS_DISPATCHER_PARAMETERSWORKAROUND));
}
-
- synchronized(Dispatcher.class) {
- if (dispatcherListeners.size() > 0) {
- for (DispatcherListener l : dispatcherListeners) {
- l.dispatcherInitialized(this);
- }
- }
- }
-
}
/**
@@ -415,6 +405,11 @@
init_CheckConfigurationReloading(container);
init_CheckWebLogicWorkaround(container);
+ if (!dispatcherListeners.isEmpty()) {
+ for (DispatcherListener l : dispatcherListeners) {
+ l.dispatcherInitialized(this);
+ }
+ }
}
/**