Skip to content

Commit 39ec62a

Browse files
author
Przemek Bruski
committed
WW-4652 fixed a concurrency issue in addDefaultResourceBundle
1 parent d066891 commit 39ec62a

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import java.util.*;
3939
import java.util.concurrent.ConcurrentHashMap;
4040
import java.util.concurrent.ConcurrentMap;
41+
import java.util.concurrent.CopyOnWriteArrayList;
4142

4243

4344
/**
@@ -141,14 +142,13 @@ public static void setDevMode(boolean devMode) {
141142
*/
142143
public static void addDefaultResourceBundle(String resourceBundleName) {
143144
//make sure this doesn't get added more than once
144-
ClassLoader ccl;
145+
final ClassLoader ccl = getCurrentThreadContextClassLoader();
145146
synchronized (XWORK_MESSAGES_BUNDLE) {
146-
ccl = getCurrentThreadContextClassLoader();
147147
List<String> bundles = classLoaderMap.get(ccl.hashCode());
148148
if (bundles == null) {
149-
bundles = new ArrayList<String>();
150-
classLoaderMap.put(ccl.hashCode(), bundles);
149+
bundles = new CopyOnWriteArrayList<>();
151150
bundles.add(XWORK_MESSAGES_BUNDLE);
151+
classLoaderMap.put(ccl.hashCode(), bundles);
152152
}
153153
bundles.remove(resourceBundleName);
154154
bundles.add(0, resourceBundleName);

0 commit comments

Comments
 (0)