Uploaded image for project: 'Commons JEXL'
  1. Commons JEXL
  2. JEXL-245

Engine in strict mode fails to fail on unsolvable variables or properties

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.1
    • 3.2
    • None

    Description

      I've run into some unexpected behavior where the expectancy is that the Engine throws a unsolvable property exception.

      Example code:

      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");
          }
      }

      Which produces the following output:

      test (foo.bar): null
      test (foo.bar.baz): null
      test (foo.baz): JexlTest.testJexl@1:4 unsolvable property 'baz'
      

      The problem is with 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.

      Attachments

        Activity

          People

            henrib Henri Biestro
            ate Ate Douma
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: