Ate Douma created JEXL-245:
------------------------------
Summary: Engine in strict mode fails to fail on unsolvable
variables or properties
Key: JEXL-245
URL: https://issues.apache.org/jira/browse/JEXL-245
Project: Commons JEXL
Issue Type: Bug
Affects Versions: 3.1
Reporter: Ate Douma
I've been running into some weird and unexpected behavior where the expectancy
is that the Engine throws a unsolvable property exception.
Example code:
{code:java}
import org.apache.commons.jexl3.*;
public class JexlTest {
public Object getBar() {
return null;
}
private static void testJexl(final JexlEngine engine, final JexlContext
ctx, final String expression) {
System.out.print("test ("+expression+"): ");
try {
System.out.println(engine.createExpression(expression).evaluate(ctx));
} catch (JexlException e) {
System.out.println(e.getMessage());
}
}
public static void main(final String[] args) throws Exception {
MapContext ctx = new MapContext();
JexlEngine engine = new
JexlBuilder().strict(true).silent(false).create();
ctx.set("foo", new JexlTest());
testJexl(engine, ctx, "foo.bar");
testJexl(engine, ctx, "foo.bar.baz");
testJexl(engine, ctx, "foo.baz");
}
}{code}
Which produces the following output:
{code}
test (foo.bar): null
test (foo.bar.baz): null
test (foo.baz): JexlTest.testJexl@1:4 unsolvable property 'baz'
{code}
The problem with the the second test, where accessing the property foo.bar.baz
of the non-existing variable bar is not throwing an exception.
The third test demonstrates a similar/same scenario where accessing the
non-existing property foo.baz is throwing the expected exception.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)