jstrachan 02/02/13 09:03:10
Modified: jelly build.xml
jelly/src/java/org/apache/commons/jelly TagLibrary.java
jelly/src/java/org/apache/commons/jelly/expression/beanshell
BeanShellExpressionFactory.java
jelly/src/java/org/apache/commons/jelly/parser
XMLParser.java
jelly/src/java/org/apache/commons/jelly/tags/core
CoreTagLibrary.java
jelly/src/java/org/apache/commons/jelly/tags/xml
XMLTagLibrary.java
jelly/src/test/org/apache/commons/jelly testing123.jelly
jelly/src/test/org/apache/commons/jelly/beanshell
TestBeanShellEL.java
Added: jelly/src/test/org/apache/commons/jelly
show_properties.jelly
Log:
Modified the core tags so that the common tags expect an expression for their
attributes. Tags which do not explicitly expect an expression for their attribute
values can take {} around the expressions which will then be evaluated as an
expression. This is kinda similar to 'Attribute Value Templates' in XSLT. It certainly
makes common core tags look much simpler. Also added a sample script to output the
current system properties as a HTML table to show the general idea
Revision Changes Path
1.4 +9 -1 jakarta-commons-sandbox/jelly/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/jelly/build.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- build.xml 13 Feb 2002 16:00:39 -0000 1.3
+++ build.xml 13 Feb 2002 17:03:09 -0000 1.4
@@ -3,7 +3,7 @@
<!--
"Digester" component of the Jakarta Commons Subproject
- $Id: build.xml,v 1.3 2002/02/13 16:00:39 jstrachan Exp $
+ $Id: build.xml,v 1.4 2002/02/13 17:03:09 jstrachan Exp $
-->
@@ -299,6 +299,14 @@
<arg value="one"/>
<arg value="two"/>
<arg value="three"/>
+ </java>
+ </target>
+
+ <target name="demo.sysprop" depends="compile"
+ description="Runs demo which displays system properties">
+ <java classname="org.apache.commons.jelly.Jelly" fork="yes">
+ <classpath refid="test.classpath"/>
+ <arg value="src/test/org/apache/commons/jelly/show_properties.jelly"/>
</java>
</target>
1.2 +7 -6
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/TagLibrary.java
Index: TagLibrary.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/TagLibrary.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TagLibrary.java 11 Feb 2002 00:27:40 -0000 1.1
+++ TagLibrary.java 13 Feb 2002 17:03:09 -0000 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/TagLibrary.java,v
1.1 2002/02/11 00:27:40 jstrachan Exp $
- * $Revision: 1.1 $
- * $Date: 2002/02/11 00:27:40 $
+ * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/TagLibrary.java,v
1.2 2002/02/13 17:03:09 jstrachan Exp $
+ * $Revision: 1.2 $
+ * $Date: 2002/02/13 17:03:09 $
*
* ====================================================================
*
@@ -57,7 +57,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: TagLibrary.java,v 1.1 2002/02/11 00:27:40 jstrachan Exp $
+ * $Id: TagLibrary.java,v 1.2 2002/02/13 17:03:09 jstrachan Exp $
*/
package org.apache.commons.jelly;
@@ -66,6 +66,7 @@
import java.util.Map;
import org.apache.commons.jelly.expression.Expression;
+import org.apache.commons.jelly.expression.ExpressionFactory;
import org.apache.commons.jelly.impl.TagScript;
import org.xml.sax.Attributes;
@@ -73,7 +74,7 @@
/** <p><code>Taglib</code> represents the metadata for a Jelly custom tag
library.</p>
*
* @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public abstract class TagLibrary {
@@ -90,7 +91,7 @@
}
/** Allows taglibs to use their own expression evaluation mechanism */
- public Expression createExpression(String tagName, String attributeName, String
attributeValue) {
+ public Expression createExpression(ExpressionFactory factory, String tagName,
String attributeName, String attributeValue) throws Exception {
// will use the default expression instead
return null;
}
1.3 +6 -11
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/expression/beanshell/BeanShellExpressionFactory.java
Index: BeanShellExpressionFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/expression/beanshell/BeanShellExpressionFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BeanShellExpressionFactory.java 13 Feb 2002 16:00:39 -0000 1.2
+++ BeanShellExpressionFactory.java 13 Feb 2002 17:03:09 -0000 1.3
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/expression/beanshell/BeanShellExpressionFactory.java,v
1.2 2002/02/13 16:00:39 jstrachan Exp $
- * $Revision: 1.2 $
- * $Date: 2002/02/13 16:00:39 $
+ * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/expression/beanshell/BeanShellExpressionFactory.java,v
1.3 2002/02/13 17:03:09 jstrachan Exp $
+ * $Revision: 1.3 $
+ * $Date: 2002/02/13 17:03:09 $
*
* ====================================================================
*
@@ -57,7 +57,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: BeanShellExpressionFactory.java,v 1.2 2002/02/13 16:00:39 jstrachan Exp $
+ * $Id: BeanShellExpressionFactory.java,v 1.3 2002/02/13 17:03:09 jstrachan Exp $
*/
package org.apache.commons.jelly.expression.beanshell;
@@ -67,7 +67,7 @@
/** Represents a factory of <a href="http://www.beanshell.org">beanshell</a>
expressions
*
* @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class BeanShellExpressionFactory implements ExpressionFactory {
@@ -77,11 +77,6 @@
// ExpressionFactory interface
//-------------------------------------------------------------------------
public Expression createExpression(String text) throws Exception {
- int length = text.length();
- if ( length > 2 && text.charAt(0) == '{' && text.charAt( length - 1 ) ==
'}' ) {
- text = text.substring( 1, length - 1 );
- return new BeanShellExpression(text, interpreter);
- }
- return null;
+ return new BeanShellExpression(text, interpreter);
}
}
1.5 +14 -9
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/parser/XMLParser.java
Index: XMLParser.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/parser/XMLParser.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XMLParser.java 13 Feb 2002 16:00:39 -0000 1.4
+++ XMLParser.java 13 Feb 2002 17:03:09 -0000 1.5
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/parser/XMLParser.java,v
1.4 2002/02/13 16:00:39 jstrachan Exp $
- * $Revision: 1.4 $
- * $Date: 2002/02/13 16:00:39 $
+ * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/parser/XMLParser.java,v
1.5 2002/02/13 17:03:09 jstrachan Exp $
+ * $Revision: 1.5 $
+ * $Date: 2002/02/13 17:03:09 $
*
* ====================================================================
*
@@ -57,7 +57,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: XMLParser.java,v 1.4 2002/02/13 16:00:39 jstrachan Exp $
+ * $Id: XMLParser.java,v 1.5 2002/02/13 17:03:09 jstrachan Exp $
*/
package org.apache.commons.jelly.parser;
@@ -115,7 +115,7 @@
* The SAXParser and XMLReader portions of this code come from Digester.</p>
*
* @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
public class XMLParser extends DefaultHandler {
@@ -932,7 +932,7 @@
for ( int i = 0; i < size; i++ ) {
String attributeName = list.getLocalName(i);
String attributeValue = list.getValue(i);
- Expression expression = taglib.createExpression( localName,
attributeName, attributeValue );
+ Expression expression = taglib.createExpression(
getExpressionFactory(), localName, attributeName, attributeValue );
if ( expression == null ) {
expression = createExpression( localName, attributeName,
attributeValue );
}
@@ -954,9 +954,14 @@
}
protected Expression createExpression( String tagName, String attributeName,
String attributeValue ) throws Exception {
- Expression answer = getExpressionFactory().createExpression( attributeValue
);
- if ( answer != null ) {
- return answer;
+ String text = attributeValue;
+ int length = text.length();
+ if ( length > 2 && text.charAt(0) == '{' && text.charAt( length - 1 ) ==
'}' ) {
+ text = text.substring( 1, length - 1 );
+ Expression answer = getExpressionFactory().createExpression( text );
+ if ( answer != null ) {
+ return answer;
+ }
}
return new ConstantExpression( attributeValue );
}
1.2 +12 -3
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/core/CoreTagLibrary.java
Index: CoreTagLibrary.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/core/CoreTagLibrary.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CoreTagLibrary.java 12 Feb 2002 21:34:34 -0000 1.1
+++ CoreTagLibrary.java 13 Feb 2002 17:03:09 -0000 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/core/CoreTagLibrary.java,v
1.1 2002/02/12 21:34:34 jstrachan Exp $
- * $Revision: 1.1 $
- * $Date: 2002/02/12 21:34:34 $
+ * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/core/CoreTagLibrary.java,v
1.2 2002/02/13 17:03:09 jstrachan Exp $
+ * $Revision: 1.2 $
+ * $Date: 2002/02/13 17:03:09 $
*
* ====================================================================
*
@@ -57,7 +57,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: CoreTagLibrary.java,v 1.1 2002/02/12 21:34:34 jstrachan Exp $
+ * $Id: CoreTagLibrary.java,v 1.2 2002/02/13 17:03:09 jstrachan Exp $
*/
package org.apache.commons.jelly.tags.core;
@@ -70,12 +70,13 @@
import org.apache.commons.jelly.Script;
import org.apache.commons.jelly.TagLibrary;
import org.apache.commons.jelly.expression.Expression;
+import org.apache.commons.jelly.expression.ExpressionFactory;
/** Describes the Taglib. This class could be generated by XDoclet
*
* @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class CoreTagLibrary extends TagLibrary {
@@ -84,5 +85,13 @@
registerTag( "forEach", ForEachTag.class );
registerTag( "jelly", JellyTag.class );
registerTag( "set", SetTag.class );
+ }
+
+ public Expression createExpression(ExpressionFactory factory, String tagName,
String attributeName, String attributeValue) throws Exception {
+ if (attributeName.equals( "value" ) || attributeName.equals( "items" ) ||
attributeName.equals( "test" ) ) {
+ return factory.createExpression( attributeValue );
+ }
+ // will use the default expression instead
+ return null;
}
}
1.2 +7 -6
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/xml/XMLTagLibrary.java
Index: XMLTagLibrary.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/xml/XMLTagLibrary.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XMLTagLibrary.java 11 Feb 2002 00:27:41 -0000 1.1
+++ XMLTagLibrary.java 13 Feb 2002 17:03:09 -0000 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/xml/XMLTagLibrary.java,v
1.1 2002/02/11 00:27:41 jstrachan Exp $
- * $Revision: 1.1 $
- * $Date: 2002/02/11 00:27:41 $
+ * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/xml/XMLTagLibrary.java,v
1.2 2002/02/13 17:03:09 jstrachan Exp $
+ * $Revision: 1.2 $
+ * $Date: 2002/02/13 17:03:09 $
*
* ====================================================================
*
@@ -57,7 +57,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: XMLTagLibrary.java,v 1.1 2002/02/11 00:27:41 jstrachan Exp $
+ * $Id: XMLTagLibrary.java,v 1.2 2002/02/13 17:03:09 jstrachan Exp $
*/
package org.apache.commons.jelly.tags.xml;
@@ -70,6 +70,7 @@
import org.apache.commons.jelly.Script;
import org.apache.commons.jelly.TagLibrary;
import org.apache.commons.jelly.expression.Expression;
+import org.apache.commons.jelly.expression.ExpressionFactory;
import org.dom4j.XPath;
@@ -77,7 +78,7 @@
/** Describes the Taglib. This class could be generated by XDoclet
*
* @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class XMLTagLibrary extends TagLibrary {
@@ -88,7 +89,7 @@
registerTag( "set", SetTag.class );
}
- public Expression createExpression(String tagName, String attributeName, String
attributeValue) {
+ public Expression createExpression(ExpressionFactory factory, String tagName,
String attributeName, String attributeValue) {
if (attributeName.equals( "select" ) ) {
return new XPathExpression( attributeValue );
}
1.2 +1 -3
jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/testing123.jelly
Index: testing123.jelly
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/testing123.jelly,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- testing123.jelly 13 Feb 2002 16:00:39 -0000 1.1
+++ testing123.jelly 13 Feb 2002 17:03:09 -0000 1.2
@@ -1,6 +1,4 @@
<?xml version="1.0"?>
<j:jelly xmlns:j="jelly:core">
- <j:forEach var="arg" items="{args}">
- <j:expr value="{arg}"/>
- </j:forEach>
+ <j:forEach var="arg" items="args"><j:expr value="arg"/> </j:forEach>
</j:jelly>
1.1
jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/show_properties.jelly
Index: show_properties.jelly
===================================================================
<?xml version="1.0"?>
<j:jelly xmlns:j="jelly:core">
<html>
<body>
<h1>System properties</h1>
<table>
<tr>
<th>Name</th>
<th>Value</th>
</tr>
<j:forEach var="iter" items="System.getProperties()">
<tr>
<td><j:expr value="iter.key"/></td>
<td><j:expr value="iter.value"/></td>
</tr>
</j:forEach>
</table>
</body>
</html>
</j:jelly>
1.2 +7 -7
jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/beanshell/TestBeanShellEL.java
Index: TestBeanShellEL.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/beanshell/TestBeanShellEL.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestBeanShellEL.java 13 Feb 2002 16:00:39 -0000 1.1
+++ TestBeanShellEL.java 13 Feb 2002 17:03:09 -0000 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/beanshell/TestBeanShellEL.java,v
1.1 2002/02/13 16:00:39 jstrachan Exp $
- * $Revision: 1.1 $
- * $Date: 2002/02/13 16:00:39 $
+ * $Header:
/home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/beanshell/TestBeanShellEL.java,v
1.2 2002/02/13 17:03:09 jstrachan Exp $
+ * $Revision: 1.2 $
+ * $Date: 2002/02/13 17:03:09 $
*
* ====================================================================
*
@@ -57,7 +57,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
- * $Id: TestBeanShellEL.java,v 1.1 2002/02/13 16:00:39 jstrachan Exp $
+ * $Id: TestBeanShellEL.java,v 1.2 2002/02/13 17:03:09 jstrachan Exp $
*/
package org.apache.commons.jelly.beanshell;
@@ -78,7 +78,7 @@
/** Tests the BeanShell EL
*
* @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class TestBeanShellEL extends TestCase {
@@ -112,8 +112,8 @@
}
public void testEL() throws Exception {
- assertExpression( "{foo}", "abc" );
- assertExpression( "{bar * 2}", new Integer( 246 ) );
+ assertExpression( "foo", "abc" );
+ assertExpression( "bar * 2", new Integer( 246 ) );
}
/** Evaluates the given expression text and tests it against the expected value
*/
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>