You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2013/10/23 12:32:03 UTC
svn commit: r1534977 - in /struts/struts2/trunk/core/src/main:
java/org/apache/struts2/util/AttributeMap.java
java/org/apache/struts2/util/StrutsUtil.java
resources/template/simple/debug.ftl
Author: lukaszlenart
Date: Wed Oct 23 10:32:02 2013
New Revision: 1534977
URL: http://svn.apache.org/r1534977
Log:
WW-4223 Uses safe toString method to avoid exception during generating debug info
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/AttributeMap.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsUtil.java
struts/struts2/trunk/core/src/main/resources/template/simple/debug.ftl
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/AttributeMap.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/AttributeMap.java?rev=1534977&r1=1534976&r2=1534977&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/AttributeMap.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/AttributeMap.java Wed Oct 23 10:32:02 2013
@@ -21,15 +21,14 @@
package org.apache.struts2.util;
+import org.apache.struts2.ServletActionContext;
+
+import javax.servlet.jsp.PageContext;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
-import javax.servlet.jsp.PageContext;
-
-import org.apache.struts2.ServletActionContext;
-
/**
* A Map that holds 4 levels of scope.
@@ -48,15 +47,12 @@ public class AttributeMap implements Map
protected static final String UNSUPPORTED = "method makes no sense for a simplified map";
-
Map context;
-
public AttributeMap(Map context) {
this.context = context;
}
-
public boolean isEmpty() {
throw new UnsupportedOperationException(UNSUPPORTED);
}
@@ -135,4 +131,25 @@ public class AttributeMap implements Map
private PageContext getPageContext() {
return (PageContext) context.get(ServletActionContext.PAGE_CONTEXT);
}
+
+ @Override
+ public String toString() {
+ return "AttributeMap {" +
+ "request=" + toStringSafe(context.get("request")) +
+ ", session=" + toStringSafe(context.get("session")) +
+ ", application=" + toStringSafe(context.get("application")) +
+ '}';
+ }
+
+ private String toStringSafe(Object obj) {
+ try {
+ if (obj != null) {
+ return String.valueOf(obj);
+ }
+ return "";
+ } catch (Exception e) {
+ return "Exception thrown: " + e;
+ }
+ }
+
}
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsUtil.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsUtil.java?rev=1534977&r1=1534976&r2=1534977&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsUtil.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsUtil.java Wed Oct 23 10:32:02 2013
@@ -250,6 +250,16 @@ public class StrutsUtil {
return Integer.toString(anInt);
}
+ public String toStringSafe(Object obj) {
+ try {
+ if (obj != null) {
+ return String.valueOf(obj);
+ }
+ return "";
+ } catch (Exception e) {
+ return "Exception thrown: " + e;
+ }
+ }
static class ResponseWrapper extends HttpServletResponseWrapper {
StringWriter strout;
Modified: struts/struts2/trunk/core/src/main/resources/template/simple/debug.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/debug.ftl?rev=1534977&r1=1534976&r2=1534977&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/debug.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/debug.ftl Wed Oct 23 10:32:02 2013
@@ -43,7 +43,7 @@
<p />
<h3>Value Stack Contents</h3>
-<table border="0" cellpadding="2" cellspacing="0" width="400" bgcolor="#DDDDDD">
+<table border="0" cellpadding="2" cellspacing="0" bgcolor="#DDDDDD">
<tr><th>Object</th><th>Property Name</th><th>Property Value</th></tr>
<#assign index=1>
@@ -65,7 +65,7 @@
<h3>Stack Context</h3>
<i>These items are available using the #key notation</i>
-<table border="0" cellpadding="2" cellspacing="0" width="400" bgcolor="#DDDDDD">
+<table border="0" cellpadding="2" cellspacing="0" bgcolor="#DDDDDD">
<tr>
<th>Key</th><th>Value</th>
</tr>
@@ -73,9 +73,10 @@
<#assign index=1>
<#list stack.context.keySet() as contextKey>
<tr bgcolor="<#if (index % 2) == 0>#BBBBBB<#else>#CCCCCC</#if>">
- <td>${contextKey}</td><td><#if stack.context.get(contextKey)??>${stack.context.get(contextKey).toString()?html}<#else>null</#if></td>
+ <td>${contextKey}</td>
+ <td><#if stack.context.get(contextKey)??>${struts.toStringSafe(stack.context.get(contextKey))?html}<#else>null</#if></td>
</tr>
<#assign index= index + 1>
</#list>
</table>
-</div>
\ No newline at end of file
+</div>