further EL improvements - OGNL behavior for variable handling is now correct, EL impl simplfiied.
This commit is contained in:
@@ -46,12 +46,6 @@ public class ELExpressionParserTests extends TestCase {
|
||||
assertEquals(new Integer(7), exp.getValue(null));
|
||||
}
|
||||
|
||||
public void testAssignment() {
|
||||
String expressionString = "#{value = 12345}";
|
||||
Expression exp = parser.parseExpression(expressionString, new ParserContextImpl().expect(Integer.class));
|
||||
assertEquals(new Integer(7), exp.getValue(null));
|
||||
}
|
||||
|
||||
public void testParseBeanEvalExpressionNoParserContext() {
|
||||
String expressionString = "#{value}";
|
||||
Expression exp = parser.parseExpression(expressionString, null);
|
||||
@@ -140,7 +134,7 @@ public class ELExpressionParserTests extends TestCase {
|
||||
}
|
||||
|
||||
private static class TestELContextFactory implements ELContextFactory {
|
||||
public ELContext getELContext(final Object target, final VariableMapper variableMapper) {
|
||||
public ELContext getELContext(final Object target) {
|
||||
return new ELContext() {
|
||||
public ELResolver getELResolver() {
|
||||
return new ELResolver() {
|
||||
@@ -179,7 +173,7 @@ public class ELExpressionParserTests extends TestCase {
|
||||
}
|
||||
|
||||
public VariableMapper getVariableMapper() {
|
||||
return variableMapper;
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -22,9 +22,6 @@ import org.springframework.binding.expression.ExpressionVariable;
|
||||
import org.springframework.binding.expression.ParserException;
|
||||
import org.springframework.binding.expression.support.ParserContextImpl;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link org.springframework.binding.expression.ognl.OgnlExpressionParser}.
|
||||
*/
|
||||
public class OgnlExpressionParserTests extends TestCase {
|
||||
|
||||
private OgnlExpressionParser parser = new OgnlExpressionParser();
|
||||
@@ -33,14 +30,31 @@ public class OgnlExpressionParserTests extends TestCase {
|
||||
|
||||
public void testParseSimple() {
|
||||
String exp = "${flag}";
|
||||
assertTrue(parser.hasDelimitedExpression(exp));
|
||||
Expression e = parser.parseExpression(exp, null);
|
||||
assertNotNull(e);
|
||||
Boolean b = (Boolean) e.getValue(bean);
|
||||
assertFalse(b.booleanValue());
|
||||
}
|
||||
|
||||
public void testHasDelimitedExpression() {
|
||||
public void testIsTemplateExpressionAllowUndelimitedOgnlExpressions() {
|
||||
String exp = "some literal text";
|
||||
String exp2 = "${a delimited expression}";
|
||||
String exp3 = "${a malformed delimited expression";
|
||||
String exp4 = "a malformed delimited expression}";
|
||||
String exp5 = "${}";
|
||||
String exp6 = "a ${composite} expression";
|
||||
String exp7 = "a ${composite} ${malformed expression";
|
||||
assertTrue(parser.isTemplateExpression(exp));
|
||||
assertTrue(parser.isTemplateExpression(exp2));
|
||||
assertTrue(parser.isTemplateExpression(exp3));
|
||||
assertTrue(parser.isTemplateExpression(exp4));
|
||||
assertTrue(parser.isTemplateExpression(exp5));
|
||||
assertTrue(parser.isTemplateExpression(exp6));
|
||||
assertTrue(parser.isTemplateExpression(exp7));
|
||||
}
|
||||
|
||||
public void testIsTemplateExpressionDoNotAllowUndelimitedOgnlExpressions() {
|
||||
parser.setAllowUndelimitedEvalExpressions(true);
|
||||
String exp = "some literal text";
|
||||
String exp2 = "${a delimited expression}";
|
||||
String exp3 = "${a malformed delimited expression";
|
||||
@@ -49,24 +63,31 @@ public class OgnlExpressionParserTests extends TestCase {
|
||||
String exp6 = "a ${composite} expression";
|
||||
String exp7 = "a ${composite} ${malformed expression";
|
||||
|
||||
assertFalse(parser.hasDelimitedExpression(exp));
|
||||
assertTrue(parser.hasDelimitedExpression(exp2));
|
||||
assertFalse(parser.hasDelimitedExpression(exp3));
|
||||
assertFalse(parser.hasDelimitedExpression(exp4));
|
||||
assertFalse(parser.hasDelimitedExpression(exp5));
|
||||
assertTrue(parser.hasDelimitedExpression(exp6));
|
||||
assertTrue(parser.hasDelimitedExpression(exp7));
|
||||
assertFalse(parser.isTemplateExpression(exp));
|
||||
assertTrue(parser.isTemplateExpression(exp2));
|
||||
assertFalse(parser.isTemplateExpression(exp3));
|
||||
assertFalse(parser.isTemplateExpression(exp4));
|
||||
assertFalse(parser.isTemplateExpression(exp5));
|
||||
assertTrue(parser.isTemplateExpression(exp6));
|
||||
assertTrue(parser.isTemplateExpression(exp7));
|
||||
}
|
||||
|
||||
public void testParseSimpleNotDelimited() {
|
||||
public void testParseSimpleNotDelimitedAllowUndelimited() {
|
||||
parser.setAllowUndelimitedEvalExpressions(true);
|
||||
String exp = "flag";
|
||||
assertFalse(parser.hasDelimitedExpression(exp));
|
||||
Expression e = parser.parseExpression(exp, null);
|
||||
assertNotNull(e);
|
||||
Boolean b = (Boolean) e.getValue(bean);
|
||||
assertFalse(b.booleanValue());
|
||||
}
|
||||
|
||||
public void testParseSimpleLiteral() {
|
||||
String exp = "flag";
|
||||
Expression e = parser.parseExpression(exp, null);
|
||||
assertNotNull(e);
|
||||
assertEquals("flag", e.getValue(bean));
|
||||
}
|
||||
|
||||
public void testParseEmpty() {
|
||||
Expression e = parser.parseExpression("", null);
|
||||
assertNotNull(e);
|
||||
@@ -75,7 +96,7 @@ public class OgnlExpressionParserTests extends TestCase {
|
||||
|
||||
public void testParseComposite() {
|
||||
String exp = "hello ${flag} ${flag} ${flag}";
|
||||
assertTrue(parser.hasDelimitedExpression(exp));
|
||||
assertTrue(parser.isTemplateExpression(exp));
|
||||
Expression e = parser.parseExpression(exp, null);
|
||||
assertNotNull(e);
|
||||
String str = (String) e.getValue(bean);
|
||||
@@ -142,7 +163,7 @@ public class OgnlExpressionParserTests extends TestCase {
|
||||
|
||||
public void testVariables() {
|
||||
Expression exp = parser.parseExpression("${#var}", new ParserContextImpl().variable(new ExpressionVariable(
|
||||
"var", new Integer(1))));
|
||||
assertEquals(new Integer(1), exp.getValue(bean));
|
||||
"var", "${flag}")));
|
||||
assertEquals(false, ((Boolean) exp.getValue(bean)).booleanValue());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user