WW-4025 Solves problem with NPE in TextParseUtil

git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1460985 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Lukasz Lenart
2013-03-26 06:21:53 +00:00
parent 3ae920e5a3
commit 3bf95951bc
2 changed files with 19 additions and 3 deletions
@@ -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);
@@ -138,4 +138,22 @@ public class TextParseUtilTest extends XWorkTestCase {
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);
}
}