Dear Benoit,

I second James comments posted earlier.
I'd also like to request the following:
- the VFS embedding sounds relatively smooth to me, I'd easily consider including it into Jelly... it's a hard one though since it's about jelly-core. - the properties enrichment is quite a radical change... and it's also about the core... so please bare with us to give us time to ponder that....

For both I would suggest the following:
- you split the patches and make sure they are minimal
- both features need to be thoroughly unit-tested... (with several protocols for VFS?)
- you post each of the patches as separate jira issues.
(and maybe you need to sign CLA, not sure).

paul

Benoit Callebaut wrote:
Hello,
This patch add 2 features :
 * Properties : Properties are something like variables but  are
intended to be used internally to modify the behavior of some tags.
Functionality of properties can be managed by variables but properties
avoid the problem of defining variables recognized internally by tags.

I use the properties to add custom extra pre and post processing for
tags. If a special property called "pre-content" is defined as a object
implementing the new "TagProcessor" interface, the classes "TagScript"
and "TextScript" will call the methods of the object before and after
processing the tag/text.
This is very handy to implements a Jelly debugger of a formatter on the
Jelly output.

I added a new tag to set them. It is called "attribute"

* support for VFS for the FileTag. I integrated the VFS library in the
"FileTag". This means that it is possible to use VFS supported file
systems as output targets. Per default, it will behave as the old
"FileTag" if no VFS file systems are configured.

This patch doesn't break any existing test. I wrote a test case for the
first modification.

I need those modifications for my library.
This library generates formatted source code and does rely on a file
system neutral approach.
Moreover, I don't want to modify existing jelly scripts and I don't want
to pipe the output of one jelly script to the input of another jelly
script for something like formatting

I will be able to give more test-case and feedback of the usefulness of
those modifications when my output library is developed.

Benoit
------------------------------------------------------------------------

Index: src/test/org/apache/commons/jelly/TestCoreTags.java
===================================================================
--- src/test/org/apache/commons/jelly/TestCoreTags.java (revision 356995)
+++ src/test/org/apache/commons/jelly/TestCoreTags.java (working copy)
@@ -32,7 +32,7 @@
 /** Tests the core tags
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
-  * @version $Revision$
+  * @version $Revision: 219726 $
   */
 public class TestCoreTags extends TestCase {
@@ -125,4 +125,28 @@
                 "<blip xmlns:blop=\"blop\" blop:x=\"blip\"></blip>",
                 text);
     }
+ + public void testProcessor() throws Exception{
+        InputStream in = new 
FileInputStream("src/test/org/apache/commons/jelly/test_processor.jelly");
+        XMLParser parser = new XMLParser();
+ ProcessorTest proc = new ProcessorTest(this,log); + Script script = parser.parse(in); + script = script.compile();
+        log.debug("Found: " + script);
+        assertTrue("Parsed a Script", script instanceof Script);
+        String[] args = { "one", "two", "three" };
+        JellyContext context = new JellyContext();
+        context.setVariable("proc",proc);
+        context.setVariable("args", args);
+        StringWriter buffer = new StringWriter();
+        script.run(context, XMLOutput.createXMLOutput(buffer));
+        String text = buffer.toString().trim();
+        if (log.isDebugEnabled()) {
+            log.debug("Evaluated script as...");
+            log.debug(text);
+ + }
+        log.info(text);
+        assertEquals("Produces the correct output", "{{{one}{ }}{{two}{ }}{{three}{ 
}}}", text);
+    }
 }
Index: src/java/org/apache/commons/jelly/tags/core/FileTag.java
===================================================================
--- src/java/org/apache/commons/jelly/tags/core/FileTag.java    (revision 
356995)
+++ src/java/org/apache/commons/jelly/tags/core/FileTag.java    (working copy)
@@ -16,6 +16,7 @@
 package org.apache.commons.jelly.tags.core;
import java.io.FileNotFoundException;
+import java.io.OutputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
@@ -23,6 +24,9 @@
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
+
+import org.apache.commons.logging.*;
+import org.apache.commons.vfs.*;
 import org.apache.commons.jelly.JellyTagException;
 import org.apache.commons.jelly.TagSupport;
 import org.apache.commons.jelly.XMLOutput;
@@ -35,8 +39,12 @@
 /**
  * A tag that pipes its body to a file denoted by the name attribute or to an 
in memory String
  * which is then output to a variable denoted by the var variable.
+ * + * It support apache VFS library. So you can write to other target than the local file system
+ * see <a href="jakarta.apache.org/commons/vfs/">VFS</a> for more infos
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Vinay Chandran</a>
+ * Modified by @author <a href="mailto:[EMAIL PROTECTED]">Benoit Callebaut</a>
  */
 public class FileTag extends TagSupport {
     private boolean doAppend = false;
@@ -46,8 +54,17 @@
     private String outputMode = "xml";
     private boolean prettyPrint;
     private String encoding;
+    private Log log = LogFactory.getLog(FileTag.class);
+ + private FileSystemManager manager;
+    private FileObject filebase;
public FileTag(){
+         try{
+            manager = VFS.getManager();
+        }catch (Exception e){
+            log.error(this, e);
+        }
     }
// Tag interface
@@ -55,8 +72,42 @@
     public void doTag(final XMLOutput output) throws JellyTagException {
         try {
             if ( name != null ) {
+                OutputStream out = null;
                 String encoding = (this.encoding != null) ? this.encoding : 
"UTF-8";
-                Writer writer = new OutputStreamWriter( new FileOutputStream( 
name, doAppend ), encoding );
+                Object obj = null;
+                obj = getContext().getProperty("VFSManager");
+                if ((obj == null) && (obj instanceof FileSystemManager)){
+                    manager = (FileSystemManager)obj;
+                }
+                if (manager == null){
+                    log.error("Manager not initialized. Falling back on old 
functionality");
+                    if ( name != null ) {
+                        out = new FileOutputStream( name, doAppend );
+                    }
+                }else{
+                    obj = getContext().getProperty("VFS-Base");
+                    if ((obj != null) && (obj instanceof FileObject)){
+                        filebase = (FileObject)obj;
+                    }else try{
+                        filebase = manager.resolveFile("file://"+new 
java.io.File("./").getAbsolutePath());
+                    }catch (Exception e){
+                        log.error("Cannot get file. Try tofallback on old 
functionality", e);
+                        out = new FileOutputStream( name, doAppend );
+                    }
+
+                    encoding = (this.encoding != null) ? this.encoding : 
"UTF-8";
+                    try{
+                        log.info(filebase.getName().toString());
+                        log.info(name);
+                        FileObject file = filebase.resolveFile(name);
+                        out = file.getContent().getOutputStream(doAppend);
+                    }catch (Exception e){
+                        log.error("Cannot get file. Try to fallback on old 
functionality", e);
+                        out = new FileOutputStream( name, doAppend );
+                    }
+                }
+ + Writer writer = new OutputStreamWriter(out, encoding);
                 writeBody(writer);
             }
             else if (var != null) {
Index: src/java/org/apache/commons/jelly/tags/core/CoreTagLibrary.java
===================================================================
--- src/java/org/apache/commons/jelly/tags/core/CoreTagLibrary.java     
(revision 356995)
+++ src/java/org/apache/commons/jelly/tags/core/CoreTagLibrary.java     
(working copy)
@@ -23,7 +23,7 @@
   * This class could be generated by XDoclet
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
-  * @version $Revision$
+  * @version $Revision: 155420 $
   */
 public class CoreTagLibrary extends TagLibrary {
@@ -68,6 +68,9 @@
         registerTag("useBean", UseBeanTag.class);
         registerTag("useList", UseListTag.class);
         registerTag("whitespace", WhitespaceTag.class);
+ + //extra tags
+        registerTag("attribute",AttributeTag.class);
     }
}
Index: src/java/org/apache/commons/jelly/impl/TagScript.java
===================================================================
--- src/java/org/apache/commons/jelly/impl/TagScript.java       (revision 
356995)
+++ src/java/org/apache/commons/jelly/impl/TagScript.java       (working copy)
@@ -56,7 +56,7 @@
  * concurrently by multiple threads.
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
- * @version $Revision$
+ * @version $Revision: 227285 $
  */
 public class TagScript implements Script {
@@ -211,6 +211,7 @@
             if ( tag == null ) {
                 return;
             }
+ tag.setContext(context);
             setContextURLs(context);
@@ -259,7 +260,24 @@
                 }
             }
+ Object pre_content = context.getProperty("pre-content");
+            if (pre_content != null){
+                if (pre_content instanceof 
org.apache.commons.jelly.tags.core.TagProcessor){
+                    
((org.apache.commons.jelly.tags.core.TagProcessor)pre_content).preprocessTag(tag,context,output);
+                }else{
+                    throw new JellyTagException("pre-content bad 
type"+pre_content.getClass().getCanonicalName());
+                }
+            }
+ tag.doTag(output); + + if (pre_content != null){
+                if (pre_content instanceof 
org.apache.commons.jelly.tags.core.TagProcessor){
+                    
((org.apache.commons.jelly.tags.core.TagProcessor)pre_content).postprocessTag(tag,context,output);
+                }else{
+                    throw new JellyTagException("pre-content bad 
type"+pre_content.getClass().getCanonicalName());
+                }
+ } if (output != null) {
                 output.flush();
             }
Index: src/java/org/apache/commons/jelly/impl/TextScript.java
===================================================================
--- src/java/org/apache/commons/jelly/impl/TextScript.java      (revision 
356995)
+++ src/java/org/apache/commons/jelly/impl/TextScript.java      (working copy)
@@ -20,15 +20,21 @@
 import org.apache.commons.jelly.Script;
 import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import org.xml.sax.SAXException;
/** <p><code>TextScript</code> outputs some static text.</p>
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
-  * @version $Revision$
+  * @version $Revision: 155420 $
   */
 public class TextScript implements Script {
+ /** The Log to which logging calls will be made. */
+    private static final Log log = LogFactory.getLog(TextScript.class);
+ /** the text output by this script */
     private String text;
@@ -101,6 +107,15 @@ /** Evaluates the body of a tag */
     public void run(JellyContext context, XMLOutput output) throws 
JellyTagException {
+        Object pre_content = context.getProperty("pre-content");
+
+        if (pre_content != null){
+            if (pre_content instanceof 
org.apache.commons.jelly.tags.core.TagProcessor){
+                
((org.apache.commons.jelly.tags.core.TagProcessor)pre_content).preprocessTag(text,context,output);
+            }else{
+                throw new JellyTagException("pre-content bad type 
"+pre_content.getClass().getCanonicalName());
+            }
+        }
         if ( text != null ) {
             try {
               output.write(text);
@@ -108,5 +123,12 @@
                 throw new JellyTagException("could not write to XMLOutput",e);
             }
         }
+        if (pre_content != null){
+            if (pre_content instanceof 
org.apache.commons.jelly.tags.core.TagProcessor){
+                
((org.apache.commons.jelly.tags.core.TagProcessor)pre_content).postprocessTag(text,context,output);
+            }else{
+                throw new JellyTagException("pre-content bad type 
"+pre_content.getClass().getCanonicalName());
+            }
+        }
     }
 }
Index: src/java/org/apache/commons/jelly/JellyContext.java
===================================================================
--- src/java/org/apache/commons/jelly/JellyContext.java (revision 356995)
+++ src/java/org/apache/commons/jelly/JellyContext.java (working copy)
@@ -36,7 +36,8 @@
   * <p><code>JellyContext</code> represents the Jelly context.</p>
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a>
-  * @version $Revision$
+  * @author <a href="mailto:[EMAIL PROTECTED]">Benoit Callebaut</a>
+  * @version $Revision: 227285 $
   */
 public class JellyContext {
@@ -77,6 +78,9 @@ /** synchronized access to the variables in scope */
     private Map variables = new Hashtable();
+ + /** synchronized access to the properties */
+    private Hashtable properties = new Hashtable();
/** The parent context */
     private JellyContext parent;
@@ -133,6 +137,7 @@
         this.rootURL = parent.rootURL;
         this.currentURL = parent.currentURL;
         this.variables.put("parentScope", parent.variables);
+        this.properties.putAll(parent.getProperties());
         this.cacheTags = parent.cacheTags;
         init();
     }
@@ -262,6 +267,22 @@
         return null;
     }
+ public Hashtable getProperties(){
+        return properties;
+    }
+ + public Object setProperty(String name, Object value){
+        return properties.put(name,value);
+    }
+ + public Object getProperty(String name){
+        try{
+            return properties.get(name);
+        }catch (Exception e){
+            return null;
+        }
+    }
+
     /**
      * @return the value of the given variable name in the given variable scope
      * @param name is the name of the variable
@@ -367,6 +388,7 @@
         newVariables.put("parentScope", variables);
         JellyContext answer = createChildContext();
         answer.setVariables(newVariables);
+        answer.getProperties().putAll(properties);
         return answer;
     }
Index: parent-project.xml
===================================================================
--- parent-project.xml  (revision 356995)
+++ parent-project.xml  (working copy)
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   Copyright 2002,2004 The Apache Software Foundation.
@@ -13,78 +14,69 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-
 <project>
-  <!-- TODO: should this inherit commons-build? -->
-  <artifactId>commons-jelly-parent</artifactId>
-  <groupId>commons-jelly</groupId>
-
-  <dependencies>
- <!-- + <!-- TODO: should this inherit commons-build? -->
+    <artifactId>commons-jelly-parent</artifactId>
+    <groupId>commons-jelly</groupId>
+    <dependencies>
+ <!-- the common Maven dependencies for Jelly shared by the core
       build and all individual taglib builds.  Use this
       file to keep all dependency versions in sync.
       Does not include CLI (Command Line Interface).
     -->
- - <dependency>
-      <groupId>commons-jexl</groupId>
-      <artifactId>commons-jexl</artifactId>
-      <version>1.0</version>
-    </dependency>
- - <dependency>
-      <groupId>xml-apis</groupId>
-      <artifactId>xml-apis</artifactId>
-      <version>1.0.b2</version>
-    </dependency>
- - <dependency>
-      <groupId>commons-beanutils</groupId>
-      <artifactId>commons-beanutils</artifactId>
-      <version>1.6</version>
-      <properties>
-        <gump.runtime>true</gump.runtime>
-      </properties>
-    </dependency>
- - <dependency>
-      <groupId>commons-collections</groupId>
-      <artifactId>commons-collections</artifactId>
-      <version>2.1</version>
-      <properties>
-        <gump.runtime>true</gump.runtime>
-      </properties>
-    </dependency>
- - <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-      <version>1.0.3</version>
-      <properties>
-        <gump.runtime>true</gump.runtime>
-      </properties>
-    </dependency>
- - <dependency>
-      <groupId>dom4j</groupId>
-      <artifactId>dom4j</artifactId>
-      <version>1.5.2</version>
-    </dependency>
-
-    <dependency>
-      <groupId>jaxen</groupId>
-      <artifactId>jaxen</artifactId>
-      <version>1.1-beta-4</version>
-    </dependency>
-
-    <dependency>
-      <groupId>xerces</groupId>
-      <artifactId>xerces</artifactId>
-      <version>2.2.1</version>
-      <properties>
-        <gump.project>xml-xerces</gump.project>
-      </properties>
-    </dependency>
-  </dependencies>
+        <dependency>
+            <groupId>commons-jexl</groupId>
+            <artifactId>commons-jexl</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+            <version>1.0.b2</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-beanutils</groupId>
+            <artifactId>commons-beanutils</artifactId>
+            <version>1.6</version>
+            <properties>
+                <gump.runtime>true</gump.runtime>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-collections</groupId>
+            <artifactId>commons-collections</artifactId>
+            <version>2.1</version>
+            <properties>
+                <gump.runtime>true</gump.runtime>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.0.3</version>
+            <properties>
+                <gump.runtime>true</gump.runtime>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>dom4j</groupId>
+            <artifactId>dom4j</artifactId>
+            <version>1.5.2</version>
+        </dependency>
+        <dependency>
+            <groupId>jaxen</groupId>
+            <artifactId>jaxen</artifactId>
+            <version>1.1-beta-4</version>
+        </dependency>
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xerces</artifactId>
+            <version>2.2.1</version>
+            <properties>
+                <gump.project>xml-xerces</gump.project>
+            </properties>
+        </dependency>
+    </dependencies>
 </project>
+
Index: project.xml
===================================================================
--- project.xml (revision 356995)
+++ project.xml (working copy)
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
   Copyright 2002,2004 The Apache Software Foundation.
@@ -15,415 +14,392 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-
 <project>
-  <extend>parent-project.xml</extend>
-  <pomVersion>3</pomVersion>
-  <name>commons-jelly</name>
-  <artifactId>commons-jelly</artifactId>
-  <currentVersion>1.1-SNAPSHOT</currentVersion>
-  <organization>
-    <name>Apache Software Foundation</name>
-    <url>http://jakarta.apache.org</url>
-    <logo>http://jakarta.apache.org/images/original-jakarta-logo.gif</logo>
-  </organization>
-  <logo>/images/logo.jpg</logo>
-  <gumpRepositoryId>jakarta</gumpRepositoryId>
-  <inceptionYear>2002</inceptionYear>
-  <package>org.apache.commons.jelly</package>
-  <packageGroups>
-    <packageGroup>
-      <title>Core Public API</title>
-      <packages>org.apache.commons.jelly</packages>
-    </packageGroup>
-    <packageGroup>
-      <title>Utility classes for using Jelly from Ant</title>
-      <packages>org.apache.commons.jelly.task</packages>
-    </packageGroup>
-    <packageGroup>
-      <title>Utility classes for using Jelly from Servlets</title>
-      <packages>org.apache.commons.jelly.servlet</packages>
-    </packageGroup>
-    <packageGroup>
-      <title>Classes used by Tag Implementors</title>
-      
<packages>org.apache.commons.jelly.impl,org.apache.commons.jelly.tags,org.apache.commons.jelly.expression</packages>
-    </packageGroup>
-    <packageGroup>
-      <title>Tag Implementations</title>
-      <packages>org.apache.commons.jelly.tags.*</packages>
-    </packageGroup>
-  </packageGroups>
-  <shortDescription>Commons Jelly</shortDescription>
-  <description>Jelly is a Java and XML based scripting engine. Jelly combines the 
best ideas from JSTL, Velocity, DVSL, Ant and Cocoon all together in a simple yet powerful 
scripting engine.</description>
-  <url>http://jakarta.apache.org/commons/jelly/</url>
-  
<issueTrackingUrl>http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10012</issueTrackingUrl>
-  <siteAddress>cvs.apache.org</siteAddress>
-  
<siteDirectory>/www/jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</siteDirectory>
-  <distributionSite>cvs.apache.org</distributionSite>
-  
<distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId.substring(8)}/</distributionDirectory>
-  <repository>
-    
<connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/jelly/trunk</connection>
-    
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/jakarta/commons/proper/jelly/trunk</developerConnection>
-    
<url>http://svn.apache.org/viewcvs.cgi/jakarta/commons/proper/jelly/trunk</url>
-  </repository>
-  <mailingLists>
-    <mailingList>
-      <name>Commons Dev List</name>
-      <subscribe>[EMAIL PROTECTED]</subscribe>
-      <unsubscribe>[EMAIL PROTECTED]</unsubscribe>
-      <archive>http://mail-archives.apache.org/eyebrowse/[EMAIL 
PROTECTED]</archive>
-    </mailingList>
-    <mailingList>
-      <name>Commons User List</name>
-      <subscribe>[EMAIL PROTECTED]</subscribe>
-      <unsubscribe>[EMAIL PROTECTED]</unsubscribe>
-      <archive>http://mail-archives.apache.org/eyebrowse/[EMAIL 
PROTECTED]</archive>
-    </mailingList>
-  </mailingLists>
-  <versions>
-    <version>
-      <id>1.0-beta-1</id>
-      <name>1.0-beta-1</name>
-      <tag>1.0-beta-1</tag>
-    </version>
-    <version>
-      <id>1.0-beta-4</id>
-      <name>1.0-beta-4</name>
-      <tag>COMMONS-JELLY-1_0-beta-4</tag>
-    </version>
-    <version>
-      <id>1.0-RC1</id>
-      <name>1.0-RC1</name>
-      <tag>COMMONS_JELLY-1_0_RC1</tag>
-    </version>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>commons-jelly-1.0</tag>
-    </version>
-  </versions>
-  <branches/>
-  <developers>
-    <developer>
-      <name>James Strachan</name>
-      <id>jstrachan</id>
-      <email>[EMAIL PROTECTED]</email>
-      <organization>SpiritSoft, Inc.</organization>
-    </developer>
-    <developer>
-      <name>Geir Magnusson Jr.</name>
-      <id>geirm</id>
-      <email>[EMAIL PROTECTED]</email>
-      <organization>Adeptra, Inc.</organization>
-    </developer>
-    <developer>
-      <name>Bob McWhirter</name>
-      <id>werken</id>
-      <email>[EMAIL PROTECTED]</email>
-      <organization>The Werken Company</organization>
-    </developer>
-    <developer>
-      <name>dIon Gillard</name>
-      <id>dion</id>
-      <email>[EMAIL PROTECTED]</email>
-      <organization>Multitask Consulting</organization>
-      <roles>
-        <role>Interested party</role>
-      </roles>
-    </developer>
-    <developer>
-      <name>Morgan Delagrange</name>
-      <id>morgand</id>
-      <email>[EMAIL PROTECTED]</email>
-    </developer>
-    <developer>
-      <name>Rodney Waldhoff</name>
-      <id>rwaldhoff</id>
-      <email>[EMAIL PROTECTED]</email>
-    </developer>
-    <developer>
-      <name>Peter Royal</name>
-      <id>proyal</id>
-      <email>[EMAIL PROTECTED]</email>
-    </developer>
-    <developer>
-      <name>Martin van den Bemt</name>
-      <id>mvdb</id>
-      <email>[EMAIL PROTECTED]</email>
-    </developer>
-    <developer>
-      <name>Paul Libbrecht</name>
-      <id>polx</id>
-      <email>[EMAIL PROTECTED]</email>
-    </developer>
-    <developer>
-      <name>Robert Burrell Donkin</name>
-      <id>rdonkin</id>
-      <email>[EMAIL PROTECTED]</email>
-    </developer>
-    <developer>
-      <name>Daniel F. Savarese</name>
-      <id>dfs</id>
-      <email>dfs -&gt; apache.org</email>
-    </developer>
-    <developer>
-      <name>Brett Porter</name>
-      <id>brett</id>
-      <email>[EMAIL PROTECTED]</email>
-    </developer>
-    <developer>
-      <name>Hans Gilde</name>
-      <id>hgilde</id>
-      <email>[EMAIL PROTECTED]</email>
-    </developer>
-  </developers>
-  <contributors>
-    <contributor>
-      <name>Erik Fransen</name>
-      <email>[EMAIL PROTECTED]</email>
-      <roles>
-        <role>Logo designer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Calvin Yu</name>
-    </contributor>
-    <contributor>
-      <name>Stephen Haberman</name>
-      <email>[EMAIL PROTECTED]</email>
-    </contributor>
-    <contributor>
-      <name>Vinay Chandran</name>
-      <email>[EMAIL PROTECTED]</email>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Theo Niemeijer</name>
-    </contributor>
-    <contributor>
-      <name>Joe Walnes</name>
-      <email>[EMAIL PROTECTED]</email>
-      <organization>ThoughtWorks, Inc.</organization>
-      <roles>
-        <role>Inventor of Mock Tags</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Otto von Wachter</name>
-      <email>[EMAIL PROTECTED]</email>
-      <organization/>
-      <roles>
-        <role>Author of the tutorials</role>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Robert Leftwich</name>
-      <email>[EMAIL PROTECTED]</email>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Jim Birchfield</name>
-      <email>[EMAIL PROTECTED]</email>
-      <organization>Genscape, Inc.</organization>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Jason Horman</name>
-      <email>[EMAIL PROTECTED]</email>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Tim Anderson</name>
-      <email>[EMAIL PROTECTED]</email>
-      <organization>Intalio, Inc.</organization>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Theo Niemeijer</name>
-      <email>[EMAIL PROTECTED]</email>
-      <organization/>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>J. Matthew Pryor</name>
-      <email>[EMAIL PROTECTED]</email>
-      <organization/>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Knut Wannheden</name>
-      <email/>
-      <organization/>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Kelvin Tan</name>
-      <email/>
-      <organization/>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Todd Jonker</name>
-      <email/>
-      <organization/>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Christiaan ten Klooster</name>
-      <email/>
-      <organization/>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-    <contributor>
-      <name>Pete Kazmier</name>
-      <email>[EMAIL PROTECTED]</email>
-      <organization/>
-      <roles>
-        <role>Developer</role>
-      </roles>
-    </contributor>
-  </contributors>
-  <dependencies>
-    <!-- for servlet support -->
-
-    <dependency>
-      <groupId>servletapi</groupId>
-      <artifactId>servletapi</artifactId>
-      <version>2.3</version>
-      <properties>
-        <gump.project>jakarta-servletapi-5-servlet</gump.project>
-      </properties>
-    </dependency>
-    <!-- for command line interface support -->
-
-    <dependency>
-      <groupId>commons-cli</groupId>
-      <artifactId>commons-cli</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <!-- this is brought in by the commons-cli dependency -->
-
-    <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-      <version>2.0</version>
-      <properties>
-        <gump.runtime>true</gump.runtime>
-      </properties>
-    </dependency>
-    <dependency>
-      <groupId>commons-discovery</groupId>
-      <artifactId>commons-discovery</artifactId>
-      <version>20030211.213356</version>
-    </dependency>
-    <!-- for the jelly startup scripts -->
-
-    <dependency>
-      <groupId>forehead</groupId>
-      <artifactId>forehead</artifactId>
-      <version>1.0-beta-5</version>
-      <url>http://forehead.werken.com/</url>
-    </dependency>
-    <!-- for the jstl interfaces -->
-
-    <dependency>
-      <groupId>jstl</groupId>
-      <artifactId>jstl</artifactId>
-      <version>1.0.6</version>
-      
<url>http://jakarta.apache.org/taglibs/doc/standard-1.0-doc/intro.html</url>
-      <properties>
-        <gump.project>jakarta-taglibs-standard</gump.project>
-        <gump.id>jstl</gump.id>
-      </properties>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.1</version>
-      <url>http://junit.org</url>
-    </dependency>
-  </dependencies>
-  <build>
-    <nagEmailAddress>commons-dev@jakarta.apache.org</nagEmailAddress>
-    <sourceDirectory>${basedir}/src/java</sourceDirectory>
-    <resources>
-      <resource>
-        <directory>${basedir}</directory>
-        <targetPath>META-INF</targetPath>
-        <includes>
-          <include>NOTICE.txt</include>
-        </includes>
-      </resource>
-      <resource>
-        <directory>${basedir}/src/java</directory>
-        <includes>
-          <include>**/*.properties</include>
-        </includes>
-      </resource>
-    </resources>
-    <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>
-    <!-- Unit test classes -->
-
-    <unitTest>
-      <includes>
-        <include>**/Test*.java</include>
-      </includes>
-      <excludes>
-        <exclude>**/TestCoreMemoryLeak.java</exclude>
-      </excludes>
-      <resources>
-        <resource>
-          <directory>src/test</directory>
-          <includes>
-            <include>META-INF/services/*</include>
-            <include>**/*.jelly</include>
-            <include>**/*.xml</include>
-            <include>**/*.xsl</include>
-            <include>**/*.rng</include>
-            <include>**/*.dtd</include>
-            <include>**/*.properties</include>
-            <include>**/*.html</include>
-          </includes>
-        </resource>
-      </resources>
-    </unitTest>
-  </build>
-  <reports>
-    <report>maven-changelog-plugin</report>
-    <report>maven-changes-plugin</report>
-    <report>maven-checkstyle-plugin</report>
-    <report>maven-developer-activity-plugin</report>
-    <report>maven-file-activity-plugin</report>
-    <report>maven-javadoc-plugin</report>
-    <report>maven-jcoverage-plugin</report>
-    <report>maven-jdepend-plugin</report>
-    <report>maven-junit-report-plugin</report>
-    <report>maven-jxr-plugin</report>
-    <report>maven-license-plugin</report>
-    <report>maven-pmd-plugin</report>
-    <report>maven-tasklist-plugin</report>
-  </reports>
+ <extend>parent-project.xml</extend>
+ <pomVersion>3</pomVersion>
+ <name>commons-jelly</name>
+ <artifactId>commons-jelly</artifactId>
+ <currentVersion>1.1-SNAPSHOT</currentVersion>
+ <organization>
+  <name>Apache Software Foundation</name>
+  <url>http://jakarta.apache.org</url>
+  <logo>http://jakarta.apache.org/images/original-jakarta-logo.gif</logo>
+ </organization>
+ <logo>/images/logo.jpg</logo>
+ <gumpRepositoryId>jakarta</gumpRepositoryId>
+ <inceptionYear>2002</inceptionYear>
+ <package>org.apache.commons.jelly</package>
+ <packageGroups>
+  <packageGroup>
+   <title>Core Public API</title>
+   <packages>org.apache.commons.jelly</packages>
+  </packageGroup>
+  <packageGroup>
+   <title>Utility classes for using Jelly from Ant</title>
+   <packages>org.apache.commons.jelly.task</packages>
+  </packageGroup>
+  <packageGroup>
+   <title>Utility classes for using Jelly from Servlets</title>
+   <packages>org.apache.commons.jelly.servlet</packages>
+  </packageGroup>
+  <packageGroup>
+   <title>Classes used by Tag Implementors</title>
+   
<packages>org.apache.commons.jelly.impl,org.apache.commons.jelly.tags,org.apache.commons.jelly.expression</packages>
+  </packageGroup>
+  <packageGroup>
+   <title>Tag Implementations</title>
+   <packages>org.apache.commons.jelly.tags.*</packages>
+  </packageGroup>
+ </packageGroups>
+ <shortDescription>Commons Jelly</shortDescription>
+ <description>Jelly is a Java and XML based scripting engine. Jelly combines the 
best ideas from JSTL, Velocity, DVSL, Ant and Cocoon all together in a simple yet powerful 
scripting engine.</description>
+ <url>http://jakarta.apache.org/commons/jelly/</url>
+ 
<issueTrackingUrl>http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10012</issueTrackingUrl>
+ <siteAddress>cvs.apache.org</siteAddress>
+ 
<siteDirectory>/www/jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</siteDirectory>
+ <distributionSite>cvs.apache.org</distributionSite>
+ 
<distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId.substring(8)}/</distributionDirectory>
+ <repository>
+  
<connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/jelly/trunk</connection>
+  
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/jakarta/commons/proper/jelly/trunk</developerConnection>
+  
<url>http://svn.apache.org/viewcvs.cgi/jakarta/commons/proper/jelly/trunk</url>
+ </repository>
+ <mailingLists>
+  <mailingList>
+   <name>Commons Dev List</name>
+   <subscribe>[EMAIL PROTECTED]</subscribe>
+   <unsubscribe>[EMAIL PROTECTED]</unsubscribe>
+   <archive>http://mail-archives.apache.org/eyebrowse/[EMAIL 
PROTECTED]</archive>
+  </mailingList>
+  <mailingList>
+   <name>Commons User List</name>
+   <subscribe>[EMAIL PROTECTED]</subscribe>
+   <unsubscribe>[EMAIL PROTECTED]</unsubscribe>
+   <archive>http://mail-archives.apache.org/eyebrowse/[EMAIL 
PROTECTED]</archive>
+  </mailingList>
+ </mailingLists>
+ <versions>
+  <version>
+   <id>1.0-beta-1</id>
+   <name>1.0-beta-1</name>
+   <tag>1.0-beta-1</tag>
+  </version>
+  <version>
+   <id>1.0-beta-4</id>
+   <name>1.0-beta-4</name>
+   <tag>COMMONS-JELLY-1_0-beta-4</tag>
+  </version>
+  <version>
+   <id>1.0-RC1</id>
+   <name>1.0-RC1</name>
+   <tag>COMMONS_JELLY-1_0_RC1</tag>
+  </version>
+  <version>
+   <id>1.0</id>
+   <name>1.0</name>
+   <tag>commons-jelly-1.0</tag>
+  </version>
+ </versions>
+ <developers>
+  <developer>
+   <name>James Strachan</name>
+   <id>jstrachan</id>
+   <email>[EMAIL PROTECTED]</email>
+   <organization>SpiritSoft, Inc.</organization>
+  </developer>
+  <developer>
+   <name>Geir Magnusson Jr.</name>
+   <id>geirm</id>
+   <email>[EMAIL PROTECTED]</email>
+   <organization>Adeptra, Inc.</organization>
+  </developer>
+  <developer>
+   <name>Bob McWhirter</name>
+   <id>werken</id>
+   <email>[EMAIL PROTECTED]</email>
+   <organization>The Werken Company</organization>
+  </developer>
+  <developer>
+   <name>dIon Gillard</name>
+   <id>dion</id>
+   <email>[EMAIL PROTECTED]</email>
+   <organization>Multitask Consulting</organization>
+   <roles>
+    <role>Interested party</role>
+   </roles>
+  </developer>
+  <developer>
+   <name>Morgan Delagrange</name>
+   <id>morgand</id>
+   <email>[EMAIL PROTECTED]</email>
+  </developer>
+  <developer>
+   <name>Rodney Waldhoff</name>
+   <id>rwaldhoff</id>
+   <email>[EMAIL PROTECTED]</email>
+  </developer>
+  <developer>
+   <name>Peter Royal</name>
+   <id>proyal</id>
+   <email>[EMAIL PROTECTED]</email>
+  </developer>
+  <developer>
+   <name>Martin van den Bemt</name>
+   <id>mvdb</id>
+   <email>[EMAIL PROTECTED]</email>
+  </developer>
+  <developer>
+   <name>Paul Libbrecht</name>
+   <id>polx</id>
+   <email>[EMAIL PROTECTED]</email>
+  </developer>
+  <developer>
+   <name>Robert Burrell Donkin</name>
+   <id>rdonkin</id>
+   <email>[EMAIL PROTECTED]</email>
+  </developer>
+  <developer>
+   <name>Daniel F. Savarese</name>
+   <id>dfs</id>
+   <email>dfs -&gt; apache.org</email>
+  </developer>
+  <developer>
+   <name>Brett Porter</name>
+   <id>brett</id>
+   <email>[EMAIL PROTECTED]</email>
+  </developer>
+  <developer>
+   <name>Hans Gilde</name>
+   <id>hgilde</id>
+   <email>[EMAIL PROTECTED]</email>
+  </developer>
+ </developers>
+ <contributors>
+  <contributor>
+   <name>Erik Fransen</name>
+   <email>[EMAIL PROTECTED]</email>
+   <roles>
+    <role>Logo designer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Calvin Yu</name>
+  </contributor>
+  <contributor>
+   <name>Stephen Haberman</name>
+   <email>[EMAIL PROTECTED]</email>
+  </contributor>
+  <contributor>
+   <name>Vinay Chandran</name>
+   <email>[EMAIL PROTECTED]</email>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Joe Walnes</name>
+   <email>[EMAIL PROTECTED]</email>
+   <organization>ThoughtWorks, Inc.</organization>
+   <roles>
+    <role>Inventor of Mock Tags</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Otto von Wachter</name>
+   <email>[EMAIL PROTECTED]</email>
+   <roles>
+    <role>Author of the tutorials</role>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Robert Leftwich</name>
+   <email>[EMAIL PROTECTED]</email>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Jim Birchfield</name>
+   <email>[EMAIL PROTECTED]</email>
+   <organization>Genscape, Inc.</organization>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Jason Horman</name>
+   <email>[EMAIL PROTECTED]</email>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Tim Anderson</name>
+   <email>[EMAIL PROTECTED]</email>
+   <organization>Intalio, Inc.</organization>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>J. Matthew Pryor</name>
+   <email>[EMAIL PROTECTED]</email>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Knut Wannheden</name>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Kelvin Tan</name>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Todd Jonker</name>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Christiaan ten Klooster</name>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+  <contributor>
+   <name>Pete Kazmier</name>
+   <email>[EMAIL PROTECTED]</email>
+   <roles>
+    <role>Developer</role>
+   </roles>
+  </contributor>
+ </contributors>
+ <dependencies>
+  <!-- for servlet support -->
+  <dependency>
+   <groupId>servletapi</groupId>
+   <artifactId>servletapi</artifactId>
+   <version>2.3</version>
+   <properties>
+    <gump.project>jakarta-servletapi-5-servlet</gump.project>
+   </properties>
+  </dependency>
+  <!-- for command line interface support -->
+  <dependency>
+   <groupId>commons-cli</groupId>
+   <artifactId>commons-cli</artifactId>
+   <version>1.0</version>
+  </dependency>
+  <!-- this is brought in by the commons-cli dependency -->
+  <dependency>
+   <groupId>commons-lang</groupId>
+   <artifactId>commons-lang</artifactId>
+   <version>2.0</version>
+   <properties>
+    <gump.runtime>true</gump.runtime>
+   </properties>
+  </dependency>
+  <dependency>
+   <groupId>commons-discovery</groupId>
+   <artifactId>commons-discovery</artifactId>
+   <version>20030211.213356</version>
+  </dependency>
+  <!-- for the jelly startup scripts -->
+  <dependency>
+   <groupId>forehead</groupId>
+   <artifactId>forehead</artifactId>
+   <version>1.0-beta-5</version>
+   <url>http://forehead.werken.com/</url>
+  </dependency>
+  <!-- for the jstl interfaces -->
+  <dependency>
+   <groupId>jstl</groupId>
+   <artifactId>jstl</artifactId>
+   <version>1.0.6</version>
+   <url>http://jakarta.apache.org/taglibs/doc/standard-1.0-doc/intro.html</url>
+   <properties>
+    <gump.project>jakarta-taglibs-standard</gump.project>
+    <gump.id>jstl</gump.id>
+   </properties>
+  </dependency>
+  <dependency>
+   <groupId>junit</groupId>
+   <artifactId>junit</artifactId>
+   <version>3.8.1</version>
+   <url>http://junit.org</url>
+  </dependency>
+  <dependency>
+   <groupId>commons-vfs</groupId>
+   <artifactId>commons-vfs</artifactId>
+   <version>20050307052300</version>
+   <type>jar</type>
+  </dependency>
+ </dependencies>
+ <build>
+  <nagEmailAddress>commons-dev@jakarta.apache.org</nagEmailAddress>
+  <sourceDirectory>${basedir}/src/java</sourceDirectory>
+  <resources>
+   <resource>
+    <directory>${basedir}</directory>
+    <targetPath>META-INF</targetPath>
+    <includes>
+     <include>NOTICE.txt</include>
+    </includes>
+   </resource>
+   <resource>
+    <directory>${basedir}/src/java</directory>
+    <includes>
+     <include>**/*.properties</include>
+    </includes>
+   </resource>
+  </resources>
+  <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>
+  <!-- Unit test classes -->
+  <unitTest>
+   <includes>
+    <include>**/Test*.java</include>
+   </includes>
+   <excludes>
+    <exclude>**/TestCoreMemoryLeak.java</exclude>
+   </excludes>
+   <resources>
+    <resource>
+     <directory>src/test</directory>
+     <includes>
+      <include>META-INF/services/*</include>
+      <include>**/*.jelly</include>
+      <include>**/*.xml</include>
+      <include>**/*.xsl</include>
+      <include>**/*.rng</include>
+      <include>**/*.dtd</include>
+      <include>**/*.properties</include>
+      <include>**/*.html</include>
+     </includes>
+    </resource>
+   </resources>
+  </unitTest>
+ </build>
+ <reports>
+  <report>maven-changelog-plugin</report>
+  <report>maven-changes-plugin</report>
+  <report>maven-checkstyle-plugin</report>
+  <report>maven-developer-activity-plugin</report>
+  <report>maven-file-activity-plugin</report>
+  <report>maven-javadoc-plugin</report>
+  <report>maven-jcoverage-plugin</report>
+  <report>maven-jdepend-plugin</report>
+  <report>maven-junit-report-plugin</report>
+  <report>maven-jxr-plugin</report>
+  <report>maven-license-plugin</report>
+  <report>maven-pmd-plugin</report>
+  <report>maven-tasklist-plugin</report>
+ </reports>
 </project>
+

------------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to