commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Libbrecht <p...@activemath.org>
Subject Re: [PATCH][Jelly] new features : properties & VFS integration
Date Mon, 19 Dec 2005 09:14:25 GMT
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:jstrachan@apache.org">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:vinayc@apache.org">Vinay Chandran</a>
> + * Modified by @author <a href="mailto:benoit.callebaut@gmail.com">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:jstrachan@apache.org">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:jstrachan@apache.org">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:jstrachan@apache.org">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:jstrachan@apache.org">James Strachan</a>
> -  * @version $Revision$
> +  * @author <a href="mailto:benoit.callebaut@gmail.com">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>commons-dev-subscribe@jakarta.apache.org</subscribe>
> -      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>
> -      <archive>http://mail-archives.apache.org/eyebrowse/SummarizeList?listName=commons-dev@jakarta.apache.org</archive>
> -    </mailingList>
> -    <mailingList>
> -      <name>Commons User List</name>
> -      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>
> -      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>
> -      <archive>http://mail-archives.apache.org/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</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>jstrachan@apache.org</email>
> -      <organization>SpiritSoft, Inc.</organization>
> -    </developer>
> -    <developer>
> -      <name>Geir Magnusson Jr.</name>
> -      <id>geirm</id>
> -      <email>geirm@adeptra.com</email>
> -      <organization>Adeptra, Inc.</organization>
> -    </developer>
> -    <developer>
> -      <name>Bob McWhirter</name>
> -      <id>werken</id>
> -      <email>bob@eng.werken.com</email>
> -      <organization>The Werken Company</organization>
> -    </developer>
> -    <developer>
> -      <name>dIon Gillard</name>
> -      <id>dion</id>
> -      <email>dion@multitask.com.au</email>
> -      <organization>Multitask Consulting</organization>
> -      <roles>
> -        <role>Interested party</role>
> -      </roles>
> -    </developer>
> -    <developer>
> -      <name>Morgan Delagrange</name>
> -      <id>morgand</id>
> -      <email>morgand@apache.org</email>
> -    </developer>
> -    <developer>
> -      <name>Rodney Waldhoff</name>
> -      <id>rwaldhoff</id>
> -      <email>rwaldhoff@apache.org</email>
> -    </developer>
> -    <developer>
> -      <name>Peter Royal</name>
> -      <id>proyal</id>
> -      <email>proyal@apache.org</email>
> -    </developer>
> -    <developer>
> -      <name>Martin van den Bemt</name>
> -      <id>mvdb</id>
> -      <email>martin@mvdb.net</email>
> -    </developer>
> -    <developer>
> -      <name>Paul Libbrecht</name>
> -      <id>polx</id>
> -      <email>paul@activemath.org</email>
> -    </developer>
> -    <developer>
> -      <name>Robert Burrell Donkin</name>
> -      <id>rdonkin</id>
> -      <email>rdonkin@apache.org</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>brett@apache.org</email>
> -    </developer>
> -    <developer>
> -      <name>Hans Gilde</name>
> -      <id>hgilde</id>
> -      <email>hgilde@apache.org</email>
> -    </developer>
> -  </developers>
> -  <contributors>
> -    <contributor>
> -      <name>Erik Fransen</name>
> -      <email>erik167@xs4all.nl</email>
> -      <roles>
> -        <role>Logo designer</role>
> -      </roles>
> -    </contributor>
> -    <contributor>
> -      <name>Calvin Yu</name>
> -    </contributor>
> -    <contributor>
> -      <name>Stephen Haberman</name>
> -      <email>stephenh@chase3000.com</email>
> -    </contributor>
> -    <contributor>
> -      <name>Vinay Chandran</name>
> -      <email>sahilvinay@yahoo.com</email>
> -      <roles>
> -        <role>Developer</role>
> -      </roles>
> -    </contributor>
> -    <contributor>
> -      <name>Theo Niemeijer</name>
> -    </contributor>
> -    <contributor>
> -      <name>Joe Walnes</name>
> -      <email>joew@thoughtworks.com</email>
> -      <organization>ThoughtWorks, Inc.</organization>
> -      <roles>
> -        <role>Inventor of Mock Tags</role>
> -      </roles>
> -    </contributor>
> -    <contributor>
> -      <name>Otto von Wachter</name>
> -      <email>vonwao@yahoo.com</email>
> -      <organization/>
> -      <roles>
> -        <role>Author of the tutorials</role>
> -        <role>Developer</role>
> -      </roles>
> -    </contributor>
> -    <contributor>
> -      <name>Robert Leftwich</name>
> -      <email>robert@leftwich.info</email>
> -      <roles>
> -        <role>Developer</role>
> -      </roles>
> -    </contributor>
> -    <contributor>
> -      <name>Jim Birchfield</name>
> -      <email>jim.birchfield@genscape.com</email>
> -      <organization>Genscape, Inc.</organization>
> -      <roles>
> -        <role>Developer</role>
> -      </roles>
> -    </contributor>
> -    <contributor>
> -      <name>Jason Horman</name>
> -      <email>jhorman@musicmatch.com</email>
> -      <roles>
> -        <role>Developer</role>
> -      </roles>
> -    </contributor>
> -    <contributor>
> -      <name>Tim Anderson</name>
> -      <email>tima@intalio.com</email>
> -      <organization>Intalio, Inc.</organization>
> -      <roles>
> -        <role>Developer</role>
> -      </roles>
> -    </contributor>
> -    <contributor>
> -      <name>Theo Niemeijer</name>
> -      <email>theo.niemeijer@getthere.nl</email>
> -      <organization/>
> -      <roles>
> -        <role>Developer</role>
> -      </roles>
> -    </contributor>
> -    <contributor>
> -      <name>J. Matthew Pryor</name>
> -      <email>matthew_pryor@versata.com</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>kaz@apache.org</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>commons-dev-subscribe@jakarta.apache.org</subscribe>
> +   <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>
> +   <archive>http://mail-archives.apache.org/eyebrowse/SummarizeList?listName=commons-dev@jakarta.apache.org</archive>
> +  </mailingList>
> +  <mailingList>
> +   <name>Commons User List</name>
> +   <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>
> +   <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>
> +   <archive>http://mail-archives.apache.org/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</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>jstrachan@apache.org</email>
> +   <organization>SpiritSoft, Inc.</organization>
> +  </developer>
> +  <developer>
> +   <name>Geir Magnusson Jr.</name>
> +   <id>geirm</id>
> +   <email>geirm@adeptra.com</email>
> +   <organization>Adeptra, Inc.</organization>
> +  </developer>
> +  <developer>
> +   <name>Bob McWhirter</name>
> +   <id>werken</id>
> +   <email>bob@eng.werken.com</email>
> +   <organization>The Werken Company</organization>
> +  </developer>
> +  <developer>
> +   <name>dIon Gillard</name>
> +   <id>dion</id>
> +   <email>dion@multitask.com.au</email>
> +   <organization>Multitask Consulting</organization>
> +   <roles>
> +    <role>Interested party</role>
> +   </roles>
> +  </developer>
> +  <developer>
> +   <name>Morgan Delagrange</name>
> +   <id>morgand</id>
> +   <email>morgand@apache.org</email>
> +  </developer>
> +  <developer>
> +   <name>Rodney Waldhoff</name>
> +   <id>rwaldhoff</id>
> +   <email>rwaldhoff@apache.org</email>
> +  </developer>
> +  <developer>
> +   <name>Peter Royal</name>
> +   <id>proyal</id>
> +   <email>proyal@apache.org</email>
> +  </developer>
> +  <developer>
> +   <name>Martin van den Bemt</name>
> +   <id>mvdb</id>
> +   <email>martin@mvdb.net</email>
> +  </developer>
> +  <developer>
> +   <name>Paul Libbrecht</name>
> +   <id>polx</id>
> +   <email>paul@activemath.org</email>
> +  </developer>
> +  <developer>
> +   <name>Robert Burrell Donkin</name>
> +   <id>rdonkin</id>
> +   <email>rdonkin@apache.org</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>brett@apache.org</email>
> +  </developer>
> +  <developer>
> +   <name>Hans Gilde</name>
> +   <id>hgilde</id>
> +   <email>hgilde@apache.org</email>
> +  </developer>
> + </developers>
> + <contributors>
> +  <contributor>
> +   <name>Erik Fransen</name>
> +   <email>erik167@xs4all.nl</email>
> +   <roles>
> +    <role>Logo designer</role>
> +   </roles>
> +  </contributor>
> +  <contributor>
> +   <name>Calvin Yu</name>
> +  </contributor>
> +  <contributor>
> +   <name>Stephen Haberman</name>
> +   <email>stephenh@chase3000.com</email>
> +  </contributor>
> +  <contributor>
> +   <name>Vinay Chandran</name>
> +   <email>sahilvinay@yahoo.com</email>
> +   <roles>
> +    <role>Developer</role>
> +   </roles>
> +  </contributor>
> +  <contributor>
> +   <name>Joe Walnes</name>
> +   <email>joew@thoughtworks.com</email>
> +   <organization>ThoughtWorks, Inc.</organization>
> +   <roles>
> +    <role>Inventor of Mock Tags</role>
> +   </roles>
> +  </contributor>
> +  <contributor>
> +   <name>Otto von Wachter</name>
> +   <email>vonwao@yahoo.com</email>
> +   <roles>
> +    <role>Author of the tutorials</role>
> +    <role>Developer</role>
> +   </roles>
> +  </contributor>
> +  <contributor>
> +   <name>Robert Leftwich</name>
> +   <email>robert@leftwich.info</email>
> +   <roles>
> +    <role>Developer</role>
> +   </roles>
> +  </contributor>
> +  <contributor>
> +   <name>Jim Birchfield</name>
> +   <email>jim.birchfield@genscape.com</email>
> +   <organization>Genscape, Inc.</organization>
> +   <roles>
> +    <role>Developer</role>
> +   </roles>
> +  </contributor>
> +  <contributor>
> +   <name>Jason Horman</name>
> +   <email>jhorman@musicmatch.com</email>
> +   <roles>
> +    <role>Developer</role>
> +   </roles>
> +  </contributor>
> +  <contributor>
> +   <name>Tim Anderson</name>
> +   <email>tima@intalio.com</email>
> +   <organization>Intalio, Inc.</organization>
> +   <roles>
> +    <role>Developer</role>
> +   </roles>
> +  </contributor>
> +  <contributor>
> +   <name>J. Matthew Pryor</name>
> +   <email>matthew_pryor@versata.com</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>kaz@apache.org</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: commons-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-dev-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message