WW-4427 - Converters are no longer applied to values coming from the context - fix and UT
Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/6834b78f Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/6834b78f Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/6834b78f Branch: refs/heads/master Commit: 6834b78fe9ec33e90530686e9c5101358750a854 Parents: 5f2898e Author: Przemek Bruski <pbru...@atlassian.com> Authored: Tue Dec 9 17:17:15 2014 +0100 Committer: Przemek Bruski <pbru...@atlassian.com> Committed: Tue Dec 9 17:17:15 2014 +0100 ---------------------------------------------------------------------- .../com/opensymphony/xwork2/ognl/OgnlValueStack.java | 2 ++ .../com/opensymphony/xwork2/ognl/OgnlValueStackTest.java | 11 +++++++++++ 2 files changed, 13 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/6834b78f/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java ---------------------------------------------------------------------- diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java index 90b1a54..ce273b1 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java @@ -351,6 +351,8 @@ public class OgnlValueStack implements Serializable, ValueStack, ClearableValueS value = getValue(expr, asType); if (value == null) { value = findInContext(expr); + final XWorkConverter conv = ((Container)getContext().get(ActionContext.CONTAINER)).getInstance(XWorkConverter.class); + return conv.convertValue(getContext(), value, asType); } } finally { context.remove(THROW_EXCEPTION_ON_FAILURE); http://git-wip-us.apache.org/repos/asf/struts/blob/6834b78f/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java ---------------------------------------------------------------------- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java index e0e949c..769fcf7 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java @@ -93,6 +93,17 @@ public class OgnlValueStackTest extends XWorkTestCase { assertEquals("1, 2", vs.findValue("childAges", String.class)); } + public void testValuesFromContextAreConverted() { + final OgnlValueStack vs = createValueStack(); + vs.getContext().put(ActionContext.CONTAINER, container); + + final String propertyName = "dogName"; + final String propertyValue = "Rover"; + vs.getContext().put(propertyName, new String[]{propertyValue}); + + assertEquals(propertyValue, vs.findValue(propertyName, String.class)); + } + public void testFailOnException() { OgnlValueStack vs = createValueStack();