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/03/26 07:21:54 UTC

svn commit: r1460985 - in /struts/struts2/trunk/xwork-core/src: main/java/com/opensymphony/xwork2/util/TextParseUtil.java test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java

Author: lukaszlenart
Date: Tue Mar 26 06:21:53 2013
New Revision: 1460985

URL: http://svn.apache.org/r1460985
Log:
WW-4025 Solves problem with NPE in TextParseUtil

Modified:
    struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java
    struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java

Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java?rev=1460985&r1=1460984&r2=1460985&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/TextParseUtil.java Tue Mar 26 06:21:53 2013
@@ -153,18 +153,16 @@ public class TextParseUtil {
      */
     public static Object translateVariables(char[] openChars, String expression, final ValueStack stack, final Class asType, final ParsedValueEvaluator evaluator, int maxLoopCount) {
 
-
         ParsedValueEvaluator ognlEval = new ParsedValueEvaluator() {
             public Object evaluate(String parsedValue) {
                 Object o = stack.findValue(parsedValue, asType);
-                if (evaluator != null) {
+                if (evaluator != null && o != null) {
                     o = evaluator.evaluate(o.toString());
                 }
                 return o;
             }
         };
 
-
         TextParser parser = ((Container)stack.getContext().get(ActionContext.CONTAINER)).getInstance(TextParser.class);
 
         XWorkConverter conv = ((Container)stack.getContext().get(ActionContext.CONTAINER)).getInstance(XWorkConverter.class);

Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java?rev=1460985&r1=1460984&r2=1460985&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java (original)
+++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/TextParseUtilTest.java Tue Mar 26 06:21:53 2013
@@ -138,4 +138,22 @@ public class TextParseUtilTest extends X
         assertEquals("foo: 2", s);
     }
 
+    public void testTranslateVariablesWithNull() {
+        // given
+        ValueStack stack = ActionContext.getContext().getValueStack();
+        stack.push(new HashMap<String, Object>() {{ put("foo", null); }});
+
+        TextParseUtil.ParsedValueEvaluator evaluator = new TextParseUtil.ParsedValueEvaluator() {
+            public Object evaluate(String parsedValue) {
+                return parsedValue;
+            }
+        };
+
+        // when
+        Object s = TextParseUtil.translateVariables('$', "foo: ${foo}", stack, String.class, evaluator, 2);
+
+        // then
+        assertEquals("foo: ", s);
+    }
+
 }