commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henri Biestro (JIRA)" <>
Subject [jira] Updated: (JEXL-55) JEXL 2.0 redux, attempting to restart the effort to release 2.0
Date Thu, 21 May 2009 17:21:45 GMT


Henri Biestro updated JEXL-55:


This is *not* a patch file but a zip containing all the java files (src + test).

> JEXL 2.0 redux, attempting to restart the effort to release 2.0
> ---------------------------------------------------------------
>                 Key: JEXL-55
>                 URL:
>             Project: Commons JEXL
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Henri Biestro
>             Fix For: 2.0
>         Attachments:
> 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 " = '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' & '' can *not* be solved as beans from the
> the property '' 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
> 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.

View raw message