diff --git a/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java b/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java index 2c81ec147..f394d0121 100644 --- a/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java +++ b/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java @@ -23,10 +23,9 @@ package org.apache.struts2.components.template; import java.io.IOException; import java.io.Writer; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArraySet; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; @@ -55,8 +54,8 @@ public class FreemarkerTemplateEngine extends BaseTemplateEngine { static Class bodyContent = null; private FreemarkerManager freemarkerManager; - private final HashMap templates = new HashMap(); - private final HashSet missingTemplates = new HashSet(); + private final Map templates = new ConcurrentHashMap(); + private final Set missingTemplates = new CopyOnWriteArraySet(); private boolean freemarkerCaching = false; static { @@ -191,28 +190,20 @@ public class FreemarkerTemplateEngine extends BaseTemplateEngine { } protected void addToMissingTemplateCache(String templateName) { - synchronized(missingTemplates) { - missingTemplates.add(templateName); - } + missingTemplates.add(templateName); } protected boolean isTemplateMissing(String templateName) { - synchronized(missingTemplates) { - return missingTemplates.contains(templateName); - } + return missingTemplates.contains(templateName); } protected void addToCache(String templateName, freemarker.template.Template template) { - synchronized(templates) { - templates.put(templateName, template); - } + templates.put(templateName, template); } protected freemarker.template.Template findInCache(String templateName) { - synchronized(templates) { - return templates.get(templateName); - } + return templates.get(templateName); } /**