[ 
https://issues.apache.org/jira/browse/JEXL-55?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12715584#action_12715584
 ] 

Rahul Akolkar commented on JEXL-55:
-----------------------------------

Thanks for the ICLA Henri, it has been recorded by the ASF Secretary.


> JEXL 2.0 redux, attempting to restart the effort to release 2.0
> ---------------------------------------------------------------
>
>                 Key: JEXL-55
>                 URL: https://issues.apache.org/jira/browse/JEXL-55
>             Project: Commons JEXL
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Henri Biestro
>             Fix For: 2.0
>
>         Attachments: JEXL-55.patch, jexl-redux.zip
>
>
> JEXL 2.0 redux
> This is an attempt at restarting the JEXL 2.0 release effort based on the 2.0 
> trunk.
> There was a lot of effort & good ideas already in the 2.0 branch and JEXL is 
> just too convenient (imho) to be left in this state.
> The patch keeps the 2.0 structure, most notably using the visitor pattern to 
> implement the interpreter.
> This allows to modify the grammar much more easily since the javacc generated 
> code does not need to be modified.
> This patch incorporates a few fixes & enhancements:
> - Bean & ant-ish like assignment; allows expressions like "foo.bar.quux = 
> 'some value'"
> If 'foo' is resolved as an object from the JexlContext, and 'foo' can access 
> a 'bar' (either as
> a map access or a bean property) that itself allows to set a 'quux', that 
> 'quux' will be set with
> the value.
> The 'ant-ish' like properties can only be set if no bean can be accessed 
> during the evaluation.
> That is, in our case, if 'foo' & 'foo.bar' can *not* be solved as beans from 
> the JexlContext,
> the property 'foo.bar.quux' will be added to the JexlContext. This is to 
> avoid ambiguities
> that could stem from having both a 'foo.quux' ant property and a 'foo' in the 
> JexlContext.
> - Ternary operator (+ GNU C extension '?:'); allows expressions like 
> "foo?'true-or-not-null':'false-or-null'
> and 'foo?:"foo-is-null"
> The ternary operator is what you expect; the "?:" syntax allows the second 
> operand to be omitted, and the first operand is implicitly used as the second.
> The expression 'x?:z' is equivalent to 'x?x:z'
> - Exception handling revisited; silent (aka 1.1 mode) or not
> The 1.1 code was silent in almost all cases when an exception occurs and 
> usually returns 'null' in that case.
> The new code also allows to set the engine in a non lenient mode where all 
> exceptions & errors will be reported,
> wrapped in a o.a.c.jexl.JexlException. This runtime exception carries which 
> node (in the tree) is the point of origin, allowing
> to better diagnose why the error (the cause) occurs.
> - ScriptFactory, ExpressionFactory refactored
> A JexlEngine class is used as the non-static version instance; this should 
> allow easier customization.
> The pre/post resolvers have been removed from expressions since it is now 
> much easier to just derive
> from Interpreter to implement something specific.
> - java 5 based
> The JEXL-54 patch has been folded in; besides light performance improvement, 
> it makes the code more
> readable.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to