Hello,
I'm new to using JEXL and was surprised by the following behavior (see code
below). Obviously "badMethodName()" is not a method on the String "bar". I
expected JEXL to throw some appropriate exception. Rather, JEXL returned
null for the call, which is not a good thing, IMHO. Switching
"badMethodName() for a non-existing property call like
"properties['foo'].qux" also returns null.
I've stepped through the code and the behavior seems intentional.
Am I missing something, or is this a philosophical thing with JEXL? Trying
similar tests with JUEL, which is an implementation of the Java Unified
Expression Language throws exceptions as I expected.
I would much rather use JEXL however, but need to resolve this issue.
@Test
public void testPropertyExpression() throws Exception
{
Properties properties = new Properties();
properties.put("foo", "bar");
JexlContext context = JexlHelper.createContext();
context.getVars().put("properties", properties);
Expression e = ExpressionFactory.createExpression
("properties['foo'].badMethodName()");
String value = (String) e.evaluate(context);
assertEquals("huh", value);
}
Thanks in advance,
G