diff --git a/spring-binding/src/main/java/org/springframework/binding/expression/ognl/OgnlExpression.java b/spring-binding/src/main/java/org/springframework/binding/expression/ognl/OgnlExpression.java index 46771f46..5af781c7 100644 --- a/spring-binding/src/main/java/org/springframework/binding/expression/ognl/OgnlExpression.java +++ b/spring-binding/src/main/java/org/springframework/binding/expression/ognl/OgnlExpression.java @@ -23,6 +23,8 @@ import java.util.Map; import ognl.Ognl; import ognl.OgnlException; +import org.springframework.beans.BeanWrapperImpl; +import org.springframework.beans.BeansException; import org.springframework.binding.expression.EvaluationAttempt; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; @@ -105,13 +107,8 @@ class OgnlExpression implements Expression { public Class getValueType(Object context) { try { - if (Ognl.isSimpleProperty(expression)) { - // TODO - throw new UnsupportedOperationException("Not yet implemented - in progress"); - } else { - return null; - } - } catch (OgnlException e) { + return new BeanWrapperImpl(context).getPropertyDescriptor(expressionString).getPropertyType(); + } catch (BeansException e) { throw new EvaluationException(new EvaluationAttempt(this, context), e); } } diff --git a/spring-binding/src/test/java/org/springframework/binding/expression/ognl/OgnlExpressionParserTests.java b/spring-binding/src/test/java/org/springframework/binding/expression/ognl/OgnlExpressionParserTests.java index 28c778aa..781388e2 100644 --- a/spring-binding/src/test/java/org/springframework/binding/expression/ognl/OgnlExpressionParserTests.java +++ b/spring-binding/src/test/java/org/springframework/binding/expression/ognl/OgnlExpressionParserTests.java @@ -123,7 +123,9 @@ public class OgnlExpressionParserTests extends TestCase { // maps parser.parseExpression("#{ 'foo' : 'foo value', 'bar' : 'bar value' }", null); - parser.parseExpression("${#{ 'foo' : 'foo value', 'bar' : 'bar value' }}", new FluentParserContext().template()); + parser + .parseExpression("${#{ 'foo' : 'foo value', 'bar' : 'bar value' }}", new FluentParserContext() + .template()); parser.parseExpression("#@java.util.LinkedHashMap@{ 'foo' : 'foo value', 'bar' : 'bar value' }", null); parser.parseExpression("${#@java.util.LinkedHashMap@{ 'foo' : 'foo value', 'bar' : 'bar value' }}", new FluentParserContext().template()); @@ -135,22 +137,28 @@ public class OgnlExpressionParserTests extends TestCase { } public void testVariables() { - Expression exp = parser.parseExpression("#var", new FluentParserContext().variable(new ExpressionVariable("var", - "flag"))); + Expression exp = parser.parseExpression("#var", new FluentParserContext().variable(new ExpressionVariable( + "var", "flag"))); assertEquals(false, ((Boolean) exp.getValue(bean)).booleanValue()); } public void testVariablesWithCoersion() { - Expression exp = parser.parseExpression("#var", new FluentParserContext().variable(new ExpressionVariable("var", - "number", new FluentParserContext().expectResult(Long.class)))); + Expression exp = parser.parseExpression("#var", new FluentParserContext().variable(new ExpressionVariable( + "var", "number", new FluentParserContext().expectResult(Long.class)))); assertEquals(new Long(0), exp.getValue(bean)); } public void testNestedVariablesWithTemplates() { - Expression exp = parser.parseExpression("#var", new FluentParserContext() - .variable(new ExpressionVariable("var", "${flag}${#var}", new FluentParserContext().template().variable( + Expression exp = parser.parseExpression("#var", new FluentParserContext().variable(new ExpressionVariable( + "var", "${flag}${#var}", new FluentParserContext().template().variable( new ExpressionVariable("var", "number"))))); assertEquals("false0", exp.getValue(bean)); } + public void testGetValueType() { + String exp = "flag"; + Expression e = parser.parseExpression(exp, null); + assertEquals(boolean.class, e.getValueType(bean)); + } + } \ No newline at end of file diff --git a/spring-webflow-samples/booking-faces/ivy.xml b/spring-webflow-samples/booking-faces/ivy.xml index 2a7e0f12..bac2d1ab 100755 --- a/spring-webflow-samples/booking-faces/ivy.xml +++ b/spring-webflow-samples/booking-faces/ivy.xml @@ -26,6 +26,7 @@ + @@ -33,20 +34,23 @@ + - - - + + + - + + + diff --git a/spring-webflow-samples/booking-mvc/ivy.xml b/spring-webflow-samples/booking-mvc/ivy.xml index 6076b673..c9ad158b 100755 --- a/spring-webflow-samples/booking-mvc/ivy.xml +++ b/spring-webflow-samples/booking-mvc/ivy.xml @@ -25,26 +25,35 @@ + + + + + + - + - - - + + + + + +