diff --git a/core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java b/core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java index 29fbd2a5e..ad3a713da 100644 --- a/core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java +++ b/core/src/main/java/com/opensymphony/xwork2/util/LocalizedTextUtil.java @@ -38,6 +38,7 @@ import java.text.MessageFormat; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.CopyOnWriteArrayList; /** @@ -141,14 +142,13 @@ public class LocalizedTextUtil { */ public static void addDefaultResourceBundle(String resourceBundleName) { //make sure this doesn't get added more than once - ClassLoader ccl; + final ClassLoader ccl = getCurrentThreadContextClassLoader(); synchronized (XWORK_MESSAGES_BUNDLE) { - ccl = getCurrentThreadContextClassLoader(); List bundles = classLoaderMap.get(ccl.hashCode()); if (bundles == null) { - bundles = new ArrayList(); - classLoaderMap.put(ccl.hashCode(), bundles); + bundles = new CopyOnWriteArrayList<>(); bundles.add(XWORK_MESSAGES_BUNDLE); + classLoaderMap.put(ccl.hashCode(), bundles); } bundles.remove(resourceBundleName); bundles.add(0, resourceBundleName);