Author: henrib Date: Tue Nov 17 16:32:19 2009 New Revision: 881361 URL: http://svn.apache.org/viewvc?rev=881361&view=rev Log: Updated documentation; removed some xdoc related elements, revamped content. Get ready for RC3.
Removed: commons/proper/jexl/trunk/xdocs/style/ commons/proper/jexl/trunk/xdocs/xdoc.xsl Modified: commons/proper/jexl/trunk/pom.xml commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl/package.html commons/proper/jexl/trunk/xdocs/index.xml commons/proper/jexl/trunk/xdocs/reference/examples.xml commons/proper/jexl/trunk/xdocs/releases.xml Modified: commons/proper/jexl/trunk/pom.xml URL: http://svn.apache.org/viewvc/commons/proper/jexl/trunk/pom.xml?rev=881361&r1=881360&r2=881361&view=diff ============================================================================== --- commons/proper/jexl/trunk/pom.xml (original) +++ commons/proper/jexl/trunk/pom.xml Tue Nov 17 16:32:19 2009 @@ -117,7 +117,7 @@ <commons.componentid>jexl</commons.componentid> <commons.release.version>2.0</commons.release.version> <!-- The RC version used in the staging repository URL. --> - <commons.rc.version>RC2</commons.rc.version> + <commons.rc.version>RC3</commons.rc.version> <commons.binary.suffix /> <commons.jira.id>JEXL</commons.jira.id> <commons.jira.pid>12310479</commons.jira.pid> Modified: commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl/package.html URL: http://svn.apache.org/viewvc/commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl/package.html?rev=881361&r1=881360&r2=881361&view=diff ============================================================================== --- commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl/package.html (original) +++ commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl/package.html Tue Nov 17 16:32:19 2009 @@ -34,30 +34,7 @@ JEXL is a library intended to facilitate the implementation of dynamic and scripting features in applications and frameworks. </p> - <p> - It enables coding configuration, module/component loose-coupling dependencies or simple template capabilities using a - small footprint API. - Its name itself stands for Java EXpression Language, a simple expression language inspired by Jakarta Velocity - and the Expression Language defined in the JavaServer Pages Standard Tag Library version 1.1 (JSTL) and - JavaServer Pages version 2.0 (JSP). - </p> - <p> - The API and the expression language exploit Java-beans naming patterns through - introspection to expose property getters and setters. - </p> - <p> - JEXL attempts to bring some of the lessons learned by the Velocity - community about expression languages in templating to a wider audience. - <a href="http://commons.apache.org/jelly">Commons Jelly needed</a> - Velocity-ish method access, it just had to have it. - </p> - <p> - It must be noted that JEXL is not a compatibile implementation of EL as defined - in JSTL 1.1 (JSR-052) or JSP 2.0 (JSR-152). For a compatible implementation of - these specifications, see the <a href="http://commons.apache.org/el"> - Commons EL</a> project. - </p> - + <h2><a name="example">A Brief Example</a></h2> <p> When evaluating expressions, JEXL merges an @@ -93,7 +70,7 @@ <ul> <li>Dynamic invocation of setters, getters, methods and constructors</li> <li>Script expressions known as JEXL expressions</li> - <li>JSP/JSF like expression known as UnifiedJEXL expresions</li> + <li>JSP/JSF like expression known as UnifiedJEXL expressions</li> </ul> <h3><a name="usage_api">Dynamic invocation</a></h3> @@ -104,10 +81,10 @@ set of methods: </p> <ul> + <li>{...@link org.apache.commons.jexl.JexlEngine#newInstance}</li> <li>{...@link org.apache.commons.jexl.JexlEngine#setProperty}</li> <li>{...@link org.apache.commons.jexl.JexlEngine#getProperty}</li> <li>{...@link org.apache.commons.jexl.JexlEngine#invokeMethod}</li> - <li>{...@link org.apache.commons.jexl.JexlEngine#newInstance}</li> </ul> The following example illustrate their usage: <pre> @@ -186,7 +163,7 @@ JexlEngine jexl = new JexlEngine(); UnifiedJEXL ujexl = new UnifiedJEXL(jexl); UnifiedJEXL.Expression expr = ujexl.parse("Hello ${user}"); - String hello = expr.evaluate(context, expr); + String hello = expr.evaluate(context, expr).toString(); </pre> <h2><a name="configuration">JEXL Configuration</a></h2> Modified: commons/proper/jexl/trunk/xdocs/index.xml URL: http://svn.apache.org/viewvc/commons/proper/jexl/trunk/xdocs/index.xml?rev=881361&r1=881360&r2=881361&view=diff ============================================================================== --- commons/proper/jexl/trunk/xdocs/index.xml (original) +++ commons/proper/jexl/trunk/xdocs/index.xml Tue Nov 17 16:32:19 2009 @@ -22,53 +22,83 @@ </properties> <body> - <section name="Java Expression Language (JEXL)"> - <p> - JEXL is a library intended to facilitate the implementation of dynamic and scripting features in applications - and frameworks. - It enables coding configuration, module/component loose-coupling dependencies or simple template capabilities using a - small footprint API. - </p> - <p> - Its name stands for Java EXpression Language, a simple expression language inspired by Jakarta Velocity - and the Expression Language defined in the JavaServer Pages Standard Tag Library version 1.1 (JSTL) and - JavaServer Pages version 2.0 (JSP). - </p> - <p> + <section name="Java Expression Language (JEXL)"> + <p> + JEXL is a library intended to facilitate the implementation of dynamic and scripting features in + applications and frameworks. + </p> + <p> + It is a small footprint "glueing" API + - the <a href="apidocs/org/apache/commons/jexl/package-summary.html#usage">core features</a> fit in + 3 classes and 10 methods - that can be used in various conditions: + <ul> + <li>Module or component configuration: + <ul> + <li>Your application has configuration files (eventually generated by a design module) + consumed by the end-user module that would benefit from variables and expressions. + </li> + <li>When it would be convenient to use IOC but overall complexity doesn't require + (or can't depend upon) a full-blown library (Spring, Guice...). + </li> + </ul> + </li> + <li>Loose-coupling of interfaces and implementations or duck-typing: + <ul> + <li>You have optional classes that your code cant consider as compilation dependencies.</li> + <li>You have to integrate and call "legacy" code or use components that you dont want to + strongly depend upon.</li> + </ul> + </li> + <li>Basic scripting features: + <ul><li>Your application lets (advanced) users evaluate or define some simple expressions + like computation formulas.</li></ul> + </li> + <li>Simple template capabilities: + <ul><li>Your application has basic template requirements and JSPs or + Velocity would be overkill or too inconvenient to deploy.</li></ul> + </li> + </ul> + </p> + <p> + Its name stands for Java EXpression Language, a simple expression language inspired by Jakarta + Velocity and the Expression Language defined in the JavaServer Pages Standard Tag Library version 1.1 (JSTL) + and JavaServer Pages version 2.0 (JSP). JEXL 2.0 adds features inspired by + <a href="http://java.sun.com/products/jsp/reference/techart/unifiedEL.html">Unified EL</a>. + </p> + <p> The API and the expression language exploit Java-beans naming patterns through introspection to expose property getters and setters. - </p> - <p> + </p> + <p> JEXL attempts to bring some of the lessons learned by the Velocity community about expression languages in templating to a wider audience. - <a href="http://commons.apache.org/jelly">Commons Jelly needed</a> + <a href="http://commons.apache.org/jelly">Commons Jelly</a> needed Velocity-ish method access, it just had to have it. - </p> - <p> - It must be noted that JEXL is not a compatibile implementation of EL as defined + </p> + <p> + It must be noted that JEXL is <strong>not</strong> a compatible implementation of EL as defined in JSTL 1.1 (JSR-052) or JSP 2.0 (JSR-152). For a compatible implementation of - these specifications, see the <a href="http://commons.apache.org/el"> - Commons EL</a> project. - </p> - </section> + these specifications, see the <a href="http://commons.apache.org/el">Commons EL</a> project. + </p> + </section> - <section name="A Brief Example"> - <p> + <section name="A Brief Example"> + <p> When evaluating expressions, JEXL merges an - <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/Expression.html">Expression</a> + <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/Expression.html">Expression</a> with a - <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/JexlContext.html">JexlContext</a>. + <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/JexlContext.html">JexlContext</a>. An Expression is created using - <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/ExpressionFactory.html#createExpression(java.lang.String)">ExpressionFactory.createExpression()</a>, + <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/JexlEngine.html#createExpression(java.lang.String)">ExpressionFactory.createExpression()</a>, passing a String containing valid JEXL syntax. A JexlContext is created using - <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/JexlHelper.html#createContext()">JexlHelper.createContext()</a>, + <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/JexlHelper.html#createContext()">JexlHelper.createContext()</a>, and variables are put into a map exposed through the - <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/JexlContext.html#getVars()">getVars()</a> + <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/JexlContext.html#getVars()">getVars()</a> method on JexlContext. The following example, takes a variable named foo, and invokes the bar() method on the property innerFoo: - </p> + </p> - <source><![CDATA[ + <source><![CDATA[ // Create or retrieve a JexlEngine JexlEngine jexl = new JexlEngine(); // Create an expression object @@ -81,100 +111,91 @@ // Now evaluate the expression, getting the result Object o = e.evaluate(jc); - ]]></source> - </section> + ]]> + </source> + </section> - <section name="Extensions to JSTL Expression Language"> - <p> + <section name="Extensions to JSTL Expression Language"> + <p> While JEXL is similar to the expression language defined in JSTL, it has improved upon the syntax in a few areas: - </p> + </p> + <ul> + <li>Support for invocation of any accessible method (see example above).</li> + <li>A general <span class="literal">size()</span> method, which works on: + <ul> + <li><span class="literal">String</span> - returns length</li> + <li><span class="literal">Map</span> - returns number of keys</li> + <li><span class="literal">List</span> - returns number of elements.</li> + </ul> + </li> + <li>A general <span class="literal">empty()</span> method, which works on Collections and Strings.</li> + <li>A general <span class="literal">new()</span> method allowing to instantiate objects.</li> + <li>Support for the ternary operator 'a ? b : c' - and its GNU-C / "Elvis" variant 'a ?: c'.</li> + <li>Misc : '+' has been overloaded to be use as a String concatenation operator</li> + </ul> - <ul> - <li> - Support for invocation of any accessible method (see example above). - </li> - <li> - A general <span class="literal">size()</span> method, which works on: - <ul> - <li><span class="literal">String</span> - returns length</li> - <li><span class="literal">Map</span> - returns number of keys</li> - <li><span class="literal">List</span> - returns number of elements.</li> - </ul> - </li> - <li> - A general <span class="literal">empty()</span> method, which works on Collections and Strings. - </li> - <li> - A general <span class="literal">new()</span> method allowing to instantiate objects. - </li> - <li> - Support for the ternary operator 'a ? b : c' - and its GNU-C / "Elvis" variant 'a ?: c'. - </li> - <li> - Misc : '+' has been overloaded to be use as a String concatenation operator - </li> + </section> - </ul> - - </section> - - <section name="Releases"> - <p> + <section name="Releases"> + <p> The current released version is 2.0. See the <a href="releases.html">releases</a> page for information on obtaining releases. - </p> - </section> + </p> + </section> - <section name="Related Resources"> - <p> + <section name="Related Resources"> + <p> JEXL is not a product of the Java Community Process (JCP), but it provides a similar expression syntax. For more information about JSP 2.0 EL and JSTL 1.1 EL: - </p> - <ul> - <li> - <a href="http://java.sun.com/products/jsp/index.jsp">JSP 2.0</a> is covered + </p> + <ul> + <li> + <a href="http://java.sun.com/products/jsp/index.jsp">JSP 2.0</a> is covered by Java Specification Requests (JSR) - <a href="http://www.jcp.org/en/jsr/detail?id=152">JSR-152: JavaServer + <a href="http://www.jcp.org/en/jsr/detail?id=152">JSR-152: JavaServer Pages 2.0 Specification</a>. - </li> - <li> + </li> + <li> Apache has an implementation of the expression language for JSP 2.0, called <a href="http://commons.apache.org/el/index.html">EL</a> - </li> - <li> - <a href="http://java.sun.com/products/jsp/jstl/">JSTL 1.1</a> is covered - by <a href="http://jcp.org/en/jsr/detail?id=52">JSR 52: A Standard - Tag Library for JavaServer Pages</a>. See the - <a href="http://java.sun.com/products/jsp/jstl/1.1/docs/api/index.html">JSTL API</a>. - </li> + </li> + <li> + <a href="http://java.sun.com/products/jsp/jstl/">JSTL 1.1</a> is covered + by <a href="http://jcp.org/en/jsr/detail?id=52">JSR 52: A Standard + Tag Library for JavaServer Pages</a>. See the + <a href="http://java.sun.com/products/jsp/jstl/1.1/docs/api/index.html">JSTL API</a>. + </li> <li>Apache has a <a href="http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html">JSTL Implementation</a>.</li> - </ul> - <subsection name="Velocity"> - <p> - <a href="http://jakarta.apache.org/velocity">Jakarta Velocity</a> implements + </ul> + <subsection name="Velocity"> + <p> + <a href="http://jakarta.apache.org/velocity">Jakarta Velocity</a> implements a similar expression language. - </p> - <p> + </p> + <p> In particular the <a href="http://jakarta.apache.org/velocity/user-guide.html#References">References</a> section of the User Guide has some good information on properties and method which correlate directly to JEXL. - </p> - </subsection> - </section> - - <section name="Anyone Using It Yet?"> - <ul> - <li> - <a href="http://commons.apache.org/jelly">Jelly</a> - </li> - <li> - <a href="http://commons.apache.org/scxml">Commons SCXML</a> - </li> - </ul> - </section> + </p> + </subsection> + </section> + + <section name="Anyone Using It Yet?"> + <ul> + <li> + <a href="http://commons.apache.org/configuration">Commons Configuration</a> + </li> + <li> + <a href="http://commons.apache.org/scxml">Commons SCXML</a> + </li> + <li> + <a href="http://commons.apache.org/jelly">Jelly</a> + </li> + </ul> + </section> - </body> + </body> </document> Modified: commons/proper/jexl/trunk/xdocs/reference/examples.xml URL: http://svn.apache.org/viewvc/commons/proper/jexl/trunk/xdocs/reference/examples.xml?rev=881361&r1=881360&r2=881361&view=diff ============================================================================== --- commons/proper/jexl/trunk/xdocs/reference/examples.xml (original) +++ commons/proper/jexl/trunk/xdocs/reference/examples.xml Tue Nov 17 16:32:19 2009 @@ -18,7 +18,7 @@ <document> <properties> - <title>Commons JEXL 1.0 Examples</title> + <title>Commons JEXL Examples</title> </properties> <body> @@ -28,7 +28,6 @@ <ul> <li><a href="#Evaluating Expressions">Evaluating Expressions</a></li> <li><a href="#Custom Contexts">Custom Contexts</a></li> - <li><a href="#Custom Resolvers">Custom Resolvers</a></li> <li><a href="#Example Expressions">Example Expressions</a></li> </ul> </p> @@ -113,20 +112,6 @@ </source> </p> </section> - <section name="Custom Resolvers"> - <p> - JEXL allows you to add custom expression resolvers that will get called with before or after expression - evaluation. - </p> - <p> - If <a href="http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl/JexlExprResolver.html">pre-resolvers</a> - is added to an expression, any value it returns will be used instead of that normally provided by JEXL. If JEXL evaluates - an expression to <code>null</code> post-resolvers of an expression are called in turn in an attempt to get a value. - </p> - <p> - Expression resolvers are called in the order that they are added. - </p> - </section> <section name="Example Expressions"> <!-- invoking methods, property access, array access, empty, size etc... --> <subsection name="Arithmetic"> @@ -136,11 +121,11 @@ 12.0 - 5.2 6 * 12 + 5 / 2.6 12 % 2 -6 div 4 +6 / 4 -12 + 77.2 x * 1.1 + y </source> - <p>Arithmetic expressions can use variables. <code>null</code> is treated as a zero for arithmetic.</p> + <p>Arithmetic expressions can use variables. <code>null</code> can be treated as a zero for arithmetic.</p> </subsection> <subsection name="Calling methods"> <p> Modified: commons/proper/jexl/trunk/xdocs/releases.xml URL: http://svn.apache.org/viewvc/commons/proper/jexl/trunk/xdocs/releases.xml?rev=881361&r1=881360&r2=881361&view=diff ============================================================================== --- commons/proper/jexl/trunk/xdocs/releases.xml (original) +++ commons/proper/jexl/trunk/xdocs/releases.xml Tue Nov 17 16:32:19 2009 @@ -16,34 +16,33 @@ limitations under the License. --> <document> - <properties> - <title>Downloads</title> - </properties> - - <body> - <section name="Releases"> - - <p><strong>Latest Stable Release</strong></p> - <ul> - <li><a href="http://commons.apache.org/downloads/download_jexl.cgi">1.1 Binary/Source</a></li> - </ul> - - - <p><strong>Nightly Builds</strong></p> - <ul> - <li><a href="http://people.apache.org/builds/commons/nightly/commons-jexl/">Binary/Source</a></li> - </ul> - - <p> - <strong>Archived Releases</strong> - <br/> + <properties> + <title>Downloads</title> + </properties> + + <body> + <section name="Releases"> + <p><strong>Latest Stable Release</strong></p> + <ul> + <li> + <a href="http://commons.apache.org/downloads/download_jexl.cgi">2.0 Binary/Source</a> + </li> + </ul> + <p><strong>Nightly Builds</strong></p> + <ul> + <li> + <a href="http://people.apache.org/builds/commons/nightly/commons-jexl/">Binary/Source</a> + </li> + </ul> + <p> + <strong>Archived Releases</strong> + <br/> Older releases are retained by the Apache Software Foundation but are moved into a - <a href="http://archive.apache.org/dist/commons/jexl/"> - special archive area</a>. - </p> - - </section> - - </body> + <a href="http://archive.apache.org/dist/commons/jexl/"> + special archive area + </a>. + </p> + </section> + </body> </document>