[
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.