Proposal for Jex Package
(0) Rationale
There is a number of expression language interpreters for Java. They all
define different APIs, which makes it difficult to introduce new expression
languages or new implementations of existing ones. The proposed Jex
component
provides a plug-in mechanism for expression language interpreters and common
APIs for invocation of those.
(1) Scope of the Package
The org.apache.commons.jex package will define the following APIs:
-
Plug-in mechanism that allows introduction of new expression languages
without changes to the org.apache.commons.jex package.
-
Expression evaluation: given an expression, compute the expression value
-
Modifying expression evaluation: given an expression describing a variable
(or other left-side type of expression) and a new value, modify the value
of that variable.
-
Iteration by expression: given an expression, produce an iterator
-
A pool of variables
-
Internationalization.
-
Jex will support both compiled and interpreted expression languages.
-
Out-of-the-box Jex will support at least two languages: JXPath (compiled)
and Bexl (BeanUtils path language, interpreted).
(1.5) Interaction With Other Packages
Jex relies on
-
Java Development Kit (Version 1.2 or later)
-
BeanUtils (compile time, no run-time dependency)
-
JXPath (compile time, no run-time dependency)
No external configuration files are utilized.
(2) Initial Source of the Package
The original source of the component was donated by PLOTNIX, Inc (www.plotnix.com).
The proposed package names for the new component are
-
org.apache.commons.jex for the main API package
-
org.apache.commons.jex.bexl for integration with BeanUtils
-
org.apache.commons.jex.jxpath for integration with JXPath
(3) Required Jakarta-Commons Resources
-
SVN repository - New directory jex in the jakarta/commons SVN
repository.
-
Mailing List - Discussions will take place on the general dev@commons.apache.org
mailing list. To help list subscribers identify messages of interest, it
is suggested that the message subject of messages about this component
be prefixed with [jex].
-
Bugzilla - New component "jex" under the "Commons" product category, with
appropriate version identifiers as needed.
-
Jyve FAQ - New category "commons-jex" (when available).
(4) Initial Committers
The initial committer on the JEX component shall be Dmitri Plotnikov.