mirror of
https://github.com/apache/struts.git
synced 2026-08-11 01:27:14 +00:00
WW-3750 reduces scope of cashing
git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1307614 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -32,7 +32,6 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
|
||||
/**
|
||||
@@ -52,8 +51,7 @@ public class ScopesHashModel extends SimpleHash implements TemplateModel {
|
||||
private ServletContext servletContext;
|
||||
private ValueStack stack;
|
||||
private final Map<String,TemplateModel> unlistedModels = new HashMap<String,TemplateModel>();
|
||||
private final Map<String, Object> stackCache = new ConcurrentHashMap<String, Object>();
|
||||
private static final Object NULL_OBJECT = new Object();
|
||||
private volatile Object parametersCache;
|
||||
|
||||
public ScopesHashModel(ObjectWrapper objectWrapper, ServletContext context, HttpServletRequest request, ValueStack stack) {
|
||||
super(objectWrapper);
|
||||
@@ -143,21 +141,15 @@ public class ScopesHashModel extends SimpleHash implements TemplateModel {
|
||||
}
|
||||
|
||||
private Object findValueOnStack(final String key) {
|
||||
if (this.stackCache.containsKey(key)) {
|
||||
final Object value = this.stackCache.get(key);
|
||||
if (value == NULL_OBJECT) {
|
||||
return null;
|
||||
if ("parameters".equals(key)) {
|
||||
if (parametersCache != null) {
|
||||
return parametersCache;
|
||||
}
|
||||
return value;
|
||||
Object parametersLocal = stack.findValue(key);
|
||||
parametersCache = parametersLocal;
|
||||
return parametersLocal;
|
||||
}
|
||||
|
||||
final Object value = this.stack.findValue(key);
|
||||
if (value == null) {
|
||||
this.stackCache.put(key, NULL_OBJECT);
|
||||
} else {
|
||||
this.stackCache.put(key, value);
|
||||
}
|
||||
return value;
|
||||
return stack.findValue(key);
|
||||
}
|
||||
|
||||
public void put(String string, boolean b) {
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<@s.param name="namespace">${namespace}</@s.param>
|
||||
<@s.param name="actionName">${name}</@s.param>
|
||||
</@s.url>
|
||||
<li><@s.a href="%{showConfig}">${name}</@s.a></li>
|
||||
<li><a href="${showConfig}">${name}</a></li>
|
||||
</#list>
|
||||
</ul>
|
||||
</td>
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
<@s.url var="namespaceLink" action="actionNames" includeParams="none">
|
||||
<@s.param name="namespace">${namespace}</@s.param>
|
||||
</@s.url>
|
||||
<@s.a href="%{namespaceLink}"><#if namespace == ""> default <#else> ${namespace} </#if></@s.a>
|
||||
<a href="${namespaceLink}"><#if namespace == ""> default <#else> ${namespace} </#if></a>
|
||||
</div>
|
||||
</#foreach>
|
||||
</div>
|
||||
@@ -84,7 +84,7 @@
|
||||
<@s.param name="namespace">${namespace}</@s.param>
|
||||
<@s.param name="actionName">${name}</@s.param>
|
||||
</@s.url>
|
||||
<@s.a href="%{actionLink}">${name}</@s.a>
|
||||
<a href="${actionLink}">${name}</a>
|
||||
</div>
|
||||
</#foreach>
|
||||
</#if>
|
||||
|
||||
Reference in New Issue
Block a user