This commit was manufactured by cvs2svn to create branch 'ASF'.

git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/jelly/branches/ASF@136437 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/.classpath b/.classpath
deleted file mode 100644
index 4d7dc0c..0000000
--- a/.classpath
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<classpath>
-  <classpathentry excluding="" kind="src" path="src\java"/>
-  <classpathentry output="target\test-classes" kind="src" path="src\test"/>
-  <classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="MAVEN_REPO/commons-jexl/jars/commons-jexl-1.0.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/xml-apis/jars/xml-apis-1.0.b2.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/commons-beanutils/jars/commons-beanutils-1.7.0.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/commons-collections/jars/commons-collections-2.1.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/commons-logging/jars/commons-logging-1.0.3.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/dom4j/jars/dom4j-1.5.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/jaxen/jars/jaxen-1.1-beta-2.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/xerces/jars/xerces-2.2.1.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/servletapi/jars/servletapi-2.3.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/commons-cli/jars/commons-cli-1.0.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/commons-lang/jars/commons-lang-2.0.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/commons-discovery/jars/commons-discovery-20030211.213356.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/forehead/jars/forehead-1.0-beta-5.jar"/>
-  <classpathentry kind="var" path="MAVEN_REPO/jstl/jars/jstl-1.0.6.jar"/>
-  <classpathentry kind="output" path="target\classes"/>
-</classpath>
\ No newline at end of file
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index ee265bb..0000000
--- a/.cvsignore
+++ /dev/null
@@ -1,12 +0,0 @@
-build.properties
-demopage.html
-dist
-jcoverage.ser
-jms
-junit*.properties
-lib
-snapshot.bat
-target
-tmp
-*.log
-*.gz
diff --git a/.project b/.project
deleted file mode 100644
index 2fd94e1..0000000
--- a/.project
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<projectDescription>
-  <name>commons-jelly</name>
-  <comment>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.</comment>
-  <projects>
-  </projects>
-  <buildSpec>
-    <buildCommand>
-      <name>org.eclipse.jdt.core.javabuilder</name>
-      <arguments>
-      </arguments>
-    </buildCommand>
-  </buildSpec>
-  <natures>
-    <nature>org.eclipse.jdt.core.javanature</nature>
-  </natures>
-</projectDescription>
\ No newline at end of file
diff --git a/KEYS b/KEYS
deleted file mode 100644
index cd3b307..0000000
--- a/KEYS
+++ /dev/null
@@ -1,40 +0,0 @@
-This file contains the PGP keys of various developers.
-Please don't use them for email unless you have to. Their main
-purpose is code signing.
-
-Users: pgp < KEYS
-Developers: 
-	pgp -kxa <your name> and append it to this file.
-	(pgpk -ll <your name> && pgpk -xa <your name>) >> this file.
-        (gpg --list-sigs <your name>
-             && gpg --armor --export <your name>) >> this file.
-    Use gpg --armour --detach-sign --default-key=YOURNAME FILE
-
-pub  1024D/6883C846 2004-08-03 Dion Gillard <dion@apache.org>
-sig 3       6883C846 2004-08-03   Dion Gillard <dion@apache.org>
-sub  1024g/32E95995 2004-08-03
-sig         6883C846 2004-08-03   Dion Gillard <dion@apache.org>
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.2.4 (Cygwin)
-
-mQGiBEEPHzkRBACqqH+A9BFBQ3/NSOfj0Ds/8QXqG7D66lVxrvazWRpjh25Ov7Z0
-36t4JN2gk/vMl8UCC+vpysUwofWJLzDOWIpYuA5ogTZRny315DbnTsHsdbkkOQ9y
-ESkhcQZifAMC2lrLTMilqy53YKd+RabLoj7WEaFXj59u3+Bx8Xf9iNOPYwCgzM++
-pE3aFZMFi+SLzHFtJk55/VkD/AxIbLKouwjCuYflQSovPgmHJhP2pnVJMa1UgXv9
-PYnpjrBBfkxDVUxEu74xZN7Ap/wssYrE5K7NMGv+PT3cutobOXVPpg3/zecm48Xb
-Y7b+Cvsk1PtsmntT2VGpLXnKUhGy6Ewrzi/Wuix4Z/zalwIyvb231wXsQc67gGQo
-DQQoA/9nbqYlVBbde4/ELRuxMOVXghkw17guzSZXs+0je0oOnHTACG5x4RIwh0CV
-sy0gn6D6BSV/ECMRw7R96QrdQnqOExjBUdenoIkmTD/phWKoqangifRtRflQ86gm
-V60zORF7h40gOs1+Pygo8TmkarQ+j5fgNf/0Heo8aNsh+0REerQeRGlvbiBHaWxs
-YXJkIDxkaW9uQGFwYWNoZS5vcmc+iF4EExECAB4FAkEPHzkCGwMGCwkIBwMCAxUC
-AwMWAgECHgECF4AACgkQqAM/2WiDyEbUAgCgu5e9P9oDJEbO9r7lw5Sqa9HBw70A
-nRuIZtgEKTQ4Z1Tpb10eI6k/IXx8uQENBEEPHz4QBADuu3MH0oB2sGRGhXEDa3EZ
-BdHljp4aFTSZK6MAMAliy7eRTSJcORbHr2x6Q0wFNBd6r+TSntWG5NWrhwcxCmQR
-H3hlbZsD7SY1OqClht/XSv/tiRDQ+oAVTVLqThE3bkcUYeoVHzgfqT86i1NmGcny
-IJj5r8yBA1sVDyp42ADiYwADBQP+Nq8InUWlienKgexPDFAuXXPr9lg6iUMRpEqe
-bpqSDhpeDTvkmvq1xaUT9Yt+FDX7db/1d1i3fJTIX7dydo/2Vw70f7UODNvWMtQT
-veaEXchXiH3y62w8nY3ZogMGjKH5DDXqev2SelDSvGcXEWsGZxPvuwh0cGuahyCi
-gYpWKa6ISQQYEQIACQUCQQ8fPgIbDAAKCRCoAz/ZaIPIRltTAJ4hZeSWTyds0CJd
-EN9z66UpdcZa+wCgyTaygSUChtQxApENteggXBYXm+4=
-=ShJX
------END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/NOTICE.txt b/NOTICE.txt
deleted file mode 100644
index 3f59805..0000000
--- a/NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 502f04c..0000000
--- a/README.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
-Jelly
-=====
-
-The primary build tool for this project is Maven. 
-So all you should need to do is install Maven and just type
-
-	maven
-
-Some common maven goals for building and testing this project are
-
-	clean    : cleans up the build so new builds will start from fresh
-	test     : just run the unit tests
-	jar      : compiles, runs unit tests and if they work build the jar
-	javadoc  : creates the javadoc
-	site     : build the complete documentation with reports, javadoc etc
-	dist     : creates a distribution
-
-
-Jelly contains a number of individual tag libraries which can be built 
-by themselves by changing to the directory jelly-tags/foo and performing the
-above commands to build the library you're interested in.
-
-			
-For more help using Maven please go to
-
-  http://maven.apache.org
-
-Maven also supports the auto-generation of Ant build files so
-you may also be able to use Ant to build the code.
-
-Enjoy!
diff --git a/build.properties.sample b/build.properties.sample
deleted file mode 100644
index 3fae0db..0000000
--- a/build.properties.sample
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# S A M P L E  B U I L D  P R O P E R T I E S
-# -------------------------------------------------------------------
-
-# Those using
-#maven.username=rdonkin
-#apache.cvs=lserver:rdonkin@cvs.apache.org:/home/cvs
\ No newline at end of file
diff --git a/build.xml b/build.xml
deleted file mode 100644
index 753c97e..0000000
--- a/build.xml
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-beta-5-SNAPSHOT
-  on date October 18 2004, time 1622-->
-
-<project default="jar" name="commons-jelly" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-1.0-beta-5-SNAPSHOT">
-  </property>
-  <path id="build.classpath">
-    <fileset dir="${libdir}">
-      <include name="**/*.jar">
-      </include>
-    </fileset>
-  </path>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-    <!--Test if JUNIT is present in ANT classpath-->
-
-    <available property="Junit.present" classname="junit.framework.Test">
-    </available>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath refid="build.classpath">
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="${defaulttargetdir}/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" if="Junit.present" depends="junit-present,compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <path refid="build.classpath">
-        </path>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="junit-present" unless="Junit.present" depends="init">
-    <echo>================================= WARNING ================================</echo>
-    <echo>Junit isn't present in your ${ANT_HOME}/lib directory. Tests not executed.</echo>
-    <echo>==========================================================================</echo>
-  </target>
-  <target name="compile-tests" if="Junit.present" depends="junit-present,compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <path refid="build.classpath">
-        </path>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="META-INF/services/*">
-        </include>
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="get-deps">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly 1.0-beta-5-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.*">
-      <classpath>
-        <path refid="build.classpath">
-        </path>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <!--Proxy settings works only with a JDK 1.2 and higher.-->
-
-    <setproxy>
-    </setproxy>
-    <get dest="${libdir}/commons-jexl-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-1.0.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.7.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.7.0.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/servletapi-2.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/servletapi/jars/servletapi-2.3.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-1.0.jar">
-    </get>
-    <get dest="${libdir}/commons-lang-2.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-lang/jars/commons-lang-2.0.jar">
-    </get>
-    <get dest="${libdir}/commons-discovery-20030211.213356.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-discovery/jars/commons-discovery-20030211.213356.jar">
-    </get>
-    <get dest="${libdir}/forehead-1.0-beta-5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/forehead/jars/forehead-1.0-beta-5.jar">
-    </get>
-    <get dest="${libdir}/jstl-1.0.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jstl/jars/jstl-1.0.6.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/.cvsignore b/jelly-tags/.cvsignore
deleted file mode 100644
index 5d21c88..0000000
--- a/jelly-tags/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-target
-maven.log
diff --git a/jelly-tags/ant/.cvsignore b/jelly-tags/ant/.cvsignore
deleted file mode 100644
index aa9b084..0000000
--- a/jelly-tags/ant/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-maven.log
-target
-velocity.log
-lib
diff --git a/jelly-tags/ant/build.xml b/jelly-tags/ant/build.xml
deleted file mode 100644
index c80c70f..0000000
--- a/jelly-tags/ant/build.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-ant" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-ant-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" filtertrace="false" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-ant 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.ant.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.1.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.1.jar">
-    </get>
-    <get dest="${libdir}/commons-grant-1.0-beta-4.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-grant/jars/commons-grant-1.0-beta-4.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-util-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-util-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/ant/maven.xml b/jelly-tags/ant/maven.xml
deleted file mode 100644
index ddb82cc..0000000
--- a/jelly-tags/ant/maven.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-    <!-- demos -->
-  <goal name="demo:fileset" prereqs="create-classpath"
-        description="A demo of the fileScanner tag to walk Ant fileSets">
-
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/ant/filescanner.jelly"/>
-    </java>
-  </goal>
-
-
-  <goal name="demo:antjar" prereqs="create-classpath"
-    description="Runs a sample which creates a jar using the Ant tag library">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/ant/example_jar.jelly"/>
-    </java>
-  </goal>
-
-</project>
diff --git a/jelly-tags/ant/project.properties b/jelly-tags/ant/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/ant/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/ant/project.xml b/jelly-tags/ant/project.xml
deleted file mode 100644
index b119350..0000000
--- a/jelly-tags/ant/project.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <!--
-    BRITTLE! must include ${basedir} location or Maven will
-    not run this script outside of the base directory
-  -->
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-ant</id>
-  <name>commons-jelly-tags-ant</name>
-  <currentVersion>1.1-SNAPSHOT</currentVersion>
-  <package>org.apache.commons.jelly.tags.ant</package>
-
-  <description>
-      This is a Jelly interface for Ant.
-  </description>
-  <shortDescription>Commons Jelly Ant Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_ANT-1_0</tag>
-    </version>
-  </versions>
-
-  <!-- <siteDirectory>/www/jakarta.apache.org/commons/jelly/tags/ant</siteDirectory>
-  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/jelly/tags/ant</distributionDirectory>
-  <repository>
-    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/jelly/jelly-tags/ant/</connection>
-    <url>http://cvs.apache.org/viewcvs/jakarta-commons/jelly/jelly-tags/ant/</url>
-  </repository>
-  -->
-    
-  <dependencies>
-  
-    <!-- START for compilation -->
-  
-    <dependency>
-      <id>ant</id>
-      <version>1.5.3-1</version>
-    </dependency>
-    
-    <dependency>
-      <id>ant+optional</id>
-      <version>1.5.3-1</version>
-      <properties>
-        <gump.project>ant</gump.project>
-      </properties>
-    </dependency>
-    
-    <dependency>
-      <id>commons-grant</id>
-      <version>1.0-beta-4</version>
-    </dependency>
-    
-    <!-- END for compilation -->
-
-    <!-- START for testing -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/libs/junit/</url>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-util</artifactId>
-      <version>1.1.1</version>
-    </dependency>
-
-    <!-- END for testing -->
-
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-        
-    <!-- END for running demos -->
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/AntTag.java b/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/AntTag.java
deleted file mode 100644
index 035d97b..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/AntTag.java
+++ /dev/null
@@ -1,548 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.ant;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.beanutils.MethodUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MapTagSupport;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.impl.BeanSource;
-import org.apache.commons.jelly.impl.StaticTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.IntrospectionHelper;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.TaskAdapter;
-import org.apache.tools.ant.TaskContainer;
-import org.apache.tools.ant.types.DataType;
-
-/**
- * Tag supporting ant's Tasks as well as
- * dynamic runtime behaviour for 'unknown' tags.
- *
- * @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- */
-public class AntTag extends MapTagSupport implements TaskSource {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(AntTag.class);
-
-    private static final Class[] addTaskParamTypes = { String.class };
-
-    /** store the name of the manifest tag for special handling */
-    private static final String ANT_MANIFEST_TAG = "manifest";
-
-    /** The name of this tag. */
-    protected String tagName;
-
-    /** The general object underlying this tag. */
-    protected Object object;
-
-    /** Task, if this tag represents a task. */
-    protected Task task;
-
-
-    /** Construct with a project and tag name.
-     *
-     *  @param tagName The name on the tag.
-     */
-    public AntTag(String tagName) {
-        this.tagName = tagName;
-    }
-
-    public String toString() {
-        return "[AntTag: name=" + getTagName() + "]";
-    }
-
-    // TaskSource interface
-    //-------------------------------------------------------------------------
-
-    /** Retrieve the general object underlying this tag.
-     *
-     *  @return The object underlying this tag.
-     */
-    public Object getTaskObject() {
-        return this.object;
-    }
-
-    /**
-     * Allows nested tags to set a property on the task object of this tag
-     */
-    public void setTaskProperty(String name, Object value) throws JellyTagException {
-        Object object = getTaskObject();
-        if ( object != null ) {
-            setBeanProperty( object, name, value );
-        }
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        Project project = getAntProject();
-        String tagName = getTagName();
-        Object parentObject = findBeanAncestor();
-        Object parentTask = findParentTaskObject();
-
-        // lets assume that Task instances are not nested inside other Task instances
-        // for example <manifest> inside a <jar> should be a nested object, where as
-        // if the parent is not a Task the <manifest> should create a ManifestTask
-        //
-        // also its possible to have a root Ant tag which isn't a task, such as when
-        // defining <fileset id="...">...</fileset>
-
-        Object nested = null;
-        if (parentObject != null && !( parentTask instanceof TaskContainer) ) {
-            nested = createNestedObject( parentObject, tagName );
-        }
-
-        if (nested == null) {
-            task = createTask( tagName );
-
-            if (task != null) {
-
-                if ( log.isDebugEnabled() ) {
-                    log.debug( "Creating an ant Task for name: " + tagName );
-                }
-
-                // the following algorithm follows the lifetime of a tag
-                // http://jakarta.apache.org/ant/manual/develop.html#writingowntask
-                // kindly recommended by Stefan Bodewig
-
-                // create and set its project reference
-                if ( task instanceof TaskAdapter ) {
-                    setObject( ((TaskAdapter)task).getProxy() );
-                }
-                else {
-                    setObject( task );
-                }
-
-                // set the task ID if one is given
-                Object id = getAttributes().remove( "id" );
-                if ( id != null ) {
-                    project.addReference( (String) id, task );
-                }
-
-                // ### we might want to spoof a Target setting here
-
-                // now lets initialize
-                task.init();
-
-                // now lets invoke the body to call all the createXXX() or addXXX() methods
-                String body = getBodyText();
-
-                // now lets set any attributes of this tag...
-                setBeanProperties();
-
-                // now lets set the addText() of the body content, if its applicaable
-                Method method = MethodUtils.getAccessibleMethod( task.getClass(),
-                                                                 "addText",
-                                                                 addTaskParamTypes );
-                if (method != null) {
-                    Object[] args = { body };
-                    try {
-                        method.invoke(this.task, args);
-                    }
-                    catch (IllegalAccessException e) {
-                        throw new JellyTagException(e);
-                    }
-                    catch (InvocationTargetException e) {
-                        throw new JellyTagException(e);
-                    }
-                }
-
-                // now lets set all the attributes of the child elements
-                // XXXX: to do!
-
-                // now we're ready to invoke the task
-                // XXX: should we call execute() or perform()?
-                task.perform();
-            }
-        }
-
-        if (task == null) {
-
-            if (nested == null) {
-
-                if ( log.isDebugEnabled() ) {
-                    log.debug( "Trying to create a data type for tag: " + tagName );
-                }
-                nested = createDataType( tagName );
-            }
-            else {
-                if ( log.isDebugEnabled() ) {
-                    log.debug( "Created nested property tag: " + tagName );
-                }
-            }
-
-            if ( nested != null ) {
-                setObject( nested );
-
-                // set the task ID if one is given
-                Object id = getAttributes().remove( "id" );
-                if ( id != null ) {
-                    project.addReference( (String) id, nested );
-                }
-
-                // TODO: work out why we always set the name attribute.
-                // See JELLY-105.
-//                try{
-//                    PropertyUtils.setProperty( nested, "name", tagName );
-//                }
-//                catch (Exception e) {
-//                    log.warn( "Caught exception setting nested name: " + tagName, e );
-//                }
-
-                // now lets invoke the body
-                String body = getBodyText();
-
-                // now lets set any attributes of this tag...
-                setBeanProperties();
-
-                // now lets add it to its parent
-                if ( parentObject != null ) {
-                    IntrospectionHelper ih = IntrospectionHelper.getHelper( parentObject.getClass() );
-                    try {
-                        if (log.isDebugEnabled()) {
-                            log.debug("About to set the: " + tagName
-                                + " property on: " + parentObject + " to value: "
-                                + nested + " with type: " + nested.getClass()
-                            );
-                        }
-
-                        ih.storeElement( project, parentObject, nested, tagName.toLowerCase() );
-                    }
-                    catch (Exception e) {
-                        log.warn( "Caught exception setting nested: " + tagName, e );
-                    }
-
-                    // now try to set the property for good measure
-                    // as the storeElement() method does not
-                    // seem to call any setter methods of non-String types
-                    try {
-                        BeanUtils.setProperty( parentObject, tagName, nested );
-                    }
-                    catch (Exception e) {
-                        log.debug("Caught exception trying to set property: " + tagName + " on: " + parentObject);
-                    }
-                }
-            }
-            else {
-                log.warn("Could not convert tag: " + tagName + " into an Ant task, data type or property");
-
-                // lets treat this tag as static XML...
-                StaticTag tag = new StaticTag("", tagName, tagName);
-                tag.setParent( getParent() );
-                tag.setBody( getBody() );
-
-                tag.setContext(context);
-
-                for (Iterator iter = getAttributes().entrySet().iterator(); iter.hasNext();) {
-                    Map.Entry entry = (Map.Entry) iter.next();
-                    String name = (String) entry.getKey();
-                    Object value = entry.getValue();
-
-                    tag.setAttribute(name, value);
-                }
-
-                tag.doTag(output);
-            }
-        }
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public String getTagName() {
-        return this.tagName;
-    }
-
-    /** Set the object underlying this tag.
-     *
-     *  @param object The object.
-     */
-    public void setObject(Object object) {
-        this.object = object;
-    }
-
-    public Project getAntProject() {
-        Project project = AntTagLibrary.getProject(context);
-        if (project == null) {
-            throw new NullPointerException("No Ant Project object is available");
-        }
-        return project;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the properties on the Ant task
-     */
-    public void setBeanProperties() throws JellyTagException {
-        Object object = getTaskObject();
-        if ( object != null ) {
-            Map map = getAttributes();
-            for ( Iterator iter = map.entrySet().iterator(); iter.hasNext(); ) {
-                Map.Entry entry = (Map.Entry) iter.next();
-                String name = (String) entry.getKey();
-                Object value = entry.getValue();
-                setBeanProperty( object, name, value );
-            }
-        }
-    }
-
-    public void setAttribute(String name, Object value) {
-        if ( value == null ) {
-            // should we send in null?
-            super.setAttribute( name, "" );
-        }
-        else {
-            if ( value instanceof Expression )
-            {
-                super.setAttribute( name, ((Expression) value).evaluateRecurse(context) );
-            }
-            else
-            {
-                super.setAttribute( name, value.toString() );
-            }
-        }
-    }
-
-    public void setBeanProperty(Object object, String name, Object value) throws JellyTagException {
-        if ( log.isDebugEnabled() ) {
-            log.debug( "Setting bean property on: "+  object + " name: " + name + " value: " + value );
-        }
-
-        IntrospectionHelper ih = IntrospectionHelper.getHelper( object.getClass() );
-
-        if ( value instanceof String ) {
-            try {
-                ih.setAttribute( getAntProject(), object, name.toLowerCase(), (String) value );
-                return;
-            }
-            catch (Exception e) {
-                // ignore: not a valid property
-            }
-        }
-
-        try {
-
-            ih.storeElement( getAntProject(), object, value, name );
-        }
-        catch (Exception e) {
-
-            try {
-                // let any exceptions bubble up from here
-                BeanUtils.setProperty( object, name, value );
-            }
-            catch (IllegalAccessException ex) {
-                throw new JellyTagException(ex);
-            }
-            catch (InvocationTargetException ex) {
-                throw new JellyTagException(ex);
-            }
-        }
-    }
-
-
-    /**
-     * Creates a nested object of the given object with the specified name
-     */
-    public Object createNestedObject(Object object, String name) {
-        Object dataType = null;
-        if ( object != null ) {
-            IntrospectionHelper ih = IntrospectionHelper.getHelper( object.getClass() );
-
-            if ( ih != null ) {
-                try {
-                    dataType = ih.createElement( getAntProject(), object, name.toLowerCase() );
-                } catch (BuildException be) {
-                    if (object instanceof Tag)
-                    {
-                        if (log.isDebugEnabled()) {
-                            log.debug("Failed attempt to create an ant datatype for a jelly tag", be);
-                        }
-                    } else {
-                        log.error(be);
-                    }
-                }
-            }
-        }
-
-        if ( dataType == null ) {
-            dataType = createDataType( name );
-        }
-
-        return dataType;
-    }
-
-    public Object createDataType(String name) {
-
-        Object dataType = null;
-
-        Class type = (Class) getAntProject().getDataTypeDefinitions().get(name);
-
-        if ( type != null ) {
-
-            Constructor ctor = null;
-            boolean noArg = false;
-
-            // DataType can have a "no arg" constructor or take a single
-            // Project argument.
-            try {
-                ctor = type.getConstructor(new Class[0]);
-                noArg = true;
-            }
-            catch (NoSuchMethodException nse) {
-                try {
-                    ctor = type.getConstructor(new Class[] { Project.class });
-                    noArg = false;
-                } catch (NoSuchMethodException nsme) {
-                    log.info("datatype '" + name
-                        + "' didn't have a constructor with an Ant Project", nsme);
-                }
-            }
-
-            if (noArg) {
-                dataType = createDataType(ctor, new Object[0], name, "no-arg constructor");
-            }
-            else {
-                dataType = createDataType(ctor, new Object[] { getAntProject() }, name, "an Ant project");
-            }
-            if (dataType != null) {
-                ((DataType)dataType).setProject( getAntProject() );
-            }
-        }
-
-        return dataType;
-    }
-
-    /**
-     * @return an object create with the given constructor and args.
-     * @param ctor a constructor to use creating the object
-     * @param args the arguments to pass to the constructor
-     * @param name the name of the data type being created
-     * @param argDescription a human readable description of the args passed
-     */
-    private Object createDataType(Constructor ctor, Object[] args, String name, String argDescription) {
-        try {
-            Object datatype = ctor.newInstance(args);
-            return datatype;
-        } catch (InstantiationException ie) {
-            log.error("datatype '" + name + "' couldn't be created with " + argDescription, ie);
-        } catch (IllegalAccessException iae) {
-            log.error("datatype '" + name + "' couldn't be created with " + argDescription, iae);
-        } catch (InvocationTargetException ite) {
-            log.error("datatype '" + name + "' couldn't be created with " + argDescription, ite);
-        }
-        return null;
-    }
-
-    /**
-     * @param taskName
-     * @return
-     * @throws JellyTagException
-     */
-    public Task createTask(String taskName) throws JellyTagException {
-        return createTask( taskName,
-                           (Class) getAntProject().getTaskDefinitions().get( taskName ) );
-    }
-
-    public Task createTask(String taskName,
-                           Class taskType) throws JellyTagException {
-
-        if (taskType == null) {
-            return null;
-        }
-
-        Object o = null;
-        try {
-            o = taskType.newInstance();
-        } catch (InstantiationException e) {
-            throw new JellyTagException(e);
-        }
-        catch (IllegalAccessException e) {
-            throw new JellyTagException(e);
-        }
-
-        Task task = null;
-        if ( o instanceof Task ) {
-            task = (Task) o;
-        }
-        else {
-            TaskAdapter taskA=new TaskAdapter();
-            taskA.setProxy( o );
-            task=taskA;
-        }
-
-        task.setProject(getAntProject());
-        task.setTaskName(taskName);
-
-        return task;
-    }
-
-    /**
-     * Attempts to look up in the parent hierarchy for a tag that implements the
-     * TaskSource interface, which returns an Ant Task object or that implements
-     * BeanSource interface which creates a bean,
-     * or will return the parent tag, which is also a bean.
-     */
-    protected Object findBeanAncestor() throws JellyTagException {
-        Tag tag = getParent();
-        while (tag != null) {
-            if (tag instanceof BeanSource) {
-                BeanSource beanSource = (BeanSource) tag;
-                return beanSource.getBean();
-            }
-            if (tag instanceof TaskSource) {
-                TaskSource taskSource = (TaskSource) tag;
-                return taskSource.getTaskObject();
-            }
-            tag = tag.getParent();
-        }
-        return getParent();
-    }
-
-    /**
-     * Walks the hierarchy until it finds a parent TaskSource and returns its source or returns null
-     */
-    protected Object findParentTaskObject() throws JellyTagException {
-        Tag tag = getParent();
-        while (tag != null) {
-            if (tag instanceof TaskSource) {
-                TaskSource source = (TaskSource) tag;
-                return source.getTaskObject();
-            }
-            tag = tag.getParent();
-        }
-        return null;
-    }
-
-}
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/AntTagLibrary.java b/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/AntTagLibrary.java
deleted file mode 100644
index 68ae727..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/AntTagLibrary.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.ant;
-
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.beanutils.Converter;
-import org.apache.commons.grant.GrantProject;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.jelly.impl.TagScript;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.tools.ant.BuildLogger;
-import org.apache.tools.ant.NoBannerLogger;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.optional.junit.FormatterElement;
-import org.apache.tools.ant.types.EnumeratedAttribute;
-import org.apache.tools.ant.types.Reference;
-
-import org.xml.sax.Attributes;
-
-/**
- * A Jelly custom tag library that allows Ant tasks to be called from inside Jelly.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- * @version $Revision: 1.6 $
- */
-public class AntTagLibrary extends TagLibrary {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(AntTagLibrary.class);
-
-    public static final String PROJECT_CONTEXT_HANDLE = "org.apache.commons.jelly.ant.Project";
-
-    static {
-
-        // register standard converters for Ant types
-
-
-        ConvertUtils.register(
-            new Converter() {
-                public Object convert(Class type, Object value) {
-                    if ( value instanceof Reference ) {
-                        return (Reference) value;
-                    }
-                    else if ( value != null ) {
-                        String text = value.toString();
-                        return new Reference( text );
-                    }
-                    return null;
-                }
-            },
-            Reference.class
-            );
-
-        ConvertUtils.register(
-            new Converter() {
-                public Object convert(Class type, Object value) {
-                    if ( value instanceof EnumeratedAttribute ) {
-                        return (EnumeratedAttribute) value;
-                    }
-                    else if ( value instanceof String ) {
-                        FormatterElement.TypeAttribute attr = new FormatterElement.TypeAttribute();
-                        attr.setValue( (String) value );
-                        return attr;
-                    }
-                    return null;
-                }
-
-            },
-            FormatterElement.TypeAttribute.class
-            );
-    }
-
-
-    /**
-     * A helper method which will attempt to find a project in the current context
-     * or install one if need be.
-     *
-     * #### this method could move to an AntUtils class.
-     */
-    public static Project getProject(JellyContext context) {
-        Project project = (Project) context.findVariable( PROJECT_CONTEXT_HANDLE );
-        if ( project == null ) {
-            project = createProject(context);
-            context.setVariable( PROJECT_CONTEXT_HANDLE , project );
-        }
-        return project;
-    }
-
-    /**
-     * Sets the Ant Project to be used for this JellyContext.
-     *
-     * #### this method could move to an AntUtils class.
-     */
-    public static void setProject(JellyContext context, Project project) {
-        context.setVariable( PROJECT_CONTEXT_HANDLE, project );
-    }
-
-    /**
-     * A helper method to create a new project
-     *
-     * #### this method could move to an AntUtils class.
-     */
-    public static Project createProject(JellyContext context) {
-        GrantProject project = new GrantProject();
-        project.setPropsHandler(new JellyPropsHandler(context));
-
-        BuildLogger logger = new NoBannerLogger();
-
-        logger.setMessageOutputLevel( org.apache.tools.ant.Project.MSG_INFO );
-        logger.setOutputPrintStream( System.out );
-        logger.setErrorPrintStream( System.err);
-
-        project.addBuildListener( logger );
-
-        project.init();
-        project.getBaseDir();
-        if (context.getCurrentURL() != null) {
-            project.setProperty("ant.file",
-                    context.getCurrentURL().toExternalForm());
-        }
-
-        return project;
-    }
-
-
-    /** Creates a new script to execute the given tag name and attributes */
-    public TagScript createTagScript(String name, Attributes attributes) throws JellyException {
-        TagScript answer = createCustomTagScript(name, attributes);
-        if ( answer == null ) {
-            answer = new TagScript(
-                new TagFactory() {
-                    public Tag createTag(String name, Attributes attributes) throws JellyException {
-                        return AntTagLibrary.this.createTag(name, attributes);
-                    }
-                }
-            );
-        }
-        return answer;
-    }
-
-    /**
-     * @return a new TagScript for any custom, statically defined tags, like 'fileScanner'
-     */
-    public TagScript createCustomTagScript(String name, Attributes attributes) throws JellyException {
-        // custom Ant tags
-        if ( name.equals("fileScanner") ) {
-            return new TagScript(
-                new TagFactory() {
-                    public Tag createTag(String name, Attributes attributes) throws JellyException {
-                        return new FileScannerTag(new FileScanner());
-                    }
-                }
-            );
-        }
-        if ( name.equals("setProperty") ) {
-            return new TagScript(
-                new TagFactory() {
-                    public Tag createTag(String name, Attributes attributes) throws JellyException {
-                        return new SetPropertyTag();
-                    }
-                }
-            );
-        }
-        return null;
-    }
-
-    /**
-     * A helper method which creates an AntTag instance for the given element name
-     */
-    public Tag createTag(String name, Attributes attributes) throws JellyException {
-        AntTag tag = new AntTag( name );
-        if ( name.equals( "echo" ) ) {
-            tag.setTrim(false);
-        }
-        return tag;
-    }
-
-
-}
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/FileIterator.java b/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/FileIterator.java
deleted file mode 100644
index 02937d3..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/FileIterator.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.ant;
-
-import java.io.File;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.FileSet;
-
-/**
- * <p><code>FileIterator</code> is an iterator over a
- * over a number of files from a colleciton of FileSet instances.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class FileIterator implements Iterator {
-
-    /** The iterator over the FileSet objects */
-    private Iterator fileSetIterator;
-
-    /** The Ant project */
-    private Project project;
-
-    /** The directory scanner */
-    private DirectoryScanner ds;
-
-    /** The file names in the current FileSet scan */
-    private String[] files;
-
-    /** The current index into the file name array */
-    private int fileIndex = -1;
-
-    /** The next File object we'll iterate over */
-    private File nextFile;
-
-    /** Have we set a next object? */
-    private boolean nextObjectSet = false;
-
-    /** Return only directories? */
-    private boolean iterateDirectories = false;
-
-    public FileIterator(Project project,
-                        Iterator fileSetIterator) {
-        this( project, fileSetIterator, false);
-    }
-
-    public FileIterator(Project project,
-                        Iterator fileSetIterator,
-                        boolean iterateDirectories) {
-        this.project = project;
-        this.fileSetIterator = fileSetIterator;
-        this.iterateDirectories = iterateDirectories;
-    }
-
-    // Iterator interface
-    //-------------------------------------------------------------------------
-
-    /** @return true if there is another object that matches the given predicate */
-    public boolean hasNext() {
-        if ( nextObjectSet ) {
-            return true;
-        }
-        else {
-            return setNextObject();
-        }
-    }
-
-    /** @return the next object which matches the given predicate */
-    public Object next() {
-        if ( !nextObjectSet ) {
-            if (!setNextObject()) {
-                throw new NoSuchElementException();
-            }
-        }
-        nextObjectSet = false;
-        return nextFile;
-    }
-
-    /**
-     * throws UnsupportedOperationException
-     */
-    public void remove() {
-        throw new UnsupportedOperationException();
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Set nextObject to the next object. If there are no more
-     * objects then return false. Otherwise, return true.
-     */
-    private boolean setNextObject() {
-        while (true) {
-            while (ds == null) {
-                if ( ! fileSetIterator.hasNext() ) {
-                    return false;
-                }
-                FileSet fs = (FileSet) fileSetIterator.next();
-                ds = fs.getDirectoryScanner(project);
-                ds.scan();
-                if (iterateDirectories) {
-                    files = ds.getIncludedDirectories();
-                }
-                else {
-                    files = ds.getIncludedFiles();
-                }
-                if ( files.length > 0 ) {
-                    fileIndex = -1;
-                    break;
-                }
-                else {
-                    ds = null;
-                }
-            }
-
-            if ( ds != null && files != null ) {
-                if ( ++fileIndex < files.length ) {
-                    nextFile = new File( ds.getBasedir(), files[fileIndex] );
-                    nextObjectSet = true;
-                    return true;
-                }
-                else {
-                    ds = null;
-                }
-            }
-        }
-    }
-}
-
-
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/FileScanner.java b/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/FileScanner.java
deleted file mode 100644
index 4eadc01..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/FileScanner.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.ant;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.FileSet;
-
-/**
- * <p><code>FileScanner</code> is a bean which allows the iteration
- * over a number of files from a colleciton of FileSet instances.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class FileScanner {
-
-    /** FileSets */
-    private List filesets = new ArrayList();
-
-    /** The Ant project */
-    private Project project;
-
-    public void setProject(Project project)
-    {
-        this.project = project;
-    }
-
-    public Iterator iterator() {
-        return new FileIterator(project, filesets.iterator());
-    }
-
-    public Iterator directories() {
-        return new FileIterator(project, filesets.iterator(), true);
-    }
-
-    public boolean hasFiles() {
-        return filesets.size() > 0;
-    }
-
-    /**
-     * Clears any file sets that have been added to this scanner
-     */
-    public void clear() {
-        filesets.clear();
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.add(set);
-    }
-
-}
-
-
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/FileScannerTag.java b/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/FileScannerTag.java
deleted file mode 100644
index 736dc72..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/FileScannerTag.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.ant;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag which creates a new FileScanner bean instance that can be used to
- * iterate over fileSets
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class FileScannerTag extends TagSupport implements TaskSource {
-
-    /** The file walker that gets created */
-    private FileScanner fileScanner;
-
-    /** the variable exported */
-    private String var;
-
-    public FileScannerTag(FileScanner fileScanner) {
-        this.fileScanner = fileScanner;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        fileScanner.setProject(AntTagLibrary.getProject(context));
-
-        fileScanner.clear();
-
-        // run the body first to configure the task via nested
-        invokeBody(output);
-
-        // output the fileScanner
-        if ( var == null ) {
-            throw new MissingAttributeException( "var" );
-        }
-        context.setVariable( var, fileScanner );
-
-    }
-
-    // TaskSource interface
-    //-------------------------------------------------------------------------
-    public Object getTaskObject() {
-        return fileScanner;
-    }
-
-    /**
-     * Allows nested tags to set a property on the task object of this tag
-     */
-    public void setTaskProperty(String name, Object value) throws JellyTagException {
-        try {
-            BeanUtils.setProperty( fileScanner, name, value );
-        }
-        catch (IllegalAccessException ex) {
-            throw new JellyTagException(ex);
-        }
-        catch (InvocationTargetException ex) {
-            throw new JellyTagException(ex);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the Ant task
-     */
-    public FileScanner getFileScanner() {
-        return fileScanner;
-    }
-
-    /** Sets the name of the variable exported by this tag */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-}
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/JellyPropsHandler.java b/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/JellyPropsHandler.java
deleted file mode 100644
index 07d8f5d..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/JellyPropsHandler.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.apache.commons.jelly.tags.ant;
-
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.Hashtable;
-import java.util.Iterator;
-
-import org.apache.commons.grant.DefaultPropsHandler;
-import org.apache.commons.jelly.JellyContext;
-
-/** Implementation of a Commons Grant <code>propsHandler</code>
- *  to resolve through Jelly's context.
- *
- *  @author <a href="mailto:bob@eng.werken.com">Bob McWhirter</a>
- *  @author <a href="mailto:stephenh@chase3000.com">Stephen Haberman</a>
- */
-public class JellyPropsHandler extends DefaultPropsHandler {
-
-    /** The JellyContext. */
-    private JellyContext context;
-
-    /** Simple constructor with the context to be used.
-     *
-     *  @param context The context to be used.
-     */
-    public JellyPropsHandler(JellyContext context) {
-        this.context = context;
-    }
-
-    /** Set an ant property.
-     *
-     *  @param name The property name.
-     *  @param value The property value.
-     */
-    public void setProperty(String name, String value) {
-        this.context.setVariable(name, value);
-    }
-
-    /** Retrieve an ant property.
-     *
-     *  @param name The property name.
-     *
-     *  @return The property value.
-     */
-    public String getProperty(String name) {
-        if (name == null) {
-            return null;
-        }
-        Object value = this.context.getVariable(name);
-        if (value == null) {
-            return null;
-        }
-        else {
-            return value.toString();
-        }
-    }
-
-    /** Retrieve all ant properties.
-     *
-     *  @return A <code>Hashtable</code> of all properties.
-     */
-    public Hashtable getProperties() {
-        Hashtable h = new Hashtable();
-        for (Iterator i = this.context.getVariableNames(); i.hasNext(); ) {
-            String name = (String) i.next();
-            Object value = this.context.getVariable(name);
-            if (name != null && value != null && value.toString() != null) {
-                h.put(name, value.toString());
-            }
-        }
-        return h;
-    }
-
-}
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/SetPropertyTag.java b/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/SetPropertyTag.java
deleted file mode 100644
index e500e68..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/SetPropertyTag.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.ant;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Tag which sets an attribute on the parent Ant Task if the given value is not null.
- * This can be useful when setting parameters on Ant tasks, only if they have been specified
- * via some well defined property, otherwise allowing the inbuilt default to be used.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- */
-public class SetPropertyTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(SetPropertyTag.class);
-
-    private String name;
-    private Object value;
-    private Object defaultValue;
-
-    public SetPropertyTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (name == null) {
-            throw new MissingAttributeException("name");
-        }
-        TaskSource tag = (TaskSource) findAncestorWithClass( TaskSource.class );
-        if ( tag == null ) {
-            throw new JellyTagException( "This tag must be nested within an Ant task tag" );
-        }
-        Object value = getValue();
-        if (value == null) {
-            value = getDefault();
-        }
-        if (value != null) {
-            tag.setTaskProperty(name, value);
-        }
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the name.
-     * @return String
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Returns the value.
-     * @return Object
-     */
-    public Object getValue() {
-        return value;
-    }
-
-    /**
-     * Sets the name of the Ant task property to set.
-     * @param name The name of the Ant task property to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Sets the value of the Ant task property to set.
-     * @param value The value of the Ant task property to set
-     */
-    public void setValue(Object value) {
-        this.value = value;
-    }
-
-    /**
-     * Returns the defaultValue.
-     * @return Object
-     */
-    public Object getDefault() {
-        return defaultValue;
-    }
-
-    /**
-     * Sets the default value to be used if the specified value is empty.
-     */
-    public void setDefault(Object defaultValue) {
-        this.defaultValue = defaultValue;
-    }
-
-}
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/TaskSource.java b/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/TaskSource.java
deleted file mode 100644
index d2ea3a3..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/TaskSource.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.ant;
-
-import org.apache.commons.jelly.JellyTagException;
-
-/**
- * A tag which provides an Ant Task object on which to set Ant DataTypes or create nested types
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public interface TaskSource {
-
-    /**
-     * @return the Ant object which may be an Ant Task or nested element
-     */
-    public Object getTaskObject() throws JellyTagException;
-
-    /**
-     * Allows nested tags to set a property on the task object of this tag
-     */
-    public void setTaskProperty(String name, Object value) throws JellyTagException;
-}
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/package.html b/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/package.html
deleted file mode 100644
index e691de4..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/package.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<html>
-<head>
-</head>
-<body>
-
-  <p>A tag library for using Ant tasks within Jelly</p>
-  
-  <p>Jelly can be invoked inside Ant and this tag library allows Ant tasks to be invoked from inside
-  	Jelly. This allows Jelly to be used for more 'scripting' style targets, such as parsing XML databases,
-  	working with custom java beans, doing SQL, the use of JSTL and so forth.
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/task/AntJellyContext.java b/jelly-tags/ant/src/java/org/apache/commons/jelly/task/AntJellyContext.java
deleted file mode 100644
index b90de7f..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/task/AntJellyContext.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.task;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tools.ant.Project;
-
-/** <p><code>AntJellyContext</code> represents the Jelly context from inside Ant.</p>
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.10 $
-  */
-
-public class AntJellyContext extends JellyContext {
-
-    /** The Ant project which contains the variables */
-    private Project project;
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(AntJellyContext.class);
-
-    public AntJellyContext(Project project, JellyContext parentJellyContext) {
-        super( parentJellyContext );
-        this.project = project;
-    }
-
-    /** @return the value of the given variable name */
-    public Object getVariable(String name) {
-        // look in parent first
-        Object answer = super.getVariable(name);
-        if (answer == null) {
-            answer = project.getProperty(name);
-        }
-
-        if ( log.isDebugEnabled() ) {
-            log.debug( "Looking up variable: " + name + " answer: " + answer );
-        }
-
-        return answer;
-    }
-
-    /** Sets the value of the given variable name */
-    public void setVariable(String name, Object value) {
-        if ( log.isDebugEnabled() ) {
-            log.debug( "Setting variable: " + name + " to: " + value );
-        }
-
-        super.setVariable( name, value );
-
-        // only export string values back to Ant?
-        if ( value instanceof String ) {
-            project.setProperty(name, (String) value);
-        }
-    }
-
-    /** Removes the given variable */
-    public void removeVariable(String name) {
-        super.removeVariable( name );
-        project.setProperty(name, null);
-    }
-
-    /**
-     * @return an Iterator over the current variable names in this
-     * context
-     */
-    public Iterator getVariableNames() {
-        return getVariables().keySet().iterator();
-    }
-
-    /**
-     * @return the Map of variables in this scope
-     */
-    public Map getVariables() {
-        // we should add all the Project's properties
-        Map map = new HashMap( project.getProperties() );
-
-        // override any local properties
-        map.putAll( super.getVariables() );
-        return map;
-    }
-
-    /**
-     * Sets the Map of variables to use
-     */
-
-    public void setVariables(Map variables) {
-        super.setVariables(variables);
-
-        // export any Ant properties
-        for ( Iterator iter = variables.entrySet().iterator(); iter.hasNext(); ) {
-            Map.Entry entry = (Map.Entry) iter.next();
-            String key = (String) entry.getKey();
-            Object value = entry.getValue();
-            if ( value instanceof String ) {
-                project.setProperty(key, (String)value);
-            }
-        }
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new child of this context
-     */
-    protected JellyContext createChildContext() {
-        return new AntJellyContext(project, this);
-    }
-
-}
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/task/JellyTask.java b/jelly-tags/ant/src/java/org/apache/commons/jelly/task/JellyTask.java
deleted file mode 100644
index 0ffb520..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/task/JellyTask.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.task;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.parser.XMLParser;
-import org.apache.commons.jelly.tags.ant.AntTagLibrary;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-
-import org.xml.sax.SAXException;
-
-/**
- * <p><code>JellyTask</code> is an Ant task which will
- * run a given Jelly script.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.3 $
- */
-
-public class JellyTask extends Task {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(Jelly.class);
-
-    /** The JellyContext to use */
-    private JellyContext context;
-
-    /** The URL of the script to execute */
-    private URL url;
-
-    /** The URL of the root context for other scripts */
-    private URL rootContext;
-
-    /** The XML output */
-    private XMLOutput xmlOutput;
-
-    /** The file where output is going */
-    private File output;
-
-    // Task interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Excutes the Jelly script
-     */
-    public void execute() throws BuildException {
-        try {
-            log( "Running script: " + getUrl() );
-            if ( output != null ) {
-                log( "Sending output to: " + output );
-            }
-
-            Script script = compileScript();
-            JellyContext context = getJellyContext();
-            context.setVariable( "project", getProject() );
-            script.run( context, getXMLOutput() );
-            getXMLOutput().flush();
-        }
-        catch (Exception e) {
-            throw new BuildException(e, getLocation() );
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the script URL to use as an absolute URL or a relative filename
-     */
-    public void setScript(String script) throws MalformedURLException {
-        setUrl(resolveURL(script));
-    }
-
-    public URL getUrl() {
-        return url;
-    }
-
-    /**
-     * Sets the script URL to use
-     */
-    public void setUrl(URL url) {
-        this.url = url;
-    }
-
-    /**
-     * Sets the script file to use
-     */
-    public void setFile(File file) throws MalformedURLException {
-        setUrl( file.toURL() );
-    }
-
-    /**
-     * Sets the output to generate
-     */
-    public void setOutput(File output) throws IOException {
-        this.output = output;
-        xmlOutput = XMLOutput.createXMLOutput( new FileWriter( output ) );
-    }
-
-    public XMLOutput getXMLOutput() throws IOException {
-        if (xmlOutput == null) {
-            xmlOutput = XMLOutput.createXMLOutput( System.out );
-        }
-        return xmlOutput;
-    }
-
-    /**
-     * Sets the XMLOutput used
-     */
-    public void setXMLOutput(XMLOutput xmlOutput) {
-        this.xmlOutput = xmlOutput;
-    }
-
-    /**
-     * Gets the root context
-     */
-    public URL getRootContext() throws MalformedURLException {
-        if (rootContext == null) {
-            rootContext = new File(System.getProperty("user.dir")).toURL();
-        }
-        return rootContext;
-    }
-
-    /**
-     * Sets the root context
-     */
-    public void setRootContext(URL rootContext) {
-        this.rootContext = rootContext;
-    }
-
-    /**
-     * The context to use
-     */
-    public JellyContext getJellyContext() throws MalformedURLException {
-        if (context == null) {
-            // take off the name off the URL
-            String text = getUrl().toString();
-            int idx = text.lastIndexOf('/');
-            text = text.substring(0, idx + 1);
-            JellyContext parentContext =  new JellyContext(getRootContext(), new URL(text));
-            context = new AntJellyContext(getProject() , parentContext);
-
-            // register the Ant tag library
-            context.registerTagLibrary( "jelly:ant", new AntTagLibrary() );
-        }
-        return context;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Compiles the script
-     */
-    protected Script compileScript() throws JellyException {
-        XMLParser parser = new XMLParser();
-
-        Script script = null;
-        try {
-            parser.setContext(getJellyContext());
-            script = parser.parse(getUrl().toString());
-        }
-        catch (IOException e) {
-            throw new JellyException(e);
-        }
-        catch (SAXException e) {
-            throw new JellyException(e);
-        }
-        script = script.compile();
-
-        if (log.isDebugEnabled()) {
-            log.debug("Compiled script: " + getUrl());
-        }
-        return script;
-    }
-
-
-    /**
-     * @return the URL for the relative file name or absolute URL
-     */
-    protected URL resolveURL(String name) throws MalformedURLException {
-        File file = getProject().resolveFile(name);
-        if (file.exists()) {
-            return file.toURL();
-        }
-        return new URL(name);
-    }
-}
diff --git a/jelly-tags/ant/src/java/org/apache/commons/jelly/task/package.html b/jelly-tags/ant/src/java/org/apache/commons/jelly/task/package.html
deleted file mode 100644
index e15e694..0000000
--- a/jelly-tags/ant/src/java/org/apache/commons/jelly/task/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A collection of Ant tasks for working with Jelly.</p>
-  
-</body>
-</html>
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/TestJelly.java b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/TestJelly.java
deleted file mode 100644
index 60185f1..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.ant;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/build.xml b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/build.xml
deleted file mode 100644
index ee27e27..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/build.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="echoFoo" name="ant-test" basedir=".">
-
-  <property name="foo5.1" value="${foo5}"/>
-
-  <target name="writeFoo3Bar3">
-    <echo message="foo3 = bar3" file="test.properties"/>
-  </target>
-
-  <target name="readWriteFoo4.1Foo4">
-    <echo message="foo4.1 = ${foo4}" file="test.properties"/>
-  </target>
-
-  <target name="readWriteFoo5.1Foo5InStart">
-    <echo message="foo5.1 = ${foo5.1}" file="test.properties"/>
-  </target>
-
-  <target name="echoFoo">
-    <echo message="${foo}"/>
-  </target>
-
-</project>
\ No newline at end of file
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/example_jar.jelly b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/example_jar.jelly
deleted file mode 100644
index 0e88a6e..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/example_jar.jelly
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns="jelly:ant">
-
-  <j:set var="jarname" value="target/anttest.jar"/>
-  
-  <echo>
-      About to create jar: ${jarname}
-  </echo>
-
-    <jar
-      jarfile="${jarname}"
-      basedir="target/classes">
-
-      <metainf dir=".">
-        <include name="LICENSE.txt"/>
-      </metainf>
-      <manifest>
-        <attribute name="Built-By" value="${user.name}"/>
-        <attribute name="Created-By" value="Apache Jakarta Maven"/>
-        <attribute name="Package" value="${pom.package}"/>
-        <section name="mySection">
-          <attribute name="Specification-Title" value="Some Title"/>
-          <attribute name="Specification-Version" value="1.1"/>
-          <attribute name="Specification-Vendor" value="Apache"/>
-          <attribute name="Implementation-Title" value="Some implementation title"/>
-          <attribute name="Implementation-Version" value="1.1"/>
-          <attribute name="Implementation-Vendor" value="Apache"/>
-        </section>
-      </manifest>
-    </jar>
-</j:jelly>
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/example_tasks.jelly b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/example_tasks.jelly
deleted file mode 100644
index 49d0d28..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/example_tasks.jelly
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns="jelly:ant">
-  Lets start by calling the echo task
-    
-  <!-- this example attempts to invoke some Ant tasks -->
-  <echo message="Invoking the echo task from inside Jelly; the Maven repository is ${lib.repo}"/>          
-
-  <echo>
-      Maven home is ${maven.home}
-  </echo>
-
-  classpath: ${project.getReference('test.classpath')}
-
-  <!-- lets try invoke a program -->
-  <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-    <classpath refid="test.classpath"/>
-    <arg value="src/test/org/apache/commons/jelly/show_args.jelly"/> 
-    <arg value="one"/> 
-    <arg value="two"/> 
-    <arg value="three"/> 
-  </java>
-
-  We should be back to the Jelly script again now...    
-</j:jelly>
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/filescanner.jelly b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/filescanner.jelly
deleted file mode 100644
index 393b74c..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/filescanner.jelly
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<j:jelly xmlns:j="jelly:core" xmlns="jelly:ant">

-

-  <fileScanner var="scanner">

-    <fileset dir="src/test" includes="**/*.jelly"/>

-  </fileScanner>

-    

-  Iterating through build files

-  

-  <j:forEach var="file" items="${scanner.iterator()}">

-  

-    <!-- here we could parse the file or process it in some way -->

-    <!-- such as by calling <ant> with the given build.xml file -->

-      

-    Found ${file.absolutePath}

-  </j:forEach>

-

-  <fileScanner var="dirscanner">

-    <fileset dir="src/test" includes="org/apache/commons/jelly/**"/>

-  </fileScanner>

-

-  Iterating through test directories

-

-  <j:forEach var="dir" items="${dirscanner.directories()}">

-    <!-- here we could process the directory in some way -->

-    <!-- such as creating a similar directory in a different base path -->

-      

-    Found ${dir.absolutePath}

-  </j:forEach>

-

-</j:jelly>

diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/jellyunit.jelly b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/jellyunit.jelly
deleted file mode 100644
index e6b1aa8..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/jellyunit.jelly
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:test="jelly:junit" xmlns:ant="jelly:ant">
-
-  <ant:fileScanner var="scanner">
-    <ant:fileset dir="src/test" includes="**/suite.jelly"/>
-  </ant:fileScanner>
-
-    <j:if test="${empty outputfile}">
-            <j:set var="outputfile" value="target/jellyunit.xml"/>
-  </j:if>
-  
-  <ant:echo>Running all JellyUnit tests and generating file ${outputfile}</ant:echo>
-      
-    <j:file name="${outputfile}">
-        <tests>
-          <j:forEach var="file" items="${scanner.iterator()}">
-    
-              <j:set var="uri" value="${file.toURL().toString()}"/>
-              
-              <suite uri="${uri}">
-                  <j:include uri="${uri}"/>
-                    <test:run/>      
-                </suite>    
-                        
-          </j:forEach>
-        </tests>
-    </j:file>        
-</j:jelly>
\ No newline at end of file
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/sample.txt b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/sample.txt
deleted file mode 100644
index c994b87..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/sample.txt
+++ /dev/null
@@ -1 +0,0 @@
-hello @foo@ how are you?
\ No newline at end of file
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/show_properties.jelly b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/show_properties.jelly
deleted file mode 100644
index ae59c73..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/show_properties.jelly
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core">
-
-<html>
-  <body>
-
-    <h1>Ant properties</h1>
-
-    <p>The project name is <b><j:expr value="${project.name}"/></b>
-    </p>
-
-    <table>
-      <tr>
-        <th>Targets</th>
-      </tr>
-
-      <j:forEach var="iter" items="${project.targets}">
-        <tr>
-          <td><j:expr value="${iter.key}"/></td>
-        </tr>
-      </j:forEach>
-    </table>
-
-    <table>
-      <tr>
-        <th>Property Name</th>
-        <th>Property Value</th>
-      </tr>
-
-      <j:forEach var="iter" items="${project.getProperties()}">
-        <tr>
-          <td><j:expr value="${iter.key}"/></td>
-          <td><j:expr value="${iter.value}"/></td>
-        </tr>
-      </j:forEach>
-    </table>
-
-  </body>
-
-</html>
-
-</j:jelly>
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/suite.jelly b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/suite.jelly
deleted file mode 100644
index 63f2d2f..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/suite.jelly
+++ /dev/null
@@ -1,236 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite 
-    xmlns:j="jelly:core" 
-    xmlns:test="jelly:junit" 
-    xmlns:util="jelly:util" 
-    xmlns="jelly:ant">
-
-  <j:set var="dir" value="target/test-classes/org/apache/commons/jelly/ant"/>
-
-<test:case name="write">
-
-  <property name="foo2" value="bar2"/>
-
-  <test:assertEquals
-    expected="bar2"
-    actual="${foo2}"
-  />
-
-</test:case>
-
-<test:case name="readWrite">
-  
-  <j:set var="foo1" value="bar1"/>
-
-  <property name="foo1.1" value="${foo1}"/>
-
-  <test:assertEquals
-    expected="bar1"
-    actual="${foo1.1}"
-  />
-
-</test:case>
-
-<test:case name="writeIn">
-
-  <ant 
-    dir="${dir}"
-    target="writeFoo3Bar3"
-  />
-
-  <property file="${dir}/test.properties"/>
-
-  <test:assertEquals
-    expected="bar3"
-    actual="${foo3}"
-  />
-
-</test:case>
-
-<test:case name="readWriteIn">
-
-  <j:set var="foo4" value="bar4"/>
-
-  <ant 
-    dir="${dir}"
-    target="readWriteFoo4.1Foo4"
-  />
-
-  <property file="${dir}/test.properties"/>
-
-  <test:assertEquals
-    expected="bar4"
-    actual="${foo4.1}"
-  />
-
-</test:case>
-
-<test:case name="startUpReadWrite">
-
-  <j:set var="foo5" value="bar5"/>
-
-  <ant
-    dir="${dir}"
-    target="readWriteFoo5.1Foo5InStart"
-  />
-
-  <property file="${dir}/test.properties"/>
-
-  <test:assertEquals
-    expected="bar5"
-    actual="${foo5.1}"
-  />
-
-</test:case>
-
-<test:case name="copy">
-
-    <mkdir dir="${basedir}/target/tmp/ant-tests"/>
-    
-  <copy
-      overwrite="true"
-    file="${basedir}/src/test/org/apache/commons/jelly/ant/sample.txt"
-    tofile="${basedir}/target/tmp/ant-tests/output.txt">
-    <filterset>
-      <filter token="foo" value="bar"/>
-    </filterset>
-  </copy>
-  
-  <util:loadText var="text" file="${basedir}/target/tmp/ant-tests/output.txt"/>
-  <delete file="${basedir}/target/tmp/ant-tests/output.txt"/>
-  
-  <test:assertEquals expected="hello bar how are you?" actual="${text.trim()}"/>
-
-</test:case>
-
-<test:case name="copyWithReference">
-
-    <mkdir dir="${basedir}/target/tmp/ant-tests"/>
-
-    <filterset id="myFilter">
-        <filter token="foo" value="bar"/>
-    </filterset>
-    
-  <copy
-      overwrite="true"
-    file="${basedir}/src/test/org/apache/commons/jelly/ant/sample.txt"
-    tofile="${basedir}/target/tmp/ant-tests/output.txt">
-    <filterset refid="myFilter"/>
-  </copy>
-  
-  <util:loadText var="text" file="${basedir}/target/tmp/ant-tests/output.txt"/>
-  <delete file="${basedir}/target/tmp/ant-tests/output.txt"/>
-  
-  <test:assertEquals expected="hello bar how are you?" actual="${text.trim()}"/>
-
-</test:case>
-
-
-<test:case name="parallelCopy">
-
-    <mkdir dir="${basedir}/target/tmp/ant-tests"/>
-    
-    <parallel>
-        <copy
-            overwrite="true"
-            file="${basedir}/src/test/org/apache/commons/jelly/ant/sample.txt"
-            tofile="${basedir}/target/tmp/ant-tests/output.txt">
-            <filterset>
-                <filter token="foo" value="bar"/>
-            </filterset>
-        </copy>
-        <echo>Performing copy in parallel</echo>
-    </parallel>
-  
-  <util:loadText var="text" file="${basedir}/target/tmp/ant-tests/output.txt"/>
-  <delete file="${basedir}/target/tmp/ant-tests/output.txt"/>
-  
-  <test:assertEquals expected="hello bar how are you?" actual="${text.trim()}"/>
-
-</test:case>
-
-<test:case name="parallelCopyWithReference">
-
-    <mkdir dir="${basedir}/target/tmp/ant-tests"/>
-
-    <filterset id="myFilter">
-        <filter token="foo" value="bar"/>
-    </filterset>
-
-    <parallel>
-        <copy
-            overwrite="true"
-            file="${basedir}/src/test/org/apache/commons/jelly/ant/sample.txt"
-            tofile="${basedir}/target/tmp/ant-tests/output.txt">
-            <filterset refid="myFilter"/>
-        </copy>
-        <echo>Performing copy in parallel</echo>
-    </parallel>    
-  
-  <util:loadText var="text" file="${basedir}/target/tmp/ant-tests/output.txt"/>
-  <delete file="${basedir}/target/tmp/ant-tests/output.txt"/>
-  
-  <test:assertEquals expected="hello bar how are you?" actual="${text.trim()}"/>
-
-</test:case>
-
-
-
-<test:case name="startUpReadWrite">
-
-  <j:set var="foo" value="setting the message worked!"/>
-
-    <echo>
-        <setProperty name="message" value="${foo}"/>
-  </echo>
-  
-    <echo>
-        <setProperty name="message" value="${bar}" default="the default also worked"/>
-  </echo>
-
-    <!-- haven't thought of a neat way to test this yet... -->  
-</test:case>
-
-<test:case name="nestedTask">
-
-    <j:include uri="task/example.jelly"/>
-    
-</test:case>
-
-<test:case name="setProperty">
-
-    <taskdef
-      name="nested"
-    classname="org.apache.commons.jelly.ant.task.DummyTask">
-    </taskdef>
-
-    <nested>
-        <setProperty name="force" value="true"/>
-    </nested>
-    
-    <j:catch var="ex">
-        <nested>
-            <setProperty name="force" value="false"/>
-        </nested>
-    </j:catch>        
-    
-    <test:assert test="${ex != null}">We should have created an exception</test:assert>
-    
-</test:case>
-
-</test:suite>
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/DummyTag.java b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/DummyTag.java
deleted file mode 100644
index 9725020..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/DummyTag.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.ant.tag;
-
-import junit.framework.AssertionFailedError;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.BeanSource;
-import org.apache.commons.jelly.tags.ant.AntTagLibrary;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tools.ant.types.Path;
-
-/**
- * A mock tag which is used for testing the Ant nested properties behaviour
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.9 $
- */
-public class DummyTag extends TagSupport implements BeanSource {
-
-    /** The Log to which logging calls will be made. */
-    private static Log log = LogFactory.getLog(DummyTag.class);
-
-    private String var;
-
-    private boolean calledCreatepath;
-    private boolean calledSetClasspath;
-    private boolean calledSetFlag;
-
-    private Path classpath;
-    private boolean flag;
-
-    public DummyTag() {
-    }
-
-    // BeanSource interface
-    //-------------------------------------------------------------------------
-    public Object getBean() {
-        return this;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        if (! calledSetFlag) {
-            throw new AssertionFailedError("call to setFlag() was not made");
-        }
-
-        calledCreatepath = false;
-        calledSetClasspath = false;
-
-        invokeBody(output);
-
-        if (! calledCreatepath) {
-            throw new AssertionFailedError("call to createClasspath() was not made");
-        }
-
-        if (! calledSetClasspath) {
-            throw new AssertionFailedError("call to setClasspath() was not made");
-        }
-        log.info( "Called with classpath: " + classpath );
-
-        if (var != null) {
-            context.setVariable(var, classpath);
-        }
-    }
-
-    // Ant Task-like nested property methods
-    //-------------------------------------------------------------------------
-    public Path createClasspath() {
-        log.info("called createClasspath()");
-        calledCreatepath = true;
-        return new Path( AntTagLibrary.getProject(context) );
-    }
-
-    public void setClasspath(Path classpath) {
-        log.info("called setClasspath()");
-        calledSetClasspath = true;
-        this.classpath = classpath;
-    }
-
-    public void setFlag(boolean flag)
-    {
-        log.info("called setFlag()");
-        calledSetFlag = true;
-        this.flag = flag;
-
-    }
-
-    // Tag properties
-    //-------------------------------------------------------------------------
-
-    public void setVar(String var) {
-        this.var = var;
-    }
-}
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/MyTagLibrary.java b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/MyTagLibrary.java
deleted file mode 100644
index 83ba1e6..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/MyTagLibrary.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.ant.tag;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/**
- * Describes the Taglib.
- * This could be created via Jelly script, or could load the mapping of
- * tag names to bean classes from properties file etc  but is implemented in Java
- * code for simplicity
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class MyTagLibrary extends TagLibrary {
-
-    public MyTagLibrary() {
-        registerTag( "dummy", DummyTag.class );
-    }
-}
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/TestJelly.java b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/TestJelly.java
deleted file mode 100644
index 89f3de0..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.ant.tag;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/suite.jelly b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/suite.jelly
deleted file mode 100644
index d7b1fb8..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/tag/suite.jelly
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<test:suite 

-    xmlns:j="jelly:core" 

-    xmlns:test="jelly:junit" 

-    xmlns="jelly:ant"

-    xmlns:my="jelly:org.apache.commons.jelly.ant.tag.MyTagLibrary">

-

-    <test:case name="nestedClasspath">

-            

-        <my:dummy var="path" flag="true">

-            <classpath>

-                <pathelement path="target/classes"/>

-                <pathelement path="target/test-classes"/>

-            </classpath>            

-        </my:dummy>            

-    

-        <test:assert test="${path != null}"/>

-        

-    </test:case>

-

-</test:suite>

diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/task/DummyTask.java b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/task/DummyTask.java
deleted file mode 100644
index 89de00b..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/task/DummyTask.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.ant.task;
-
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.BuildException;
-
-/*
-
-<taskdef
-   name="nested"
-   classname="jellybug.NestedTask"
->
-   <classpath>
-      <pathelement path="somewhere"/>
-   </classpath>
-</taskdef>
-
-<nested>
-   <ding/>
-   <dang/>
-   <dong/>
-   <hiphop/>
-   <wontstop/>
-   <tillyoudrop/>
-   <hipHop/>
-   <wontStop/>
-   <tillYouDrop/>
-</nested>
-
-Ant:
-   [nested] a
-   [nested] b
-   [nested] c
-   [nested] d
-   [nested] e
-   [nested] f
-   [nested] g
-   [nested] h
-   [nested] i
-
-Maven/Jelly:
-a
-b
-c
-d
-e
-f
-g
-h
-i
-
-*/
-
-/**
- * A sample Task to test out the Ant introspection logic
- *
- * @author Aslak Hellesøy (aslak.hellesoy@bekk.no)
- * @version $Revision: 1.8 $
- */
-public class DummyTask extends Task {
-    private int i = 0;
-    private String[] messages = { "a", "b", "c", "d", "e", "f", "g", "h", "i" };
-    private boolean force;
-
-    public void execute() throws BuildException {
-        if (!force) {
-            throw new BuildException("Should have set force to be true!");
-        }
-    }
-
-    public Thingy createDing() {
-        System.out.println("createDing: " + messages[i++]);
-        return new Thingy();
-    }
-
-    public void addDang(Thingy thingy) {
-        System.out.println("addDang: " + messages[i++]);
-    }
-
-    public void addConfiguredDong(Thingy thingy) {
-        System.out.println("addConfiguredDong: " + messages[i++]);
-    }
-
-    public Thingy createHipHop() {
-        System.out.println("createHipHop: " + messages[i++]);
-        return new Thingy();
-    }
-
-    public void addWontStop(Thingy thingy) {
-        System.out.println("addWontStop: " + messages[i++]);
-    }
-
-    public void addConfiguredTillYouDrop(Thingy thingy) {
-        System.out.println("addConfiguredTillYouDrop: " + messages[i++]);
-    }
-
-    public boolean isForce() {
-        return force;
-    }
-
-    public void setForce(boolean force) {
-        this.force = force;
-    }
-
-    public static class Thingy {
-    }
-}
\ No newline at end of file
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/task/example.jelly b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/task/example.jelly
deleted file mode 100644
index 398ab54..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/task/example.jelly
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly
-    xmlns:j="jelly:core" 
-    xmlns="jelly:ant">
-
-    <taskdef
-      name="nested"
-    classname="org.apache.commons.jelly.ant.task.DummyTask">
-    </taskdef>
-    
-    <nested force="true">
-   <ding/>
-   <dang/>
-   <dong/>
-   <hiphop/>
-   <wontstop/>
-   <tillyoudrop/>
-   <hipHop/>
-   <wontStop/>
-   <tillYouDrop/>
-    </nested>
-    
-</j:jelly>
diff --git a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/typoTest.jelly b/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/typoTest.jelly
deleted file mode 100644
index 4616e1b..0000000
--- a/jelly-tags/ant/src/test/org/apache/commons/jelly/ant/typoTest.jelly
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns="jelly:ant">
-  Lets start by calling the echo task
-    
-  <!-- this example attempts to invoke some Ant tasks -->
-  <echo message="Invoking the echo task from inside Jelly; the Maven repository is ${lib.repo}"/>          
-
-  <echo>
-      Maven home is ${maven.home}
-  </echo>
-
-  <!-- lets try invoke a program -->
-  <!-- typeo on the next line -->
-  <java classnam="org.apache.commons.jelly.Jelly" fork="yes">
-    <classpath refid="test.classpath"/>
-    <arg value="src/test/org/apache/commons/jelly/show_args.jelly"/> 
-    <arg value="one"/> 
-    <arg value="two"/> 
-    <arg value="three"/> 
-  </java>
-
-  We should be back to the Jelly script again now...    
-</j:jelly>
diff --git a/jelly-tags/ant/xdocs/changes.xml b/jelly-tags/ant/xdocs/changes.xml
deleted file mode 100644
index 58b77da..0000000
--- a/jelly-tags/ant/xdocs/changes.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.1-SNAPSHOT" date="in CVS">
-      <action dev="dion" type="fix">Upgrade dependencies to stop failing tests</action>
-    </release>
-    <release version="1.0" date="2004-09-10">
-      <action dev="dion" type="add">Initial release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/ant/xdocs/index.xml b/jelly-tags/ant/xdocs/index.xml
deleted file mode 100644
index 471bbdb..0000000
--- a/jelly-tags/ant/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Ant Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        This is a Jelly interface for Ant. It allows any Ant task or datatype to be executed by Jelly. 
-        It also provides some extra <a href="tags.html">tags</a> to make working with Ant from Jelly easier.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/ant/xdocs/navigation.xml b/jelly-tags/ant/xdocs/navigation.xml
deleted file mode 100644
index 699d9a5..0000000
--- a/jelly-tags/ant/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Ant Tag Library">
-
-  <title>Ant Tag Library</title>
-  
-  <body>
-    <menu name="Ant Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/antlr/.cvsignore b/jelly-tags/antlr/.cvsignore
deleted file mode 100644
index bca2cda..0000000
--- a/jelly-tags/antlr/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-target
-maven.log
-velocity.log
diff --git a/jelly-tags/antlr/build.xml b/jelly-tags/antlr/build.xml
deleted file mode 100644
index 44570b9..0000000
--- a/jelly-tags/antlr/build.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-antlr" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-antlr-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-antlr 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.antlr.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/antlrall-2.7.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/antlr/jars/antlrall-2.7.1.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/antlr/maven.xml b/jelly-tags/antlr/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/antlr/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/antlr/project.properties b/jelly-tags/antlr/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/antlr/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/antlr/project.xml b/jelly-tags/antlr/project.xml
deleted file mode 100644
index 5cb7ed8..0000000
--- a/jelly-tags/antlr/project.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-antlr</id>
-  <name>commons-jelly-tags-antlr</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.antlr</package>
-
-  <description>
-      This is a Jelly interface for Antlr.
-  </description>
-  <shortDescription>Commons Jelly Antlr Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_ANTLR-1_0</tag>
-    </version>
-  </versions>
-    
-  <dependencies>
-
-    <!-- START for compilation -->
-    <dependency>
-      <id>antlr</id>
-      <version>2.7.1</version>
-      <jar>antlrall-2.7.1.jar</jar>
-    </dependency> -->
-    
-    <!-- END for compilation -->
-    
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/AntlrTag.java b/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/AntlrTag.java
deleted file mode 100644
index 88d2d01..0000000
--- a/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/AntlrTag.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.antlr;
-
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.JellyTagException;
-
-import antlr.Tool;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.BufferedReader;
-import java.security.Permission;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-public class AntlrTag extends TagSupport
-{
-    private List grammars;
-    private File outputDir;
-
-    public AntlrTag()
-    {
-        this.grammars = new ArrayList( 1 );
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Evaluate the body to register all the various goals and pre/post conditions
-     * then run all the current targets
-     */
-    public void doTag(final XMLOutput output) throws MissingAttributeException, JellyTagException
-    {
-        if ( this.outputDir == null )
-        {
-            throw new MissingAttributeException( "outputDir" );
-        }
-
-        invokeBody( output );
-
-        Iterator grammarIter = this.grammars.iterator();
-        String eachGrammar = null;
-
-        String sourceDir = (String) getContext().getVariable( "maven.antlr.src.dir" );
-        File grammar = null;
-
-        while ( grammarIter.hasNext() )
-        {
-            eachGrammar = ((String) grammarIter.next()).trim();
-
-            grammar = new File( sourceDir,
-                                eachGrammar );
-
-            File generated = getGeneratedFile( grammar.getPath() );
-
-            if ( generated.exists() )
-            {
-                if ( generated.lastModified() > grammar.lastModified() )
-                {
-                    // it's more recent, skip.
-                    return;
-                }
-            }
-
-            if ( ! generated.getParentFile().exists() )
-            {
-                generated.getParentFile().mkdirs();
-            }
-
-            String[] args = new String[]
-                {
-                    "-o",
-                    generated.getParentFile().getPath(),
-                    grammar.getPath(),
-                };
-
-            SecurityManager oldSm = System.getSecurityManager();
-
-            System.setSecurityManager( NoExitSecurityManager.INSTANCE );
-
-            try
-            {
-                Tool.main( args );
-            }
-            catch (SecurityException e)
-            {
-                if ( ! e.getMessage().equals( "exitVM-0" ) )
-                {
-                    throw new JellyTagException( e );
-                }
-            }
-            finally
-            {
-                System.setSecurityManager( oldSm );
-            }
-        }
-    }
-
-    protected File getGeneratedFile(String grammar) throws JellyTagException
-    {
-        File grammarFile = new File( grammar );
-
-        String generatedFileName = null;
-
-        String className = null;
-        String packageName = "";
-
-        try {
-
-            BufferedReader in = new BufferedReader(new FileReader(grammar));
-
-            String line;
-            while ((line = in.readLine()) != null) {
-                line = line.trim();
-                int extendsIndex = line.indexOf(" extends ");
-                if (line.startsWith("class ") &&  extendsIndex > -1) {
-                    generatedFileName = line.substring(6, extendsIndex).trim();
-                    break;
-                }
-                else if ( line.startsWith( "package" ) ) {
-                    packageName = line.substring( 8 ).trim();
-                }
-            }
-            in.close();
-        } catch (Exception e) {
-            throw new JellyTagException("Unable to determine generated class",
-                                     e);
-        }
-        if (generatedFileName == null) {
-            return null;
-        }
-
-        File genFile = null;
-
-        if ( "".equals( packageName ) )
-        {
-            genFile = new File( getOutputDir(),
-                                generatedFileName + ".java" );
-        }
-        else
-        {
-            String packagePath = packageName.replace( '.',
-                                                      File.separatorChar );
-
-            packagePath = packagePath.replace( ';',
-                                               File.separatorChar );
-
-            genFile = new File( new File( getOutputDir(), packagePath),
-                                generatedFileName + ".java" );
-        }
-
-        return genFile;
-    }
-
-    void addGrammar(String grammar)
-    {
-        this.grammars.add( grammar );
-    }
-
-    public void setOutputDir(File outputDir)
-    {
-        this.outputDir = outputDir;
-    }
-
-    public File getOutputDir()
-    {
-        return this.outputDir;
-    }
-}
-
-class NoExitSecurityManager extends SecurityManager
-{
-    static final NoExitSecurityManager INSTANCE = new NoExitSecurityManager();
-
-    private NoExitSecurityManager()
-    {
-    }
-
-    public void checkPermission(Permission permission)
-    {
-    }
-
-    public void checkExit(int status)
-    {
-        throw new SecurityException( "exitVM-" + status );
-    }
-}
diff --git a/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/AntlrTagLibrary.java b/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/AntlrTagLibrary.java
deleted file mode 100644
index a13a3c3..0000000
--- a/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/AntlrTagLibrary.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.antlr;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/** Implements tags that are useful for working with ANTLR.
- *
- *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- *  @version $Revision: 1.4 $
- */
-public class AntlrTagLibrary extends TagLibrary
-{
-    public AntlrTagLibrary() {
-        registerTag("antlr", AntlrTag.class);
-        registerTag("grammar", GrammarTag.class);
-    }
-}
diff --git a/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/GrammarTag.java b/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/GrammarTag.java
deleted file mode 100644
index 3629e4b..0000000
--- a/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/GrammarTag.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.antlr;
-
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.JellyTagException;
-
-public class GrammarTag extends TagSupport
-{
-    public GrammarTag()
-    {
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    public void doTag(final XMLOutput output) throws JellyTagException
-    {
-        String grammar = getBodyText();
-
-        AntlrTag antlr = (AntlrTag) findAncestorWithClass( AntlrTag.class );
-
-        if ( antlr == null )
-        {
-            throw new JellyTagException( "<grammar> should only be used within an <antlr> block." );
-        }
-
-        antlr.addGrammar( grammar );
-    }
-}
diff --git a/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/package.html b/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/package.html
deleted file mode 100644
index 40e0a61..0000000
--- a/jelly-tags/antlr/src/java/org/apache/commons/jelly/tags/antlr/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A tag library for working with the 
-  <a href="http://www.antlr.org/">Antlr</a> library
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/antlr/src/test/org/apache/commons/jelly/tags/antlr/sample.jelly b/jelly-tags/antlr/src/test/org/apache/commons/jelly/tags/antlr/sample.jelly
deleted file mode 100644
index 4fa640e..0000000
--- a/jelly-tags/antlr/src/test/org/apache/commons/jelly/tags/antlr/sample.jelly
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core" xmlns:antlr="jelly:antlr">
-
-    <!-- some sample scripts would be a good idea -->
-
-</jelly>
\ No newline at end of file
diff --git a/jelly-tags/antlr/xdocs/changes.xml b/jelly-tags/antlr/xdocs/changes.xml
deleted file mode 100644
index 3da64af..0000000
--- a/jelly-tags/antlr/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-10">
-      <action dev="dion" type="add">Initial release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/antlr/xdocs/index.xml b/jelly-tags/antlr/xdocs/index.xml
deleted file mode 100644
index ad54742..0000000
--- a/jelly-tags/antlr/xdocs/index.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Antlr Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        This is a Jelly interface for Antlr. See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/antlr/xdocs/navigation.xml b/jelly-tags/antlr/xdocs/navigation.xml
deleted file mode 100644
index 43307e1..0000000
--- a/jelly-tags/antlr/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Antlr Tag Library">
-
-  <title>Antlr Tag Library</title>
-  
-  <body>
-    <menu name="Antlr Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/avalon/.cvsignore b/jelly-tags/avalon/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/avalon/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/avalon/build.xml b/jelly-tags/avalon/build.xml
deleted file mode 100644
index 01cb099..0000000
--- a/jelly-tags/avalon/build.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-avalon" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-avalon-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-avalon 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.avalon.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/avalon-framework-4.1.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/avalon-framework/jars/avalon-framework-4.1.3.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/avalon/maven.xml b/jelly-tags/avalon/maven.xml
deleted file mode 100644
index 5dbe521..0000000
--- a/jelly-tags/avalon/maven.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-    <!-- demos -->
-
-</project>
diff --git a/jelly-tags/avalon/project.properties b/jelly-tags/avalon/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/avalon/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/avalon/project.xml b/jelly-tags/avalon/project.xml
deleted file mode 100644
index b8935d2..0000000
--- a/jelly-tags/avalon/project.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-avalon</id>
-  <name>commons-jelly-tags-avalon</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.avalon</package>
-
-  <description>
-        This is a Jelly library for Avalon
-  </description>
-  <shortDescription>This is a Jelly library for Avalon</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_AVALON-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-
-    <!-- START for compilation -->
-  
-    <dependency>
-      <id>avalon-framework</id>
-      <version>4.1.3</version>
-      <properties>
-        <gump.project>avalon-framework-api</gump.project>
-      </properties>
-    </dependency>
-  
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-        
-    <!-- END for running demos -->
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/avalon/src/java/org/apache/commons/jelly/avalon/JellyService.java b/jelly-tags/avalon/src/java/org/apache/commons/jelly/avalon/JellyService.java
deleted file mode 100644
index 0ccc2bc..0000000
--- a/jelly-tags/avalon/src/java/org/apache/commons/jelly/avalon/JellyService.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.avalon;
-
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.net.URL;
-import java.net.MalformedURLException;
-import java.io.File;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-// Avalon
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-
-// Jelly
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * An Avalon based service for executing Jelly scripts. The
- * service allows executing a script based on a name as well
- * as by a URL.
- *
- * @author <a href="mailto:robert@bull-enterprises.com">Robert McIntosh</a>
- * @version 1.1
- */
-public interface JellyService {
-
-    /**
-     * Executes a named script with the supplied
-     * Map of parameters.
-     *
-     * @param params Parameters to be supplied to the script
-     * @return All of the variables from the JellyContext
-     * @exception Exception if the script raises some kind of exception while processing
-     */
-    public Map runNamedScript( String name, Map params ) throws Exception;
-
-    /**
-     * Executes a named script with the supplied
-     * Map of parameters.
-     *
-     * @param name is the name of the script to run
-     * @param params Parameters to be supplied to the script
-     * @param output is the XMLOutput for any output to be sent
-     * @return All of the variables from the JellyContext
-     * @exception Exception if the script raises some kind of exception while processing
-     */
-    public Map runNamedScript( String name, Map params, XMLOutput output ) throws Exception;
-
-    /**
-     * Executes a named script with the supplied
-     * Map of parameters and send the output of the script
-     * to the supplied output stream.
-     *
-     * @param name is the name of the script to run
-     * @param params Parameters to be supplied to the script
-     * @param out is the outputStream for output to be sent
-     * @return All of the variables from the JellyContext
-     * @exception Exception if the script raises some kind of exception while processing
-     */
-    public Map runNamedScript( String name, Map params, OutputStream out ) throws Exception;
-
-    /**
-     * Runs a script from the supplied url
-     *
-     * @param url The URL of the script
-     * @param params Parameters to be supplied to the script
-     * @param output is the XMLOutput where output of the script will go
-     * @return All of the variables from the JellyContext
-     */
-    public Map runScript( String url, Map params, XMLOutput output ) throws Exception;
-
-    /**
-     * Runs a script from the supplied url and sends the output of the script to
-     * the supplied OutputStream.
-     *
-     * @param url The URL of the script
-     * @param params Parameters to be supplied to the script
-     * @param out The OutputStream to send the output of the script to
-     * @return All of the variables from the JellyContext
-     * @exception Exception if the script raises some kind of exception while processing
-     */
-    public Map runScript( String url, Map params, OutputStream out ) throws Exception;
-
-    /**
-     * Runs a script from the supplied url
-     *
-     * @param url The URL of the script
-     * @param params Parameters to be supplied to the script
-     * @return All of the variables from the JellyContext
-     * @exception Exception if the script raises some kind of exception while processing
-     */
-    public Map runScript( String url, Map params ) throws Exception;
-
-}
-
diff --git a/jelly-tags/avalon/src/java/org/apache/commons/jelly/avalon/JellyServiceImpl.java b/jelly-tags/avalon/src/java/org/apache/commons/jelly/avalon/JellyServiceImpl.java
deleted file mode 100644
index 3a4b6e8..0000000
--- a/jelly-tags/avalon/src/java/org/apache/commons/jelly/avalon/JellyServiceImpl.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.avalon;
-
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.net.URL;
-import java.net.MalformedURLException;
-import java.io.File;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-// Avalon
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-
-// Jelly
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * An Avalon based service for executing Jelly scripts. The
- * service allows executing a script based on a name as well
- * as by a URL.
- *
- * @author <a href="mailto:robert@bull-enterprises.com">Robert McIntosh</a>
- * @version $Revision: 1.4 $
- */
-public class JellyServiceImpl implements JellyService, Configurable {
-
-    private boolean m_configured = false;
-    private Map m_scripts = new HashMap();
-
-    /**
-     * Constructor for JellyService.
-     */
-    public JellyServiceImpl() {
-        super();
-    }
-
-    /**
-     * @see org.apache.commons.jelly.avalon.JellyService.runNamedScript(String, Map)
-     */
-    public Map runNamedScript( String name, Map params ) throws Exception {
-        return runNamedScript(name, params, createXMLOutput());
-    }
-
-    /**
-     * @see org.apache.commons.jelly.avalon.JellyService.runNamedScript(String, Map, XMLOutput)
-     */
-    public Map runNamedScript( String name, Map params, XMLOutput output ) throws Exception {
-        if( !m_scripts.containsKey( name ) )
-            throw new JellyException( "No script exists for script name [" + name + "]" );
-
-        Script script = (Script)m_scripts.get( name );
-        JellyContext context = createJellyContext();
-
-        context.setVariables( params );
-
-        script.run( context, output );
-        return context.getVariables();
-    }
-
-     /**
-     * @see org.apache.commons.jelly.avalon.JellyService.runNamedScript(String, Map, OutputStream)
-     */
-    public Map runNamedScript( String name, Map params, OutputStream out ) throws Exception {
-        XMLOutput xmlOutput = XMLOutput.createXMLOutput( out );
-        Map answer = runNamedScript(name, params, xmlOutput);
-        xmlOutput.flush();
-        return answer;
-    }
-
-     /**
-     * @see org.apache.commons.jelly.avalon.JellyService.runScript(String, Map, XMLOutput)
-     */
-    public Map runScript( String url, Map params, XMLOutput output ) throws Exception {
-        URL actualUrl = null;
-        try {
-           actualUrl = new URL( url );
-        }
-        catch( MalformedURLException x ) {
-            throw new JellyException( "Could not find script at URL [" + url + "]: " +
-                                        x.getMessage(), x );
-        }
-
-        // Set up the context
-        JellyContext context = createJellyContext();
-        context.setVariables( params );
-
-        // Run the script
-        context.runScript(url, output);
-        return context.getVariables();
-    }
-
-     /**
-     * @see org.apache.commons.jelly.avalon.JellyService.runScript(String, Map, OutputStream)
-     */
-    public Map runScript( String url, Map params, OutputStream out ) throws Exception {
-        XMLOutput xmlOutput = XMLOutput.createXMLOutput( out );
-        Map answer = runScript(url, params, xmlOutput);
-        xmlOutput.flush();
-        return answer;
-    }
-
-     /**
-     * @see org.apache.commons.jelly.avalon.JellyService.runScript(String, Map)
-     */
-    public Map runScript( String url, Map params ) throws Exception {
-        return runScript(url, params, createXMLOutput());
-    }
-
-
-    // Configurable interface
-    //-------------------------------------------------------------------------
-
-
-    /**
-     * <p>Configures the Jelly Service with named scripts.</p>
-     *
-     * <p>
-     * The configuration looks like:
-     * </p>
-     * <p>
-     * &lt;jelly&gt;<br />
-     * &nbsp;&nbsp;&lt;script&gt;<br />
-     * &nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;script name&lt;/name&gt;<br />
-     * &nbsp;&nbsp;&nbsp;&nbsp;&lt;url validate="false"&gt;url to script file&lt;/url&gt;<br />
-     * &nbsp;&nbsp;&lt;/script&gt;<br />
-     * &lt;/jelly&gt;<br />
-     * </p>
-     * <p>
-     *   Where each &lt;script&gt; element defines a seperate script. The validate attribute
-     *   on the url tag is optional and defaults to false.
-     * </p>
-     *
-     * @param config The configuration
-     * @exception ConfigurationException
-     */
-    public void configure( Configuration config ) throws ConfigurationException {
-        if( m_configured )
-            throw new ConfigurationException( "configure may only be executed once" );
-
-        if( !"jelly".equals( config.getName() ) )
-            throw new ConfigurationException( "Expected <jelly> but got " + config.getName() );
-
-        // Configure named scripts
-        Configuration[] scripts = config.getChildren( "scripts" );
-        for (int i = 0; i < scripts.length; i++) {
-            String name = config.getChild( "name" ).getValue();
-
-            // Try to load and compile the script
-            try {
-                String scriptName = config.getChild( "url" ).getValue();
-                // Try to load the script via file, then by URL, then by classloader
-                URL url = null;
-                File file = new File( scriptName );
-                if( file.exists() ) {
-                    url = file.toURL();
-                }
-                else {
-                    try {
-                        url = new URL( scriptName );
-                    }
-                    catch( MalformedURLException mfue ) {
-                      // Last try, via classloader
-                      url = getClass().getResource( scriptName );
-                    }
-                }
-
-                // All atempts failed...
-                if( url == null )
-                    throw new ConfigurationException( "Could not find script [" + scriptName + "]" );
-
-                // Get the script and store it
-                Jelly jelly = new Jelly();
-                jelly.setUrl( url );
-                boolean validate = config.getChild( "url" ).getAttributeAsBoolean( "validate",  false );
-                jelly.setValidateXML( validate );
-                Script script = jelly.compileScript();
-
-                m_scripts.put( name, script );
-            }
-            catch( Throwable t ) {
-                throw new ConfigurationException( "Could not load script [" + name + "]: " + t.getMessage() );
-            }
-        }
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new JellyContext instance. Derived classes
-     * could overload this method to provide a custom JellyContext instance.
-     */
-    protected JellyContext createJellyContext() {
-        return new JellyContext();
-    }
-
-    /**
-     * Factory method to create a new XMLOutput to give to scripts as they run.
-     * Derived classes could overload this method, such as to pipe output to
-     * some log file etc.
-     */
-    protected XMLOutput createXMLOutput() {
-        // output will just be ignored
-        return new XMLOutput();
-    }
-
-}
-
diff --git a/jelly-tags/avalon/src/test/org/apache/commons/jelly/tags/avalon/sample.jelly b/jelly-tags/avalon/src/test/org/apache/commons/jelly/tags/avalon/sample.jelly
deleted file mode 100644
index 96bd66d..0000000
--- a/jelly-tags/avalon/src/test/org/apache/commons/jelly/tags/avalon/sample.jelly
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core" xmlns:avalon="jelly:avalon">
-
-    <!-- some sample scripts would be a good idea -->
-
-</jelly>
\ No newline at end of file
diff --git a/jelly-tags/avalon/xdocs/changes.xml b/jelly-tags/avalon/xdocs/changes.xml
deleted file mode 100644
index 3da64af..0000000
--- a/jelly-tags/avalon/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-10">
-      <action dev="dion" type="add">Initial release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/avalon/xdocs/index.xml b/jelly-tags/avalon/xdocs/index.xml
deleted file mode 100644
index aa8e4c6..0000000
--- a/jelly-tags/avalon/xdocs/index.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Avalon Integration</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        This provides an Avalon Service for executing Jelly scripts.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/avalon/xdocs/navigation.xml b/jelly-tags/avalon/xdocs/navigation.xml
deleted file mode 100644
index 5819a48..0000000
--- a/jelly-tags/avalon/xdocs/navigation.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Avalon Integration">
-
-  <title>Avalon Integration</title>
-  
-  <body>
-    <menu name="Avalon Integration">
-      <item name="Overview"                href="/index.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/bean/.cvsignore b/jelly-tags/bean/.cvsignore
deleted file mode 100644
index c24db93..0000000
--- a/jelly-tags/bean/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-junit*.properties
-target
-maven.log
-velocity.log
diff --git a/jelly-tags/bean/build.xml b/jelly-tags/bean/build.xml
deleted file mode 100644
index c58affa..0000000
--- a/jelly-tags/bean/build.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-bean" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-bean-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-bean 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.bean.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-log-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-log-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/bean/maven.xml b/jelly-tags/bean/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/bean/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/bean/project.properties b/jelly-tags/bean/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/bean/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/bean/project.xml b/jelly-tags/bean/project.xml
deleted file mode 100644
index 9b30d39..0000000
--- a/jelly-tags/bean/project.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-bean</id>
-  <name>commons-jelly-tags-bean</name>
-  <currentVersion>1.0.1-SNAPSHOT</currentVersion>
-  <package>org.apache.commons.jelly.tags.bean</package>
-
-  <description>
-       The Jelly Bean Tag Library
-  </description>
-  <shortDescription>Commons Jelly Bean Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_BEAN-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-
-    <!-- START for test-->
-  
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-log</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/libs/log/</url>
-    </dependency>
-      
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/libs/junit/</url>
-    </dependency>
-
-    <!-- END for test -->
-
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeanPropertyTag.java b/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeanPropertyTag.java
deleted file mode 100644
index b39a3cf..0000000
--- a/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeanPropertyTag.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.bean;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Map;
-
-import org.apache.commons.beanutils.MethodUtils;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Creates a nested property via calling a beans createFoo() method then
- * either calling the setFoo(value) or addFoo(value) methods in a similar way
- * to how Ant tags construct themselves.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author Christian Sell
- * @version $Revision: 1.9 $
- */
-public class BeanPropertyTag extends BeanTag {
-
-    /** empty arguments constant */
-    private static final Object[] EMPTY_ARGS = {};
-
-    /** empty argument types constant */
-    private static final Class[] EMPTY_ARG_TYPES = {};
-
-    /** the name of the create method */
-    private String createMethodName;
-
-
-    public BeanPropertyTag(String tagName) {
-        super(Object.class, tagName);
-
-        if (tagName.length() > 0) {
-            createMethodName = "create"
-                + tagName.substring(0,1).toUpperCase()
-                + tagName.substring(1);
-        }
-    }
-
-    /**
-     * Creates a new instance by calling a create method on the parent bean
-     */
-    protected Object newInstance(Class theClass, Map attributes, XMLOutput output) throws JellyTagException {
-        Object parentObject = getParentObject();
-        if (parentObject != null) {
-            // now lets try call the create method...
-            Class parentClass = parentObject.getClass();
-            Method method = findCreateMethod(parentClass);
-            if (method != null) {
-                try {
-                    return method.invoke(parentObject, EMPTY_ARGS);
-                }
-                catch (Exception e) {
-                    throw new JellyTagException( "failed to invoke method: " + method + " on bean: " + parentObject + " reason: " + e, e );
-                }
-            }
-            else {
-                Class tagClass = theClass;
-                if(tagClass == Object.class)
-                    tagClass = findAddMethodClass(parentClass);
-                if(tagClass == null)
-                    throw new JellyTagException("unable to infer element class for tag "+getTagName());
-
-                return super.newInstance(tagClass, attributes, output) ;
-            }
-        }
-        throw new JellyTagException("The " + getTagName() + " tag must be nested within a tag which maps to a BeanSource implementor");
-    }
-
-    /**
-     * finds the parameter type of the first public method in the parent class whose name
-     * matches the add{tag name} pattern, whose return type is void and which takes
-     * one argument only.
-     * @param parentClass
-     * @return the class of the first and only parameter
-     */
-    protected Class findAddMethodClass(Class parentClass) {
-        Method[] methods = parentClass.getMethods();
-        for (int i = 0; i < methods.length; i++) {
-            Method method = methods[i];
-            if(Modifier.isPublic(method.getModifiers())) {
-                Class[] args = method.getParameterTypes();
-                if (method.getName().equals(addMethodName)
-                      && java.lang.Void.TYPE.equals(method.getReturnType())
-                      && args.length == 1
-                      && !java.lang.String.class.equals(args[0])
-                      && !args[0].isArray()
-                      && !args[0].isPrimitive())
-                    return args[0];
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Finds the Method to create a new property object
-     */
-    protected Method findCreateMethod(Class theClass) {
-        if (createMethodName == null) {
-            return null;
-        }
-        return MethodUtils.getAccessibleMethod(
-            theClass, createMethodName, EMPTY_ARG_TYPES
-        );
-    }
-}
diff --git a/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeanTag.java b/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeanTag.java
deleted file mode 100644
index ff0e311..0000000
--- a/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeanTag.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.bean;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Collection;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.beanutils.MethodUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.impl.BeanSource;
-import org.apache.commons.jelly.impl.CollectionTag;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/**
- * Creates a bean for the given tag which is then either output as a variable
- * or can be added to a parent tag.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author Christian Sell
- * @version   $Revision: 1.11 $
- */
-public class BeanTag extends UseBeanTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(BeanTag.class);
-
-    protected static final Object[] EMPTY_ARGUMENTS = {};
-
-    /** the name of the property to create */
-    private String tagName;
-
-    /** the name of the adder method */
-    protected String addMethodName;
-
-    /** if present this is used to call a doit method when the bean is constructed */
-    private Method invokeMethod;
-
-
-    public BeanTag() {
-        this(null, "bean", null);
-    }
-
-    public BeanTag(Class defaultClass, String tagName) {
-        this(defaultClass, tagName, null);
-    }
-
-    public BeanTag(Class defaultClass, String tagName, Method invokeMethod) {
-        super(defaultClass);
-        this.tagName = tagName;
-        this.invokeMethod = invokeMethod;
-
-        if (tagName.length() > 0) {
-            addMethodName = "add"
-                + tagName.substring(0,1).toUpperCase()
-                + tagName.substring(1);
-        }
-    }
-
-    /**
-     * @return the local name of the XML tag to which this tag is bound
-     */
-    public String getTagName() {
-        return tagName;
-    }
-
-    /**
-     * Output the tag as a named variable. If the parent bean has an adder or setter
-     * method then invoke that to register this bean with its parent.
-     */
-    protected void processBean(String var, Object bean) throws JellyTagException {
-        if (var != null) {
-            context.setVariable(var, bean);
-        }
-
-        // now lets try set the parent property via calling the adder or the setter method
-        if (bean != null) {
-            Tag parent = this;
-
-            while (true) {
-                parent = parent.getParent();
-                if (parent == null) {
-                    break;
-                }
-
-                if (parent instanceof BeanSource) {
-                    BeanSource source = (BeanSource) parent;
-                    Object parentObject = source.getBean();
-                    if (parentObject != null) {
-                        if (parentObject instanceof Collection) {
-                            Collection collection = (Collection) parentObject;
-                            collection.add(bean);
-                        }
-                        else {
-                            // lets see if there's a setter method...
-                            Method method = findAddMethod(parentObject.getClass(), bean.getClass());
-                            if (method != null) {
-                                Object[] args = { bean };
-                                try {
-                                    method.invoke(parentObject, args);
-                                }
-                                catch (Exception e) {
-                                    throw new JellyTagException( "failed to invoke method: " + method + " on bean: " + parentObject + " reason: " + e, e );
-                                }
-                            }
-                            else {
-                                try {
-                                  BeanUtils.setProperty(parentObject, tagName, bean);
-                                } catch (IllegalAccessException e) {
-                                    throw new JellyTagException(e);
-                                } catch (InvocationTargetException e) {
-                                    throw new JellyTagException(e);
-                                }
-                            }
-                        }
-                    }
-                    else {
-                        log.warn("Cannot process null bean for tag: " + parent);
-                    }
-                }
-                else if (parent instanceof CollectionTag) {
-                    CollectionTag tag = (CollectionTag) parent;
-                    tag.addItem(bean);
-                }
-                else {
-                    continue;
-                }
-                break;
-            }
-
-            if (invokeMethod != null) {
-                Object[] args = { bean };
-                try {
-                    invokeMethod.invoke(bean, EMPTY_ARGUMENTS);
-                }
-                catch (Exception e) {
-                    throw new JellyTagException( "failed to invoke method: " + invokeMethod + " on bean: " + bean + " reason: " + e, e );
-                }
-            }
-            else {
-                if (parent == null && var == null) {
-                    //warn if the bean gets lost in space
-                    log.warn( "Could not add bean to parent for bean: " + bean );
-                }
-            }
-        }
-    }
-
-    /**
-     * Finds the Method to add the new bean
-     */
-    protected Method findAddMethod(Class beanClass, Class valueClass) {
-        if (addMethodName == null) {
-            return null;
-        }
-        Class[] argTypes = { valueClass };
-        return MethodUtils.getAccessibleMethod(
-            beanClass, addMethodName, argTypes
-        );
-    }
-
-
-    /**
-     * @return the parent bean object
-     */
-    protected Object getParentObject() throws JellyTagException {
-        BeanSource tag = (BeanSource) findAncestorWithClass(BeanSource.class);
-        if (tag != null) {
-            return tag.getBean();
-        }
-        return null;
-    }
-}
diff --git a/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeanTagLibrary.java b/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeanTagLibrary.java
deleted file mode 100644
index a79bbfa..0000000
--- a/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeanTagLibrary.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bean;
-
-import java.lang.reflect.Method;
-import java.util.Hashtable;
-import java.util.Map;
-
-import org.apache.commons.beanutils.MethodUtils;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.jelly.impl.TagScript;
-
-import org.xml.sax.Attributes;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author Theo Niemeijer
-  * @version $Revision: 1.7 $
-  */
-public class BeanTagLibrary extends TagLibrary {
-
-    /** Synchronized map of tag names to bean classes */
-    private Map beanTypes = new Hashtable();
-
-    /** Synchronized map of tag names to invoke methods */
-    private Map invokeMethods = new Hashtable();
-
-    public BeanTagLibrary() {
-        registerTagFactory(
-            "beandef",
-            new TagFactory() {
-                public Tag createTag(String name, Attributes attributes) throws JellyException {
-                    return new BeandefTag(BeanTagLibrary.this);
-                }
-            }
-        );
-    }
-
-    /**
-     * Allows tags to register new bean types
-     */
-    public void registerBean(String name, Class type) {
-        beanTypes.put(name, type);
-    }
-
-    /**
-     * Allows tags to register new bean types with an associated method
-     */
-    public void registerBean(String name, Class type, Method method) {
-        registerBean(name, type);
-        if (method != null) {
-            invokeMethods.put(name, method);
-        }
-        else {
-            invokeMethods.remove(name);
-        }
-    }
-
-    /**
-     * Allows tags to register new bean types with an associated method
-     */
-    public void registerBean(String name, Class type, String methodName) {
-        Method method = MethodUtils.getAccessibleMethod(
-            type, methodName, BeandefTag.EMPTY_ARGUMENT_TYPES
-        );
-        registerBean(name, type, method);
-    }
-
-    // TagLibrary interface
-    //-------------------------------------------------------------------------
-    public TagScript createTagScript(
-        final String name, final Attributes attributes
-    ) throws JellyException {
-
-        // check for standard tags first
-        TagScript answer = super.createTagScript(name, attributes);
-        if (answer != null) {
-            return answer;
-        }
-
-        // lets try a dynamic tag
-        return new TagScript( createTagFactory(name, attributes) );
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a TagFactory for a given tag attribute and attributes
-     */
-    protected TagFactory createTagFactory(String name, Attributes attributes) throws JellyException {
-
-        return new TagFactory() {
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return createBeanTag(name, attributes);
-            }
-        };
-    }
-
-    protected Tag createBeanTag(String name, Attributes attributes) throws JellyException {
-        // is the name bound to a specific class
-        Class beanType = getBeanType(name, attributes);
-        if (beanType != null) {
-            Method invokeMethod = (Method) invokeMethods.get(name);
-            return new BeanTag(beanType, name, invokeMethod);
-        }
-
-        // its a property tag
-        return new BeanPropertyTag(name);
-    }
-
-    protected Class getBeanType(String name, Attributes attributes) {
-        return (Class) beanTypes.get(name);
-    }
-}
diff --git a/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeandefTag.java b/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeandefTag.java
deleted file mode 100644
index 1577e90..0000000
--- a/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeandefTag.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.bean;
-
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.beanutils.MethodUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/**
- * Binds a Java bean to the given named Jelly tag so that the attributes of
- * the tag set the bean properties..
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class BeandefTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(BeandefTag.class);
-
-    /** An empty Map as I think Collections.EMPTY_MAP is only JDK 1.3 onwards */
-    private static final Map EMPTY_MAP = new HashMap();
-
-    protected static final Class[] EMPTY_ARGUMENT_TYPES = {};
-
-    /** the name of the tag to create */
-    private String name;
-
-    /** the Java class name to use for the tag */
-    private String className;
-
-    /** the name of the invoke method */
-    private String methodName;
-
-    /** the ClassLoader used to load beans */
-    private ClassLoader classLoader;
-
-    /** the library in which to define this new bean tag */
-    private BeanTagLibrary library;
-
-    public BeandefTag(BeanTagLibrary library) {
-        this.library = library;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        invokeBody(output);
-
-        if (name == null) {
-            throw new MissingAttributeException("name");
-        }
-        if (className == null) {
-            throw new MissingAttributeException("className");
-        }
-
-        Class theClass = null;
-        try {
-            theClass = ClassLoaderUtils.loadClass(className, classLoader, getContext().getUseContextClassLoader(), getClass());
-        } catch (ClassNotFoundException e) {
-            log.error( "Could not load class: " + className + " exception: " + e, e );
-            throw new JellyTagException("Could not find class: "
-                    + className
-                    + " using ClassLoader: "
-                    + classLoader);
-        }
-
-        Method invokeMethod = getInvokeMethod(theClass);
-
-        // @todo should we allow the variable name to be specified?
-        library.registerBean(name, theClass, invokeMethod);
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of the tag to create
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Sets the Java class name to use for the tag
-     */
-    public void setClassName(String className) {
-        this.className = className;
-    }
-
-    /**
-     * Sets the ClassLoader to use to load the class.
-     * If no value is set then the current threads context class
-     * loader is used.
-     */
-    public void setClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
-    /**
-     * @return the ClassLoader to use to load classes
-     *  or will use the thread context loader if none is specified.
-     */
-    public ClassLoader getClassLoader() {
-        return ClassLoaderUtils.getClassLoader(classLoader, true, getClass());
-    }
-
-    /**
-     * @return String
-     */
-    public String getMethodName() {
-        return methodName;
-    }
-
-    /**
-     * Sets the methodName.
-     * @param methodName The methodName to set
-     */
-    public void setMethodName(String methodName) {
-        this.methodName = methodName;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected Method getInvokeMethod(Class theClass) {
-        if (methodName != null) {
-            // lets lookup the method name
-            return MethodUtils.getAccessibleMethod(theClass, methodName, EMPTY_ARGUMENT_TYPES);
-        }
-        return null;
-    }
-}
diff --git a/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/package.html b/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/package.html
deleted file mode 100644
index 29c74ec..0000000
--- a/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>
-  	A tag library for mapping tags to beans using a similar approach to Ant.
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Customer.java b/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Customer.java
deleted file mode 100644
index 236f3a4..0000000
--- a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Customer.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bean;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * A sample bean that we can construct via Jelly tags
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class Customer {
-
-    private String name;
-    private String location;
-    private List orders = new ArrayList();
-
-
-    public Customer() {
-    }
-
-    public Customer(String name) {
-        setName(name);
-    }
-
-    public Customer(String name, String location) {
-        setName(name);
-        setLocation(location);
-    }
-
-    public Customer(String name, String location, Order anOrder) {
-        setName(name);
-        setLocation(location);
-        addOrder(anOrder);
-    }
-
-    public Customer(Customer cust) {
-        setName(cust.getName());
-        setLocation(cust.getLocation());
-        List list = cust.getOrders();
-        if(null != list) {
-            for(Iterator iter = list.iterator();iter.hasNext();) {
-                addOrder((Order)iter.next());
-            }
-        }
-    }
-
-    public String toString() {
-        return super.toString() + "[name=" + name + ";location=" + location + "]";
-    }
-
-    /**
-     * Creates a new Order object
-     */
-    public Order createOrder() {
-        return new Order();
-    }
-
-    public List getOrders() {
-        return orders;
-    }
-
-    public void addOrder(Order order) {
-        orders.add(order);
-    }
-
-    public void removeOrder(Order order) {
-        orders.remove(order);
-    }
-
-    /**
-     * Returns the location.
-     * @return String
-     */
-    public String getLocation() {
-        return location;
-    }
-
-    /**
-     * Returns the name.
-     * @return String
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the location.
-     * @param location The location to set
-     */
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    /**
-     * Sets the name.
-     * @param name The name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-}
diff --git a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/CustomerTag.java b/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/CustomerTag.java
deleted file mode 100644
index 3a697b3..0000000
--- a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/CustomerTag.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bean;
-
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-
-/**
- * A first-class tag which is used to demonstrate using the bean tag library
- * in conjunction with an existing tag library. The only requirement is that
- * we implement the BeanSource interface, and that the bean returned from the
- * getBean() method supplies the appropriate create[nested tag name] and/or
- * add[nested tag name] methods.
- *
- * @author Christian Sell
- * @version CustomerTag.java,v 1.1 2003/01/21 15:16:32 jstrachan Exp
- */
-public class CustomerTag extends UseBeanTag {
-    public CustomerTag() {
-        super(Customer.class);
-    }
-}
diff --git a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Manager.java b/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Manager.java
deleted file mode 100644
index d4b07cb..0000000
--- a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Manager.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bean;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A sample bean that we can construct via Jelly tags
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class Manager {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(Manager.class);
-
-    private List customers = new ArrayList();
-
-    boolean invoked = false;
-
-    public Manager() {
-    }
-
-    public String toString() {
-        return super.toString() + "[customers=" + customers + "]";
-    }
-
-    /**
-     * The invoke method which is called when the bean is constructed
-     */
-    public void run() {
-        invoked = true;
-
-        log.info("Invoked the run() method with customers: " + customers);
-    }
-
-
-    public List getCustomers() {
-        return customers;
-    }
-
-    public void addCustomer(Customer customer) {
-        customers.add(customer);
-    }
-
-    public void removeCustomer(Customer customer) {
-        customers.remove(customer);
-    }
-
-    /**
-     * @return boolean
-     */
-    public boolean isInvoked() {
-        return invoked;
-    }
-
-    /**
-     * Sets the invoked.
-     * @param invoked The invoked to set
-     */
-    public void setInvoked(boolean invoked) {
-        this.invoked = invoked;
-    }
-
-}
diff --git a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/MyBeanTagLibrary.java b/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/MyBeanTagLibrary.java
deleted file mode 100644
index 09352a9..0000000
--- a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/MyBeanTagLibrary.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bean;
-
-import org.apache.commons.jelly.tags.bean.BeanTagLibrary;
-
-/**
- * Describes the Taglib.
- * This could be created via Jelly script, or could load the mapping of
- * tag names to bean classes from properties file etc  but is implemented in Java
- * code for simplicity
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.2
- */
-public class MyBeanTagLibrary extends BeanTagLibrary {
-
-    public MyBeanTagLibrary() {
-        registerBean( "customer", Customer.class );
-        registerTag( "myContainer", MyContainerTag.class );
-    }
-}
diff --git a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/MyContainerTag.java b/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/MyContainerTag.java
deleted file mode 100644
index cd28b6b..0000000
--- a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/MyContainerTag.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bean;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.CollectionTag;
-
-/**
- * A simple tag which demonstrates how to process beans generically.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version  $Revision: 1.4 $
- */
-public class MyContainerTag extends TagSupport implements CollectionTag {
-
-    private List list = new ArrayList();
-    private String var;
-
-    public MyContainerTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        invokeBody(output);
-        context.setVariable(var, list);
-        list = new ArrayList();
-    }
-
-    // CollectionTag interface
-    //-------------------------------------------------------------------------
-    public void addItem(Object value) {
-        list.add(value);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * @return String
-     */
-    public String getVar() {
-        return var;
-    }
-
-    /**
-     * Sets the var.
-     * @param var The var to set
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-}
diff --git a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/MyTagLibrary.java b/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/MyTagLibrary.java
deleted file mode 100644
index df3aefd..0000000
--- a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/MyTagLibrary.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bean;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.jelly.impl.TagScript;
-
-import org.xml.sax.Attributes;
-
-/**
- * A normal tag library which will use a BeanTag to create beans but this tag
- * library does not derive from BeanTagLibrary and so does not have a &lt;
- * beandef&gt; tag
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class MyTagLibrary extends TagLibrary {
-
-    public MyTagLibrary() {
-    }
-
-
-    // TagLibrary interface
-    //-------------------------------------------------------------------------
-    public TagScript createTagScript(String name, Attributes attributes) throws JellyException {
-
-        TagFactory factory = new TagFactory() {
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return createBeanTag(name, attributes);
-            }
-        };
-        return new TagScript( factory );
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a Tag for the given tag and attributes. If this
-     * tag matches a root bean, then a BeanTag will be created, otherwise a
-     * BeanPropertyTag is created to make a nested property.
-     */
-    protected Tag createBeanTag(String name, Attributes attributes) throws JellyException {
-        // is the name bound to a specific class
-        Class beanType = getBeanType(name, attributes);
-        if (beanType != null) {
-            return new BeanTag(beanType, name);
-        }
-
-        // its a property tag
-        return new BeanPropertyTag(name);
-    }
-
-    /**
-     * Return the bean class that we should use for the given element name
-     *
-     * @param name is the XML element name
-     * @param attributes the XML attributes
-     * @return Class the bean class to use for this element or null if the tag
-     * is a nested property
-     */
-    protected Class getBeanType(String name, Attributes attributes) {
-        if (name.equals( "customer")) {
-            return Customer.class;
-        }
-        return null;
-    }
-}
diff --git a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Order.java b/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Order.java
deleted file mode 100644
index 9c599e5..0000000
--- a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Order.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bean;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A sample bean that we can construct via Jelly tags
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class Order {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(Order.class);
-
-    private Product product;
-    private int amount;
-    private double price;
-
-    public Order() {
-    }
-
-    public String toString() {
-        return "Order[amount=" + amount + ";price=" + price + ";product=" + product + "]";
-    }
-
-    /**
-     * Factory method to create a new Product
-    public Product createProduct() {
-        return new Product();
-    }
-     */
-
-    public void addProduct(Product product)
-    {
-        this.product = product;
-    }
-
-    /**
-     * Returns the amount.
-     * @return int
-     */
-    public int getAmount() {
-        return amount;
-    }
-
-    /**
-     * Returns the price.
-     * @return double
-     */
-    public double getPrice() {
-        return price;
-    }
-
-    /**
-     * Sets the amount.
-     * @param amount The amount to set
-     */
-    public void setAmount(int amount) {
-        this.amount = amount;
-    }
-
-    /**
-     * Sets the price.
-     * @param price The price to set
-     */
-    public void setPrice(double price) {
-        this.price = price;
-    }
-
-    /**
-     * Returns the product.
-     * @return Product
-     */
-    public Product getProduct() {
-        return product;
-    }
-
-    /**
-     * Sets the product.
-     * @param product The product to set
-     */
-    public void setProduct(Product product) {
-        this.product = product;
-    }
-
-}
diff --git a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Product.java b/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Product.java
deleted file mode 100644
index 59c00a4..0000000
--- a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/Product.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bean;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A sample bean that we can construct via Jelly tags
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class Product {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(Product.class);
-
-    private String id;
-    private String name;
-
-    public Product() {
-    }
-
-    public String toString() {
-        return "Product[id=" + id + ";name=" + name + "]";
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * Returns the id.
-     * @return String
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Returns the name.
-     * @return String
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the id.
-     * @param id The id to set
-     */
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    /**
-     * Sets the name.
-     * @param name The name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-}
diff --git a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/TestJelly.java b/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/TestJelly.java
deleted file mode 100644
index 95c0b47..0000000
--- a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bean;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/suite.jelly b/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/suite.jelly
deleted file mode 100644
index 5ea20a4..0000000
--- a/jelly-tags/bean/src/test/org/apache/commons/jelly/tags/bean/suite.jelly
+++ /dev/null
@@ -1,267 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<test:suite 

-    xmlns:j="jelly:core"

-    xmlns:mytags="jelly:org.apache.commons.jelly.tags.bean.MyTagLibrary"

-    xmlns:mytags2="jelly:org.apache.commons.jelly.tags.bean.MyBeanTagLibrary"

-    xmlns="jelly:bean"

-    xmlns:test="jelly:junit"

-    xmlns:log="jelly:log">

-

-    <!-- need to do this so the bean taglib recognizes the customer root tag. For nested

-             tags, the object type is inferred from the available accessor methods. This definition

-             is used by the testNestedBeanTag and testBeanList cases. The nesting level at

-             which it appears does not play any role - it becomes globally visible after it is executed -->

-             

-    <beandef name="customer" className="org.apache.commons.jelly.tags.bean.Customer"/>

-    <beandef name="manager" className="org.apache.commons.jelly.tags.bean.Manager" methodName="run"/>

-    

-    <test:case name="testNestedBeanTag">

-

-        <customer var="c1" name="James" location="London" >

-            <order amount="100" price="2.99">

-                <product id="p1" name="Beer"/>

-            </order>

-            <order amount="200" price="4.99">

-                <product id="p2" name="Pizza"/>

-            </order>

-        </customer>

-        

-        <log:info>Created a customer with name: ${c1.name} and location: ${c1.location}</log:info>

-        <log:info>Customer has orders ${c1.orders}</log:info>

-    

-        <test:assertEquals expected="James" actual="${c1.name}"/>

-        <test:assertEquals expected="London" actual="${c1.location}"/>

-    

-        <test:assert test="${size(c1.orders) == 2}"/>

-    

-        <test:assert test="${c1.orders[0].amount == 100}"/>

-        <test:assert test="${c1.orders[0].price == 2.99}"/>

-        

-        <test:assert test="${c1.orders[1].amount == 200}"/>

-        <test:assert test="${c1.orders[1].price == 4.99}"/>

-    

-        <test:assert test="${c1.orders[0].product != null}"/>

-        <test:assert test="${c1.orders[1].product != null}"/>

-        

-        <test:assertEquals expected="p1" actual="${c1.orders[0].product.id}"/>

-        <test:assertEquals expected="Beer" actual="${c1.orders[0].product.name}"/>

-    

-        <test:assertEquals expected="p2" actual="${c1.orders[1].product.id}"/>

-        <test:assertEquals expected="Pizza" actual="${c1.orders[1].product.name}"/>

-    

-    </test:case>

-    

-    <test:case name="testNestedBeanPropertyTag">

-    

-            <!-- 

-                || This test uses a custom library which has the customer tag registered

-                || Therefore, the beandef is not required 

-                -->

-            <mytags:customer var="c1" name="James" location="London" >

-                <order amount="100" price="2.99">

-                    <product id="p1" name="Beer"/>

-                </order>

-                <order amount="200" price="4.99">

-                    <product id="p2" name="Pizza"/>

-                </order>

-            </mytags:customer>

-    

-            <log:info>Created a customer with name: ${c1.name} and location: ${c1.location}</log:info>

-            <log:info>Customer has orders ${c1.orders}</log:info>

-    

-            <test:assertEquals expected="James" actual="${c1.name}"/>

-            <test:assertEquals expected="London" actual="${c1.location}"/>

-    

-            <test:assert test="${size(c1.orders) == 2}"/>

-    

-            <test:assert test="${c1.orders[0].amount == 100}"/>

-            <test:assert test="${c1.orders[0].price == 2.99}"/>

-    

-            <test:assert test="${c1.orders[1].amount == 200}"/>

-            <test:assert test="${c1.orders[1].price == 4.99}"/>

-    

-            <test:assert test="${c1.orders[0].product != null}"/>

-            <test:assert test="${c1.orders[1].product != null}"/>

-    

-            <test:assertEquals expected="p1" actual="${c1.orders[0].product.id}"/>

-            <test:assertEquals expected="Beer" actual="${c1.orders[0].product.name}"/>

-    

-            <test:assertEquals expected="p2" actual="${c1.orders[1].product.id}"/>

-            <test:assertEquals expected="Pizza" actual="${c1.orders[1].product.name}"/>

-    

-    </test:case>

-    

-    <test:case name="testNestedBeanPropertyTag2">

-    

-            <!-- 

-                || as above but uses a non-BeanTagLibrary library. 

-                || i.e. just reusing the BeanTag and BeanPropertyTag

-                -->

-                

-            <mytags2:customer var="c1" name="James" location="London" >

-                <order amount="100" price="2.99">

-                    <product id="p1" name="Beer"/>

-                </order>

-                <order amount="200" price="4.99">

-                    <product id="p2" name="Pizza"/>

-                </order>

-            </mytags2:customer>

-    

-            <log:info>Created a customer with name: ${c1.name} and location: ${c1.location}</log:info>

-            <log:info>Customer has orders ${c1.orders}</log:info>

-    

-            <test:assertEquals expected="James" actual="${c1.name}"/>

-            <test:assertEquals expected="London" actual="${c1.location}"/>

-    

-            <test:assert test="${size(c1.orders) == 2}"/>

-    

-            <test:assert test="${c1.orders[0].amount == 100}"/>

-            <test:assert test="${c1.orders[0].price == 2.99}"/>

-    

-            <test:assert test="${c1.orders[1].amount == 200}"/>

-            <test:assert test="${c1.orders[1].price == 4.99}"/>

-    

-            <test:assert test="${c1.orders[0].product != null}"/>

-            <test:assert test="${c1.orders[1].product != null}"/>

-    

-            <test:assertEquals expected="p1" actual="${c1.orders[0].product.id}"/>

-            <test:assertEquals expected="Beer" actual="${c1.orders[0].product.name}"/>

-    

-            <test:assertEquals expected="p2" actual="${c1.orders[1].product.id}"/>

-            <test:assertEquals expected="Pizza" actual="${c1.orders[1].product.name}"/>

-    

-    </test:case>

-    

-    <test:case name="testBeanList">

-    

-        <j:useList var="list">

-            <customer name="James" location="London">

-                <order amount="100" price="2.99">

-                    <product id="p1" name="Beer"/>

-                </order>

-                <order amount="200" price="4.99">

-                    <product id="p2" name="Pizza"/>

-                </order>

-            </customer>

-            <customer name="Bob" location="Atlanta">

-                <order amount="200" price="2.99">

-                    <product id="p1" name="Beer"/>

-                </order>

-            </customer>

-        </j:useList>

-            

-        <log:info>Created a list of customers ${list}</log:info>

-    

-        <test:assert test="${size(list) == 2}"/>

-    

-        <test:assertEquals expected="James" actual="${list[0].name}"/>

-        <test:assertEquals expected="London" actual="${list[0].location}"/>

-    

-        <test:assert test="${size(list[0].orders) == 2}"/>

-    

-        <test:assert test="${list[0].orders[0].amount == 100}"/>

-        <test:assert test="${list[0].orders[0].price == 2.99}"/>

-        

-        <test:assert test="${list[0].orders[1].amount == 200}"/>

-        <test:assert test="${list[0].orders[1].price == 4.99}"/>

-    

-        <test:assert test="${list[0].orders[0].product != null}"/>

-        <test:assert test="${list[0].orders[1].product != null}"/>

-        

-        <test:assertEquals expected="p1" actual="${list[0].orders[0].product.id}"/>

-        <test:assertEquals expected="Beer" actual="${list[0].orders[0].product.name}"/>

-    

-        <test:assertEquals expected="p2" actual="${list[0].orders[1].product.id}"/>

-        <test:assertEquals expected="Pizza" actual="${list[0].orders[1].product.name}"/>

-        

-        

-        <test:assertEquals expected="Bob" actual="${list[1].name}"/>

-        <test:assertEquals expected="Atlanta" actual="${list[1].location}"/>

-    

-    </test:case>

-

-    <test:case name="testInvokeMethod">

-

-        <manager var="foo">

-            <customer name="James" location="London">

-                <order amount="100" price="2.99">

-                    <product id="p1" name="Beer"/>

-                </order>

-                <order amount="200" price="4.99">

-                    <product id="p2" name="Pizza"/>

-                </order>

-            </customer>

-            <customer name="Bob" location="Atlanta">

-                <order amount="200" price="2.99">

-                    <product id="p1" name="Beer"/>

-                </order>

-            </customer>

-        </manager>    

-

-        <test:assert test="${foo.isInvoked()}"/>

-        <test:assert test="${size(foo.customers) == 2}"/>

-        

-    </test:case>

-

-    <test:case name="testCollectionTag" xmlns="jelly:org.apache.commons.jelly.tags.bean.MyBeanTagLibrary">

-

-        <myContainer var="list">

-            <customer name="James" location="London">

-                <order amount="100" price="2.99">

-                    <product id="p1" name="Beer"/>

-                </order>

-                <order amount="200" price="4.99">

-                    <product id="p2" name="Pizza"/>

-                </order>

-            </customer>

-            <customer name="Bob" location="Atlanta">

-                <order amount="200" price="2.99">

-                    <product id="p1" name="Beer"/>

-                </order>

-            </customer>

-        </myContainer>    

-

-        <test:assert test="${size(list) == 2}"/>

-        

-        Created list: ${list}

-

-        <test:assertEquals expected="James" actual="${list[0].name}"/>

-        <test:assertEquals expected="London" actual="${list[0].location}"/>

-        

-        <test:assert test="${list[0].orders[0].amount == 100}"/>

-        <test:assert test="${list[0].orders[0].price == 2.99}"/>

-        

-        <test:assert test="${list[0].orders[1].amount == 200}"/>

-        <test:assert test="${list[0].orders[1].price == 4.99}"/>

-    

-        <test:assert test="${list[0].orders[0].product != null}"/>

-        <test:assert test="${list[0].orders[1].product != null}"/>

-        

-        <test:assertEquals expected="p1" actual="${list[0].orders[0].product.id}"/>

-        <test:assertEquals expected="Beer" actual="${list[0].orders[0].product.name}"/>

-    

-        <test:assertEquals expected="p2" actual="${list[0].orders[1].product.id}"/>

-        <test:assertEquals expected="Pizza" actual="${list[0].orders[1].product.name}"/>

-        

-        

-        <test:assertEquals expected="Bob" actual="${list[1].name}"/>

-        <test:assertEquals expected="Atlanta" actual="${list[1].location}"/>

-    </test:case>

-    

-</test:suite>

diff --git a/jelly-tags/bean/xdocs/changes.xml b/jelly-tags/bean/xdocs/changes.xml
deleted file mode 100644
index 1d03d33..0000000
--- a/jelly-tags/bean/xdocs/changes.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0.1" date="in CVS">
-      <action dev="dion" type="fix">Test cases not functioning</action>
-    </release>
-    <release version="1.0" date="2004-09-10">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/bean/xdocs/index.xml b/jelly-tags/bean/xdocs/index.xml
deleted file mode 100644
index 452ab48..0000000
--- a/jelly-tags/bean/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Bean Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A tag library for mapping tags to beans using a similar approach to Ant.
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/bean/xdocs/navigation.xml b/jelly-tags/bean/xdocs/navigation.xml
deleted file mode 100644
index 33bf1ba..0000000
--- a/jelly-tags/bean/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Bean Tag Library">
-
-  <title>Bean Tag Library</title>
-  
-  <body>
-    <menu name="Bean Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/beanshell/.cvsignore b/jelly-tags/beanshell/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/beanshell/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/beanshell/build.xml b/jelly-tags/beanshell/build.xml
deleted file mode 100644
index d2c3b2c..0000000
--- a/jelly-tags/beanshell/build.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-beanshell" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-beanshell-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-beanshell 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.beanshell.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/bsh-1.2-b3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/bsh/jars/bsh-1.2-b3.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/beanshell/maven.xml b/jelly-tags/beanshell/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/beanshell/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/beanshell/project.properties b/jelly-tags/beanshell/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/beanshell/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/beanshell/project.xml b/jelly-tags/beanshell/project.xml
deleted file mode 100644
index 0cdde4a..0000000
--- a/jelly-tags/beanshell/project.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-beanshell</id>
-  <name>commons-jelly-tags-beanshell</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.beanshell</package>
-
-  <description>
-      This is a Jelly interface for BeanShell.
-  </description>
-  <shortDescription>Commons Jelly BeanShell Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_BEANSHELL-1_0</tag>
-    </version>
-  </versions>
-    
-  <dependencies>
-  
-    
-  
-    <!-- START for compilation -->
-    <dependency>
-      <id>bsh</id>
-      <version>1.2-b3</version>
-    </dependency>
-    
-    <!-- START for testing -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/libs/junit/</url>
-    </dependency>
-
-    <!-- END for testing -->
-
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/BeanShellExpression.java b/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/BeanShellExpression.java
deleted file mode 100644
index a36a024..0000000
--- a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/BeanShellExpression.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.beanshell;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.expression.ExpressionSupport;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/** Represents a <a href="http://www.beanshell.org">beanshell</a> expression
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class BeanShellExpression extends ExpressionSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog( BeanShellExpression.class );
-
-    /** The expression */
-    private String text;
-
-    public BeanShellExpression(String text) {
-        this.text = text;
-    }
-
-    // Expression interface
-    //-------------------------------------------------------------------------
-    public String getExpressionText() {
-        return "${" + text + "}";
-    }
-
-    public Object evaluate(JellyContext context) {
-        try {
-            JellyInterpreter interpreter = new JellyInterpreter();
-            interpreter.setJellyContext(context);
-
-            if ( log.isDebugEnabled() ) {
-                log.debug( "Evaluating beanshell: " + text );
-            }
-
-            return interpreter.eval( text );
-        }
-        catch (Exception e) {
-            log.warn( "Caught exception evaluating: " + text + ". Reason: " + e, e );
-            return null;
-        }
-    }
-}
diff --git a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/BeanShellExpressionFactory.java b/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/BeanShellExpressionFactory.java
deleted file mode 100644
index d001f94..0000000
--- a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/BeanShellExpressionFactory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.beanshell;
-
-import bsh.EvalError;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-
-/** Represents a factory of <a href="http://www.beanshell.org">beanshell</a> expressions
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class BeanShellExpressionFactory implements ExpressionFactory {
-
-    /**
-     * A helper method to return the JellyInterpreter for the given JellyContext
-     */
-    public static JellyInterpreter getInterpreter(JellyContext context) throws EvalError {
-
-        /**
-         * @todo when we can unify the BeanShell and Jelly variable scopes we can share a single
-         * BeanShell context for each JellyContext.
-         * For now lets create a new one each time, which is slower.
-         */
-        JellyInterpreter interpreter = new JellyInterpreter();
-        interpreter.setJellyContext(context);
-        return interpreter;
-/*
-        JellyInterpreter interpreter
-            = (JellyInterpreter) context.getVariable( "org.apache.commons.jelly.beanshell.JellyInterpreter" );
-        if ( interpreter == null ) {
-            interpreter = new JellyInterpreter();
-            interpreter.setJellyContext(context);
-            context.setVariable( "org.apache.commons.jelly.beanshell.JellyInterpreter", interpreter );
-        }
-        return interpreter;
-*/
-    }
-
-
-    // ExpressionFactory interface
-    //-------------------------------------------------------------------------
-    public Expression createExpression(String text) throws JellyException {
-        return new BeanShellExpression(text);
-    }
-}
diff --git a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/BeanShellTagLibrary.java b/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/BeanShellTagLibrary.java
deleted file mode 100644
index 9b826e2..0000000
--- a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/BeanShellTagLibrary.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.beanshell;
-
-import org.apache.commons.jelly.expression.ExpressionFactory;
-import org.apache.commons.jelly.tags.core.CoreTagLibrary;
-
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class BeanShellTagLibrary extends CoreTagLibrary {
-
-    private ExpressionFactory expressionFactory = new BeanShellExpressionFactory();
-
-    public BeanShellTagLibrary() {
-        registerTag("script", ScriptTag.class);
-    }
-
-    /** Allows derived tag libraries to use their own factory */
-    protected ExpressionFactory getExpressionFactory() {
-        return expressionFactory;
-    }
-
-}
diff --git a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/JellyInterpreter.java b/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/JellyInterpreter.java
deleted file mode 100644
index 5e87903..0000000
--- a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/JellyInterpreter.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.beanshell;
-
-import bsh.EvalError;
-import bsh.Interpreter;
-
-import java.util.Iterator;
-
-import org.apache.commons.jelly.JellyContext;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Integrates BeanShell's interpreter with Jelly's JellyContext
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class JellyInterpreter extends Interpreter {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog( JellyInterpreter.class );
-
-    private JellyContext context;
-
-    public JellyInterpreter() {
-    }
-
-    public JellyContext getJellyContext() {
-        return context;
-    }
-
-    public void setJellyContext(JellyContext context) throws EvalError {
-        this.context = context;
-
-        // now pass in all the variables
-        for ( Iterator iter = context.getVariableNames(); iter.hasNext(); ) {
-            String name = (String) iter.next();
-            Object value = context.getVariable(name);
-            name = convertVariableName(name);
-            if (name != null) {
-                set( name, value );
-            }
-        }
-
-        // lets pass in the Jelly context
-        set( "context", context );
-    }
-
-/*
-
-    // the following code doesn't work - it seems that
-    // all variables must be passed into the Interpreter
-    // via set() method
-
-    public Object get(String name) throws EvalError {
-        if ( context != null ) {
-            Object answer = context.getVariable( name );
-            if ( answer != null ) {
-                return answer;
-            }
-        }
-        return super.get( name );
-    }
-*/
-
-    /**
-     * Converts variables to a beanshell allowable format or hides names that
-     * can't be converted, by returning null.
-     * For now lets just turn '.' into '_'
-     */
-    protected String convertVariableName(String name) {
-        return name.replace('.', '_');
-    }
-}
diff --git a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/ScriptTag.java b/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/ScriptTag.java
deleted file mode 100644
index e399d15..0000000
--- a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/ScriptTag.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.beanshell;
-
-import bsh.EvalError;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag which invokes a BeanShell script..
- *
- * @author Jason Horman
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class ScriptTag extends TagSupport {
-
-    public ScriptTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        try {
-            JellyInterpreter interpreter = BeanShellExpressionFactory.getInterpreter(context);
-
-            // @todo it'd be really nice to create a JellyNameSpace to pass into
-            // this method so that any variables declared by beanshell could be exported
-            // into the JellyContext
-            String text = getBodyText(false);
-            interpreter.eval(text);
-        } catch (EvalError e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
diff --git a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/package.html b/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/package.html
deleted file mode 100644
index 06e36cd..0000000
--- a/jelly-tags/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A tag library for working with BeanShell expressions and scripts within Jelly</p>
-  
-</body>
-</html>
diff --git a/jelly-tags/beanshell/src/test/org/apache/commons/jelly/tags/beanshell/TestBeanShellEL.java b/jelly-tags/beanshell/src/test/org/apache/commons/jelly/tags/beanshell/TestBeanShellEL.java
deleted file mode 100644
index c1d4da3..0000000
--- a/jelly-tags/beanshell/src/test/org/apache/commons/jelly/tags/beanshell/TestBeanShellEL.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.beanshell;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-import org.apache.commons.jelly.tags.beanshell.BeanShellExpressionFactory;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/** Tests the BeanShell EL
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class TestBeanShellEL extends TestCase {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog( TestBeanShellEL.class );
-
-    /** Jelly context */
-    protected JellyContext context;
-
-    /** The factory of Expression objects */
-    protected ExpressionFactory factory;
-
-
-    public static void main( String[] args ) {
-        TestRunner.run( suite() );
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestBeanShellEL.class);
-    }
-
-    public TestBeanShellEL(String testName) {
-        super(testName);
-    }
-
-    public void setUp() {
-        context = new JellyContext();
-        context.setVariable( "foo", "abc" );
-        context.setVariable( "bar", new Integer( 123 ) );
-        factory = new BeanShellExpressionFactory();
-    }
-
-    public void testEL() throws Exception {
-        assertExpression( "foo", "abc" );
-        assertExpression( "bar * 2", new Integer( 246 ) );
-        assertExpression( "bar == 123", Boolean.TRUE );
-        assertExpression( "bar == 124", Boolean.FALSE );
-        assertExpression( "foo.equals( \"abc\" )", Boolean.TRUE );
-        assertExpression( "foo.equals( \"xyz\" )", Boolean.FALSE );
-    }
-
-    /** Evaluates the given expression text and tests it against the expected value */
-    protected void assertExpression( String expressionText, Object expectedValue ) throws Exception {
-        Expression expr = factory.createExpression( expressionText );
-        Object value = expr.evaluate( context );
-        assertEquals( "Value of expression: " + expressionText, expectedValue, value );
-    }
-}
-
diff --git a/jelly-tags/beanshell/src/test/org/apache/commons/jelly/tags/beanshell/TestJelly.java b/jelly-tags/beanshell/src/test/org/apache/commons/jelly/tags/beanshell/TestJelly.java
deleted file mode 100644
index 5fc9c3a..0000000
--- a/jelly-tags/beanshell/src/test/org/apache/commons/jelly/tags/beanshell/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.beanshell;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/beanshell/src/test/org/apache/commons/jelly/tags/beanshell/suite.jelly b/jelly-tags/beanshell/src/test/org/apache/commons/jelly/tags/beanshell/suite.jelly
deleted file mode 100644
index 728b3c5..0000000
--- a/jelly-tags/beanshell/src/test/org/apache/commons/jelly/tags/beanshell/suite.jelly
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<test:suite 

-    xmlns:j="jelly:core"

-    xmlns:b="jelly:beanshell" 

-    xmlns:test="jelly:junit">

-

-<test:case name="testPropertyWithDot">

-

-    <j:set var="foo.bar" value="hello"/>

-    

-    <b:script>

-        System.out.println( "foo.bar: " + context.getVariable("foo.bar") );

-

-        if (context.getVariable("foo.bar") == null) {

-            throw new Exception("Failed: no foo.bar defined: " + foo_bar);

-        }

-        context.setVariable("foo.bar", "worked");

-  </b:script>

-

-    <test:assertEquals expected="worked" actual="${foo.bar}"/>

-        

-</test:case>

-

-<test:case name="testDotConversion">

-

-    <j:set var="foo.bar" value="hello"/>

-    

-    <b:script>

-        System.out.println( "foo.bar: " + foo_bar );

-

-        if (foo_bar == null) {

-             throw new Exception("Failed: no foo.bar defined: " + foo_bar);

-        }

-        context.setVariable("foo.bar", "worked");

-  </b:script>

-

-    <test:assertEquals expected="worked" actual="${foo.bar}"/>

-        

-</test:case>

-

-</test:suite>

diff --git a/jelly-tags/beanshell/xdocs/changes.xml b/jelly-tags/beanshell/xdocs/changes.xml
deleted file mode 100644
index 9f3e8e1..0000000
--- a/jelly-tags/beanshell/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-10">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/beanshell/xdocs/index.xml b/jelly-tags/beanshell/xdocs/index.xml
deleted file mode 100644
index 3ca893a..0000000
--- a/jelly-tags/beanshell/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>BeanShell Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A tag library for working with BeanShell expressions and scripts within Jelly.
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/beanshell/xdocs/navigation.xml b/jelly-tags/beanshell/xdocs/navigation.xml
deleted file mode 100644
index 23241ca..0000000
--- a/jelly-tags/beanshell/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="BeanShell Tag Library">
-
-  <title>BeanShell Tag Library</title>
-  
-  <body>
-    <menu name="BeanShell Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/betwixt/.cvsignore b/jelly-tags/betwixt/.cvsignore
deleted file mode 100644
index bca2cda..0000000
--- a/jelly-tags/betwixt/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-target
-maven.log
-velocity.log
diff --git a/jelly-tags/betwixt/build.xml b/jelly-tags/betwixt/build.xml
deleted file mode 100644
index c90a082..0000000
--- a/jelly-tags/betwixt/build.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-betwixt" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-betwixt-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-betwixt 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.betwixt.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-betwixt-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-betwixt/jars/commons-betwixt-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-digester-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-digester/jars/commons-digester-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-log-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-log-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/betwixt/maven.xml b/jelly-tags/betwixt/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/betwixt/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/betwixt/project.properties b/jelly-tags/betwixt/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/betwixt/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/betwixt/project.xml b/jelly-tags/betwixt/project.xml
deleted file mode 100644
index 5f8e4e3..0000000
--- a/jelly-tags/betwixt/project.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-betwixt</id>
-  <name>commons-jelly-tags-betwixt</name>
-  <currentVersion>1.1-SNAPSHOT</currentVersion>
-  <package>org.apache.commons.jelly.tags.betwixt</package>
-
-  <description>
-      This is a Jelly interface for Betwixt.
-  </description>
-  <shortDescription>Commons Jelly Betwixt Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_BETWIXT-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-
-    <!-- START for compilation -->
-    <dependency>
-      <id>commons-betwixt</id>
-      <version>0.6</version>
-      <url>http://jakarta.apache.org/commons/betwixt/</url>
-    </dependency>
-    
-    <dependency>
-      <id>commons-digester</id>
-      <version>1.6</version>
-      <url>http://jakarta.apache.org/commons/digester/</url>
-    </dependency>
-    
-    <!-- END for compilation -->
-
-    <!-- START for test -->
-  
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-log</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/log/</url>
-    </dependency>
-      
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-
-    <!-- END for test -->
-    
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/BetwixtTagLibrary.java b/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/BetwixtTagLibrary.java
deleted file mode 100644
index 7c03fef..0000000
--- a/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/BetwixtTagLibrary.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.betwixt;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/**
- * A Jelly custom tag library that uses the Betwixt project to parse XML and turn it into beans or
- * turn beans into XML
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class BetwixtTagLibrary extends TagLibrary {
-
-    public BetwixtTagLibrary() {
-        registerTag( "parse", ParseTag.class );
-        registerTag( "introspector", IntrospectorTag.class );
-    }
-}
diff --git a/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/IntrospectorTag.java b/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/IntrospectorTag.java
deleted file mode 100644
index 23b7927..0000000
--- a/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/IntrospectorTag.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.betwixt;
-
-import org.apache.commons.beanutils.ConversionException;
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.beanutils.Converter;
-
-import org.apache.commons.betwixt.XMLIntrospector;
-import org.apache.commons.betwixt.strategy.CapitalizeNameMapper;
-import org.apache.commons.betwixt.strategy.DecapitalizeNameMapper;
-import org.apache.commons.betwixt.strategy.HyphenatedNameMapper;
-import org.apache.commons.betwixt.strategy.NameMapper;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Creates a Betwixt XMLIntrospector instance that can be used by the other Betwixt tags.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class IntrospectorTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(IntrospectorTag.class);
-
-    private XMLIntrospector introspector;
-    private String var;
-
-    static {
-
-        // register converters to standard Strategies
-        ConvertUtils.register(
-            new Converter() {
-                public Object convert(Class type, Object value) {
-                    if ( value instanceof String ) {
-                        return createNameMapper((String) value);
-                    }
-                    else if ( value == null ) {
-                        return null;
-                    }
-                    else {
-                        throw new ConversionException(
-                            "Don't know how to convert: " + value
-                            + " of type: " + value.getClass().getName()
-                            + " into a NameMapper"
-                        );
-                    }
-                }
-            },
-            NameMapper.class
-        );
-    }
-
-
-
-    public IntrospectorTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws MissingAttributeException, JellyTagException {
-
-        if ( var == null ) {
-            throw new MissingAttributeException( "var" );
-        }
-        invokeBody(output);
-
-        XMLIntrospector introspector = getIntrospector();
-
-        context.setVariable( var, introspector );
-
-        // now lets clear this introspector so that its recreated again next time
-        this.introspector = null;
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the current XMLIntrospector, lazily creating one if required
-     */
-    public XMLIntrospector getIntrospector() {
-        if ( introspector == null ) {
-            introspector = createIntrospector();
-        }
-        return introspector;
-    }
-
-    /**
-     * Sets whether attributes or elements should be used for primitive types.
-     * The default is false.
-     */
-    public void setAttributesForPrimitives(boolean attributesForPrimitives) {
-        getIntrospector().setAttributesForPrimitives(attributesForPrimitives);
-    }
-
-    /**
-     * Sets the name mapper used for element names.
-     * You can also use the Strings 'lowercase', 'uppercase' or 'hyphenated'
-     * as aliases to the common name mapping strategies or specify a class name String.
-     */
-    public void setElementNameMapper(NameMapper nameMapper) {
-        getIntrospector().setElementNameMapper(nameMapper);
-    }
-
-    /**
-     * Sets the name mapper used for attribute names.
-     * You can also use the Strings 'lowercase', 'uppercase' or 'hyphenated'
-     * as aliases to the common name mapping strategies or specify a class name String.
-     */
-    public void setAttributeNameMapper(NameMapper nameMapper) {
-        getIntrospector().setAttributeNameMapper(nameMapper);
-    }
-
-
-    /**
-     * Sets the variable name to output the new XMLIntrospector to.
-     * If this attribute is not specified then this tag must be nested
-     * inside an &lt;parse&gt; or &lt;output&gt; tag
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Static helper method which will convert the given string into
-     * standard named strategies such as 'lowercase', 'uppercase' or 'hyphenated'
-     * or use the name as a class name and create a new instance.
-     */
-    protected static NameMapper createNameMapper(String name) {
-        if ( name.equalsIgnoreCase( "lowercase" ) ) {
-            return new DecapitalizeNameMapper();
-        }
-        else if ( name.equalsIgnoreCase( "uppercase" ) ) {
-            return new CapitalizeNameMapper();
-        }
-        else if ( name.equalsIgnoreCase( "hyphenated" ) ) {
-            return new HyphenatedNameMapper();
-        }
-        else {
-            // lets try load the class of this name
-            Class theClass = null;
-            try {
-                theClass = Thread.currentThread().getContextClassLoader().loadClass( name );
-            }
-            catch (Exception e) {
-                throw new ConversionException( "Could not load class called: " + name, e );
-            }
-
-            Object object = null;
-            try {
-                object = theClass.newInstance();
-            }
-            catch (Exception e) {
-                throw new ConversionException( "Could not instantiate an instance of: " + name, e );
-            }
-            if ( object instanceof NameMapper ) {
-                return (NameMapper) object;
-            }
-            if ( object == null ) {
-                throw new ConversionException( "No NameMapper created for type: " + name );
-            }
-            else {
-                throw new ConversionException(
-                    "Created object: " + object
-                    + " is not a NameMapper! Its type is: " + object.getClass().getName()
-                );
-            }
-        }
-    }
-
-    /**
-     * Factory method to create a new XMLIntrospector
-     */
-    protected XMLIntrospector createIntrospector() {
-        return new XMLIntrospector();
-    }
-}
diff --git a/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/ParseTag.java b/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/ParseTag.java
deleted file mode 100644
index b6c445c..0000000
--- a/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/ParseTag.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.betwixt;
-
-import java.beans.IntrospectionException;
-import java.io.IOException;
-import java.net.URL;
-
-import org.apache.commons.betwixt.XMLIntrospector;
-import org.apache.commons.betwixt.io.BeanReader;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.xml.sax.SAXException;
-
-/**
- * Parses some XML specified via the given URI (which can be relative or an absolute URL) and outputs the
- * parsed object. Typically this tag is customized by setting the introspector attribute or nesting a child
- * introspector tag inside it.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class ParseTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ParseTag.class);
-
-    /** the BeanReader used to parse the XML */
-    private BeanReader reader = new BeanReader();
-
-    private String uri;
-    private String var;
-    private String rootClass;
-    private String path;
-    private XMLIntrospector introspector;
-    private boolean useContextClassLoader;
-    private ClassLoader classLoader;
-
-
-    public ParseTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( var == null ) {
-            throw new MissingAttributeException( "var" );
-        }
-        if ( rootClass == null ) {
-            throw new MissingAttributeException( "rootClass" );
-        }
-
-        reader.setXMLIntrospector(getIntrospector());
-
-        Class theClass = null;
-        try {
-            theClass = getClassLoader().loadClass( rootClass );
-        }
-        catch (Exception e) {
-            throw new JellyTagException( "Could not load class called: " + rootClass, e );
-        }
-
-        if ( theClass == null ) {
-            throw new JellyTagException( "Could not load class called: " + rootClass );
-        }
-
-        try {
-            if ( path != null ) {
-                reader.registerBeanClass( path, theClass );
-            }
-            else {
-                reader.registerBeanClass( theClass );
-            }
-        }
-        catch (IntrospectionException e) {
-            throw new JellyTagException(e);
-        }
-
-        Object value = null;
-        if ( uri != null ) {
-            invokeBody(output);
-
-            try {
-                URL url = context.getResource( uri );
-                value = reader.parse( url.toString() );
-            } catch (IOException e) {
-                throw new JellyTagException(e);
-            } catch (SAXException e) {
-                throw new JellyTagException(e);
-            }
-        }
-        else {
-
-            // invoke the body and pass that into the reader
-            XMLOutput newOutput = new XMLOutput( reader );
-
-            invokeBody(newOutput);
-
-            value = reader.getRoot();
-        }
-        context.setVariable( var, value );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the introspector to be used, lazily creating one if required.
-     */
-    public XMLIntrospector getIntrospector() {
-        if (introspector == null) {
-            introspector = new XMLIntrospector();
-        }
-        return introspector;
-    }
-    /**
-     * Sets the Betwixt XMLIntrospector instance used to define the metadata for how a
-     * bean should appear as XML.
-     */
-    public void setIntrospector(XMLIntrospector introspector) {
-        this.introspector = introspector;
-    }
-
-    /**
-     * Sets the URI from which XML is parsed. This can be relative to this Jelly script, use
-     * an absolute URI or a full URL
-     */
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
-
-    /**
-     * Sets the variable name to output with the result of the XML parse.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Sets the name of the root class to use for parsing the XML
-     */
-    public void setRootClass(String rootClass) {
-        this.rootClass = rootClass;
-    }
-
-    /**
-     * Sets the path that the root class should be bound to.
-     * This is optional and often unnecessary though can be used to ignore some wrapping
-     * elements, such as the &lt;rss&gt; element in the RSS unit test.
-     */
-    public void setPath(String path) {
-        this.path = path;
-    }
-
-
-    /**
-     * Sets whether or not the current threads's context class loader
-     * should be used to load the bean classes or not.
-     * This can be useful if running inside a web application or inside some
-     * application server.
-     */
-    public void setUseContextClassLoader(boolean useContextClassLoader) {
-        this.useContextClassLoader = useContextClassLoader;
-    }
-
-    /**
-     * Sets the ClassLoader to be used to load bean classes from.
-     * If this is not specified then either the ClassLoader used to load this tag library
-     * is used or, if the 'useContextClassLoader' property is true, then the
-     * current threads context class loader is used instead.
-     */
-    public void setClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the ClassLoader to be used to load bean classes.
-     */
-    protected ClassLoader getClassLoader() {
-        return ClassLoaderUtils.getClassLoader(classLoader, useContextClassLoader, getClass());
-    }
-}
diff --git a/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/package.html b/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/package.html
deleted file mode 100644
index 0eee5c1..0000000
--- a/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A tag library for turning XML into beans or beans into XML using the
-  <a href="http://jakarta.apache.org/commons/jelly/libs/betwixt/tags.html">Betwixt</a> library
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/Channel.java b/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/Channel.java
deleted file mode 100644
index a6984f2..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/Channel.java
+++ /dev/null
@@ -1,615 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */ 
-
-
-package org.apache.commons.digester.rss;
-
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.util.ArrayList;
-
-
-/**
- * <p>Implementation object representing a <strong>channel</strong> in the
- * <em>Rich Site Summary</em> DTD, version 0.91.  This class may be subclassed
- * to further specialize its behavior.</p>
- */
-
-public class Channel implements Serializable {
-
-
-    // ----------------------------------------------------- Instance Variables
-
-
-    /**
-     * The set of items associated with this Channel.
-     */
-    protected ArrayList items = new ArrayList();
-
-
-    /**
-     * The set of skip days for this channel.
-     */
-    protected ArrayList skipDays = new ArrayList();
-
-
-    /**
-     * The set of skip hours for this channel.
-     */
-    protected ArrayList skipHours = new ArrayList();
-
-
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * The channel copyright (1-100 characters).
-     */
-    protected String copyright = null;
-
-    public String getCopyright() {
-        return (this.copyright);
-    }
-
-    public void setCopyright(String copyright) {
-        this.copyright = copyright;
-    }
-
-
-    /**
-     * The channel description (1-500 characters).
-     */
-    protected String description = null;
-
-    public String getDescription() {
-        return (this.description);
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-
-    /**
-     * The channel description file URL (1-500 characters).
-     */
-    protected String docs = null;
-
-    public String getDocs() {
-        return (this.docs);
-    }
-
-    public void setDocs(String docs) {
-        this.docs = docs;
-    }
-
-
-    /**
-     * The image describing this channel.
-     */
-    protected Image image = null;
-
-    public Image getImage() {
-        return (this.image);
-    }
-
-    public void setImage(Image image) {
-        this.image = image;
-    }
-
-
-    /**
-     * The channel language (2-5 characters).
-     */
-    protected String language = null;
-
-    public String getLanguage() {
-        return (this.language);
-    }
-
-    public void setLanguage(String language) {
-        this.language = language;
-    }
-
-
-    /**
-     * The channel last build date (1-100 characters).
-     */
-    protected String lastBuildDate = null;
-
-    public String getLastBuildDate() {
-        return (this.lastBuildDate);
-    }
-
-    public void setLastBuildDate(String lastBuildDate) {
-        this.lastBuildDate = lastBuildDate;
-    }
-
-
-    /**
-     * The channel link (1-500 characters).
-     */
-    protected String link = null;
-
-    public String getLink() {
-        return (this.link);
-    }
-
-    public void setLink(String link) {
-        this.link = link;
-    }
-
-
-    /**
-     * The managing editor (1-100 characters).
-     */
-    protected String managingEditor = null;
-
-    public String getManagingEditor() {
-        return (this.managingEditor);
-    }
-
-    public void setManagingEditor(String managingEditor) {
-        this.managingEditor = managingEditor;
-    }
-
-
-    /**
-     * The channel publication date (1-100 characters).
-     */
-    protected String pubDate = null;
-
-    public String getPubDate() {
-        return (this.pubDate);
-    }
-
-    public void setPubDate(String pubDate) {
-        this.pubDate = pubDate;
-    }
-
-
-    /**
-     * The channel rating (20-500 characters).
-     */
-    protected String rating = null;
-
-    public String getRating() {
-        return (this.rating);
-    }
-
-    public void setRating(String rating) {
-        this.rating = rating;
-    }
-
-
-    /**
-     * The text input description for this channel.
-     */
-    protected TextInput textInput = null;
-
-    public TextInput getTextInput() {
-        return (this.textInput);
-    }
-
-    public void setTextInput(TextInput textInput) {
-        this.textInput = textInput;
-    }
-
-
-    /**
-     * The channel title (1-100 characters).
-     */
-    protected String title = null;
-
-    public String getTitle() {
-        return (this.title);
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-
-    /**
-     * The RSS specification version number used to create this Channel.
-     */
-    protected double version = 0.91;
-
-    public double getVersion() {
-        return (this.version);
-    }
-
-    public void setVersion(double version) {
-        this.version = version;
-    }
-
-
-    /**
-     * The webmaster email address (1-100 characters).
-     */
-    protected String webMaster = null;
-
-    public String getWebMaster() {
-        return (this.webMaster);
-    }
-
-    public void setWebMaster(String webMaster) {
-        this.webMaster = webMaster;
-    }
-
-
-    // --------------------------------------------------------- Public Methods
-
-
-    /**
-     * Add an additional item.
-     *
-     * @param item The item to be added
-     */
-    public void addItem(Item item) {
-        synchronized (items) {
-            items.add(item);
-        }
-    }
-
-
-    /**
-     * Add an additional skip day name.
-     *
-     * @param skipDay The skip day to be added
-     */
-    public void addSkipDay(String skipDay) {
-        synchronized (skipDays) {
-            skipDays.add(skipDay);
-        }
-    }
-
-
-    /**
-     * Add an additional skip hour name.
-     *
-     * @param skipHour The skip hour to be added
-     */
-    public void addSkipHour(String skipHour) {
-        synchronized (skipHours) {
-            skipHours.add(skipHour);
-        }
-    }
-
-
-    /**
-     * Return the items for this channel.
-     */
-    public Item[] findItems() {
-        synchronized (items) {
-            Item items[] = new Item[this.items.size()];
-            return ((Item[]) this.items.toArray(items));
-        }
-    }
-
-
-    /**
-     * Return the items for this channel.
-     */
-    public Item[] getItems() {
-        return findItems();
-    }
-
-
-    /**
-     * Return the skip days for this channel.
-     */
-    public String[] findSkipDays() {
-        synchronized (skipDays) {
-            String skipDays[] = new String[this.skipDays.size()];
-            return ((String[]) this.skipDays.toArray(skipDays));
-        }
-    }
-
-
-    /**
-     * Return the skip hours for this channel.
-     */
-    public String[] getSkipHours() {
-        return findSkipHours();
-    }
-
-
-    /**
-     * Return the skip hours for this channel.
-     */
-    public String[] findSkipHours() {
-        synchronized (skipHours) {
-            String skipHours[] = new String[this.skipHours.size()];
-            return ((String[]) this.skipHours.toArray(skipHours));
-        }
-    }
-
-
-    /**
-     * Return the skip days for this channel.
-     */
-    public String[] getSkipDays() {
-        return findSkipDays();
-    }
-
-
-    /**
-     * Remove an item for this channel.
-     *
-     * @param item The item to be removed
-     */
-    public void removeItem(Item item) {
-        synchronized (items) {
-            items.remove(item);
-        }
-    }
-
-
-    /**
-     * Remove a skip day for this channel.
-     *
-     * @param skipDay The skip day to be removed
-     */
-    public void removeSkipDay(String skipDay) {
-        synchronized (skipDays) {
-            skipDays.remove(skipDay);
-        }
-    }
-
-
-    /**
-     * Remove a skip hour for this channel.
-     *
-     * @param skipHour The skip hour to be removed
-     */
-    public void removeSkipHour(String skipHour) {
-        synchronized (skipHours) {
-            skipHours.remove(skipHour);
-        }
-    }
-
-
-    /**
-     * Render this channel as XML conforming to the RSS 0.91 specification,
-     * to the specified output stream, with no indication of character
-     * encoding.
-     *
-     * @param stream The output stream to write to
-     */
-    public void render(OutputStream stream) {
-
-        try {
-            render(stream, null);
-        } catch (UnsupportedEncodingException e) {
-            ; // Can not happen
-        }
-
-    }
-
-
-    /**
-     * Render this channel as XML conforming to the RSS 0.91 specification,
-     * to the specified output stream, with the specified character encoding.
-     *
-     * @param stream The output stream to write to
-     * @param encoding The character encoding to declare, or <code>null</code>
-     *  for no declaration
-     *
-     * @exception UnsupportedEncodingException if the named encoding
-     *  is not supported
-     */
-    public void render(OutputStream stream, String encoding)
-            throws UnsupportedEncodingException {
-
-        PrintWriter pw = null;
-        if (encoding == null) {
-            pw = new PrintWriter(stream);
-        } else {
-            pw = new PrintWriter(new OutputStreamWriter(stream, encoding));
-        }
-        render(pw, encoding);
-        pw.flush();
-
-    }
-
-
-    /**
-     * Render this channel as XML conforming to the RSS 0.91 specification,
-     * to the specified writer, with no indication of character encoding.
-     *
-     * @param writer The writer to render output to
-     */
-    public void render(Writer writer) {
-
-        render(writer, null);
-
-    }
-
-
-    /**
-     * Render this channel as XML conforming to the RSS 0.91 specification,
-     * to the specified writer, indicating the specified character encoding.
-     *
-     * @param writer The writer to render output to
-     * @param encoding The character encoding to declare, or <code>null</code>
-     *  for no declaration
-     */
-    public void render(Writer writer, String encoding) {
-
-        PrintWriter pw = new PrintWriter(writer);
-        render(pw, encoding);
-        pw.flush();
-
-    }
-
-
-    /**
-     * Render this channel as XML conforming to the RSS 0.91 specification,
-     * to the specified writer, with no indication of character encoding.
-     *
-     * @param writer The writer to render output to
-     */
-    public void render(PrintWriter writer) {
-
-        render(writer, null);
-
-    }
-
-
-    /**
-     * Render this channel as XML conforming to the RSS 0.91 specification,
-     * to the specified writer, indicating the specified character encoding.
-     *
-     * @param writer The writer to render output to
-     * @param encoding The character encoding to declare, or <code>null</code>
-     *  for no declaration
-     */
-    public void render(PrintWriter writer, String encoding) {
-
-        writer.print("<?xml version=\"1.0\"");
-        if (encoding != null) {
-            writer.print(" encoding=\"");
-            writer.print(encoding);
-            writer.print("\"");
-        }
-        writer.println("?>");
-        writer.println();
-
-        writer.println("<!DOCTYPE rss PUBLIC");
-        writer.println("  \"-//Netscape Communications//DTD RSS 0.91//EN\"");
-        writer.println("  \"http://my.netscape.com/publish/formats/rss-0.91.dtd\">");
-        writer.println();
-
-        writer.println("<rss version=\"0.91\">");
-        writer.println();
-
-        writer.println("  <channel>");
-        writer.println();
-
-        writer.print("    <title>");
-        writer.print(title);
-        writer.println("</title>");
-
-        writer.print("    <description>");
-        writer.print(description);
-        writer.println("</description>");
-
-        writer.print("    <link>");
-        writer.print(link);
-        writer.println("</link>");
-
-        writer.print("    <language>");
-        writer.print(language);
-        writer.println("</language>");
-
-        if (rating != null) {
-            writer.print("    <rating>");
-            writer.print(rating);
-            writer.println("</rating>");
-        }
-
-        if (copyright != null) {
-            writer.print("    <copyright>");
-            writer.print(copyright);
-            writer.print("</copyright>");
-        }
-
-
-        if (pubDate != null) {
-            writer.print("    <pubDate>");
-            writer.print(pubDate);
-            writer.println("</pubDate>");
-        }
-
-        if (lastBuildDate != null) {
-            writer.print("    <lastBuildDate>");
-            writer.print(lastBuildDate);
-            writer.println("</lastBuildDate>");
-        }
-
-        if (docs != null) {
-            writer.print("    <docs>");
-            writer.print(docs);
-            writer.println("</docs>");
-        }
-
-        if (managingEditor != null) {
-            writer.print("    <managingEditor>");
-            writer.print(managingEditor);
-            writer.println("</managingEditor>");
-        }
-
-        if (webMaster != null) {
-            writer.print("    <webMaster>");
-            writer.print(webMaster);
-            writer.println("</webMaster>");
-        }
-
-        writer.println();
-
-        if (image != null) {
-            image.render(writer);
-            writer.println();
-        }
-
-        if (textInput != null) {
-            textInput.render(writer);
-            writer.println();
-        }
-
-        String skipDays[] = findSkipDays();
-        if (skipDays.length > 0) {
-            writer.println("    <skipDays>");
-            for (int i = 0; i < skipDays.length; i++) {
-                writer.print("      <skipDay>");
-                writer.print(skipDays[i]);
-                writer.println("</skipDay>");
-            }
-            writer.println("    </skipDays>");
-        }
-
-        String skipHours[] = findSkipHours();
-        if (skipHours.length > 0) {
-            writer.println("    <skipHours>");
-            for (int i = 0; i < skipHours.length; i++) {
-                writer.print("      <skipHour>");
-                writer.print(skipHours[i]);
-                writer.println("</skipHour>");
-            }
-            writer.println("    </skipHours>");
-            writer.println();
-        }
-
-        Item items[] = findItems();
-        for (int i = 0; i < items.length; i++) {
-            items[i].render(writer);
-            writer.println();
-        }
-
-        writer.println("  </channel>");
-        writer.println();
-
-        writer.println("</rss>");
-
-    }
-
-
-}
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/Image.java b/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/Image.java
deleted file mode 100644
index 5a7abb7..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/Image.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */ 
-
-
-package org.apache.commons.digester.rss;
-
-import java.io.PrintWriter;
-import java.io.Serializable;
-
-
-/**
- * <p>Implementation object representing an <strong>image</strong> in the
- * <em>Rich Site Summary</em> DTD, version 0.91.  This class may be subclassed
- * to further specialize its behavior.</p>
- */
-
-public class Image implements Serializable {
-
-
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * The image description (1-100 characters).
-     */
-    protected String description = null;
-
-    public String getDescription() {
-        return (this.description);
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-
-    /**
-     * The image height in pixels (1-400).
-     */
-    protected int height = 31;
-
-    public int getHeight() {
-        return (this.height);
-    }
-
-    public void setHeight(int height) {
-        this.height = height;
-    }
-
-
-    /**
-     * The image link (1-500 characters).
-     */
-    protected String link = null;
-
-    public String getLink() {
-        return (this.link);
-    }
-
-    public void setLink(String link) {
-        this.link = link;
-    }
-
-
-    /**
-     * The image alternate text (1-100 characters).
-     */
-    protected String title = null;
-
-    public String getTitle() {
-        return (this.title);
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-
-    /**
-     * The image location URL (1-500 characters).
-     */
-    protected String url = null;
-
-    public String getURL() {
-        return (this.url);
-    }
-
-    public void setURL(String url) {
-        this.url = url;
-    }
-
-
-    /**
-     * The image width in pixels (1-400).
-     */
-    protected int width = 31;
-
-    public int getWidth() {
-        return (this.width);
-    }
-
-    public void setWidth(int width) {
-        this.width = width;
-    }
-
-
-    // -------------------------------------------------------- Package Methods
-
-
-    /**
-     * Render this channel as XML conforming to the RSS 0.91 specification,
-     * to the specified writer.
-     *
-     * @param writer The writer to render output to
-     */
-    void render(PrintWriter writer) {
-
-        writer.println("    <image>");
-
-        writer.print("      <title>");
-        writer.print(title);
-        writer.println("</title>");
-
-        writer.print("      <url>");
-        writer.print(url);
-        writer.println("</url>");
-
-        if (link != null) {
-            writer.print("      <link>");
-            writer.print(link);
-            writer.println("</link>");
-        }
-
-        writer.print("      <width>");
-        writer.print(width);
-        writer.println("</width>");
-
-        writer.print("      <height>");
-        writer.print(height);
-        writer.println("</height>");
-
-        if (description != null) {
-            writer.print("      <description>");
-            writer.print(description);
-            writer.println("</description>");
-        }
-
-        writer.println("    </image>");
-
-    }
-
-
-}
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/Item.java b/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/Item.java
deleted file mode 100644
index c7ef36c..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/Item.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */ 
-
-
-package org.apache.commons.digester.rss;
-
-import java.io.PrintWriter;
-import java.io.Serializable;
-
-
-/**
- * <p>Implementation object representing an <strong>item</strong> in the
- * <em>Rich Site Summary</em> DTD, version 0.91.  This class may be subclassed
- * to further specialize its behavior.</p>
- */
-
-public class Item implements Serializable {
-
-
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * The item description (1-500 characters).
-     */
-    protected String description = null;
-
-    public String getDescription() {
-        return (this.description);
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-
-    /**
-     * The item link (1-500 characters).
-     */
-    protected String link = null;
-
-    public String getLink() {
-        return (this.link);
-    }
-
-    public void setLink(String link) {
-        this.link = link;
-    }
-
-
-    /**
-     * The item title (1-100 characters).
-     */
-    protected String title = null;
-
-    public String getTitle() {
-        return (this.title);
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-
-    // -------------------------------------------------------- Package Methods
-
-
-    /**
-     * Render this channel as XML conforming to the RSS 0.91 specification,
-     * to the specified writer.
-     *
-     * @param writer The writer to render output to
-     */
-    void render(PrintWriter writer) {
-
-        writer.println("    <item>");
-
-        writer.print("      <title>");
-        writer.print(title);
-        writer.println("</title>");
-
-        writer.print("      <link>");
-        writer.print(link);
-        writer.println("</link>");
-
-        if (description != null) {
-            writer.print("      <description>");
-            writer.print(description);
-            writer.println("</description>");
-        }
-
-        writer.println("    </item>");
-
-    }
-
-
-}
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/RSSDigester.java b/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/RSSDigester.java
deleted file mode 100644
index f3e8400..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/RSSDigester.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */ 
-
-
-package org.apache.commons.digester.rss;
-
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import org.apache.commons.digester.Digester;
-import org.apache.commons.logging.LogFactory;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-
-/**
- * <p>Implementation of <strong>org.apache.commons.digester.Digester</strong>
- * designed to process input streams that conform to the <em>Rich Site
- * Summary</em> DTD, version 0.91.  For more information about this format,
- * see the <a href="http://my.netscape.com/publish/">My Netscape</a> site.</p>
- *
- * <p>The default implementation object returned by calling
- * <code>parse()</code> (an instance of
- * <code>org.apache.commons.digester.rss.Channel</code>)
- * knows how to render itself in XML format via the <code>render()</code>
- * method.  See the test <code>main()</code> method below for an
- * example of using these classes.</p>
- */
-
-public class RSSDigester extends Digester {
-
-
-    // ----------------------------------------------------------- Constructors
-
-
-
-    // ----------------------------------------------------- Instance Variables
-
-
-    /**
-     * Have we been configured yet?
-     */
-    protected boolean configured = false;
-
-
-    /**
-     * The set of public identifiers, and corresponding resource names,
-     * for the versions of the DTDs that we know about.
-     */
-    protected static final String registrations[] = {
-        "-//Netscape Communications//DTD RSS 0.9//EN",
-        "/org/apache/commons/digester/rss/rss-0.9.dtd",
-        "-//Netscape Communications//DTD RSS 0.91//EN",
-        "/org/apache/commons/digester/rss/rss-0.91.dtd",
-    };
-
-
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * The fully qualified class name of the <code>Channel</code>
-     * implementation class.
-     */
-    protected String channelClass = "org.apache.commons.digester.rss.Channel";
-
-    public String getChannelClass() {
-        return (this.channelClass);
-    }
-
-    public void setChannelClass(String channelClass) {
-        this.channelClass = channelClass;
-    }
-
-
-    /**
-     * The fully qualified class name of the <code>Image</code>
-     * implementation class.
-     */
-    protected String imageClass = "org.apache.commons.digester.rss.Image";
-
-    public String getImageClass() {
-        return (this.imageClass);
-    }
-
-    public void setImageClass(String imageClass) {
-        this.imageClass = imageClass;
-    }
-
-
-    /**
-     * The fully qualified class name of the <code>Item</code>
-     * implementation class.
-     */
-    protected String itemClass = "org.apache.commons.digester.rss.Item";
-
-    public String getItemClass() {
-        return (this.itemClass);
-    }
-
-    public void setItemClass(String itemClass) {
-        this.itemClass = itemClass;
-    }
-
-
-    /**
-     * The fully qualified class name of the <code>TextInput</code>
-     * implementation class.
-     */
-    protected String textInputClass =
-            "org.apache.commons.digester.rss.TextInput";
-
-    public String getTextInputClass() {
-        return (this.textInputClass);
-    }
-
-    public void setTextInputClass(String textInputClass) {
-        this.textInputClass = textInputClass;
-    }
-
-
-    // --------------------------------------------------------- Public Methods
-
-
-    /**
-     * Parse the content of the specified file using this Digester.  Returns
-     * the root element from the object stack (which will be the Channel).
-     *
-     * @param file File containing the XML data to be parsed
-     *
-     * @exception IOException if an input/output error occurs
-     * @exception SAXException if a parsing exception occurs
-     */
-    public Object parse(File file) throws IOException, SAXException {
-
-        configure();
-        return (super.parse(file));
-
-    }
-
-
-    /**
-     * Parse the content of the specified input source using this Digester.
-     * Returns the root element from the object stack (which will be the
-     * Channel).
-     *
-     * @param input Input source containing the XML data to be parsed
-     *
-     * @exception IOException if an input/output error occurs
-     * @exception SAXException if a parsing exception occurs
-     */
-    public Object parse(InputSource input) throws IOException, SAXException {
-
-        configure();
-        return (super.parse(input));
-
-    }
-
-
-    /**
-     * Parse the content of the specified input stream using this Digester.
-     * Returns the root element from the object stack (which will be
-     * the Channel).
-     *
-     * @param input Input stream containing the XML data to be parsed
-     *
-     * @exception IOException if an input/output error occurs
-     * @exception SAXException if a parsing exception occurs
-     */
-    public Object parse(InputStream input) throws IOException, SAXException {
-
-        configure();
-        return (super.parse(input));
-
-    }
-
-
-    /**
-     * Parse the content of the specified URI using this Digester.
-     * Returns the root element from the object stack (which will be
-     * the Channel).
-     *
-     * @param uri URI containing the XML data to be parsed
-     *
-     * @exception IOException if an input/output error occurs
-     * @exception SAXException if a parsing exception occurs
-     */
-    public Object parse(String uri) throws IOException, SAXException {
-
-        configure();
-        return (super.parse(uri));
-
-    }
-
-
-    // -------------------------------------------------------- Package Methods
-
-
-
-    // ------------------------------------------------------ Protected Methods
-
-
-    /**
-     * Configure the parsing rules that will be used to process RSS input.
-     */
-    protected void configure() {
-
-        if (configured) {
-            return;
-        }
-
-        // Register local copies of the DTDs we understand
-        for (int i = 0; i < registrations.length; i += 2) {
-            URL url = this.getClass().getResource(registrations[i + 1]);
-            if (url != null) {
-                register(registrations[i], url.toString());
-            }
-        }
-
-        // FIXME - validate the "version" attribute of the rss element?
-
-        // Add the rules for the Channel object
-        addObjectCreate("rss/channel", channelClass);
-        addCallMethod("rss/channel/copyright", "setCopyright", 0);
-        addCallMethod("rss/channel/description", "setDescription", 0);
-        addCallMethod("rss/channel/docs", "setDocs", 0);
-        addCallMethod("rss/channel/language", "setLanguage", 0);
-        addCallMethod("rss/channel/lastBuildDate", "setLastBuildDate", 0);
-        addCallMethod("rss/channel/link", "setLink", 0);
-        addCallMethod("rss/channel/managingEditor", "setManagingEditor", 0);
-        addCallMethod("rss/channel/pubDate", "setPubDate", 0);
-        addCallMethod("rss/channel/rating", "setRating", 0);
-        addCallMethod("rss/channel/skipDays/day", "addSkipDay", 0);
-        addCallMethod("rss/channel/skipHours/hour", "addSkipHour", 0);
-        addCallMethod("rss/channel/title", "setTitle", 0);
-        addCallMethod("rss/channel/webMaster", "setWebMaster", 0);
-
-        // Add the rules for the Image object
-        addObjectCreate("rss/channel/image", imageClass);
-        addSetNext("rss/channel/image", "setImage",
-                "org.apache.commons.digester.rss.Image");
-        addCallMethod("rss/channel/image/description", "setDescription", 0);
-        addCallMethod("rss/channel/image/height", "setHeight", 0,
-                new Class[]{ Integer.TYPE });
-        addCallMethod("rss/channel/image/link", "setLink", 0);
-        addCallMethod("rss/channel/image/title", "setTitle", 0);
-        addCallMethod("rss/channel/image/url", "setURL", 0);
-        addCallMethod("rss/channel/image/width", "setWidth", 0,
-                new Class[]{ Integer.TYPE });
-
-        // Add the rules for the Item object
-        addObjectCreate("rss/channel/item", itemClass);
-        addSetNext("rss/channel/item", "addItem",
-                "org.apache.commons.digester.rss.Item");
-        addCallMethod("rss/channel/item/description", "setDescription", 0);
-        addCallMethod("rss/channel/item/link", "setLink", 0);
-        addCallMethod("rss/channel/item/title", "setTitle", 0);
-
-        // Add the rules for the TextInput object
-        addObjectCreate("rss/channel/textinput", textInputClass);
-        addSetNext("rss/channel/textinput", "setTextInput",
-                "org.apache.commons.digester.rss.TextInput");
-        addCallMethod("rss/channel/textinput/description",
-                "setDescription", 0);
-        addCallMethod("rss/channel/textinput/link", "setLink", 0);
-        addCallMethod("rss/channel/textinput/name", "setName", 0);
-        addCallMethod("rss/channel/textinput/title", "setTitle", 0);
-
-        // Mark this digester as having been configured
-        configured = true;
-
-    }
-
-
-    // ------------------------------------------------------ Test Main Program
-
-
-    /**
-     * Test main program that parses the channel description included in this
-     * package as a static resource.
-     *
-     * @param args The command line arguments (ignored)
-     */
-    public static void main(String args[]) {
-
-        try {
-            System.out.println("RSSDigester Test Program");
-            System.out.println("Opening input stream ...");
-            InputStream is = RSSDigester.class.getResourceAsStream
-                    ("/org/apache/commons/digester/rss/rss-example.xml");
-            System.out.println("Creating new digester ...");
-            RSSDigester digester = new RSSDigester();
-            if ((args.length > 0) && (args[0].equals("-debug"))) {
-                digester.setLogger(LogFactory.getLog("RSSDigester"));
-            }
-            System.out.println("Parsing input stream ...");
-            Channel channel = (Channel) digester.parse(is);
-            System.out.println("Closing input stream ...");
-            is.close();
-            System.out.println("Dumping channel info ...");
-            channel.render(System.out);
-        } catch (Exception e) {
-            System.out.println("-->Exception");
-            e.printStackTrace(System.out);
-        }
-
-    }
-
-
-}
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/TextInput.java b/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/TextInput.java
deleted file mode 100644
index 35acb9e..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/TextInput.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */ 
-
-
-package org.apache.commons.digester.rss;
-
-import java.io.PrintWriter;
-import java.io.Serializable;
-
-
-/**
- * <p>Implementation object representing a <strong>textinput</strong> in the
- * <em>Rich Site Summary</em> DTD, version 0.91.  This class may be subclassed
- * to further specialize its behavior.</p>
- */
-
-public class TextInput implements Serializable {
-
-
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * The text input description (1-100 characters).
-     */
-    protected String description = null;
-
-    public String getDescription() {
-        return (this.description);
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-
-    /**
-     * The text input link (1-500 characters).
-     */
-    protected String link = null;
-
-    public String getLink() {
-        return (this.link);
-    }
-
-    public void setLink(String link) {
-        this.link = link;
-    }
-
-
-    /**
-     * The text input field name (1-100 characters).
-     */
-    protected String name = null;
-
-    public String getName() {
-        return (this.name);
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-
-    /**
-     * The text input submit button label (1-100 characters).
-     */
-    protected String title = null;
-
-    public String getTitle() {
-        return (this.title);
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-
-    // -------------------------------------------------------- Package Methods
-
-
-    /**
-     * Render this channel as XML conforming to the RSS 0.91 specification,
-     * to the specified writer.
-     *
-     * @param writer The writer to render output to
-     */
-    void render(PrintWriter writer) {
-
-        writer.println("    <textinput>");
-
-        writer.print("      <title>");
-        writer.print(title);
-        writer.println("</title>");
-
-        writer.print("      <description>");
-        writer.print(description);
-        writer.println("</description>");
-
-        writer.print("      <name>");
-        writer.print(name);
-        writer.println("</name>");
-
-        writer.print("      <link>");
-        writer.print(link);
-        writer.println("</link>");
-
-        writer.println("    </textinput>");
-
-    }
-
-
-}
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/package.html b/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/package.html
deleted file mode 100644
index 7af1cc6..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<head>
-<title>Package Documentation for org.apache.commons.digester.rss Package</title>
-</head>
-<body bgcolor="white">
-<p>Example usage of Digester to parse XML documents compatible with the
-<em>Rich Site Summary</em> format used by many newsfeeds.</p>
-</body>
-</html>
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/rss-example.xml b/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/rss-example.xml
deleted file mode 100644
index d382c30..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/digester/rss/rss-example.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<!--
- Copyright 2004 The Apache Software Foundation.
-  
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-  
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<!DOCTYPE rss PUBLIC
- "-//Netscape Communications//DTD RSS 0.91//EN"
- "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-
-<rss version="0.91">
-
-  <channel>
-
-    <title>Apache</title>
-    <link>http://www.apache.org</link>
-    <description>The Apache Software Foundation</description>
-    <language>en-US</language>
-    <rating>(PICS-1.1 "http://www.rsac.org/ratingsv01.html"
-      2 gen true comment "RSACi North America Server"
-      for "http://www.rsac.org" on "1996.04.16T08:15-0500"
-      r (n 0 s 0 v 0 l 0))</rating>
-
-    <image>
-      <title>Apache</title>
-      <url>http://jakarta.apache.org/images/jakarta-logo.gif</url>
-      <link>http://jakarta.apache.org</link>
-      <width>505</width>
-      <height>480</height>
-      <description>The Jakarta project. Open source, serverside java.</description>
-    </image>
-
-    <item>
-      <title>Commons Attributes 2.1 Released</title>
-      <link>http://jakarta.apache.org/site/news/news-2004-2ndHalf.html#20040815.1</link>
-      <description>The Jakarta Commons team is happy to announce the release of Commons Attributes 2.1. 
-      This is the first release of the new Commons-Attributes code.</description>
-    </item>
-
-    <item>
-      <title>Cloudscape Becomes Apache Derby</title>
-      <link>http://jakarta.apache.org/site/news/elsewhere-2004-2ndHalf.html#20040803.1</link>
-      <description>IBM has submitted a proposal to the Apache DB project 
-      for a Java-based package to be called 'Derby'.</description>
-    </item>
-
-    <item>
-      <title>Commons BeanUtils 1.7 Released</title>
-      <link>http://jakarta.apache.org/site/news/news-2004-2ndHalf.html#20040802.1</link>
-    </item>
-
-    <item>
-      <title>Commons JXPath 1.2 Released</title>
-      <link>http://jakarta.apache.org/site/news/news-2004-2ndHalf.html#20040801.2</link>
-    </item>
-
-  </channel>
-
-</rss>
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/TestJelly.java b/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/TestJelly.java
deleted file mode 100644
index 6c95a82..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.betwixt;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/common.jelly b/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/common.jelly
deleted file mode 100644
index f45042a..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/common.jelly
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!-- common tests that the channel has been created properly -->
-
-<test:suite xmlns:j="jelly:core" xmlns:test="jelly:junit" xmlns:b="jelly:betwixt" xmlns:log="jelly:log">
-
-    <log:info>Parsed channel with title: ${channel.title}</log:info>
-      
-  <test:assert test="${channel != null}"/>
-      
-  <test:assertEquals actual="${channel.title}" expected="MozillaZine"/>
-      
-</test:suite>
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/rss-example.xml b/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/rss-example.xml
deleted file mode 100644
index e8c76c9..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/rss-example.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!--
-<!DOCTYPE rss PUBLIC
- "-//Netscape Communications//DTD RSS 0.91//EN"
- "http://my.netscape.com/publish/formats/rss-0.91.dtd">
--->
-
-<rss version="0.91">
-
-  <channel>
-
-    <title>MozillaZine</title>
-    <link>http://www.mozillazine.org</link>
-    <description>Your source for Mozilla news, advocacy,
-      interviews, builds, and more!</description>
-    <language>en-US</language>
-    <rating>(PICS-1.1 "http://www.rsac.org/ratingsv01.html"
-      2 gen true comment "RSACi North America Server"
-      for "http://www.rsac.org" on "1996.04.16T08:15-0500"
-      r (n 0 s 0 v 0 l 0))</rating>
-
-    <image>
-      <title>MozillaZine</title>
-      <url>http://www.mozillazine.org/image/mynetscape88.gif</url>
-      <link>http://www.mozillazine.org</link>
-      <width>88</width>
-      <height>31</height>
-      <description>Articles, discussions, builds, and more...</description>
-    </image>
-
-    <item>
-      <title>Java2 in Navigator 5?</title>
-      <link>http://www.mozillazine.org/talkback.html?article=607</link>
-      <description>Will Java2 be an integrated part of Navigator 5?
-      Read more about it in this discussion...</description>
-    </item>
-
-    <item>
-      <title>Communicator 4.61 Out</title>
-      <link>http://www.mozillazine.org/talkback.html?article=606</link>
-      <description>The latest version of Communicator is now
-      available.  It includes security enhancements
-      and various bug fixes.</description>
-    </item>
-
-    <item>
-      <title>Mozilla Dispenses with Old,
-      Proprietary DOM</title>
-      <link>http://www.mozillazine.org/talkback.html?article=604</link>
-    </item>
-
-    <item>
-      <title>The Animation Contest is Now Closed</title>
-      <link>http://www.mozillazine.org/talkback.html?article=603</link>
-    </item>
-
-    <textinput>
-      <title>Send</title>
-      <description>Comments about MozillaZine?</description>
-      <name>responseText</name>
-      <link>http://www.mozillazine.org/cgi-bin/sampleonly.cgi</link>
-    </textinput>
-
-    <skipDays>
-      <day>Tuesday</day>
-    </skipDays>
-  </channel>
-
-</rss>
diff --git a/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/suite.jelly b/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/suite.jelly
deleted file mode 100644
index 5a73231..0000000
--- a/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/suite.jelly
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite xmlns:j="jelly:core" xmlns:test="jelly:junit" xmlns:b="jelly:betwixt">
-
-<b:introspector var="introspector" 
-  attributesForPrimitives="false" elementNameMapper="lowercase"/>
-    
-<test:case name="rssParseViaURI">
-
-  <b:parse var="channel" 
-    uri="rss-example.xml" 
-    introspector="${introspector}"
-    rootClass="org.apache.commons.digester.rss.Channel"
-    path="rss/channel"/>
-  
-  <j:include uri="common.jelly"/>
-</test:case>
-   
-<test:case name="rssParseViaTagBody">
-
-  <b:parse var="channel" 
-    introspector="${introspector}"
-    rootClass="org.apache.commons.digester.rss.Channel"
-    path="rss/channel">
-      
-    <rss version="0.91">
-    
-      <channel>
-    
-        <title>MozillaZine</title>
-        <link>http://www.mozillazine.org</link>
-        <description>Your source for Mozilla news, advocacy,
-          interviews, builds, and more!</description>
-        <language>en-US</language>
-        <rating>(PICS-1.1 "http://www.rsac.org/ratingsv01.html"
-          2 gen true comment "RSACi North America Server"
-          for "http://www.rsac.org" on "1996.04.16T08:15-0500"
-          r (n 0 s 0 v 0 l 0))</rating>
-    
-        <image>
-          <title>MozillaZine</title>
-          <url>http://www.mozillazine.org/image/mynetscape88.gif</url>
-          <link>http://www.mozillazine.org</link>
-          <width>88</width>
-          <height>31</height>
-          <description>Articles, discussions, builds, and more...</description>
-        </image>
-    
-        <item>
-          <title>Java2 in Navigator 5?</title>
-          <link>http://www.mozillazine.org/talkback.html?article=607</link>
-          <description>Will Java2 be an integrated part of Navigator 5?
-          Read more about it in this discussion...</description>
-        </item>
-    
-        <item>
-          <title>Communicator 4.61 Out</title>
-          <link>http://www.mozillazine.org/talkback.html?article=606</link>
-          <description>The latest version of Communicator is now
-          available.  It includes security enhancements
-          and various bug fixes.</description>
-        </item>
-    
-        <item>
-          <title>Mozilla Dispenses with Old,
-          Proprietary DOM</title>
-          <link>http://www.mozillazine.org/talkback.html?article=604</link>
-        </item>
-    
-        <item>
-          <title>The Animation Contest is Now Closed</title>
-          <link>http://www.mozillazine.org/talkback.html?article=603</link>
-        </item>
-    
-        <textinput>
-          <title>Send</title>
-          <description>Comments about MozillaZine?</description>
-          <name>responseText</name>
-          <link>http://www.mozillazine.org/cgi-bin/sampleonly.cgi</link>
-        </textinput>
-    
-        <skipDays>
-          <day>Tuesday</day>
-        </skipDays>
-      </channel>
-    
-    </rss>
-  
-  </b:parse>
-    
-  <j:include uri="common.jelly"/>
-</test:case>
-
-</test:suite>
diff --git a/jelly-tags/betwixt/xdocs/changes.xml b/jelly-tags/betwixt/xdocs/changes.xml
deleted file mode 100644
index 93fa436..0000000
--- a/jelly-tags/betwixt/xdocs/changes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.1-SNAPSHOT" date="in CVS">
-      <action dev="dion" type="update">Move to betwixt 0.6</action>
-      <action dev="dion" type="update">Move to betwixt 0.5 and digester 1.6</action>
-    </release>
-    <release version="1.0" date="2004-09-11">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/betwixt/xdocs/index.xml b/jelly-tags/betwixt/xdocs/index.xml
deleted file mode 100644
index 9661c26..0000000
--- a/jelly-tags/betwixt/xdocs/index.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Betwixt Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A tag library for turning XML into beans or beans into XML using the
-        <a href="http://jakarta.apache.org/commons/jelly/libs/betwixt/tags.html">Betwixt</a> library.
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/betwixt/xdocs/navigation.xml b/jelly-tags/betwixt/xdocs/navigation.xml
deleted file mode 100644
index 1c90875..0000000
--- a/jelly-tags/betwixt/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Betwixt Tag Library">
-
-  <title>Betwixt Tag Library</title>
-  
-  <body>
-    <menu name="Betwixt Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/bsf/.cvsignore b/jelly-tags/bsf/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/bsf/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/bsf/build.xml b/jelly-tags/bsf/build.xml
deleted file mode 100644
index f702e58..0000000
--- a/jelly-tags/bsf/build.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-bsf" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-bsf-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-bsf 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.bsf.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/bsf-2.3.0-rc1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/bsf/jars/bsf-2.3.0-rc1.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/bsf/maven.xml b/jelly-tags/bsf/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/bsf/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/bsf/project.properties b/jelly-tags/bsf/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/bsf/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/bsf/project.xml b/jelly-tags/bsf/project.xml
deleted file mode 100644
index 29f418a..0000000
--- a/jelly-tags/bsf/project.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-bsf</id>
-  <name>commons-jelly-tags-bsf</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.bsf</package>
-
-  <description>
-      This is a Jelly interface for the Bean Scripting Framework
-  </description>
-  <shortDescription>Commons Jelly BSF Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_BSF-1_0</tag>
-    </version>
-  </versions>
-    
-  <dependencies>
-  
-    
-  
-    <!-- START for compilation -->
-    <dependency>
-      <id>bsf</id>
-      <version>2.3.0-rc1</version>
-      <url>http://jakarta.apache.org/bsf</url>
-    </dependency>
-    <!-- END for compilation -->
-    
-
-    
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/BSFExpression.java b/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/BSFExpression.java
deleted file mode 100644
index 7f890ba..0000000
--- a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/BSFExpression.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bsf;
-
-import org.apache.bsf.BSFEngine;
-import org.apache.bsf.BSFManager;
-
-import java.util.Iterator;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.expression.ExpressionSupport;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/** Represents a BSF expression
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class BSFExpression extends ExpressionSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog( BSFExpression.class );
-
-    /** The expression */
-    private String text;
-
-    /** The BSF Engine to evaluate expressions */
-    private BSFEngine engine;
-    /** The BSF Manager to evaluate expressions */
-    private BSFManager manager;
-
-    /** The adapter to BSF's ObjectRegistry that uses the JellyContext */
-    private JellyContextRegistry registry;
-
-    public BSFExpression(String text, BSFEngine engine, BSFManager manager, JellyContextRegistry registry) {
-        this.text = text;
-        this.engine = engine;
-        this.manager = manager;
-        this.registry = registry;
-    }
-
-    // Expression interface
-    //-------------------------------------------------------------------------
-    public String getExpressionText() {
-        return "${" + text + "}";
-    }
-
-    public Object evaluate(JellyContext context) {
-        // XXXX: unfortunately we must sychronize evaluations
-        // so that we can swizzle in the context.
-        // maybe we could create an expression from a context
-        // (and so create a BSFManager for a context)
-        synchronized (registry) {
-            registry.setJellyContext(context);
-
-            try {
-                // XXXX: hack - there must be a better way!!!
-                for ( Iterator iter = context.getVariableNames(); iter.hasNext(); ) {
-                    String name = (String) iter.next();
-                    Object value = context.getVariable( name );
-                    manager.declareBean( name, value, value.getClass() );
-                }
-                return engine.eval( text, -1, -1, text );
-            }
-            catch (Exception e) {
-                log.warn( "Caught exception evaluating: " + text + ". Reason: " + e, e );
-                return null;
-            }
-        }
-    }
-}
diff --git a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/BSFExpressionFactory.java b/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/BSFExpressionFactory.java
deleted file mode 100644
index 9c55082..0000000
--- a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/BSFExpressionFactory.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bsf;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.bsf.BSFEngine;
-import org.apache.bsf.BSFException;
-import org.apache.bsf.BSFManager;
-
-/** Represents a factory of BSF expressions
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.6 $
-  */
-public class BSFExpressionFactory implements ExpressionFactory {
-
-    /** The logger of messages */
-    private Log log = LogFactory.getLog( getClass() );
-
-    private String language = "javascript";
-    private BSFManager manager;
-    private BSFEngine engine;
-    private JellyContextRegistry registry = new JellyContextRegistry();
-
-    public BSFExpressionFactory() {
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** @return the BSF language to be used */
-    public String getLanguage() {
-        return language;
-    }
-
-    public void setLanguage(String language) {
-        this.language = language;
-    }
-
-    /** @return the BSF Engine to be used by this expression factory */
-    public BSFEngine getBSFEngine() throws BSFException {
-        if ( engine == null ) {
-            engine = createBSFEngine();
-        }
-        return engine;
-    }
-
-    public void setBSFEngine(BSFEngine engine) {
-        this.engine = engine;
-    }
-
-    public BSFManager getBSFManager() {
-        if ( manager == null ) {
-            manager = createBSFManager();
-            manager.setObjectRegistry( registry );
-        }
-        return manager;
-    }
-
-    public void setBSFManager(BSFManager manager) {
-        this.manager = manager;
-        manager.setObjectRegistry( registry );
-    }
-
-    // ExpressionFactory interface
-    //-------------------------------------------------------------------------
-    public Expression createExpression(String text) throws JellyException {
-        try {
-            return new BSFExpression( text, getBSFEngine(), getBSFManager(), registry );
-        } catch (BSFException e) {
-            throw new JellyException("Could not obtain BSF engine",e);
-        }
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /** Factory method */
-    protected BSFEngine createBSFEngine() throws BSFException {
-        return getBSFManager().loadScriptingEngine( getLanguage() );
-    }
-
-    /** Factory method */
-    protected BSFManager createBSFManager() {
-        BSFManager answer = new BSFManager();
-        return answer;
-    }
-}
diff --git a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/BSFTagLibrary.java b/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/BSFTagLibrary.java
deleted file mode 100644
index 1756755..0000000
--- a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/BSFTagLibrary.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bsf;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.jelly.tags.core.CoreTagLibrary;
-import org.xml.sax.Attributes;
-
-import org.apache.bsf.BSFEngine;
-import org.apache.bsf.BSFException;
-
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.6 $
-  */
-public class BSFTagLibrary extends CoreTagLibrary {
-
-    private BSFExpressionFactory expressionFactory = new BSFExpressionFactory();
-
-    public BSFTagLibrary() {
-        registerTagFactory(
-            "script",
-            new TagFactory() {
-                public Tag createTag(String name, Attributes attributes)
-                    throws JellyException {
-                    return createScriptTag(name, attributes);
-                }
-            }
-            );
-    }
-
-    public BSFTagLibrary(String language) {
-        this();
-        setLanguage(language);
-    }
-
-    public void setLanguage(String language) {
-        expressionFactory.setLanguage(language);
-    }
-
-    /** Allows derived tag libraries to use their own factory */
-    protected ExpressionFactory getExpressionFactory() {
-        return expressionFactory;
-    }
-
-    protected BSFEngine getBSFEngine() throws BSFException {
-        return expressionFactory.getBSFEngine();
-    }
-
-    /**
-     * Factory method to create a new ScriptTag with a BSFEngine
-     *
-     * @param name is the name of the tag (typically 'script')
-     * @param attributes the attributes of the tag
-     * @return Tag
-     */
-    protected Tag createScriptTag(String name, Attributes attributes) throws JellyException {
-        try {
-            return new ScriptTag( expressionFactory.getBSFEngine(),
-                                  expressionFactory.getBSFManager());
-        }
-        catch (BSFException e) {
-            throw new JellyException("Failed to create BSFEngine: " + e, e);
-        }
-    }
-}
diff --git a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JPythonTagLibrary.java b/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JPythonTagLibrary.java
deleted file mode 100644
index e82b2ef..0000000
--- a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JPythonTagLibrary.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bsf;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class JPythonTagLibrary extends BSFTagLibrary {
-
-    public JPythonTagLibrary() {
-        setLanguage( "jpython" );
-    }
-}
diff --git a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JavaScriptTagLibrary.java b/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JavaScriptTagLibrary.java
deleted file mode 100644
index 7af3356..0000000
--- a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JavaScriptTagLibrary.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bsf;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class JavaScriptTagLibrary extends BSFTagLibrary {
-
-    public JavaScriptTagLibrary() {
-        setLanguage( "javascript" );
-    }
-}
diff --git a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JellyContextRegistry.java b/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JellyContextRegistry.java
deleted file mode 100644
index 3232cb6..0000000
--- a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JellyContextRegistry.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bsf;
-
-import org.apache.bsf.util.ObjectRegistry;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** A BSF ObjectRegistry which uses the Context to find and
-  * register objects
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class JellyContextRegistry extends ObjectRegistry {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(JellyContextRegistry.class);
-
-    /** The context */
-    private JellyContext context;
-
-    public JellyContextRegistry() {
-    }
-
-    public JellyContext getJellyContext() {
-        return context;
-    }
-
-    public void setJellyContext(JellyContext context) {
-        this.context = context;
-    }
-
-    // ObjectRegistry interface
-    //-------------------------------------------------------------------------
-    public Object lookup(String name) {
-        return context.getVariable(name);
-    }
-
-    public void register(String name, Object value) {
-        context.setVariable(name, value);
-    }
-
-    public void unregister(String name) {
-        context.removeVariable(name);
-    }
-}
diff --git a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JythonTagLibrary.java b/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JythonTagLibrary.java
deleted file mode 100644
index d07bc05..0000000
--- a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/JythonTagLibrary.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bsf;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class JythonTagLibrary extends BSFTagLibrary {
-
-    public JythonTagLibrary() {
-        setLanguage( "jython" );
-    }
-}
diff --git a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/PNutsTagLibrary.java b/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/PNutsTagLibrary.java
deleted file mode 100644
index 9b80f44..0000000
--- a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/PNutsTagLibrary.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bsf;
-
-import org.apache.bsf.BSFManager;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class PNutsTagLibrary extends BSFTagLibrary {
-
-    public PNutsTagLibrary() {
-        BSFManager.registerScriptingEngine(
-            "pnuts",
-            "pnuts.ext.PnutsBSFEngine",
-            new String[]{"pnut"}
-        );
-        setLanguage( "pnuts" );
-    }
-
-}
diff --git a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/ScriptTag.java b/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/ScriptTag.java
deleted file mode 100644
index fab831b..0000000
--- a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/ScriptTag.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.bsf;
-
-import java.util.Iterator;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.LocationAware;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.bsf.BSFEngine;
-import org.apache.bsf.BSFManager;
-import org.apache.bsf.BSFException;
-
-/**
- * A tag which evaluates its body using the current scripting language
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class ScriptTag extends TagSupport implements LocationAware {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ScriptTag.class.getName() + ".evaluating");
-
-    private BSFEngine engine;
-    private BSFManager manager;
-    private String elementName;
-    private String fileName;
-    private int columnNumber;
-    private int lineNumber;
-
-    public ScriptTag(BSFEngine engine, BSFManager manager) {
-        this.engine = engine;
-        this.manager = manager;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        String text = getBodyText();
-
-        log.debug(text);
-
-        // XXXX: unfortunately we must sychronize evaluations
-        // so that we can swizzle in the context.
-        // maybe we could create an expression from a context
-        // (and so create a BSFManager for a context)
-        synchronized (getRegistry()) {
-            getRegistry().setJellyContext(context);
-
-            try {
-                // XXXX: hack - there must be a better way!!!
-                for ( Iterator iter = context.getVariableNames(); iter.hasNext(); ) {
-                    String name = (String) iter.next();
-                    Object value = context.getVariable( name );
-                    manager.declareBean( name, value, value.getClass() );
-                }
-                engine.exec(fileName, lineNumber, columnNumber, text);
-            }
-            catch (BSFException e) {
-                throw new JellyTagException("Error occurred with script: " + e, e);
-            }
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * @return int
-     */
-    public int getColumnNumber() {
-        return columnNumber;
-    }
-
-    /**
-     * @return String
-     */
-    public String getElementName() {
-        return elementName;
-    }
-
-    /**
-     * @return BSFEngine
-     */
-    public BSFEngine getEngine() {
-        return engine;
-    }
-
-    /**
-     * @return String
-     */
-    public String getFileName() {
-        return fileName;
-    }
-
-    /**
-     * @return int
-     */
-    public int getLineNumber() {
-        return lineNumber;
-    }
-
-    /**
-     * Sets the columnNumber.
-     * @param columnNumber The columnNumber to set
-     */
-    public void setColumnNumber(int columnNumber) {
-        this.columnNumber = columnNumber;
-    }
-
-    /**
-     * Sets the elementName.
-     * @param elementName The elementName to set
-     */
-    public void setElementName(String elementName) {
-        this.elementName = elementName;
-    }
-
-    /**
-     * Sets the engine.
-     * @param engine The engine to set
-     */
-    public void setEngine(BSFEngine engine) {
-        this.engine = engine;
-    }
-
-    /**
-     * Sets the fileName.
-     * @param fileName The fileName to set
-     */
-    public void setFileName(String fileName) {
-        this.fileName = fileName;
-    }
-
-    /**
-     * Sets the lineNumber.
-     * @param lineNumber The lineNumber to set
-     */
-    public void setLineNumber(int lineNumber) {
-        this.lineNumber = lineNumber;
-    }
-
-    private JellyContextRegistry getRegistry()
-    {
-        return (JellyContextRegistry) this.manager.getObjectRegistry();
-    }
-}
diff --git a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/package.html b/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/package.html
deleted file mode 100644
index 47e85ab..0000000
--- a/jelly-tags/bsf/src/java/org/apache/commons/jelly/tags/bsf/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A collection of tag libraries for working with BSF based scripting languages like JavaScript, Jython and PNuts</p>
-  
-</body>
-</html>
diff --git a/jelly-tags/bsf/src/test/org/apache/commons/jelly/tags/bsf/example.jelly b/jelly-tags/bsf/src/test/org/apache/commons/jelly/tags/bsf/example.jelly
deleted file mode 100644
index dac370f..0000000
--- a/jelly-tags/bsf/src/test/org/apache/commons/jelly/tags/bsf/example.jelly
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<j:jelly xmlns:j="jelly:pnuts">

-  <j:forEach var="arg" items="args"><j:expr value="arg"/> </j:forEach>

-</j:jelly>
\ No newline at end of file
diff --git a/jelly-tags/bsf/src/test/org/apache/commons/jelly/tags/javascript/example.jelly b/jelly-tags/bsf/src/test/org/apache/commons/jelly/tags/javascript/example.jelly
deleted file mode 100644
index 0dcee16..0000000
--- a/jelly-tags/bsf/src/test/org/apache/commons/jelly/tags/javascript/example.jelly
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<j:jelly xmlns:j="jelly:javascript">

-  <j:forEach var="arg" items="args"><j:expr value="arg"/> </j:forEach>

-</j:jelly>
\ No newline at end of file
diff --git a/jelly-tags/bsf/xdocs/changes.xml b/jelly-tags/bsf/xdocs/changes.xml
deleted file mode 100644
index da14641..0000000
--- a/jelly-tags/bsf/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-11">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/bsf/xdocs/index.xml b/jelly-tags/bsf/xdocs/index.xml
deleted file mode 100644
index bfbec74..0000000
--- a/jelly-tags/bsf/xdocs/index.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>BSF Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A collection of tag libraries for working with BSF based scripting languages like 
-        JavaScript, Jython and PNuts.
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/bsf/xdocs/navigation.xml b/jelly-tags/bsf/xdocs/navigation.xml
deleted file mode 100644
index 245054f..0000000
--- a/jelly-tags/bsf/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="BSF Tag Library">
-
-  <title>BSF Tag Library</title>
-  
-  <body>
-    <menu name="BSF Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/define/.cvsignore b/jelly-tags/define/.cvsignore
deleted file mode 100644
index bca2cda..0000000
--- a/jelly-tags/define/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-target
-maven.log
-velocity.log
diff --git a/jelly-tags/define/build.xml b/jelly-tags/define/build.xml
deleted file mode 100644
index 0dbf15b..0000000
--- a/jelly-tags/define/build.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-define" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-define-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-define 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.define.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-dynabean-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-dynabean-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-log-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-log-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-xml-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-xml-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/define/maven.xml b/jelly-tags/define/maven.xml
deleted file mode 100644
index 38c951b..0000000
--- a/jelly-tags/define/maven.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-  
-  <!-- some examples -->
-  <goal name="demo:bean" prereqs="create-classpath"
-        description="Runs the example of binding beans to tags">
-
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/tags/define/beanSample.jelly"/>
-    </java>
-  </goal>
-
-  <goal name="demo:jellybean" prereqs="create-classpath"
-        description="Runs the example of binding jelly beans to tags">
-
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/tags/define/jellyBeanSample.jelly"/>
-    </java>
-  </goal>
-
-
-</project>
diff --git a/jelly-tags/define/project.properties b/jelly-tags/define/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/define/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/define/project.xml b/jelly-tags/define/project.xml
deleted file mode 100644
index 2480dc1..0000000
--- a/jelly-tags/define/project.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-define</id>
-  <name>commons-jelly-tags-define</name>
-  <currentVersion>1.0</currentVersion>
-
-  <package>org.apache.commons.jelly.tags.define</package>
-
-  <description>
-       The Jelly Define Tag Library
-  </description>
-  <shortDescription>Commons Jelly Define Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_DEFINE-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-
-    <!-- START for test -->
-  
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-dynabean</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/dynabean/</url>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-log</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/log/</url>
-    </dependency>
-      
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-xml</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/xml/</url>
-    </dependency>
-      
-      
-    <!-- END for test -->
-    
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-    
-    <!-- END for running demos -->
-    
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/AttributeTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/AttributeTag.java
deleted file mode 100644
index 1253290..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/AttributeTag.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.impl.Attribute;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This tag is bound onto a Java Bean class. When the tag is invoked a bean will be created
- * using the tags attributes.
- * The bean may also have an invoke method called invoke(), run(), execute() or some such method
- * which will be invoked after the bean has been configured.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
- * @version $Revision: 1.5 $
- */
-public class AttributeTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(AttributeTag.class);
-
-    /** the attribute definition */
-    private Attribute attribute;
-
-    public AttributeTag() {
-        attribute = new Attribute();
-    }
-
-    public AttributeTag(Attribute attribute) {
-        this.attribute = attribute;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        BeanTag tag = (BeanTag) findAncestorWithClass( BeanTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException( "This tag should be nested inside a <define:bean> or <define:jellybean> tag" );
-        }
-
-        tag.addAttribute( attribute );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of the attribute
-     */
-    public void setName(String name) {
-        attribute.setName(name);
-    }
-
-    /**
-     * Sets whether this attribute is mandatory or not
-     */
-    public void setRequired(boolean required) {
-        attribute.setRequired(required);
-    }
-
-    /**
-     * Sets the default value of this attribute
-     */
-    public void setDefaultValue(Expression defaultValue) {
-        attribute.setDefaultValue(defaultValue);
-    }
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/BeanTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/BeanTag.java
deleted file mode 100644
index 54850b6..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/BeanTag.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.define;
-
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.Attribute;
-import org.apache.commons.jelly.impl.DynamicBeanTag;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.xml.sax.Attributes;
-
-/**
- * Binds a Java bean to the given named Jelly tag so that the attributes of
- * the tag set the bean properties..
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class BeanTag extends DefineTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(BeanTag.class);
-
-    /** An empty Map as I think Collections.EMPTY_MAP is only JDK 1.3 onwards */
-    private static final Map EMPTY_MAP = new HashMap();
-
-    /** the name of the tag to create */
-    private String name;
-
-    /** the Java class name to use for the tag */
-    private String className;
-
-    /** the ClassLoader used to load beans */
-    private ClassLoader classLoader;
-
-    /** the name of the attribute used for the variable name */
-    private String varAttribute = "var";
-
-    /** the attribute definitions for this dynamic tag */
-    private Map attributes;
-
-    /**
-     * Adds a new attribute definition to this dynamic tag
-     */
-    public void addAttribute(Attribute attribute) {
-        if ( attributes == null ) {
-            attributes = new HashMap();
-        }
-        attributes.put( attribute.getName(), attribute );
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        invokeBody(output);
-
-        if (name == null) {
-            throw new MissingAttributeException("name");
-        }
-        if (className == null) {
-            throw new MissingAttributeException("className");
-        }
-
-        Class theClass = null;
-        try {
-            ClassLoader classLoader = getClassLoader();
-            theClass = ClassLoaderUtils.loadClass(className, getClassLoader(), getContext().getUseContextClassLoader(), getClass());
-        }
-        catch (ClassNotFoundException e) {
-            log.error( "Could not load class: " + className + " exception: " + e, e );
-            throw new JellyTagException(
-                "Could not find class: "
-                    + className
-                    + " using ClassLoader: "
-                    + classLoader);
-        }
-
-        final Class beanClass = theClass;
-        final Method invokeMethod = getInvokeMethod( theClass );
-        final Map beanAttributes = (attributes != null) ? attributes : EMPTY_MAP;
-
-        TagFactory factory = new TagFactory() {
-            public Tag createTag(String name, Attributes attributes) {
-                return  new DynamicBeanTag(beanClass, beanAttributes, varAttribute, invokeMethod);
-            }
-        };
-
-        getTagLibrary().registerBeanTag(name, factory);
-
-        // now lets clear the attributes for next invocation and help the GC
-        attributes = null;
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of the tag to create
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Sets the Java class name to use for the tag
-     */
-    public void setClassName(String className) {
-        this.className = className;
-    }
-
-    /**
-     * Sets the ClassLoader to use to load the class.
-     * If no value is set then the current threads context class
-     * loader is used.
-     */
-    public void setClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
-    /**
-     * @return the ClassLoader to use to load classes specified by this object, 
-     *  the thread context loader if the context flag is set, or the class used to load this class.
-     */
-    public ClassLoader getClassLoader() {
-        return ClassLoaderUtils.getClassLoader(classLoader, getContext().getUseContextClassLoader(), getClass());
-    }
-
-    /**
-     * Sets the name of the attribute used to define the bean variable that this dynamic
-     * tag will output its results as. This defaults to 'var' though this property
-     * can be used to change this if it conflicts with a bean property called 'var'.
-     */
-    public void setVarAttribute(String varAttribute) {
-        this.varAttribute = varAttribute;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Extracts the invoke method for the class if one is used.
-     */
-    protected Method getInvokeMethod( Class theClass ) {
-        return null;
-    }
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ClassLoaderTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ClassLoaderTag.java
deleted file mode 100644
index 19e06e3..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ClassLoaderTag.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.define;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/**
- * Creates a new <code>URLClassLoader</code> to dynamically
- * load tags froms.
- *
- * @author <a href="mailto:stephenh@chase3000.com">Stephen Haberman</a>
- * @version $Revision: 1.6 $
- */
-public class ClassLoaderTag extends BeanTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ClassLoaderTag.class);
-
-    /** The name to export the classloader to. */
-    private String var;
-
-    /** The URL to load the classes from. */
-    private String url;
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the variable to store the class loader in
-     */
-    public String getVar() {
-        return this.var;
-    }
-
-    /**
-     * @param var the variable to store the class loader in
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * @return the url to load the classes from
-     */
-    public String getUrl() {
-        return this.url;
-    }
-
-    /**
-     * @param url the url to load the classes from
-     */
-    public void setUrl(String url) {
-        this.url = url;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( getVar() == null ) {
-            throw new MissingAttributeException( "var" );
-        }
-        if ( getUrl() == null ) {
-            throw new MissingAttributeException( "url" );
-        }
-
-        ClassLoader parent = Thread.currentThread().getContextClassLoader();
-        if (parent == null) {
-            parent = ClassLoaderUtils.getClassLoader(getClass());
-        }
-
-        URLClassLoader newClassLoader = null;
-
-        try {
-            newClassLoader =
-              new URLClassLoader( new URL[] { new URL(getUrl()) }, parent );
-        } catch (MalformedURLException e) {
-            throw new JellyTagException(e);
-        }
-
-        log.debug("Storing the new classloader in " + getVar());
-
-        context.setVariable(getVar(), newClassLoader);
-    }
-
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/DefineTagLibrary.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/DefineTagLibrary.java
deleted file mode 100644
index 1c40b0b..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/DefineTagLibrary.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.TagLibrary;
-
-
-/**
- * This is a tag library that allows you to define new tag libraries at run time.
- * Thus tag libraries and tags can be easily implemented in Jelly rather than
- * in Java code.
- *
- * Please see the individual tag classes for more information, particularly
- * {@link TaglibTag Taglib tag} and {@link TagTag Tag tag}.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class DefineTagLibrary extends TagLibrary {
-
-    public DefineTagLibrary() {
-        registerTag( "taglib", TaglibTag.class );
-        registerTag( "tag", TagTag.class );
-        registerTag( "bean", BeanTag.class );
-        registerTag( "dynaBean", DynaBeanTag.class );
-        registerTag( "jellybean", JellyBeanTag.class );
-        registerTag( "attribute", AttributeTag.class );
-        registerTag( "invokeBody", InvokeBodyTag.class );
-        registerTag( "script", ScriptTag.class );
-        registerTag( "invoke", InvokeTag.class );
-        registerTag( "classLoader", ClassLoaderTag.class );
-        registerTag( "extend", ExtendTag.class );
-        registerTag( "super", SuperTag.class );
-    }
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/DefineTagSupport.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/DefineTagSupport.java
deleted file mode 100644
index 90f9814..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/DefineTagSupport.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.impl.DynamicTagLibrary;
-
-/**
- * An abstract base class useful for implementation inheritence.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public abstract class DefineTagSupport extends TagSupport {
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the current dynamic tag library instance or throws a JellyException
-     * if one is not available
-     */
-    protected DynamicTagLibrary getTagLibrary() throws JellyTagException {
-        TaglibTag tag
-            = (TaglibTag) findAncestorWithClass(TaglibTag.class);
-        if ( tag == null ) {
-            throw new JellyTagException( "<define:tag> must be inside <define:taglib>" );
-        }
-        return tag.getTagLibrary();
-    }
-
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/DynaBeanTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/DynaBeanTag.java
deleted file mode 100644
index f17b2eb..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/DynaBeanTag.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.define;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.beanutils.DynaClass;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.Attribute;
-import org.apache.commons.jelly.impl.DynamicDynaBeanTag;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.xml.sax.Attributes;
-
-/**
- * Binds a Java bean to the given named Jelly tag so that the attributes of
- * the tag set the bean properties..
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class DynaBeanTag extends DefineTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(DynaBeanTag.class);
-
-    /** An empty Map as I think Collections.EMPTY_MAP is only JDK 1.3 onwards */
-    private static final Map EMPTY_MAP = new HashMap();
-
-    /** the name of the tag to create */
-    private String name;
-
-    /** the DyanClass to bind to the tag */
-    private DynaClass dynaClass;
-
-    /** the name of the attribute used for the variable name */
-    private String varAttribute = "var";
-
-    /** the attribute definitions for this dynamic tag */
-    private Map attributes;
-
-    /**
-     * Adds a new attribute definition to this dynamic tag
-     */
-    public void addAttribute(Attribute attribute) {
-        if ( attributes == null ) {
-            attributes = new HashMap();
-        }
-        attributes.put( attribute.getName(), attribute );
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        invokeBody(output);
-
-        if (name == null) {
-            throw new MissingAttributeException("name");
-        }
-        if (dynaClass == null) {
-            throw new MissingAttributeException("dynaClass");
-        }
-
-        final DynaClass theDynaClass = dynaClass;
-        final Map beanAttributes = (attributes != null) ? attributes : EMPTY_MAP;
-
-        TagFactory factory = new TagFactory() {
-            public Tag createTag(String name, Attributes attributes) {
-                return  new DynamicDynaBeanTag(theDynaClass, beanAttributes, varAttribute);
-            }
-        };
-        getTagLibrary().registerBeanTag(name, factory);
-
-        // now lets clear the attributes for next invocation and help the GC
-        attributes = null;
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of the tag to create
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Sets the name of the attribute used to define the bean variable that this dynamic
-     * tag will output its results as. This defaults to 'var' though this property
-     * can be used to change this if it conflicts with a bean property called 'var'.
-     */
-    public void setVarAttribute(String varAttribute) {
-        this.varAttribute = varAttribute;
-    }
-
-    /**
-     * Returns the dynaClass.
-     * @return DynaClass
-     */
-    public DynaClass getDynaClass() {
-        return dynaClass;
-    }
-
-    /**
-     * Sets the {@link DynaClass} which will be bound to this dynamic tag.
-     */
-    public void setDynaClass(DynaClass dynaClass) {
-        this.dynaClass = dynaClass;
-    }
-
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ExtendTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ExtendTag.java
deleted file mode 100644
index 7a16316..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ExtendTag.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 1999-2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.DynamicTagLibrary;
-
-/**
- * &lt;extend&gt; is used to extend a dynamic tag defined in an inherited
- * dynamic tag library
- * <p/>
- *
- * @author <a href="mailto:tima@intalio.com">Tim Anderson</a>
- * @version $Revision: 1.5 $
- * @see SuperTag
- */
-public class ExtendTag extends DefineTagSupport {
-
-    private String name;
-
-    private Script superScript;
-
-    public ExtendTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        DynamicTagLibrary library = getTagLibrary();
-        DynamicTagLibrary owner = library.find(getName());
-        if (owner == null) {
-            throw new JellyTagException(
-                "Cannot extend " + getName() + ": dynamic tag not defined");
-        }
-        if (owner == library) {
-            // disallow extension of tags defined within the same tag
-            // library
-            throw new JellyTagException("Cannot extend " + getName() +
-                                     ": dynamic tag defined locally");
-        }
-        superScript = owner.getDynamicTag(name);
-        if (superScript == null) {
-            // tag doesn't define a script - disallow this for the moment.
-            throw new JellyTagException("Cannot extend " + getName() +
-                                     ": tag is not a dynamic tag");
-        }
-
-        owner.registerDynamicTag(getName() , getBody());
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the name of the tag to create
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the name of the tag to create
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Returns the parent implementation of this tag
-     */
-    public Script getSuperScript() {
-        return superScript;
-    }
-}
-
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/InvokeBodyTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/InvokeBodyTag.java
deleted file mode 100644
index 4f65c2f..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/InvokeBodyTag.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.DynamicTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * &lt;invokeBody&gt; tag is used inside a &lt;tag&gt; tag
- * (i.e. the definition of a dynamic tag) to invoke the tags body when
- * the tag is invoked.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class InvokeBodyTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(InvokeBodyTag.class);
-
-    public InvokeBodyTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        // Try find find the body from the reserved 'org.apache.commons.jelly.body' variable
-        Script script = (Script) context.getVariable("org.apache.commons.jelly.body");
-        if (script != null) {
-            script.run(context, output);
-        }
-        else {
-            // note this mechanism does not work properly for arbitrarily
-            // nested dynamic tags. A better way is required.
-            Tag tag = findAncestorWithClass(this, DynamicTag.class);
-            if (tag == null) {
-                throw new JellyTagException("Cannot invoke body, no dynamic tag is defined in this block");
-            }
-            else {
-                tag.invokeBody(output);
-            }
-        }
-    }
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/InvokeTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/InvokeTag.java
deleted file mode 100644
index bf657d5..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/InvokeTag.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * The &lt;invoke&gt; tag will invoke a given Script instance.
- * It can be used with the &lt;script&gt; tag which defines scripts
- * as variables that can later be invoked by this &lt;invoke&gt; tag.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class InvokeTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(InvokeTag.class);
-
-    private Script script;
-
-
-    public InvokeTag() {
-    }
-
-    /**
-     * Sets the Script to be invoked by this tag, which typically has been previously
-     * defined by the use of the &lt;script&gt; tag.
-     */
-    public void setScript(Script script) {
-        this.script = script;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( script == null ) {
-            throw new MissingAttributeException("script");
-        }
-        script.run(context, output);
-    }
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/JellyBeanTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/JellyBeanTag.java
deleted file mode 100644
index 498179a..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/JellyBeanTag.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.define;
-
-import java.lang.reflect.Method;
-
-import org.apache.commons.beanutils.MethodUtils;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/**
- * Binds a Java bean to the given named Jelly tag so that the attributes of
- * the tag set the bean properties. After the body of this tag is invoked
- * then the beans invoke() method will be called, if the bean has one.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class JellyBeanTag extends BeanTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(JellyBeanTag.class);
-
-    /** Empty parameter types for Method lookup */
-    private static final Class[] emptyParamTypes = {};
-
-    /** the name of the method to invoke on the bean */
-    private String method;
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the method name to use, which defaults to 'run' for Runnable
-     * objects
-     */
-    public String getMethod() {
-        if ( method == null ) {
-            return "run";
-        }
-        return method;
-    }
-
-    /**
-     * Sets the name of the method to invoke on the bean.
-     * This defaults to "run" so that Runnable objects can be
-     * invoked, but this property can be set to whatever is required,
-     * such as "execute" or "invoke"
-     */
-    public void setMethod(String method) {
-        this.method = method;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    protected Method getInvokeMethod( Class theClass ) {
-        Method invokeMethod =
-            MethodUtils.getAccessibleMethod(
-                theClass,
-                getMethod(),
-                emptyParamTypes);
-
-        if ( invokeMethod == null ) {
-        }
-        return invokeMethod;
-    }
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ScriptTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ScriptTag.java
deleted file mode 100644
index b9f13cf..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ScriptTag.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * &lt;script&gt; tag is used to assign a Script object
- * to a variable. The script can then be called whenever the user wishes
- * maybe from inside an expression or more typically via the &lt;invoke&gt; tag.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class ScriptTag extends TagSupport {
-
-    private String var;
-
-    public ScriptTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if ( var == null ) {
-            throw new JellyTagException( "<define:script> must have a var attribute" );
-        }
-        context.setVariable( var, getBody() );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** @return the variable name of the script to create */
-    public String getVar() {
-        return var;
-    }
-
-    /** Sets the variable name of the tag to create */
-    public void setVar(String var) {
-        this.var = var;
-    }
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/SuperTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/SuperTag.java
deleted file mode 100644
index b4bebe1..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/SuperTag.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 1999-2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * &lt;super&gt; tag is used to invoke a parent tag implementation, when
- * a tag extends an existing tag
- *
- * @author <a href="mailto:tima@intalio.com">Tim Anderson</a>
- * @version $Revision: 1.5 $
- * @see ExtendTag
- */
-public class SuperTag extends TagSupport {
-
-    public SuperTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        ExtendTag tag = (ExtendTag) findAncestorWithClass(ExtendTag.class);
-        if (tag == null) {
-            throw new JellyTagException(
-                "<define:super> must be inside a <define:extend>");
-        }
-
-        tag.getSuperScript().run(getContext(), output);
-    }
-}
-
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/TagTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/TagTag.java
deleted file mode 100644
index 8850d3f..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/TagTag.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * &lt;tag&gt; is used to define a new tag
- * using a Jelly script to implement the behaviour of the tag.
- * Parameters can be passed into the new tag using normal XML attribute
- * notations. Inside the body of the tag definition, the attributes can
- * be accessed as normal Jelly variables.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class TagTag extends DefineTagSupport {
-
-    private String name;
-
-    public TagTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        getTagLibrary().registerDynamicTag( getName(), getBody() );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** @return the name of the tag to create */
-    public String getName() {
-        return name;
-    }
-
-    /** Sets the name of the tag to create */
-    public void setName(String name) {
-        this.name = name;
-    }
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/TaglibTag.java b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/TaglibTag.java
deleted file mode 100644
index a79eb14..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/TaglibTag.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.DynamicTagLibrary;
-
-/**
- * The &lt;taglib&gt; tag is used to define a new tag library
- * using a Jelly script. The tag library is identified by its
- * {@link #getURI() URI}.
- *
- * The tags for a taglib are declared using the {@link TagTag}.
- *
- * You can 'inherit' tags from a previously defined taglib, as well,
- * allowing runtime extension of tag libraries
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class TaglibTag extends TagSupport {
-
-    /** The namespace URI */
-    private String uri;
-    /** The new tags being added */
-    private DynamicTagLibrary tagLibrary;
-    /** Whether or not inheritence is enabled */
-    private boolean inherit = true;
-
-    public TaglibTag() {
-    }
-
-    public TaglibTag(String uri) {
-        this.uri = uri;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        String uri = getUri();
-        tagLibrary = new DynamicTagLibrary( uri );
-
-        // inherit tags from an existing tag library
-        if ( isInherit() ) {
-            tagLibrary.setParent( context.getTagLibrary( uri ) );
-        }
-        context.registerTagLibrary( uri, tagLibrary );
-
-        invokeBody(output);
-
-        tagLibrary = null;
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public String getUri() {
-        return uri;
-    }
-
-    /**
-     * Sets the namespace URI to register this new dynamic tag library with
-     */
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
-
-    public DynamicTagLibrary getTagLibrary() {
-        return tagLibrary;
-    }
-
-    /**
-     * Returns the inherit.
-     * @return boolean
-     */
-    public boolean isInherit() {
-        return inherit;
-    }
-
-    /**
-     * Sets whether this dynamic tag should inherit from the current existing tag library
-     * of the same URI. This feature is enabled by default so that tags can easily be
-     * some tags can be overridden in an existing library, such as when making Mock Tags.
-     *
-     * You can disable this option if you want to disable any tags in the base library,
-     * turning them into just normal static XML.
-     *
-     * @param inherit The inherit to set
-     */
-    public void setInherit(boolean inherit) {
-        this.inherit = inherit;
-    }
-
-}
diff --git a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/package.html b/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/package.html
deleted file mode 100644
index 29ad3df..0000000
--- a/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>Tag library which allows the creation of new tags using Jelly script itself.
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/DynamicTag.java b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/DynamicTag.java
deleted file mode 100644
index e312120..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/DynamicTag.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.apache.commons.jelly.tags.define;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.xml.sax.SAXException;
-
-/**
- * @author stephen
- * @version $Revision: 1.5 $
- */
-public class DynamicTag extends TagSupport
-{
-
-    /**
-     * @see org.apache.commons.jelly.Tag#doTag(XMLOutput)
-     */
-    public void doTag(XMLOutput output) throws JellyTagException
-    {
-        try {
-            output.write("output - ignored body");
-        }
-        catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-}
diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/MyRunnable.java b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/MyRunnable.java
deleted file mode 100644
index 67c33e4..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/MyRunnable.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-//import org.apache.tools.ant.types.FileSet;
-
-/**
- * An example Runnable bean that is framework neutral and just performs
- * some useful function.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class MyRunnable implements Runnable {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(MyRunnable.class);
-
-    private int x;
-    private String y;
-    private List fileSets = new ArrayList();
-
-    public MyRunnable() {
-    }
-
-
-    // Adder methods
-    //-------------------------------------------------------------------------
-    /*
-
-    Commented out method to remove test-only dependency on ant
-
-    public void addFileset(FileSet fileSet) {
-        fileSets.add(fileSet);
-    }
-    */
-
-    // Runnable interface
-    //-------------------------------------------------------------------------
-    public void run() {
-        log.info( "About to do something where x = " + getX() + " y = " + getY() );
-        log.info( "FileSets are: " + fileSets );
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public int getX() {
-        return x;
-    }
-
-    public void setX(int x) {
-        this.x = x;
-    }
-
-    public String getY() {
-        return y;
-    }
-
-    public void setY(String y) {
-        this.y = y;
-    }
-}
diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/TestDynamicTags.java b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/TestDynamicTags.java
deleted file mode 100644
index b158611..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/TestDynamicTags.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import java.io.File;
-import java.io.StringWriter;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Tests dynamic tags
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class TestDynamicTags extends TestCase {
-
-    JellyContext context = new JellyContext();
-    XMLOutput output;
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TestDynamicTags.class);
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestDynamicTags.class);
-    }
-
-    public TestDynamicTags(String testName) {
-        super(testName);
-    }
-
-    public void testParse() throws Exception {
-        StringWriter buffer = new StringWriter();
-        output = XMLOutput.createXMLOutput(buffer);
-
-        //runScript("src/test/org/apache/commons/jelly/define/babelfishTaglib.jelly");
-        runScript("src/test/org/apache/commons/jelly/tags/define/example.jelly");
-
-        log.info("The output was as follows");
-        log.info(buffer.toString());
-    }
-
-    public void testJellyBean() throws Exception {
-        StringWriter buffer = new StringWriter();
-        output = XMLOutput.createXMLOutput(buffer);
-
-    log.warn("commented out test, need to rewrite without ant");
-        //runScript("src/test/org/apache/commons/jelly/define/jellyBeanSample.jelly");
-
-        log.info("The output was as follows");
-        log.info(buffer.toString());
-    }
-
-    protected void runScript(String name) throws Exception {
-        context.runScript(new File(name), output);
-    }
-}
diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/TestJelly.java b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/TestJelly.java
deleted file mode 100644
index 1bc6732..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.define;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/babelfishTaglib.jelly b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/babelfishTaglib.jelly
deleted file mode 100644
index 26542ff..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/babelfishTaglib.jelly
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<!-- defines a new taglib of babelfish soap services -->

-

-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:define="jelly:define" xmlns:http="notImplementedYet">

-  <define:taglib uri="babelfish">  

-

-    <!-- defines the <translate> tag                                            -->

-    <!-- notice how the 'from' and 'to' attributes are available as variables   -->

-    <!-- and the body of the <translate> tag is invoked via <define:invokeBody> -->

-    <define:tag name="translate">

-      <http:post url="http://services.xmethods.net:80/perl/soaplite.cgi">

-       <http:header name="SOAPAction" value="urn:xmethodsBabelFish#BabelFish"/>

-       <http:header name="Content-Type" value="text/xml"/>

-       <http:body>

-        <env:Envelope 

-          xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"

-          env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

-          <env:Body>

-            <m:BabelFish xmlns:m="urn:xmethodsBabelFish">

-              <translationmode>${from}_${to}</translationmode>      

-              <sourcedata>

-                <define:invokeBody/>

-              </sourcedata>    

-            </m:BabelFish>

-          </env:Body>

-        </env:Envelope>

-       </http:body>

-      </http:post>

-    </define:tag>

-    

-  </define:taglib>    

-</j:jelly>

-

diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/beanSample.jelly b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/beanSample.jelly
deleted file mode 100644
index 2667b54..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/beanSample.jelly
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<!-- creates a Bean -->

-<j:jelly 

-    xmlns:j="jelly:core" 

-    xmlns:define="jelly:define" 

-    xmlns:log="jelly:log" 

-    xmlns:my="myDummyTagLib">

-    

-<testcase>

-

-  <log:info>Lets define a new tag library</log:info>

-  

-  <define:taglib uri="myDummyTagLib">  

-  

-      <!-- 

-        || map the given bean to a jelly tag 

-        || we'll specify some required attributes and some default values

-        -->

-        

-    <define:bean name="customer" className="org.apache.commons.jelly.core.Customer">

-      <define:attribute name="name" required="true"/>

-      <define:attribute name="location" defaultValue="UK"/>

-    </define:bean>        

-    

-  </define:taglib>

-

-  <log:info>Now lets invoke the new Jelly bean tag</log:info>

-  

-  <my:customer var="c1" name="James"/>

-  

-  <log:info>Created a customer with name ${c1.name} and location ${c1.location}</log:info>

-

-  <my:customer var="c2" name="Bob" location="US"/>

-  

-  <log:info>Created a customer with name ${c2.name} and location ${c2.location}</log:info>

-

-        

-  <j:catch var="exception">

-      <my:customer location="UK"/>

-  </j:catch>

-  

-  <log:info>Caught exception ${exception} with reason: ${exception.reason}</log:info>

-  

-  <j:if test="${exception == null}">

-      <log:error>Failed! I should have an exception since I didn't specify a 'name' attribute</log:error>

-  </j:if>

-  

-  

-</testcase>

-          

-</j:jelly>

-

diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/example.jelly b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/example.jelly
deleted file mode 100644
index 33d9b4d..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/example.jelly
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<!-- uses the babelfish taglib -->

-<j:jelly xmlns:j="jelly:core" xmlns:babelfish="babelfish">

-

-  <j:include uri="babelfishTaglib.jelly"/>

-  

-  This example should output a web service call...

-

-  <babelfish:translate from="EN" to="FR">

-    Jelly is cool stuff!

-  </babelfish:translate>

-

-  ... OK did that work?

-

-</j:jelly>

-

diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/jellyBeanSample.jelly b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/jellyBeanSample.jelly
deleted file mode 100644
index 9f8d095..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/jellyBeanSample.jelly
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<!-- uses a JellyBean, which invokes the run() method -->

-<j:jelly 

-    xmlns:j="jelly:core" 

-    xmlns:define="jelly:define" 

-    xmlns:log="jelly:log" 

-    xmlns:my="myDummyTagLib"

-    xmlns="jelly:ant">

-    

-<testcase>

-

-  <log:info>Lets define a new tag library</log:info>

-  

-  <define:taglib uri="myDummyTagLib">  

-  

-    <define:jellybean name="foo" className="org.apache.commons.jelly.tags.define.MyRunnable">

-      <define:attribute name="y" defaultValue="wine"/>

-    </define:jellybean>

-    

-    <!-- 

-      This was added to demonstrate a ClassCastException when a

-      dynamic tag is created that uses a dynamically jelly bean and

-      called more than once. You should be able to call the dynamically

-      created tag n times without problem now.

-    -->

-    

-    <define:tag name="bar">

-      <my:foo x="2" y="cheese">

-        <fileset dir=".">

-          <include name="*.xml"/>

-        </fileset>

-        <fileset dir="src/java">

-          <include name="*.java"/>

-        </fileset>

-      </my:foo>

-    </define:tag>

-

-  </define:taglib>

-

-  <log:info>Now lets invoke the new Jelly bean tag</log:info>

-  

-  <my:foo x="2" y="cheese">

-    <fileset dir=".">

-      <include name="*.xml"/>

-    </fileset>

-    <fileset dir="src/java">

-      <include name="*.java"/>

-    </fileset>

-  </my:foo>

-

-  <log:info>Did that work?</log:info>

-  

-  <my:foo x="2">

-    <fileset dir=".">

-      <include name="*.xml"/>

-    </fileset>

-  </my:foo>

-  

-  <!-- You should be able to run dynamic tags n times without ClassCastExceptions -->

-  <my:bar/>

-  <my:bar/>

-  

-</testcase>

-          

-</j:jelly>

-

diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/suite.jelly b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/suite.jelly
deleted file mode 100644
index 805cf0f..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/define/suite.jelly
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<test:suite 

-    xmlns:j="jelly:core" 

-    xmlns:x="jelly:xml" 

-    xmlns:test="jelly:junit" 

-    xmlns:log="jelly:log" 

-    xmlns:define="jelly:define"

-    xmlns:dynamicTest="dynamicTest">

-

-<test:case name="invoke">

-

-  <define:script var="fooScript">

-      <log:info>Generating some XML</log:info>

-      

-    <foo id="1">

-      <bar>some XML</bar>

-    </foo>

-  </define:script>

-  

-  

-  <!-- now lets invoke the script -->

-  

-  

-  <x:parse var="doc">

-      <log:info>About to invoke the script!</log:info>

-      

-      <define:invoke script="${fooScript}"/>

-  </x:parse>

-             

-             

-  <x:forEach select="$doc//foo">

-    <test:assert xpath="bar"/>

-  </x:forEach>

-    

-                             

-  <test:assert xpath="$doc/foo/bar"/>

-  

-</test:case>

-

-<test:case name="dynamicTag">

-

-  <!-- Init the new tag. -->

-  <define:taglib uri="dynamicTest">

-    <define:jellybean

-      name="test"

-      className="org.apache.commons.jelly.tags.define.DynamicTag"

-    />

-  </define:taglib>

-

-  <j:set var="output">

-    <dynamicTest:test>

-      ignored output to make sure doTag is being called

-    </dynamicTest:test>

-  </j:set>

-

-  <test:assertEquals

-    expected="output - ignored body"

-    actual="${output}"

-  />

-

-</test:case>

-   

-

-<test:case name="dynaBeans" 

-    xmlns:dynabean="jelly:dynabean"

-    xmlns:my="dynamicDynaBeanTest">

-

-    <!-- create a DynaClass -->

-  <dynabean:dynaclass var="CustomerType" name="CustomerDynaClass"> 

-        <dynabean:property name="name" type="String" />

-        <dynabean:property name="address" type="String" />

-    </dynabean:dynaclass>

-

-  <!-- Create a new tag library binding the dynabeans. -->

-  <define:taglib uri="dynamicDynaBeanTest">

-    <define:dynaBean

-      name="customer"

-      dynaClass="${CustomerType}"

-    />

-  </define:taglib>

-

-    <!-- now lets create a customer -->

-    <my:customer var="customer" name="Customer 1" address="Address of Customer 1" />

-

-    <test:assert test="${customer != null}">Created a customer DynaBean</test:assert>

-    

-    <test:assertEquals 

-        expected="Customer 1" 

-        actual="${customer.name}"/>

-        

-    <test:assertEquals 

-        expected="Address of Customer 1" 

-        actual="${customer.address}"/>

-        

-    <test:assertEquals 

-        expected="CustomerDynaClass" 

-        actual="${customer.dynaClass.name}"/>

-

-</test:case>

-

-<test:case name="testTaglibInheritTest" xmlns="taglibInherit">

-

-  <define:taglib uri="taglibInherit" inherit="false">

-     <define:tag name="foo">

-        bar

-     </define:tag>

-  </define:taglib>

-

-  <define:taglib uri="taglibInherit" inherit="true">

-     <define:tag name="foo2">

-        bar2

-     </define:tag>

-  </define:taglib>

-

-  <j:set var="output">

-    <foo/>

-  </j:set>

-

-  <test:assertEquals expected="bar" actual="${output}"/>

-

-</test:case>

-

-<test:case name="testExtend" xmlns="taglibExtend">

-

-  <define:taglib uri="taglibExtend" inherit="false">

-     <define:tag name="foo">

-        foo

-     </define:tag>

-  </define:taglib>

-

-  <j:set var="output"><foo/></j:set>

-  <test:assertEquals expected="foo" actual="${output}"/>

-

-  <!-- extend the foo tag -->

-  <define:taglib uri="taglibExtend" inherit="true">

-     <define:extend name="foo">

-        bar

-     </define:extend>

-  </define:taglib>

-

-  <j:set var="output">

-     <foo/>

-  </j:set>

-  <test:assertEquals expected="bar" actual="${output}"/>

-

-</test:case>

-

-<test:case name="testSuper" xmlns="taglibSuper">

-

-  <define:taglib uri="taglibSuper" inherit="false">

-     <define:tag name="foo">

-        foo

-     </define:tag>

-  </define:taglib>

-

-  <!-- extend the foo tag -->

-  <define:taglib uri="taglibSuper" inherit="true">

-     <define:extend name="foo">

-        <define:super/>

-        bar

-     </define:extend>

-  </define:taglib>

-

-  <j:set var="output">

-    <foo/>

-  </j:set>

-  <test:assertEquals expected="foobar" actual="${output}"/>

-

-  <!-- extend the foo tag -->

-  <define:taglib uri="taglibSuper" inherit="true">

-     <define:extend name="foo">

-        bar

-        <define:super/>

-     </define:extend>

-  </define:taglib>

-

-  <j:set var="output">

-    <foo/>

-  </j:set>

-  <test:assertEquals expected="barfoobar" actual="${output}"/>

-

-</test:case>

-

-

-<test:case name="testOverrideVariablesWithAttributes">

-	<define:taglib uri="testOverrideVariablesWithAttributes">

-		<define:tag name="getValueOfVarA">${varA}</define:tag>

-		</define:taglib>

-	<j:set var="varA" value="varA valueFromSet"/>

-	<j:set var="obtained"><getValueOfVarA varA="varA value from attribute" 

-		xmlns="testOverrideVariablesWithAttributes"/></j:set>

-	<log:info>obtained is ${obtained}</log:info>

-	<test:assertEquals 

-		expected="varA value from attribute"

-		actual  ="${obtained}"/>

-	</test:case>

-

-   

-</test:suite>

diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/TestJUnit.java b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/TestJUnit.java
deleted file mode 100644
index 9f5cfc2..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/TestJUnit.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.mock;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class TestJUnit extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJUnit.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/service.jelly b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/service.jelly
deleted file mode 100644
index e7e07ef..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/service.jelly
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<!-- this script represents some sample service that we will test

-    || via Mock Tags

-    -->

-    

-<j:jelly xmlns:j="jelly:core" xmlns:my="myFoodWebService" xmlns:log="jelly:log">

-

-<!--    <sql:query var="results"> 

-      select * from food where kind = ?

--->      

-      <!-- lets pass in some parametrized value -->

-<!--      <sql:param value="${foodKind}"/>

-    </sql:query>

--->    

-    <!-- invoke some service 

-    <j:forEach items="${results.rows}" var="row">

-    

-        <log:info>Found row with ID ${row.id}</log:info>

--->    

-      <!-- this tag could invoke a web service etc

-      <my:eat cheese="${row.id}"/> -->

-      <!-- FIXME: Commented code above and repeated line are a 

-                  workaround as the sql taglib has been removed

-        -->

-      <my:eat cheese="abc"/>

-      <my:eat cheese="def"/>

-<!--    </j:forEach> -->

-    

-</j:jelly>

diff --git a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/suite.jelly b/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/suite.jelly
deleted file mode 100644
index 30bb929..0000000
--- a/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/suite.jelly
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<test:suite xmlns:j="jelly:core" xmlns:test="jelly:junit" xmlns:mock="jelly:define" xmlns:log="jelly:log">

-

-    <!-- lets create some mock tags and test a sample script that it evaluates the 

-        || mock tags as we'd expect

-        -->

-        

-    <test:case name="testMockTags">

-

-        <!-- lets create the Mock Tags to simulate the database and the web service -->

-        

-    <!-- note that the mock library will only be in effiect in this JellyContext. 

-        || Each test:case has its own context

-      -->

-        <j:set var="foodKind" value="pizza"/>

-          

-<!--      <mock:taglib uri="jelly:sql">      

-        <mock:tag name="query">

--->            

-          <!-- generate a mock result set   

-          <sql:resultSet var="results">

-          <sql:row id="abc"/>

-          <sql:row id="def"/>

-          </sql:resultSet>

-           --> 

-          <!-- since we are inside a Tag Context, lets export the results variable to the parent context 

-          <j:set var="${var}" scope="parent" value="${results}"/>-->

-<!--      </mock:tag>

-      

-        <mock:tag name="param">

-            <test:equals expects="pizza" value="${value}"/>

-      </mock:tag>

-        </mock:taglib>

--->

-        <mock:taglib uri="myFoodWebService">

-          <mock:tag name="eat">

-              <log:info>Invoking the eat web service with ${cheese}</log:info>

-              

-              

-              <!-- increment the counter, in the parent scope so not to use a local variable -->

-              <j:set var="eatServiceCount" scope="parent" value="${1+eatServiceCount}"/>

-              

-              <j:choose>

-                    <j:when test="${eatServiceCount == 1}">              

-                        <test:assertEquals expected="abc" actual="${cheese}"/>

-                    </j:when>              

-

-                    <j:when test="${eatServiceCount == 2}">              

-                        <test:assertEquals expected="def" actual="${cheese}"/>

-                    </j:when>              

-                                            

-                    <j:otherwise>

-                        <test:fail>Invoked eat web service too many times!</test:fail>

-                    </j:otherwise>

-              </j:choose>

-            </mock:tag>

-        </mock:taglib>

-

-        <!-- now lets invoke the service using the Mock Tags -->        

-        <j:include uri="service.jelly"/>

-        

-    

-        <!-- lets assert that the mock objects have been invoked correctly -->

-        <test:assert test="${eatServiceCount == 2}">Should have invoked the eat web service twice</test:assert>

-        

-    </test:case>

-

-</test:suite>

diff --git a/jelly-tags/define/xdocs/changes.xml b/jelly-tags/define/xdocs/changes.xml
deleted file mode 100644
index da14641..0000000
--- a/jelly-tags/define/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-11">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/define/xdocs/index.xml b/jelly-tags/define/xdocs/index.xml
deleted file mode 100644
index d73b74a..0000000
--- a/jelly-tags/define/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Define Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        Tag library which allows the creation of new tags using Jelly script itself.
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/define/xdocs/navigation.xml b/jelly-tags/define/xdocs/navigation.xml
deleted file mode 100644
index baf8596..0000000
--- a/jelly-tags/define/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Define Tag Library">
-
-  <title>Define Tag Library</title>
-  
-  <body>
-    <menu name="Define Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/dynabean/.cvsignore b/jelly-tags/dynabean/.cvsignore
deleted file mode 100644
index bca2cda..0000000
--- a/jelly-tags/dynabean/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-target
-maven.log
-velocity.log
diff --git a/jelly-tags/dynabean/build.xml b/jelly-tags/dynabean/build.xml
deleted file mode 100644
index 72ae21c..0000000
--- a/jelly-tags/dynabean/build.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-dynabean" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-dynabean-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-dynabean 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.dynabean.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/dynabean/maven.xml b/jelly-tags/dynabean/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/dynabean/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/dynabean/project.properties b/jelly-tags/dynabean/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/dynabean/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/dynabean/project.xml b/jelly-tags/dynabean/project.xml
deleted file mode 100644
index b45539e..0000000
--- a/jelly-tags/dynabean/project.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-dynabean</id>
-  <name>commons-jelly-tags-dynabean</name>
-  <currentVersion>1.0</currentVersion>
-
-  <package>org.apache.commons.jelly.tags.dynabean</package>
-
-  <description>
-       The Jelly DynaBean Tag Library
-  </description>
-  <shortDescription>Commons Jelly Dyna Bean Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_DYNABEAN-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-
-    <!-- START for test -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-
-    <!-- END for test -->
-
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/DynabeanTag.java b/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/DynabeanTag.java
deleted file mode 100644
index 9aa5448..0000000
--- a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/DynabeanTag.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.dynabean;
-
-import org.apache.commons.beanutils.DynaBean;
-import org.apache.commons.beanutils.DynaClass;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-
-/** A tag which conditionally evaluates its body based on some condition
-  *
-  * @author Theo Niemeijer
-  * @version $Revision: 1.5 $
-  */
-public class DynabeanTag extends TagSupport {
-
-    private DynaClass dynaClass;
-    private String var;
-
-    public DynabeanTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-
-        if (dynaClass == null) {
-            throw new MissingAttributeException( "dynaclass" );
-        }
-
-        if (var == null) {
-            throw new MissingAttributeException( "var" );
-        }
-
-        try {
-            // Create dynabean instance for this dynaclass
-            DynaBean dynaBean = dynaClass.newInstance();
-
-            // Place new dynabean in context as a variable
-            context.setVariable(getVar(), dynaBean);
-        } catch (IllegalAccessException e) {
-            throw new JellyTagException(e);
-        } catch (InstantiationException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the DynaClass of the new instance to create
-     */
-    public void setDynaclass(DynaClass dynaClass) {
-        this.dynaClass = dynaClass;
-    }
-
-    public String getVar() {
-        return var;
-    }
-
-    /**
-     * Sets the name of the variable to export the new DynaBean instance to
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-
-}
diff --git a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/DynabeanTagLibrary.java b/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/DynabeanTagLibrary.java
deleted file mode 100644
index cd65ca0..0000000
--- a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/DynabeanTagLibrary.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.dynabean;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author Theo Niemeijer
-  * @version $Revision: 1.4 $
-  */
-public class DynabeanTagLibrary extends TagLibrary {
-
-    public DynabeanTagLibrary() {
-        registerTag("dynaclass", DynaclassTag.class);
-        registerTag("property", PropertyTag.class);
-        registerTag("dynabean", DynabeanTag.class);
-        registerTag("set", SetTag.class);
-    }
-
-}
diff --git a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/DynaclassTag.java b/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/DynaclassTag.java
deleted file mode 100644
index b5e6d62..0000000
--- a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/DynaclassTag.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.dynabean;
-
-import java.util.ArrayList;
-
-import org.apache.commons.beanutils.BasicDynaClass;
-import org.apache.commons.beanutils.DynaClass;
-import org.apache.commons.beanutils.DynaProperty;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag which creates and defines and creates a DynaClass
- * The DynaClass object is placed by name in the context,
- * so that a DynaBean tag can use it by name to instantiate
- * a DynaBean object
- *
- * @author Theo Niemeijer
- * @version 1.0
- */
-public class DynaclassTag extends TagSupport {
-
-    private ArrayList propList = new ArrayList();
-    private DynaProperty[] props = null;
-    private DynaClass dynaClass = null;
-
-    private String name;
-    private String var;
-
-    public DynaclassTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-
-        if (name == null) {
-            throw new MissingAttributeException("name");
-        }
-
-        if (var == null) {
-            var = name;
-        }
-
-        // Evaluate the body of the dynaclass definition
-        invokeBody(output);
-
-        // Convert the list of properties into array
-        props =
-            (DynaProperty[]) propList.toArray(
-                new DynaProperty[propList.size()]);
-
-        if (props == null) {
-            throw new JellyTagException("No properties list");
-        }
-
-        if (props.length == 0) {
-            throw new JellyTagException("No properties");
-        }
-
-        // Create the dynaclass with name and properties
-        dynaClass = (DynaClass) new BasicDynaClass(name, null, props);
-
-        // Place new dynaclass in context
-        context.setVariable(getVar(), dynaClass);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of the new DynaClass
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getVar() {
-        return var;
-    }
-
-    /**
-     * Sets the name of the variable to export the DynaClass instance
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    protected void addDynaProperty(DynaProperty prop) {
-        propList.add(prop);
-    }
-}
diff --git a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/PropertyTag.java b/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/PropertyTag.java
deleted file mode 100644
index 722b146..0000000
--- a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/PropertyTag.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.dynabean;
-
-import org.apache.commons.beanutils.DynaProperty;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * DynaProperty tag defines a property of a DynaClass
- * It can only exist inside a DynaClass parent context
- * The properties are added to the properties array
- * of the parent context, and will be used to
- * create the DynaClass object
- *
- * @author Theo Niemeijer
- * @version 1.0
- */
-public class PropertyTag extends TagSupport {
-
-    private String name;
-    private String type;
-    private Class propertyClass;
-    private DynaProperty prop;
-
-    public PropertyTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag (XMLOutput output) throws MissingAttributeException, JellyTagException {
-
-        // Check that this tag is used inside the body of
-        // a DynaClass tag, so that it can access the
-        // context of that tag
-        DynaclassTag parentTag = (DynaclassTag) findAncestorWithClass( DynaclassTag.class );
-        if ( parentTag == null ) {
-            throw new JellyTagException( "This tag must be enclosed inside a <dynaclass> tag" );
-        }
-
-        // Check property name
-        if (name == null) {
-            throw new MissingAttributeException( "name" );
-        }
-
-        // Lookup appropriate property class
-        Class propClass = propertyClass;
-        if (propClass == null) {
-
-            // Check property type
-            if (type == null) {
-                throw new MissingAttributeException( "type" );
-            }
-
-            if (type.equals("String")) {
-                propClass = String.class;
-            }
-            else if (type.equals("Integer")) {
-                propClass = Integer.TYPE;
-            }
-            else if (type.equals("Short")) {
-                propClass = Short.TYPE;
-            }
-            else if (type.equals("Long")) {
-                propClass = Long.TYPE;
-            }
-            else if (type.equals("Float")) {
-                propClass = Float.TYPE;
-            }
-            else if (type.equals("Double")) {
-                propClass = Double.TYPE;
-            }
-            else if (type.equals("Long")) {
-                propClass = Long.TYPE;
-            }
-
-            if (propClass == null) {
-                try {
-                    propClass = Class.forName(type);
-                }
-                catch (Exception e) {
-                    throw new JellyTagException
-                            ("Class " + type +
-                            " not found by Class.forName");
-                }
-            }
-        }
-
-        // Create dynaproperty object with given name and type
-        prop = new DynaProperty (name, propClass);
-
-        // Add new property to dynaclass context
-        parentTag.addDynaProperty(prop);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of this property
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Sets the type name of this property
-     */
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    /**
-     * Returns the Class for this property
-     */
-    public Class getPropertyClass() {
-        return propertyClass;
-    }
-
-    /**
-     * Sets the Class instance for this property
-     */
-    public void setPropertyClass(Class propertyClass) {
-        this.propertyClass = propertyClass;
-    }
-
-}
diff --git a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/SetTag.java b/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/SetTag.java
deleted file mode 100644
index 9180f75..0000000
--- a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/SetTag.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.dynabean;
-
-import java.util.Map;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** A tag which sets a variable from the result of an expression
-  *
- * @author Theo Niemeijer
- * @version 1.0
-  */
-public class SetTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(SetTag.class);
-
-    /** The variable name to export. */
-    private String var;
-
-    /** The variable scope to export */
-    private String scope;
-
-    /** The expression to evaluate. */
-    private Expression value;
-
-    /** The target object on which to set a property. */
-    private Object target;
-
-    /** The name of the property to set on the target object. */
-    private String property;
-
-    public SetTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Object answer = null;
-        if ( value != null ) {
-            answer = value.evaluate(context);
-        }
-        else {
-            answer = getBodyText();
-        }
-
-        // Assume that if a var name and a property is given then
-        // var is the name of an object in the context
-        if (( var != null )
-        && ( property != null)
-        && ( target == null ))
-        {
-            // Get object from context
-            if ( scope != null ) {
-               target = context.getVariable(var, scope);
-            }
-            else {
-                target = context.getVariable(var);
-            }
-
-            if (target != null) {
-                var = null;
-            }
-        }
-
-        if ( var != null ) {
-
-
-            if ( scope != null ) {
-                context.setVariable(var, scope, answer);
-            }
-            else {
-                context.setVariable(var, answer);
-            }
-        }
-        else {
-            if ( target == null ) {
-                throw new JellyTagException( "Either a 'var' or a 'target' attribute must be defined for this tag" );
-            }
-            if ( property == null ) {
-                throw new JellyTagException( "You must define a 'property' attribute if you specify a 'target'" );
-            }
-            setPropertyValue( target, property, answer );
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the variable name to define for this expression
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Sets the variable scope for this variable. For example setting this value to 'parent' will
-     * set this value in the parent scope. When Jelly is run from inside a Servlet environment
-     * then other scopes will be available such as 'request', 'session' or 'application'.
-     *
-     * Other applications may implement their own custom scopes.
-     */
-    public void setScope(String scope) {
-        this.scope = scope;
-    }
-
-    /** Sets the expression to evaluate. */
-    public void setValue(Expression value) {
-        this.value = value;
-    }
-
-    /** Sets the target object on which to set a property. */
-    public void setTarget(Object target) {
-        this.target = target;
-    }
-
-    /** Sets the name of the property to set on the target object. */
-    public void setProperty(String property) {
-        this.property = property;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected void setPropertyValue( Object target, String property, Object value ) {
-        try {
-            if ( target instanceof Map ) {
-                Map map = (Map) target;
-                map.put( property, value );
-            }
-            else {
-                BeanUtils.setProperty( target, property, value );
-            }
-        }
-        catch (Exception e) {
-            log.error( "Failed to set the property: " + property + " on bean: " + target + " to value: " + value + " due to exception: " + e, e );
-        }
-    }
-
-}
diff --git a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/package.html b/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/package.html
deleted file mode 100644
index f0aa9d3..0000000
--- a/jelly-tags/dynabean/src/java/org/apache/commons/jelly/tags/dynabean/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A tag library for creating new DynaClass and DynaBean objects from the 
-  <a href="http://jakarta.apache.org/commons/beanutils.html">beanutils</a> library
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/dynabean/src/test/org/apache/commons/jelly/tags/dynabean/TestJelly.java b/jelly-tags/dynabean/src/test/org/apache/commons/jelly/tags/dynabean/TestJelly.java
deleted file mode 100644
index d9936ec..0000000
--- a/jelly-tags/dynabean/src/test/org/apache/commons/jelly/tags/dynabean/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.dynabean;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/dynabean/src/test/org/apache/commons/jelly/tags/dynabean/suite.jelly b/jelly-tags/dynabean/src/test/org/apache/commons/jelly/tags/dynabean/suite.jelly
deleted file mode 100644
index a082808..0000000
--- a/jelly-tags/dynabean/src/test/org/apache/commons/jelly/tags/dynabean/suite.jelly
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<test:suite 

-    xmlns:j="jelly:core"

-    xmlns:dynabean="jelly:dynabean" 

-    xmlns:test="jelly:junit" 

-    xmlns:log="jelly:log">

-

-<test:case name="simpleDynaBean">

-

-  <dynabean:dynaclass var="CustomerType" name ="CustomerDynaClass"> 

-        <dynabean:property name="name" type="String" />

-        <dynabean:property name="address" type="String" />

-    </dynabean:dynaclass>

-

-  <dynabean:dynabean var="customer" dynaclass="${CustomerType}"/>

-

-  <dynabean:set var="customer" property="name" value="Customer 1" />

-  <dynabean:set var="customer" property="address" value="Address of Customer 1" />

-

-    <test:assertEquals expected="Customer 1" actual="${customer.name}"/>

-    <test:assertEquals expected="Address of Customer 1" actual="${customer.address}"/>

-    <test:assertEquals expected="CustomerDynaClass" actual="${customer.dynaClass.name}"/>

-

-</test:case>

-

-

-<test:case name="nestedDynaBean">

-

-  <dynabean:dynaclass var="AddressType" name="AddressDynaClass"> 

-      <dynabean:property name="city" type="String" />

-      <dynabean:property name="street" type="String" />

-      <dynabean:property name="housenumber" type="Integer" />

-  </dynabean:dynaclass>

-

-  <dynabean:dynaclass var="CustomerType" name="CustomerDynaClass"> 

-      <dynabean:property name="name" type="String" />

-      <dynabean:property name="address" type="org.apache.commons.beanutils.DynaBean"/>

-  </dynabean:dynaclass>

-

-

-  <dynabean:dynabean var="customer" dynaclass="${CustomerType}" />

-  <dynabean:dynabean var="address" dynaclass="${AddressType}" />

-

-  <dynabean:set var="customer" property="name" value="Customer 1" />

-  <dynabean:set var="customer" property="address" value="${address}" />

-  <dynabean:set var="customer" property="address.city" value="London" />

-  <dynabean:set var="customer" property="address.street" value="Downing Street" />

-  <dynabean:set var="customer" property="address.housenumber" value="10" />

-

-    <test:assertEquals expected="Customer 1" actual="${customer.name}"/>

-    <test:assertEquals expected="London" actual="${customer.address.city}"/>

-    <test:assertEquals expected="Downing Street" actual="${customer.address.street}"/>

-    

-    <!-- #### JellyUnit needs to support type cooercion for this to work...

-    <test:assertEquals expected="10" actual="${customer.address.housenumber}"/>

-    -->

-    

-  

-</test:case>

-   

-</test:suite>

diff --git a/jelly-tags/dynabean/xdocs/changes.xml b/jelly-tags/dynabean/xdocs/changes.xml
deleted file mode 100644
index da14641..0000000
--- a/jelly-tags/dynabean/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-11">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/dynabean/xdocs/index.xml b/jelly-tags/dynabean/xdocs/index.xml
deleted file mode 100644
index 6c80140..0000000
--- a/jelly-tags/dynabean/xdocs/index.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>DynaBean Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A tag library for creating new DynaClass and DynaBean objects from the 
-        <a href="http://jakarta.apache.org/commons/beanutils/index.html">beanutils</a> library.
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/dynabean/xdocs/navigation.xml b/jelly-tags/dynabean/xdocs/navigation.xml
deleted file mode 100644
index 957e48e..0000000
--- a/jelly-tags/dynabean/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="DynaBean Tag Library">
-
-  <title>DynaBean Tag Library</title>
-  
-  <body>
-    <menu name="DynaBean Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/email/.cvsignore b/jelly-tags/email/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/email/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/email/build.xml b/jelly-tags/email/build.xml
deleted file mode 100644
index 784221a..0000000
--- a/jelly-tags/email/build.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-email" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-email-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-email 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.email.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/activation-1.0.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaf/jars/activation-1.0.2.jar">
-    </get>
-    <get dest="${libdir}/mail-1.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/javamail/jars/mail-1.2.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/email/maven.xml b/jelly-tags/email/maven.xml
deleted file mode 100644
index 9160a93..0000000
--- a/jelly-tags/email/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="jar:jar">
-
-</project>
diff --git a/jelly-tags/email/project.properties b/jelly-tags/email/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/email/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/email/project.xml b/jelly-tags/email/project.xml
deleted file mode 100644
index 62f1b64..0000000
--- a/jelly-tags/email/project.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-email</id>
-  <name>commons-jelly-tags-email</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.email</package>
-
-  <description>
-      This is a Jelly interface for Email
-  </description>
-  <shortDescription>Commons Jelly e-mail Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_EMAIL-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-
-    <!-- START for run time -->
-    <dependency>
-      <groupId>jaf</groupId>
-      <version>1.0.2</version>
-      <artifactId>activation</artifactId>
-      <url>http://java.sun.com/beans/glasgow/jaf.html</url>
-      <properties>
-        <gump.project>jaf</gump.project>
-      </properties>
-    </dependency>
-    
-    <dependency>
-      <groupId>javamail</groupId>
-      <artifactId>mail</artifactId>
-      <version>1.2</version>
-      <url>http://java.sun.com/products/javamail/javamail-1_2.html</url>
-      <properties>
-        <gump.project>javamail</gump.project>
-        <gump.id>javamail</gump.id>
-      </properties>
-    </dependency>
-    <!-- END for run time -->
-
-    
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/email/src/java/org/apache/commons/jelly/tags/email/EmailTag.java b/jelly-tags/email/src/java/org/apache/commons/jelly/tags/email/EmailTag.java
deleted file mode 100644
index 41fc7be..0000000
--- a/jelly-tags/email/src/java/org/apache/commons/jelly/tags/email/EmailTag.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.email;
-
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.logging.Log;
-
-import javax.mail.Session;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Multipart;
-import javax.mail.Transport;
-import javax.mail.internet.AddressException;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMultipart;
-import javax.activation.FileDataSource;
-import javax.activation.DataHandler;
-
-import java.util.Properties;
-import java.util.StringTokenizer;
-import java.util.Date;
-import java.io.File;
-import java.io.FileNotFoundException;
-
-/**
- * Basic tag for sending an email. Supports one attachment, multiple to addresses delimited by ";",
- * multiple cc addresses, etc.
- *
- * @author  Jason Horman
- * @author  <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version  $Id: EmailTag.java,v 1.6 2004/09/08 04:49:23 dion Exp $
- */
-
-public class EmailTag extends TagSupport {
-    private Log logger = LogFactory.getLog(EmailTag.class);
-
-    /** smtp server */
-    private Expression server       = null;
-
-    /** who to send the message as */
-    private Expression from         = null;
-
-    /** who to send to */
-    private Expression to           = null;
-
-    /** who to cc */
-    private Expression cc           = null;
-
-    /** mail subject */
-    private Expression subject      = null;
-
-    /** mail message */
-    private Expression message      = null;
-
-    /** file attachment */
-    private File attachment     = null;
-
-    /** whether we should encode the XML body as text */
-    private boolean encodeXML = false;
-
-    /**
-     * Set the smtp server for the message. If not set the system
-     * property "mail.smtp.host" will be used.
-     */
-    public void setServer(Expression server) {
-        this.server = server;
-    }
-
-    /**
-     * Set the from address for the message
-     */
-    public void setFrom(Expression from) {
-        this.from = from;
-    }
-
-    /**
-     * ";" seperated list of people to send to
-     */
-    public void setTo(Expression to) {
-        this.to = to;
-    }
-
-    /**
-     * ";" seperated list of people to cc
-     */
-    public void setCC(Expression cc) {
-        this.cc = cc;
-    }
-
-    /**
-     * Set the email subject
-     */
-    public void setSubject(Expression subject) {
-        this.subject = subject;
-    }
-
-    /**
-     * Set the message body. This will override the Jelly tag body
-     */
-    public void setMessage(Expression message) {
-        this.message = message;
-    }
-
-    /**
-     * Set the email attachment for the message. Only 1 attachment is supported right now
-     */
-    public void setAttach(File attachment) throws FileNotFoundException {
-        if (!attachment.exists()) {
-            throw new FileNotFoundException("attachment not found");
-        }
-
-        this.attachment = attachment;
-    }
-
-    /**
-     * Sets whether we should encode the XML body as text or not. The default
-     * is false so that the body will assumed to be valid XML
-     */
-    public void setEncodeXML(boolean encodeXML) {
-        this.encodeXML = encodeXML;
-    }
-
-    /**
-     * Execute the tag
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        Properties props = new Properties();
-        props.putAll(context.getVariables());
-
-        // if a server was set then configure the system property
-        if (server != null) {
-            Object serverInput = this.server.evaluate(context);
-            props.put("mail.smtp.host", serverInput.toString());
-        }
-        else {
-            if (props.get("mail.smtp.host") == null) {
-                throw new JellyTagException("no smtp server configured");
-            }
-        }
-
-        // check if there was no to address
-        if (to == null) {
-            throw new JellyTagException("no to address specified");
-        }
-
-        // check if there was no from
-        if (from == null) {
-            throw new JellyTagException("no from address specified");
-        }
-
-        String messageBody = null;
-        if (this.message != null) {
-            messageBody = this.message.evaluate(context).toString();
-        }
-        else {
-            // get message from body
-            messageBody = getBodyText(encodeXML);
-        }
-
-        Object fromInput = this.from.evaluate(context);
-        Object toInput = this.to.evaluate(context);
-
-        // configure the mail session
-        Session session = Session.getDefaultInstance(props, null);
-
-        // construct the mime message
-        MimeMessage msg = new MimeMessage(session);
-
-        try {
-            // set the from address
-            msg.setFrom(new InternetAddress(fromInput.toString()));
-
-            // parse out the to addresses
-            StringTokenizer st = new StringTokenizer(toInput.toString(), ";");
-            InternetAddress[] addresses = new InternetAddress[st.countTokens()];
-            int addressCount = 0;
-            while (st.hasMoreTokens()) {
-                addresses[addressCount++] = new InternetAddress(st.nextToken().trim());
-            }
-
-            // set the recipients
-            msg.setRecipients(Message.RecipientType.TO, addresses);
-
-            // parse out the cc addresses
-            if (cc != null) {
-                Object ccInput = this.cc.evaluate(context);
-                st = new StringTokenizer(ccInput.toString(), ";");
-                InternetAddress[] ccAddresses = new InternetAddress[st.countTokens()];
-                int ccAddressCount = 0;
-                while (st.hasMoreTokens()) {
-                    ccAddresses[ccAddressCount++] = new InternetAddress(st.nextToken().trim());
-                }
-
-                // set the cc recipients
-                msg.setRecipients(Message.RecipientType.CC, ccAddresses);
-            }
-        }
-        catch (AddressException e) {
-            throw new JellyTagException(e);
-        }
-        catch (MessagingException e) {
-            throw new JellyTagException(e);
-        }
-
-        try {
-            // set the subject
-            if (subject != null) {
-                Object subjectInput = this.subject.evaluate(context);
-                msg.setSubject(subjectInput.toString());
-            }
-
-            // set a timestamp
-            msg.setSentDate(new Date());
-
-            // if there was no attachment just set the text/body of the message
-            if (attachment == null) {
-
-                msg.setText(messageBody);
-
-            }
-            else {
-
-                // attach the multipart mime message
-                // setup the body
-                MimeBodyPart mbp1 = new MimeBodyPart();
-                mbp1.setText(messageBody);
-
-                // setup the attachment
-                MimeBodyPart mbp2 = new MimeBodyPart();
-                FileDataSource fds = new FileDataSource(attachment);
-                mbp2.setDataHandler(new DataHandler(fds));
-                mbp2.setFileName(fds.getName());
-
-                // create the multipart and add its parts
-                Multipart mp = new MimeMultipart();
-                mp.addBodyPart(mbp1);
-                mp.addBodyPart(mbp2);
-
-                msg.setContent(mp);
-
-            }
-
-            logger.info("sending email to " + to + " using " + server);
-
-            // send the email
-            Transport.send(msg);
-        }
-        catch (MessagingException e) {
-            throw new JellyTagException(e);
-        }
-
-    }
-}
diff --git a/jelly-tags/email/src/java/org/apache/commons/jelly/tags/email/EmailTagLibrary.java b/jelly-tags/email/src/java/org/apache/commons/jelly/tags/email/EmailTagLibrary.java
deleted file mode 100644
index 186aa49..0000000
--- a/jelly-tags/email/src/java/org/apache/commons/jelly/tags/email/EmailTagLibrary.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.email;
-
-import org.apache.commons.jelly.TagLibrary;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class EmailTagLibrary extends TagLibrary {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(EmailTagLibrary.class);
-
-    public EmailTagLibrary() {
-        registerTag("email", EmailTag.class);
-    }
-}
diff --git a/jelly-tags/email/src/java/org/apache/commons/jelly/tags/email/package.html b/jelly-tags/email/src/java/org/apache/commons/jelly/tags/email/package.html
deleted file mode 100644
index 71f411d..0000000
--- a/jelly-tags/email/src/java/org/apache/commons/jelly/tags/email/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-  <p>
-  	Tags for sending email using the JavaMail API
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/email/src/test/org/apache/commons/jelly/tags/email/sample.jelly b/jelly-tags/email/src/test/org/apache/commons/jelly/tags/email/sample.jelly
deleted file mode 100644
index 2a6eaad..0000000
--- a/jelly-tags/email/src/test/org/apache/commons/jelly/tags/email/sample.jelly
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core" xmlns:email="jelly:email">
-
-    <!-- some sample scripts would be a good idea -->
-
-</jelly>
\ No newline at end of file
diff --git a/jelly-tags/email/xdocs/changes.xml b/jelly-tags/email/xdocs/changes.xml
deleted file mode 100644
index da14641..0000000
--- a/jelly-tags/email/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-11">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/email/xdocs/index.xml b/jelly-tags/email/xdocs/index.xml
deleted file mode 100644
index eaeed66..0000000
--- a/jelly-tags/email/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Email Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        Tags for sending email using the JavaMail API.
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/email/xdocs/navigation.xml b/jelly-tags/email/xdocs/navigation.xml
deleted file mode 100644
index 03c29e1..0000000
--- a/jelly-tags/email/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Email Tag Library">
-
-  <title>Email Tag Library</title>
-  
-  <body>
-    <menu name="Email Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/fmt/.cvsignore b/jelly-tags/fmt/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/fmt/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/fmt/build.xml b/jelly-tags/fmt/build.xml
deleted file mode 100644
index c6e3d08..0000000
--- a/jelly-tags/fmt/build.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-fmt" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-fmt-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-fmt 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.fmt.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-ant-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-ant-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.1.jar">
-    </get>
-    <get dest="${libdir}/commons-grant-1.0-beta-4.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-grant/jars/commons-grant-1.0-beta-4.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-beanshell-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-beanshell-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/bsh-1.2-b3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/bsh/jars/bsh-1.2-b3.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/fmt/maven.xml b/jelly-tags/fmt/maven.xml
deleted file mode 100644
index 563dc80..0000000
--- a/jelly-tags/fmt/maven.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="jar:jar">
-</project>
diff --git a/jelly-tags/fmt/project.properties b/jelly-tags/fmt/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/fmt/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/fmt/project.xml b/jelly-tags/fmt/project.xml
deleted file mode 100644
index faf2649..0000000
--- a/jelly-tags/fmt/project.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-fmt</id>
-  <groupId>commons-jelly</groupId>
-  <name>commons-jelly-tags-fmt</name>
-  <currentVersion>1.0</currentVersion>
-
-  <package>org.apache.commons.jelly.tags.fmt</package>
-
-  <description>
-      The Jelly JSP Standard Tag Library (JSTL) for I18N and Formatting
-  </description>
-  <shortDescription>Commons Jelly FMT Tag Library</shortDescription>
-
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_FMT-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-    <!-- below for testing, pulled in by ant taglib -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-ant</artifactId>
-      <version>1.0</version>
-    </dependency>
-    
-    <dependency>
-      <id>ant</id>
-      <version>1.5.1</version>
-    </dependency>
-    
-    <dependency>
-      <id>commons-grant</id>
-      <version>1.0-beta-4</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-beanshell</artifactId>
-      <version>1.0</version>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-
-    <dependency>
-      <id>bsh</id>
-      <version>1.2-b3</version>
-    </dependency>
-    
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/BundleTag.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/BundleTag.java
deleted file mode 100644
index 445be83..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/BundleTag.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.expression.Expression;
-import java.util.Enumeration;
-import java.util.Locale;
-import java.util.ResourceBundle;
-import java.util.MissingResourceException;
-
-/**
- * Support for tag handlers for &lt;bundle&gt;, the resource bundle loading
- * tag in JSTL.
- *
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version 1.1
- *
- * @todo decide how to implement setResponseLocale
- */
-public class BundleTag extends TagSupport {
-
-
-    //*********************************************************************
-    // Private constants
-
-    private static final Locale EMPTY_LOCALE = new Locale("", "");
-
-
-    //*********************************************************************
-    // Protected state
-
-    private Expression basename;                  // 'basename' attribute
-    private Expression prefix;                    // 'prefix' attribute
-    /** evaluated basename */
-    private String ebasename;
-    /** evaluated prefix */
-    private String eprefix;
-
-
-    //*********************************************************************
-    // Private state
-
-    private LocalizationContext locCtxt;
-
-
-    //*********************************************************************
-    // Constructor and initialization
-
-    public BundleTag() {
-    }
-
-    //*********************************************************************
-    // Collaboration with subtags
-
-    public LocalizationContext getLocalizationContext() {
-        return locCtxt;
-    }
-
-    public String getPrefixAsString() {
-        return eprefix;
-    }
-
-
-    //*********************************************************************
-    // Tag logic
-
-    /**
-     * Evaluates this tag after all the tags properties have been initialized.
-     *
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Object basenameInput = null;
-        if (this.basename != null) {
-            basenameInput = this.basename.evaluate(context);
-        }
-        if (basenameInput != null) {
-            ebasename = basenameInput.toString();
-        }
-
-        Object prefixInput = null;
-        if (this.prefix != null) {
-            prefixInput = this.prefix.evaluate(context);
-        }
-        if (prefixInput != null) {
-            eprefix = prefixInput.toString();
-        }
-
-        this.locCtxt = this.getLocalizationContext(context, ebasename);
-        invokeBody(output);
-    }
-
-
-    //*********************************************************************
-    // Public utility methods
-
-    /**
-     * Gets the default I18N localization context.
-     *
-     * @param jc Page in which to look up the default I18N localization context
-     */
-    public static LocalizationContext getLocalizationContext(JellyContext jc) {
-        LocalizationContext locCtxt = null;
-
-        Object obj = jc.getVariable(Config.FMT_LOCALIZATION_CONTEXT);
-        if (obj == null) {
-            return null;
-        }
-
-        if (obj instanceof LocalizationContext) {
-            locCtxt = (LocalizationContext) obj;
-        } else {
-            // localization context is a bundle basename
-            locCtxt = getLocalizationContext(jc, (String) obj);
-        }
-
-        return locCtxt;
-    }
-
-    /**
-     * Gets the resource bundle with the given base name, whose locale is
-     * determined as follows:
-     *
-     * Check if a match exists between the ordered set of preferred
-     * locales and the available locales, for the given base name.
-     * The set of preferred locales consists of a single locale
-     * (if the <tt>org.apache.commons.jelly.tags.fmt.locale</tt> configuration
-     * setting is present).
-     *
-     * <p> If no match was found in the previous step, check if a match
-     * exists between the fallback locale (given by the
-     * <tt>org.apache.commons.jelly.tags.fmt.fallbackLocale</tt> configuration
-     * setting) and the available locales, for the given base name.
-     *
-     * @param pageContext Page in which the resource bundle with the
-     * given base name is requested
-     * @param basename Resource bundle base name
-     *
-     * @return Localization context containing the resource bundle with the
-     * given base name and the locale that led to the resource bundle match,
-     * or the empty localization context if no resource bundle match was found
-     */
-    public static LocalizationContext getLocalizationContext(JellyContext jc,
-    String basename) {
-        LocalizationContext locCtxt = null;
-        ResourceBundle bundle = null;
-
-        if ((basename == null) || basename.equals("")) {
-            return new LocalizationContext();
-        }
-
-
-        // Try preferred locales
-        Locale pref = null; {
-            Object tmp = jc.getVariable(Config.FMT_LOCALE);
-            if (tmp != null && tmp instanceof Locale) {
-                pref = (Locale) tmp;
-            }
-        }
-        if (pref != null) {
-            // Preferred locale is application-based
-            bundle = findMatch(basename, pref, jc.getClassLoader());
-            if (bundle != null) {
-                locCtxt = new LocalizationContext(bundle, pref);
-            }
-        }
-
-        if (locCtxt == null) {
-            // No match found with preferred locales, try using fallback locale
-            {
-                Object tmp = jc.getVariable(Config.FMT_FALLBACK_LOCALE);
-                if (tmp != null && tmp instanceof Locale) {
-                    pref = (Locale) tmp;
-                }
-            }
-            if (pref != null) {
-                bundle = findMatch(basename, pref, jc.getClassLoader());
-                if (bundle != null) {
-                    locCtxt = new LocalizationContext(bundle, pref);
-                }
-            }
-        }
-
-        if (locCtxt == null) {
-            // try using the root resource bundle with the given basename
-            try {
-                bundle = ResourceBundle.getBundle(basename, EMPTY_LOCALE,
-                jc.getClassLoader());
-                if (bundle != null) {
-                    locCtxt = new LocalizationContext(bundle, null);
-                }
-            } catch (MissingResourceException mre) {
-                // do nothing
-            }
-        }
-
-        if (locCtxt != null) {
-            // set response locale
-            if (locCtxt.getLocale() != null) {
-                // TODO
-                // SetLocaleSupport.setResponseLocale(jc, locCtxt.getLocale());
-            }
-        } else {
-            // create empty localization context
-            locCtxt = new LocalizationContext();
-        }
-
-        return locCtxt;
-    }
-
-
-
-    /*
-     * Gets the resource bundle with the given base name and preferred locale.
-     *
-     * This method calls java.util.ResourceBundle.getBundle(), but ignores
-     * its return value unless its locale represents an exact or language match
-     * with the given preferred locale.
-     *
-     * @param basename the resource bundle base name
-     * @param pref the preferred locale
-     * @param cl   classloader used to find resource bundle
-     *
-     * @return the requested resource bundle, or <tt>null</tt> if no resource
-     * bundle with the given base name exists or if there is no exact- or
-     * language-match between the preferred locale and the locale of
-     * the bundle returned by java.util.ResourceBundle.getBundle().
-     */
-    private static ResourceBundle findMatch(String basename, Locale pref, ClassLoader cl) {
-        ResourceBundle match = null;
-
-        try {
-            ResourceBundle bundle =
-            ResourceBundle.getBundle(basename, pref, cl);
-            Locale avail = bundle.getLocale();
-            if (pref.equals(avail)) {
-                // Exact match
-                match = bundle;
-            } else {
-                if (pref.getLanguage().equals(avail.getLanguage())
-                && ("".equals(avail.getCountry()))) {
-
-                    // Language match.
-                    // By making sure the available locale does not have a
-                    // country and matches the preferred locale's language, we
-                    // rule out "matches" based on the container's default
-                    // locale. For example, if the preferred locale is
-                    // "en-US", the container's default locale is "en-UK", and
-                    // there is a resource bundle (with the requested base
-                    // name) available for "en-UK", ResourceBundle.getBundle()
-                    // will return it, but even though its language matches
-                    // that of the preferred locale, we must ignore it,
-                    // because matches based on the container's default locale
-                    // are not portable across different containers with
-                    // different default locales.
-
-                    match = bundle;
-                }
-            }
-        } catch (MissingResourceException mre) {
-        }
-
-        return match;
-    }
-
-    /** Setter for property basename.
-     * @param basename New value of property basename.
-     *
-     */
-    public void setBasename(Expression basename) {
-        this.basename = basename;
-    }
-
-    /** Setter for property prefix.
-     * @param prefix New value of property prefix.
-     *
-     */
-    public void setPrefix(Expression prefix) {
-        this.prefix = prefix;
-    }
-
-}
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/Config.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/Config.java
deleted file mode 100644
index a55d832..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/Config.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * Copyright 1999,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.fmt;
-
-import org.apache.commons.jelly.JellyContext;
-
-
-/**
- * Class supporting access to configuration data.
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version 1.1
- */
-public class Config {
-
-    /*
-     * I18N/Formatting actions related configuration data
-     */
-
-    /**
-     * Name of configuration setting for application- (as opposed to browser-)
-     * based preferred locale
-     */
-    public static final String FMT_LOCALE
-    = "org.apache.commons.jelly.tags.fmt.locale";
-
-    /**
-     * Name of configuration setting for fallback locale
-     */
-    public static final String FMT_FALLBACK_LOCALE
-    = "org.apache.commons.jelly.tags.fmt.fallbackLocale";
-
-    /**
-     * Name of configuration setting for i18n localization context
-     */
-    public static final String FMT_LOCALIZATION_CONTEXT
-    = "org.apache.commons.jelly.tags.fmt.localizationContext";
-
-    /**
-     * Name of localization setting for time zone
-     */
-    public static final String FMT_TIME_ZONE
-    = "org.apache.commons.jelly.tags.fmt.timeZone";
-
-
-    /**
-     * Looks up a configuration variable in the given scope.
-     *
-     * <p> The lookup of configuration variables is performed as if each scope
-     * had its own name space, that is, the same configuration variable name
-     * in one scope does not replace one stored in a different scope.
-     *
-     * @param jc Page context in which the configuration variable is to be
-     * looked up
-     * @param name Configuration variable name
-     * @param scope Scope in which the configuration variable is to be looked
-     * up
-     *
-     * @return The <tt>java.lang.Object</tt> associated with the configuration
-     * variable, or null if it is not defined.
-     */
-//    public static Object get(JellyContext jc, String name, int scope) {
-//        switch (scope) {
-//            case JellyContext.PAGE_SCOPE:
-//                return jc.getAttribute(name + PAGE_SCOPE_SUFFIX, scope);
-//            case JellyContext.REQUEST_SCOPE:
-//                return jc.getAttribute(name + REQUEST_SCOPE_SUFFIX, scope);
-//            case JellyContext.SESSION_SCOPE:
-//                return jc.getAttribute(name + SESSION_SCOPE_SUFFIX, scope);
-//            case JellyContext.APPLICATION_SCOPE:
-//                return jc.getAttribute(name + APPLICATION_SCOPE_SUFFIX, scope);
-//            default:
-//                throw new IllegalArgumentException("unknown scope");
-//        }
-//    }
-
-    /**
-     * Looks up a configuration variable in the "request" scope.
-     *
-     * <p> The lookup of configuration variables is performed as if each scope
-     * had its own name space, that is, the same configuration variable name
-     * in one scope does not replace one stored in a different scope.
-     *
-     * @param request Request object in which the configuration variable is to
-     * be looked up
-     * @param name Configuration variable name
-     *
-     * @return The <tt>java.lang.Object</tt> associated with the configuration
-     * variable, or null if it is not defined.
-     */
-//    public static Object get(ServletRequest request, String name) {
-//        return request.getAttribute(name + REQUEST_SCOPE_SUFFIX);
-//    }
-
-    /**
-     * Looks up a configuration variable in the "session" scope.
-     *
-     * <p> The lookup of configuration variables is performed as if each scope
-     * had its own name space, that is, the same configuration variable name
-     * in one scope does not replace one stored in a different scope.
-     *
-     * @param session Session object in which the configuration variable is to
-     * be looked up
-     * @param name Configuration variable name
-     *
-     * @return The <tt>java.lang.Object</tt> associated with the configuration
-     * variable, or null if it is not defined.
-     */
-//    public static Object get(HttpSession session, String name) {
-//        return session.getAttribute(name + SESSION_SCOPE_SUFFIX);
-//    }
-
-    /**
-     * Looks up a configuration variable in the "application" scope.
-     *
-     * <p> The lookup of configuration variables is performed as if each scope
-     * had its own name space, that is, the same configuration variable name
-     * in one scope does not replace one stored in a different scope.
-     *
-     * @param context Servlet context in which the configuration variable is
-     * to be looked up
-     * @param name Configuration variable name
-     *
-     * @return The <tt>java.lang.Object</tt> associated with the configuration
-     * variable, or null if it is not defined.
-     */
-//    public static Object get(ServletContext context, String name) {
-//        return context.getAttribute(name + APPLICATION_SCOPE_SUFFIX);
-//    }
-
-    /**
-     * Sets the value of a configuration variable in the given scope.
-     *
-     * <p> Setting the value of a configuration variable is performed as if
-     * each scope had its own namespace, that is, the same configuration
-     * variable name in one scope does not replace one stored in a different
-     * scope.
-     *
-     * @param jc Page context in which the configuration variable is to be set
-     * @param name Configuration variable name
-     * @param value Configuration variable value
-     * @param scope Scope in which the configuration variable is to be set
-     */
-//    public static void set(JellyContext jc, String name, Object value,
-//    int scope) {
-//        switch (scope) {
-//            case JellyContext.PAGE_SCOPE:
-//                jc.setAttribute(name + PAGE_SCOPE_SUFFIX, value, scope);
-//                break;
-//            case JellyContext.REQUEST_SCOPE:
-//                jc.setAttribute(name + REQUEST_SCOPE_SUFFIX, value, scope);
-//                break;
-//            case JellyContext.SESSION_SCOPE:
-//                jc.setAttribute(name + SESSION_SCOPE_SUFFIX, value, scope);
-//                break;
-//            case JellyContext.APPLICATION_SCOPE:
-//                jc.setAttribute(name + APPLICATION_SCOPE_SUFFIX, value, scope);
-//                break;
-//            default:
-//                throw new IllegalArgumentException("unknown scope");
-//        }
-//    }
-
-    /**
-     * Sets the value of a configuration variable in the "request" scope.
-     *
-     * <p> Setting the value of a configuration variable is performed as if
-     * each scope had its own namespace, that is, the same configuration
-     * variable name in one scope does not replace one stored in a different
-     * scope.
-     *
-     * @param request Request object in which the configuration variable is to
-     * be set
-     * @param name Configuration variable name
-     * @param value Configuration variable value
-     */
-//    public static void set(ServletRequest request, String name, Object value) {
-//        request.setAttribute(name + REQUEST_SCOPE_SUFFIX, value);
-//    }
-
-    /**
-     * Sets the value of a configuration variable in the "session" scope.
-     *
-     * <p> Setting the value of a configuration variable is performed as if
-     * each scope had its own namespace, that is, the same configuration
-     * variable name in one scope does not replace one stored in a different
-     * scope.
-     *
-     * @param session Session object in which the configuration variable is to
-     * be set
-     * @param name Configuration variable name
-     * @param value Configuration variable value
-     */
-//    public static void set(HttpSession session, String name, Object value) {
-//        session.setAttribute(name + SESSION_SCOPE_SUFFIX, value);
-//    }
-
-    /**
-     * Sets the value of a configuration variable in the "application" scope.
-     *
-     * <p> Setting the value of a configuration variable is performed as if
-     * each scope had its own namespace, that is, the same configuration
-     * variable name in one scope does not replace one stored in a different
-     * scope.
-     *
-     * @param context Servlet context in which the configuration variable is to
-     * be set
-     * @param name Configuration variable name
-     * @param value Configuration variable value
-     */
-//    public static void set(ServletContext context, String name, Object value) {
-//        context.setAttribute(name + APPLICATION_SCOPE_SUFFIX, value);
-//    }
-
-    /**
-     * Removes a configuration variable from the given scope.
-     *
-     * <p> Removing a configuration variable is performed as if each scope had
-     * its own namespace, that is, the same configuration variable name in one
-     * scope does not impact one stored in a different scope.
-     *
-     * @param jc Page context from which the configuration variable is to be
-     * removed
-     * @param name Configuration variable name
-     * @param scope Scope from which the configuration variable is to be
-     * removed
-     */
-//    public static void remove(JellyContext jc, String name, int scope) {
-//        switch (scope) {
-//            case JellyContext.PAGE_SCOPE:
-//                jc.removeAttribute(name + PAGE_SCOPE_SUFFIX, scope);
-//                break;
-//            case JellyContext.REQUEST_SCOPE:
-//                jc.removeAttribute(name + REQUEST_SCOPE_SUFFIX, scope);
-//                break;
-//            case JellyContext.SESSION_SCOPE:
-//                jc.removeAttribute(name + SESSION_SCOPE_SUFFIX, scope);
-//                break;
-//            case JellyContext.APPLICATION_SCOPE:
-//                jc.removeAttribute(name + APPLICATION_SCOPE_SUFFIX, scope);
-//                break;
-//            default:
-//                throw new IllegalArgumentException("unknown scope");
-//        }
-//    }
-
-    /**
-     * Removes a configuration variable from the "request" scope.
-     *
-     * <p> Removing a configuration variable is performed as if each scope had
-     * its own namespace, that is, the same configuration variable name in one
-     * scope does not impact one stored in a different scope.
-     *
-     * @param request Request object from which the configuration variable is
-     * to be removed
-     * @param name Configuration variable name
-     */
-//    public static void remove(ServletRequest request, String name) {
-//        request.removeAttribute(name + REQUEST_SCOPE_SUFFIX);
-//    }
-
-    /**
-     * Removes a configuration variable from the "session" scope.
-     *
-     * <p> Removing a configuration variable is performed as if each scope had
-     * its own namespace, that is, the same configuration variable name in one
-     * scope does not impact one stored in a different scope.
-     *
-     * @param session Session object from which the configuration variable is
-     * to be removed
-     * @param name Configuration variable name
-     */
-//    public static void remove(HttpSession session, String name) {
-//        session.removeAttribute(name + SESSION_SCOPE_SUFFIX);
-//    }
-
-    /**
-     * Removes a configuration variable from the "application" scope.
-     *
-     * <p> Removing a configuration variable is performed as if each scope had
-     * its own namespace, that is, the same configuration variable name in one
-     * scope does not impact one stored in a different scope.
-     *
-     * @param context Servlet context from which the configuration variable is
-     * to be removed
-     * @param name Configuration variable name
-     */
-//    public static void remove(ServletContext context, String name) {
-//        context.removeAttribute(name + APPLICATION_SCOPE_SUFFIX);
-//    }
-
-    /**
-     * Finds the value associated with a specific configuration setting
-     * identified by its context initialization parameter name.
-     *
-     * <p> For each of the JSP scopes (page, request, session, application),
-     * get the value of the configuration variable identified by <tt>name</tt>
-     * using method <tt>get()</tt>. Return as soon as a non-null value is
-     * found. If no value is found, get the value of the context initialization
-     * parameter identified by <tt>name</tt>.
-     *
-     * @param jc Page context in which the configuration setting is to be
-     * searched
-     * @param name Context initialization parameter name of the configuration
-     * setting
-     *
-     * @return The <tt>java.lang.Object</tt> associated with the configuration
-     * setting identified by <tt>name</tt>, or null if it is not defined.
-     */
-//    public static Object find(JellyContext jc, String name) {
-//        Object ret = jc.getVariable(name, JellyContext.PAGE_SCOPE);
-//        if (ret == null) {
-//            ret = get(jc, name, JellyContext.REQUEST_SCOPE);
-//            if (ret == null) {
-//                if (jc.getSession() != null) {
-//                    // check session only if a session is present
-//                    ret = get(jc, name, JellyContext.SESSION_SCOPE);
-//                }
-//                if (ret == null) {
-//                    ret = get(jc, name, JellyContext.APPLICATION_SCOPE);
-//                    if (ret == null) {
-//                        ret = jc.getServletContext().getInitParameter(name);
-//                    }
-//                }
-//            }
-//        }
-//
-//        return ret;
-//    }
-}
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/FmtTagLibrary.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/FmtTagLibrary.java
deleted file mode 100644
index 380f606..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/FmtTagLibrary.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/** Describes the tag library for tags in JSTL.
- *
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version 1.2
- *
- * @task implement &lt;fmt:formatNumber&gt;
- * @task implement &lt;fmt:parseNumber&gt;
- * @task implement &lt;fmt:parseDate&gt;
- * @task decide how to support &lt;fmt:requestEncoding&gt;
- */
-public class FmtTagLibrary extends TagLibrary {
-
-    /** Creates a new instance of FmtTagLibrary */
-    public FmtTagLibrary() {
-        registerTag("bundle", BundleTag.class);
-        registerTag("formatDate", FormatDateTag.class);
-        registerTag("message", MessageTag.class);
-        registerTag("param", ParamTag.class);
-        registerTag("setBundle", SetBundleTag.class);
-        registerTag("setLocale", SetLocaleTag.class);
-        registerTag("setTimeZone", SetTimeZoneTag.class);
-        registerTag("timeZone", TimeZoneTag.class);
-    }
-
-}
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/FormatDateTag.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/FormatDateTag.java
deleted file mode 100644
index b11de6f..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/FormatDateTag.java
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.expression.Expression;
-
-import org.xml.sax.SAXException;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-import java.util.TimeZone;
-
-
-/**
- * Support for tag handlers for &lt;formatDate&gt;, the date and time formatting
- * tag in JSTL.
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version $Revision: 1.5 $
- * @task i18n exception message
- */
-public class FormatDateTag extends TagSupport {
-
-    private static final String DEFAULT = "default";
-    private static final String SHORT = "short";
-    private static final String MEDIUM = "medium";
-    private static final String LONG = "long";
-    private static final String FULL = "full";
-
-    private static final String DATE = "date";
-    private static final String TIME = "time";
-    private static final String DATETIME = "both";
-
-    /** Holds value of property value. */
-    private Expression value;
-
-    /** Holds value of property type. */
-    private Expression type;
-
-    /** Holds value of property dataStyle. */
-    private Expression dateStyle;
-
-    /** Holds value of property timeStyle. */
-    private Expression timeStyle;
-
-    /** Holds value of property pattern. */
-    private Expression pattern;
-
-    /** Holds value of property timeZone. */
-    private Expression timeZone;
-
-    /** Holds value of property var. */
-    private String var;
-
-    /** Holds value of property scope. */
-    private String scope;
-
-    /** Evaluated type */
-    private String etype;
-    /** Evaluated dateStyle */
-    private String edateStyle;
-    /** Evaluated timeStyle */
-    private String etimeStyle;
-
-    /** Creates a new instance of FormatDateTag */
-    public FormatDateTag() {
-    }
-
-    /**
-     * Evaluates this tag after all the tags properties have been initialized.
-     *
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        if (scope != null && var == null) {
-            throw new JellyTagException(
-            "If 'scope' is specified, 'var' must be defined for this tag" );
-        }
-
-        Object valueInput = null;
-        if (this.value != null) {
-            valueInput = this.value.evaluate(context);
-        }
-
-        Date date = null;
-        if (valueInput != null && valueInput instanceof Date) {
-            date = (Date) valueInput;
-        }
-
-        if (date == null && var != null) {
-            if (scope != null) {
-                context.removeVariable(var, scope);
-            }
-            else {
-                context.removeVariable(var);
-            }
-        }
-
-        etype = DATE;
-        if (this.type != null) {
-            etype = (String) this.type.evaluate(context);
-        }
-
-        edateStyle = DEFAULT;
-        if (this.dateStyle != null) {
-            edateStyle = (String) this.dateStyle.evaluate(context);
-        }
-
-        etimeStyle = DEFAULT;
-        if (this.timeStyle != null) {
-            etimeStyle = (String) this.timeStyle.evaluate(context);
-        }
-
-        String epattern = null;
-        if (this.pattern != null) {
-            epattern = (String) this.pattern.evaluate(context);
-        }
-
-        Object etimeZone = null;
-        if (this.timeZone != null) {
-            etimeZone = this.timeZone.evaluate(context);
-        }
-
-        // Create formatter
-        Locale locale = SetLocaleTag.getFormattingLocale(
-            context,
-            this,
-            true,
-            DateFormat.getAvailableLocales());
-
-        String formatted = null;
-        if (locale != null) {
-            DateFormat formatter = createFormatter(locale);
-
-            // Apply pattern, if present
-            if (pattern != null) {
-                try {
-                    ((SimpleDateFormat) formatter).applyPattern(epattern);
-                } catch (ClassCastException cce) {
-                    formatter = new SimpleDateFormat(epattern, locale);
-                }
-            }
-
-            // Set time zone
-            TimeZone tz = null;
-            if ((etimeZone instanceof String)
-            && ((String) etimeZone).equals("")) {
-                etimeZone = null;
-            }
-            if (etimeZone != null) {
-                if (etimeZone instanceof String) {
-                    tz = TimeZone.getTimeZone((String) etimeZone);
-                } else if (etimeZone instanceof TimeZone) {
-                    tz = (TimeZone) etimeZone;
-                } else {
-                    throw new JellyTagException("Bad time zone");
-                }
-            } else {
-                tz = TimeZoneTag.getTimeZone(context, this);
-            }
-            if (tz != null) {
-                formatter.setTimeZone(tz);
-            }
-            formatted = formatter.format(date);
-        } else {
-            // no formatting locale available, use Date.toString()
-            formatted = date.toString();
-        }
-
-        if (var != null) {
-            if (scope != null) {
-                context.setVariable(var, scope, formatted);
-            }
-            else {
-                context.setVariable(var, formatted);
-            }
-        }
-        else {
-            try {
-                // write the formatted
-                output.write(formatted);
-            } catch (SAXException e) {
-                throw new JellyTagException("could not write formatted text",e);
-            }
-        }
-    }
-
-    /** Setter for property value.
-     * @param value New value of property value.
-     *
-     */
-    public void setValue(Expression value) {
-        this.value = value;
-    }
-
-    /** Setter for property type.
-     * @param type New value of property type.
-     *
-     */
-    public void setType(Expression type) {
-        this.type = type;
-    }
-
-    /** Setter for property dataStyle.
-     * @param dataStyle New value of property dataStyle.
-     *
-     */
-    public void setDateStyle(Expression dateStyle) {
-        this.dateStyle = dateStyle;
-    }
-
-    /** Setter for property timeStyle.
-     * @param timeStyle New value of property timeStyle.
-     *
-     */
-    public void setTimeStyle(Expression timeStyle) {
-        this.timeStyle = timeStyle;
-    }
-
-    /** Setter for property pattern.
-     * @param pattern New value of property pattern.
-     *
-     */
-    public void setPattern(Expression pattern) {
-        this.pattern = pattern;
-    }
-
-    /** Setter for property timeZone.
-     * @param timeZone New value of property timeZone.
-     *
-     */
-    public void setTimeZone(Expression timeZone) {
-        this.timeZone = timeZone;
-    }
-
-    /** Setter for property var.
-     * @param var New value of property var.
-     *
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /** Setter for property scope.
-     * @param scope New value of property scope.
-     *
-     */
-    public void setScope(String scope) {
-        this.scope = scope;
-    }
-
-    //*********************************************************************
-    // Private utility methods
-
-    private DateFormat createFormatter(Locale loc) throws JellyTagException {
-        DateFormat formatter = null;
-
-        if ((etype == null) || DATE.equalsIgnoreCase(etype)) {
-            formatter = DateFormat.getDateInstance(
-            getStyle(edateStyle, "FORMAT_DATE_INVALID_DATE_STYLE"),
-            loc);
-        } else if (TIME.equalsIgnoreCase(etype)) {
-            formatter = DateFormat.getTimeInstance(
-            getStyle(etimeStyle, "FORMAT_DATE_INVALID_TIME_STYLE"),
-            loc);
-        } else if (DATETIME.equalsIgnoreCase(etype)) {
-            formatter = DateFormat.getDateTimeInstance(
-            getStyle(edateStyle, "FORMAT_DATE_INVALID_DATE_STYLE"),
-            getStyle(etimeStyle, "FORMAT_DATE_INVALID_TIME_STYLE"),
-            loc);
-        } else {
-            throw new JellyTagException("Date format invalue");
-        }
-
-        return formatter;
-    }
-
-    /*
-     * Converts the given string description of a formatting style for
-     * dates and times to the corresponding java.util.DateFormat constant.
-     *
-     * @param style String description of formatting style for dates and times
-     * @param errCode Error code to throw if given style is invalid
-     *
-     * @return java.util.DateFormat constant corresponding to given style
-     *
-     * @throws JellyException if the given style is invalid
-     */
-    public static int getStyle(String style, String errCode)
-    throws JellyTagException {
-        int ret = DateFormat.DEFAULT;
-
-        if (style != null) {
-            if (DEFAULT.equalsIgnoreCase(style)) {
-                ret = DateFormat.DEFAULT;
-            } else if (SHORT.equalsIgnoreCase(style)) {
-                ret = DateFormat.SHORT;
-            } else if (MEDIUM.equalsIgnoreCase(style)) {
-                ret = DateFormat.MEDIUM;
-            } else if (LONG.equalsIgnoreCase(style)) {
-                ret = DateFormat.LONG;
-            } else if (FULL.equalsIgnoreCase(style)) {
-                ret = DateFormat.FULL;
-            } else {
-                throw new JellyTagException("Invalid style " + errCode);
-            }
-        }
-
-        return ret;
-    }
-
-}
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/LocalizationContext.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/LocalizationContext.java
deleted file mode 100644
index 0fa0b93..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/LocalizationContext.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import java.util.ResourceBundle;
-import java.util.Locale;
-
-
-/**
- * Class representing an I18N localization context.
- *
- * <p> An I18N localization context has two components: a resource bundle and
- * the locale that led to the resource bundle match.
- *
- * <p> The resource bundle component is used by &lt;fmt:message&gt; for mapping
- * message keys to localized messages, and the locale component is used by the
- * &lt;fmt:message&gt;, &lt;fmt:formatNumber&gt;, &lt;fmt:parseNumber&gt;, &lt;fmt:formatDate&gt;,
- * and &lt;fmt:parseDate&gt; actions as their formatting locale.
- *
- * @see javax.servlet.jsp.jstl.fmt.LocalizationContext
- *
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version 1.1
- */
-public class LocalizationContext {
-
-    // the localization context's resource bundle
-    final private ResourceBundle bundle;
-
-    // the localization context's locale
-    final private Locale locale;
-
-    /**
-     * Constructs an empty I18N localization context.
-     */
-    public LocalizationContext() {
-        bundle = null;
-        locale = null;
-    }
-
-    /**
-     * Constructs an I18N localization context from the given resource bundle
-     * and locale.
-     *
-     * <p> The specified locale is the application- or browser-based preferred
-     * locale that led to the resource bundle match.
-     *
-     * @param bundle The localization context's resource bundle
-     * @param locale The localization context's locale
-     */
-    public LocalizationContext(ResourceBundle bundle, Locale locale) {
-        this.bundle = bundle;
-        this.locale = locale;
-    }
-
-    /**
-     * Constructs an I18N localization context from the given resource bundle.
-     *
-     * <p> The localization context's locale is taken from the given
-     * resource bundle.
-     *
-     * @param bundle The resource bundle
-     */
-    public LocalizationContext(ResourceBundle bundle) {
-        this.bundle = bundle;
-        this.locale = bundle.getLocale();
-    }
-
-    /**
-     * Gets the resource bundle of this I18N localization context.
-     *
-     * @return The resource bundle of this I18N localization context, or null
-     * if this I18N localization context is empty
-     */
-    public ResourceBundle getResourceBundle() {
-        return bundle;
-    }
-
-    /**
-     * Gets the locale of this I18N localization context.
-     *
-     * @return The locale of this I18N localization context, or null if this
-     * I18N localization context is empty, or its resource bundle is a
-     * (locale-less) root resource bundle.
-     */
-    public Locale getLocale() {
-        return locale;
-    }
-}
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/MessageTag.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/MessageTag.java
deleted file mode 100644
index 48b876f..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/MessageTag.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.expression.Expression;
-
-import org.xml.sax.SAXException;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ResourceBundle;
-import java.util.MissingResourceException;
-
-/**
- * Support for tag handlers for &lt;message&gt;, the lookup up
- * localized message tag in JSTL.
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version 1.1
- *
- * @task decide how to implement setResponseLocale
- */
-public class MessageTag extends TagSupport {
-
-    private static final String UNDEFINED_KEY = "???";
-
-    private Expression key;
-    private Expression bundle;
-
-    private LocalizationContext locCtxt;
-
-    private String var;
-
-    private String scope;
-
-    private List params;
-
-    /** Creates a new instance of MessageTag */
-    public MessageTag() {
-        params = new ArrayList();
-    }
-
-    /**
-     * Adds an argument (for parametric replacement) to this tag's message.
-     */
-    public void addParam(Object arg) {
-        params.add(arg);
-    }
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        Object keyInput = null;
-        if (this.key != null) {
-            keyInput = this.key.evaluate(context);
-            // process <param> sub tags
-            invokeBody(output);
-        }
-        else {
-            // get key from body
-            keyInput = getBodyText();
-        }
-
-
-        if ((keyInput == null) || keyInput.equals("")) {
-            try {
-                output.write("??????");
-            } catch (SAXException e) {
-                throw new JellyTagException(e);
-            }
-            return;
-        }
-
-        Object bundleInput = null;
-        if (this.bundle != null) {
-            bundleInput = this.bundle.evaluate(context);
-        }
-        if (bundleInput != null && bundleInput instanceof LocalizationContext) {
-            locCtxt = (LocalizationContext) bundleInput;
-        }
-
-        String prefix = null;
-        if (locCtxt == null) {
-            Tag t = findAncestorWithClass(this, BundleTag.class);
-            if (t != null) {
-                // use resource bundle from parent <bundle> tag
-                BundleTag parent = (BundleTag) t;
-                locCtxt = parent.getLocalizationContext();
-                prefix = parent.getPrefixAsString();
-            } else {
-                locCtxt = BundleTag.getLocalizationContext(context);
-            }
-        } else {
-            // localization context taken from 'bundle' attribute
-            if (locCtxt.getLocale() != null) {
-                // TODO
-                // SetLocaleSupport.setResponseLocale(pageContext,
-                // locCtxt.getLocale());
-            }
-        }
-
-        String message = UNDEFINED_KEY + keyInput + UNDEFINED_KEY;
-        if (locCtxt != null) {
-            ResourceBundle bundle = locCtxt.getResourceBundle();
-            if (bundle != null) {
-                try {
-                    // prepend 'prefix' attribute from parent bundle
-                    if (prefix != null) {
-                        keyInput = prefix + keyInput;
-                    }
-                    message = bundle.getString(keyInput.toString());
-                    // Perform parametric replacement if required
-                    if (!params.isEmpty()) {
-                        Object[] messageArgs = params.toArray();
-                        MessageFormat formatter = new MessageFormat("");
-                        if (locCtxt.getLocale() != null) {
-                            formatter.setLocale(locCtxt.getLocale());
-                        }
-                        formatter.applyPattern(message);
-                        message = formatter.format(messageArgs);
-                    }
-                } catch (MissingResourceException mre) {
-                    message = UNDEFINED_KEY + keyInput + UNDEFINED_KEY;
-                }
-            }
-        }
-
-
-        if (scope != null) {
-            if (var != null) {
-                context.setVariable(var, scope, message);
-            }
-            else {
-                throw new JellyTagException( "If 'scope' is specified, 'var' must be defined for this tag" );
-            }
-        }
-        else {
-            if (var != null) {
-                context.setVariable(var, message);
-            }
-            else {
-                // write the message
-                try {
-                    output.write(message);
-                } catch (SAXException e) {
-                    throw new JellyTagException(e);
-                }
-            }
-        }
-    }
-
-    /** Setter for property key.
-     * @param key New value of property key.
-     *
-     */
-    public void setKey(Expression key) {
-        this.key = key;
-    }
-
-    /** Setter for property bundle.
-     * @param bundle New value of property bundle.
-     *
-     */
-    public void setBundle(Expression bundle) {
-        this.bundle = bundle;
-    }
-
-    /** Setter for property var.
-     * @param var New value of property var.
-     *
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /** Setter for property scope.
-     * @param scope New value of property scope.
-     *
-     */
-    public void setScope(String scope) {
-        this.scope = scope;
-    }
-
-}
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/ParamTag.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/ParamTag.java
deleted file mode 100644
index 012ba40..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/ParamTag.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.expression.Expression;
-
-/**
- * Support for tag handlers for &lt;param&gt;, the parameter setting
- * tag in JSTL.
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version 1.1
- *
- * @task handle body content trimming
- */
-public class ParamTag extends TagSupport {
-
-    /** Holds value of property value. */
-    private Expression value;
-
-    /** Creates a new instance of ParamTag */
-    public ParamTag() {
-    }
-
-    /**
-     * Evaluates this tag after all the tags properties have been initialized.
-     *
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        MessageTag parent = null;
-        Tag t = findAncestorWithClass(this, MessageTag.class);
-        if (t != null) {
-            parent = (MessageTag) t;
-        } else {
-            // must be nested inside a <fmt:message> action.
-            throw new JellyTagException("must be nested inside a <fmt:message> action.");
-        }
-
-        Object valueInput = null;
-        if (this.value != null) {
-            valueInput = this.value.evaluate(context);
-        }
-        else {
-            // get value from body
-            valueInput = getBodyText();
-        }
-
-        parent.addParam(valueInput);
-    }
-
-    /** Setter for property value.
-     * @param value New value of property value.
-     *
-     */
-    public void setValue(Expression value) {
-        this.value = value;
-    }
-
-}
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/SetBundleTag.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/SetBundleTag.java
deleted file mode 100644
index bb5395c..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/SetBundleTag.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.expression.Expression;
-import java.util.Locale;
-
-/**
- * Support for tag handlers for &lt;setLocale&gt;, the bundle setting
- * tag in JSTL.
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version $Revision: 1.5 $
- *
- */
-public class SetBundleTag extends TagSupport {
-
-    private String var;
-
-    private Expression basename;
-
-    private String scope;
-
-    /** Creates a new instance of SetBundleTag */
-    public SetBundleTag() {
-    }
-
-    /**
-     * Evaluates this tag after all the tags properties have been initialized.
-     *
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Object basenameInput = null;
-        if (this.basename != null) {
-            basenameInput = this.basename.evaluate(context);
-        }
-
-        LocalizationContext locCtxt = BundleTag.getLocalizationContext(
-            context, (String) basenameInput);
-
-        String varname = (var != null) ? var : Config.FMT_LOCALIZATION_CONTEXT;
-
-        if (scope != null) {
-            context.setVariable(varname, scope, locCtxt);
-        }
-        else {
-            context.setVariable(varname, locCtxt);
-        }
-    }
-
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    public void setBasename(Expression basename) {
-        this.basename = basename;
-    }
-
-    public void setScope(String scope) {
-        this.scope = scope;
-    }
-}
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/SetLocaleTag.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/SetLocaleTag.java
deleted file mode 100644
index 7be156a..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/SetLocaleTag.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.expression.Expression;
-import java.util.Locale;
-
-/**
- * Support for tag handlers for &lt;setLocale&gt;, the locale setting
- * tag in JSTL.
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version 1.2
- *
- * @task decide how to implement setResponseLocale
- */
-public class SetLocaleTag extends TagSupport {
-
-    private static final char HYPHEN = '-';
-    private static final char UNDERSCORE = '_';
-
-    private Expression value;
-
-    private Expression variant;
-
-    private String scope;
-
-    /** Creates a new instance of SetLocaleTag */
-    public SetLocaleTag() {
-    }
-
-    /**
-     * Evaluates this tag after all the tags properties have been initialized.
-     *
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Locale locale = null;
-
-        Object valueInput = null;
-        if (this.value != null) {
-            valueInput = this.value.evaluate(context);
-        }
-        Object variantInput = null;
-        if (this.variant != null) {
-            variantInput = this.variant.evaluate(context);
-        }
-
-        if (valueInput == null) {
-            locale = Locale.getDefault();
-        } else if (valueInput instanceof String) {
-            if (((String) valueInput).trim().equals("")) {
-                locale = Locale.getDefault();
-            } else {
-                locale = parseLocale((String) valueInput, (String) variantInput);
-            }
-        } else {
-            locale = (Locale) valueInput;
-        }
-
-        if (scope != null) {
-            context.setVariable(Config.FMT_LOCALE, scope, locale);
-        }
-        else {
-            context.setVariable(Config.FMT_LOCALE, locale);
-        }
-        //setResponseLocale(jc, locale);
-    }
-
-    public void setValue(Expression value) {
-        this.value = value;
-    }
-
-    public void setVariant(Expression variant) {
-        this.variant = variant;
-    }
-
-    public void setScope(String scope) {
-        this.scope = scope;
-    }
-
-    //*********************************************************************
-    // Public utility methods
-
-    /**
-     * See parseLocale(String, String) for details.
-     */
-    public static Locale parseLocale(String locale) {
-        return parseLocale(locale, null);
-    }
-
-    /**
-     * Parses the given locale string into its language and (optionally)
-     * country components, and returns the corresponding
-     * <tt>java.util.Locale</tt> object.
-     *
-     * If the given locale string is null or empty, the runtime's default
-     * locale is returned.
-     *
-     * @param locale the locale string to parse
-     * @param variant the variant
-     *
-     * @return <tt>java.util.Locale</tt> object corresponding to the given
-     * locale string, or the runtime's default locale if the locale string is
-     * null or empty
-     *
-     * @throws IllegalArgumentException if the given locale does not have a
-     * language component or has an empty country component
-     */
-    public static Locale parseLocale(String locale, String variant) {
-
-        Locale ret = null;
-        String language = locale;
-        String country = null;
-        int index = -1;
-
-        if (((index = locale.indexOf(HYPHEN)) > -1)
-        || ((index = locale.indexOf(UNDERSCORE)) > -1)) {
-            language = locale.substring(0, index);
-            country = locale.substring(index+1);
-        }
-
-        if ((language == null) || (language.length() == 0)) {
-            throw new IllegalArgumentException("Missing language");
-        }
-
-        if (country == null) {
-            if (variant != null)
-                ret = new Locale(language, "", variant);
-            else
-                ret = new Locale(language, "");
-        } else if (country.length() > 0) {
-            if (variant != null)
-                ret = new Locale(language, country, variant);
-            else
-                ret = new Locale(language, country);
-        } else {
-            throw new IllegalArgumentException("Missing country");
-        }
-
-        return ret;
-    }
-
-    /**
-     * Returns the locale specified by the named scoped attribute or context
-     * configuration parameter.
-     *
-     * <p> The named scoped attribute is searched in the page, request,
-     * session (if valid), and application scope(s) (in this order). If no such
-     * attribute exists in any of the scopes, the locale is taken from the
-     * named context configuration parameter.
-     *
-     * @param jc the page in which to search for the named scoped
-     * attribute or context configuration parameter
-     * @param name the name of the scoped attribute or context configuration
-     * parameter
-     *
-     * @return the locale specified by the named scoped attribute or context
-     * configuration parameter, or <tt>null</tt> if no scoped attribute or
-     * configuration parameter with the given name exists
-     */
-    static Locale getLocale(JellyContext jc, String name) {
-        Locale loc = null;
-
-        Object obj = jc.getVariable(name);
-        if (obj != null) {
-            if (obj instanceof Locale) {
-                loc = (Locale) obj;
-            } else {
-                loc = parseLocale((String) obj);
-            }
-        }
-
-        return loc;
-    }
-
-    /*
-     * Returns the formatting locale to use with the given formatting action
-     * in the given page.
-     *
-     * @param jc The context containing the formatting action
-     * @param fromTag The formatting action
-     * @param format <tt>true</tt> if the formatting action is of type
-     * <formatXXX> (as opposed to <parseXXX>), and <tt>false</tt> otherwise
-     * (if set to <tt>true</tt>, the formatting locale that is returned by
-     * this method is used to set the response locale).
-     *
-     * @param avail the array of available locales
-     *
-     * @return the formatting locale to use
-     */
-    static Locale getFormattingLocale(JellyContext jc,
-    Tag fromTag,
-    boolean format,
-    Locale[] avail) {
-
-        LocalizationContext locCtxt = null;
-
-        // Get formatting locale from enclosing <fmt:bundle>
-        Tag parent = findAncestorWithClass(fromTag, BundleTag.class);
-        if (parent != null) {
-        /*
-         * use locale from localization context established by parent
-         * <fmt:bundle> action, unless that locale is null
-         */
-            locCtxt = ((BundleTag) parent).getLocalizationContext();
-            if (locCtxt.getLocale() != null) {
-                if (format) {
-                    //setResponseLocale(jc, locCtxt.getLocale());
-                }
-                return locCtxt.getLocale();
-            }
-        }
-
-        // Use locale from default I18N localization context, unless it is null
-        if ((locCtxt = BundleTag.getLocalizationContext(jc)) != null) {
-            if (locCtxt.getLocale() != null) {
-                if (format) {
-                    //setResponseLocale(jc, locCtxt.getLocale());
-                }
-                return locCtxt.getLocale();
-            }
-        }
-
-    /*
-     * Establish formatting locale by comparing the preferred locales
-     * (in order of preference) against the available formatting
-     * locales, and determining the best matching locale.
-     */
-        Locale match = null;
-        Locale pref = getLocale(jc, Config.FMT_LOCALE);
-        if (pref != null) {
-            // Preferred locale is application-based
-            match = findFormattingMatch(pref, avail);
-        }
-        if (match == null) {
-            //Use fallback locale.
-            pref = getLocale(jc, Config.FMT_FALLBACK_LOCALE);
-            if (pref != null) {
-                match = findFormattingMatch(pref, avail);
-            }
-        }
-        if (format && (match != null)) {
-            //setResponseLocale(jc, match);
-        }
-
-        return match;
-    }
-
-    /*
-     * Returns the best match between the given preferred locale and the
-     * given available locales.
-     *
-     * The best match is given as the first available locale that exactly
-     * matches the given preferred locale ("exact match"). If no exact match
-     * exists, the best match is given as the first available locale that
-     * matches the preferred locale's language component and does not have any
-     * country component ("language match").
-     *
-     * @param pref the preferred locale
-     * @param avail the available formatting locales
-     *
-     * @return Available locale that best matches the given preferred locale,
-     * or <tt>null</tt> if no match exists
-     */
-    private static Locale findFormattingMatch(Locale pref, Locale[] avail) {
-        Locale match = null;
-
-        for (int i=0; i<avail.length; i++) {
-            if (pref.equals(avail[i])) {
-                // Exact match
-                match = avail[i];
-                break;
-            } else {
-                if (pref.getLanguage().equals(avail[i].getLanguage())
-                && ("".equals(avail[i].getCountry()))) {
-                    // Language match
-                    if (match == null) {
-                        match = avail[i];
-                    }
-                }
-            }
-        }
-
-        return match;
-    }
-}
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/SetTimeZoneTag.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/SetTimeZoneTag.java
deleted file mode 100644
index a847363..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/SetTimeZoneTag.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.expression.Expression;
-import java.util.TimeZone;
-
-/**
- * Support for tag handlers for &lt;setTimeZone&gt;, the time zone setting
- * tag in JSTL.
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version $Revision: 1.5 $
- *
- */
-public class SetTimeZoneTag extends TagSupport {
-
-    private Expression value;
-
-    private String var;
-
-    private String scope;
-
-    /** Creates a new instance of SetLocaleTag */
-    public SetTimeZoneTag() {
-    }
-
-    /**
-     * Evaluates this tag after all the tags properties have been initialized.
-     *
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        TimeZone timeZone = null;
-
-        Object valueInput = null;
-        if (this.value != null) {
-            valueInput = this.value.evaluate(context);
-        }
-
-
-        if (valueInput == null) {
-            timeZone = TimeZone.getTimeZone("GMT");
-        }
-        else if (valueInput instanceof String) {
-            if (((String) valueInput).trim().equals("")) {
-                timeZone = TimeZone.getTimeZone("GMT");
-            } else {
-                timeZone = TimeZone.getTimeZone((String) valueInput);
-            }
-        } else {
-            timeZone = (TimeZone) valueInput;
-        }
-
-        if (scope != null) {
-            context.setVariable(Config.FMT_TIME_ZONE, scope, timeZone);
-        }
-        else {
-            context.setVariable(Config.FMT_TIME_ZONE, timeZone);
-        }
-    }
-
-    public void setValue(Expression value) {
-        this.value = value;
-    }
-
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    public void setScope(String scope) {
-        this.scope = scope;
-    }
-}
diff --git a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/TimeZoneTag.java b/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/TimeZoneTag.java
deleted file mode 100644
index 4875366..0000000
--- a/jelly-tags/fmt/src/java/org/apache/commons/jelly/tags/fmt/TimeZoneTag.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.expression.Expression;
-import java.util.Enumeration;
-import java.util.Locale;
-import java.util.ResourceBundle;
-import java.util.MissingResourceException;
-import java.util.TimeZone;
-
-/**
- * Support for tag handlers for &lt;timeZone&gt;, the time zone loading
- * tag in JSTL.
- *
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version $Revision: 1.5 $
- *
- * @task decide how to implement setResponseLocale
- */
-public class TimeZoneTag extends TagSupport {
-
-    private TimeZone timeZone;
-    private Expression value;                    // 'value' attribute
-
-
-    //*********************************************************************
-    // Constructor and initialization
-
-    public TimeZoneTag() {
-    }
-
-    //*********************************************************************
-    // Collaboration with subtags
-
-    public TimeZone getTimeZone() {
-        return timeZone;
-    }
-
-
-    //*********************************************************************
-    // Tag logic
-
-    /**
-     * Evaluates this tag after all the tags properties have been initialized.
-     *
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Object valueInput = null;
-        if (this.value != null) {
-            valueInput = this.value.evaluate(context);
-        }
-
-        if (valueInput == null) {
-            timeZone = TimeZone.getTimeZone("GMT");
-        }
-        else if (valueInput instanceof String) {
-            if (((String) valueInput).trim().equals("")) {
-                timeZone = TimeZone.getTimeZone("GMT");
-            } else {
-                timeZone = TimeZone.getTimeZone((String) valueInput);
-            }
-        } else {
-            timeZone = (TimeZone) valueInput;
-        }
-
-        invokeBody(output);
-    }
-
-
-    //*********************************************************************
-    // Package-scoped utility methods
-
-    /*
-     * Determines and returns the time zone to be used by the given action.
-     *
-     * <p> If the given action is nested inside a &lt;timeZone&gt; action,
-     * the time zone is taken from the enclosing &lt;timeZone&gt; action.
-     *
-     * <p> Otherwise, the time zone configuration setting
-     * <tt>javax.servlet.jsp.jstl.core.Config.FMT_TIME_ZONE</tt>
-     * is used.
-     *
-     * @param jc the page containing the action for which the
-     * time zone needs to be determined
-     * @param fromTag the action for which the time zone needs to be
-     * determined
-     *
-     * @return the time zone, or <tt>null</tt> if the given action is not
-     * nested inside a &lt;timeZone&gt; action and no time zone configuration
-     * setting exists
-     */
-    static TimeZone getTimeZone(JellyContext jc, Tag fromTag) {
-        TimeZone tz = null;
-
-        Tag t = findAncestorWithClass(fromTag, TimeZoneTag.class);
-        if (t != null) {
-            // use time zone from parent <timeZone> tag
-            TimeZoneTag parent = (TimeZoneTag) t;
-            tz = parent.getTimeZone();
-        } else {
-            // get time zone from configuration setting
-            Object obj = jc.getVariable(Config.FMT_TIME_ZONE);
-            if (obj != null) {
-                if (obj instanceof TimeZone) {
-                    tz = (TimeZone) obj;
-                } else {
-                    tz = TimeZone.getTimeZone((String) obj);
-                }
-            }
-        }
-
-        return tz;
-    }
-
-    /** Setter for property value.
-     * @param value New value of property value.
-     *
-     */
-    public void setValue(Expression value) {
-        this.value = value;
-    }
-}
diff --git a/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/TestFMTSuite.java b/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/TestFMTSuite.java
deleted file mode 100644
index 3fd0953..0000000
--- a/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/TestFMTSuite.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.fmt;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a>
- * @version 1.1
- */
-public class TestFMTSuite extends JellyTestSuite {
-
-    public static void main(String[] args) throws Exception {
-        TestRunner.run(suite());
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestFMTSuite.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/abc.properties b/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/abc.properties
deleted file mode 100644
index a10add4..0000000
--- a/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/abc.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Sample ResourceBundle properties file
-key1=value1
-
-key2=value2
-
-key3=value3 {0} {1}
-
-key4=value4 {0} {1} {2,number,integer}
diff --git a/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/suite.jelly b/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/suite.jelly
deleted file mode 100644
index 0a26085..0000000
--- a/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/suite.jelly
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite xmlns:j="jelly:core" 
-            xmlns:fmt="jelly:fmt"
-            xmlns:m="jelly:ant"
-            xmlns:b="jelly:beanshell" 
-            xmlns:test="jelly:junit" 
-            xmlns:log="jelly:log">
-
-    <test:case name="testSimple" xmlns="dummy">
-        <j:set var="keyvar" value="key2"/>
-        <fmt:bundle basename="org.apache.commons.jelly.tags.fmt.abc">
-            <fmt:message key="key1" var="dummyKey1"/>
-            <fmt:message var="dummyKey2">${keyvar}</fmt:message>
-            <fmt:message var="dummyKeyInvalid">invalid.key</fmt:message>
-        </fmt:bundle>
-
-        <m:echo>i10n content is </m:echo>
-        <m:echo>key1: '${dummyKey1}'</m:echo>
-        <m:echo>key2: '${dummyKey2}'</m:echo>
-        <m:echo>keyInvalid: '${dummyKeyInvalid}'</m:echo>
-    
-        <test:assertEquals expected="value1" actual="${dummyKey1}" />
-        <test:assertEquals expected="value2" actual="${dummyKey2}" />
-        <test:assertEquals expected="???invalid.key???" actual="${dummyKeyInvalid}" />
-    </test:case>
-    
-    <test:case name="testParam" xmlns="dummy">
-        <j:set var="keyvar" value="key3"/>
-        <j:set var="valuevar" value="param1"/>
-
-        <fmt:bundle basename="org.apache.commons.jelly.tags.fmt.abc">
-            <fmt:message var="dummyKey3">${keyvar}<fmt:param value="${valuevar}"/>
-                <fmt:param value="param2"/>
-            </fmt:message>
-        </fmt:bundle>
-
-        <m:echo>i10n content is </m:echo>
-        <m:echo>key3: '${dummyKey3}'</m:echo>
-    
-        <test:assertEquals expected="value3 param1 param2" actual="${dummyKey3}" />
-
-        <fmt:bundle basename="org.apache.commons.jelly.tags.fmt.abc">
-            <fmt:message var="dummyKey3" key="${keyvar}"><fmt:param value="${valuevar}"/>
-                <fmt:param value="param2"/>
-            </fmt:message>
-        </fmt:bundle>
-
-        <m:echo>i10n content is </m:echo>
-        <m:echo>key3: '${dummyKey3}'</m:echo>
-    
-        <test:assertEquals expected="value3 param1 param2" actual="${dummyKey3}" />
-    </test:case>
-
-    <test:case name="testParam2" xmlns="dummy">
-        <j:set var="keyvar" value="key4"/>
-        <j:set var="valuevar" value="param1"/>
-        <j:set var="intvalue" value="123"/>
-        <j:new className="java.lang.Integer" var="intValue">
-            <j:arg value="123"/>
-        </j:new>
-        <test:assertEquals expected="java.lang.Integer" actual="${intValue.class.name}" />
-        <fmt:bundle basename="org.apache.commons.jelly.tags.fmt.abc">
-            <fmt:message var="dummyKey4">${keyvar}<fmt:param value="${valuevar}"/>
-                <fmt:param value="param2"/>
-                <fmt:param value='${intValue}'/>
-            </fmt:message>
-        </fmt:bundle>
-
-        <m:echo>i10n content is </m:echo>
-        <m:echo>key4: '${dummyKey4}'</m:echo>
-    
-        <test:assertEquals expected="value4 param1 param2 123" actual="${dummyKey4}" />
-    </test:case>
-
-
-    <test:case name="testPrefix" xmlns="dummy">
-        <fmt:bundle basename="org.apache.commons.jelly.tags.fmt.xyz" prefix="123.">
-            <fmt:message key="key1" var="dummyKey1"/>
-            <fmt:message var="dummyKey2">key2</fmt:message>
-            <fmt:message var="dummyKeyInvalid">invalid.key</fmt:message>
-        </fmt:bundle>
-
-        <m:echo>i10n content is </m:echo>
-        <m:echo>key1: '${dummyKey1}'</m:echo>
-        <m:echo>key2: '${dummyKey2}'</m:echo>
-        <m:echo>keyInvalid: '${dummyKeyInvalid}'</m:echo>
-    
-        <test:assertEquals expected="value1" actual="${dummyKey1}" />
-        <test:assertEquals expected="value2" actual="${dummyKey2}" />
-        <test:assertEquals expected="???123.invalid.key???" actual="${dummyKeyInvalid}" />
-    </test:case>
-    
-    <test:case name="testSetLocale" xmlns="dummy">
-        <fmt:setLocale value="zh"/>
-        <fmt:bundle basename="org.apache.commons.jelly.tags.fmt.xyz" prefix="123.">
-            <fmt:message key="key1" var="dummyKey1"/>
-            <fmt:message var="dummyKey2">key2</fmt:message>
-            <fmt:message var="dummyKeyInvalid">invalid.key</fmt:message>
-        </fmt:bundle>
-
-        <m:echo>i10n content is </m:echo>
-        <m:echo>key1: '${dummyKey1}'</m:echo>
-        <m:echo>key2: '${dummyKey2}'</m:echo>
-        <m:echo>keyInvalid: '${dummyKeyInvalid}'</m:echo>
-    
-        <test:assertEquals expected="value1-zh" actual="${dummyKey1}" />
-        <test:assertEquals expected="value2-zh" actual="${dummyKey2}" />
-        <test:assertEquals expected="???123.invalid.key???" actual="${dummyKeyInvalid}" />
-    </test:case>
-</test:suite>
diff --git a/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/xyz.properties b/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/xyz.properties
deleted file mode 100644
index 565d57a..0000000
--- a/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/xyz.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Sample ResourceBundle properties file
-123.key1=value1
-
-123.key2=value2
-
-123.key3=value3 {0} {1}
diff --git a/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/xyz_zh.properties b/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/xyz_zh.properties
deleted file mode 100644
index 9256c8c..0000000
--- a/jelly-tags/fmt/src/test/org/apache/commons/jelly/tags/fmt/xyz_zh.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Sample ResourceBundle properties file
-123.key1=value1-zh
-
-123.key2=value2-zh
-
-123.key3={0} value3-zh {1}
diff --git a/jelly-tags/fmt/xdocs/changes.xml b/jelly-tags/fmt/xdocs/changes.xml
deleted file mode 100644
index da14641..0000000
--- a/jelly-tags/fmt/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-11">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/fmt/xdocs/index.xml b/jelly-tags/fmt/xdocs/index.xml
deleted file mode 100644
index 6810a8d..0000000
--- a/jelly-tags/fmt/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Email Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        Tags that support Internationalization and localized formatting and parsing.
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/fmt/xdocs/navigation.xml b/jelly-tags/fmt/xdocs/navigation.xml
deleted file mode 100644
index 521b78a..0000000
--- a/jelly-tags/fmt/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Formatting Tag Library">
-
-  <title>Formatting Tag Library</title>
-  
-  <body>
-    <menu name="Formatting Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/html/.cvsignore b/jelly-tags/html/.cvsignore
deleted file mode 100644
index 38b48b3..0000000
--- a/jelly-tags/html/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-target
-maven.log
-lib
-velocity.log
diff --git a/jelly-tags/html/build.xml b/jelly-tags/html/build.xml
deleted file mode 100644
index d0cfc65..0000000
--- a/jelly-tags/html/build.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-html" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-html-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-html 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.html.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/nekohtml-0.7.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/nekohtml/jars/nekohtml-0.7.1.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-log-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-log-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-jsl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-jsl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-xml-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-xml-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/html/maven.xml b/jelly-tags/html/maven.xml
deleted file mode 100644
index d15634e..0000000
--- a/jelly-tags/html/maven.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-    <!-- define the classpath --> 
-    <goal name="create-classpath" prereqs="java:compile,test:compile"> 
-        <path id="test.classpath"> 
-            <pathelement path="${maven.build.dest}"/> 
-            <pathelement path="target/classes"/> 
-            <pathelement path="target/test-classes"/> 
-            <path refid="maven.dependency.classpath"/> 
-        </path> 
-    </goal> 
-
-    <!-- demos-->
-    
-  <goal name="demo:html" prereqs="create-classpath"
-        description="Runs the example of parsing HTML with jelly">
-
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/html/example.jelly"/>
-    </java>
-  </goal>
-
-  <goal name="demo:text" prereqs="create-classpath"
-        description="Runs the example of parsing text with tags via jelly">
-
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/html/example2.jelly"/>
-    </java>
-  </goal>
-
-
-  <goal name="demo:radio2pda" prereqs="create-classpath" 
-      description="Converts the HTML news output of Radio Userland to simple HTML viewable on a PDA"> 
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes"> 
-      <classpath refid="test.classpath"/> 
-      <arg value="src/test/org/apache/commons/jelly/html/radioToPDA.jelly"/> 
-        <sysproperty key="outputFile" value="${pdaOutputFile}"/> 
-     </java> 
-  </goal> 
-
-</project>
diff --git a/jelly-tags/html/project.properties b/jelly-tags/html/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/html/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/html/project.xml b/jelly-tags/html/project.xml
deleted file mode 100644
index 7ae385a..0000000
--- a/jelly-tags/html/project.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-html</id>
-  <name>commons-jelly-tags-html</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.html</package>
-  <description>These Jelly tags can scrub commons errors in HTML syntax.</description>
-  <shortDescription>Commons Jelly HTML Tag Library</shortDescription>
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-HTML-1_0</tag>
-    </version>
-  </versions>
-  <dependencies>
-    <!-- html taglib -->
-    <dependency>
-      <id>nekohtml</id>
-      <version>0.7.1</version>
-    </dependency>
-
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-log</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-jsl</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-xml</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <!-- END for running demos -->
-    <!-- START for testing -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-    <!-- END for testing -->
-
-  </dependencies>
-</project>
diff --git a/jelly-tags/html/src/java/org/apache/commons/jelly/tags/html/HTMLTagLibrary.java b/jelly-tags/html/src/java/org/apache/commons/jelly/tags/html/HTMLTagLibrary.java
deleted file mode 100644
index 4260a24..0000000
--- a/jelly-tags/html/src/java/org/apache/commons/jelly/tags/html/HTMLTagLibrary.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.html;
-
-import org.apache.commons.jelly.TagLibrary;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.9 $
-  */
-public class HTMLTagLibrary extends TagLibrary {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(HTMLTagLibrary.class);
-
-    public HTMLTagLibrary() {
-        registerTag("parse", ParseTag.class);
-    }
-}
diff --git a/jelly-tags/html/src/java/org/apache/commons/jelly/tags/html/ParseTag.java b/jelly-tags/html/src/java/org/apache/commons/jelly/tags/html/ParseTag.java
deleted file mode 100644
index 62027a9..0000000
--- a/jelly-tags/html/src/java/org/apache/commons/jelly/tags/html/ParseTag.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.html;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.xml.ParseTagSupport;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.cyberneko.html.parsers.SAXParser;
-
-import org.dom4j.Document;
-import org.dom4j.io.SAXReader;
-
-import org.xml.sax.SAXException;
-
-
-/** A tag which parses some HTML and defines a variable with the parsed Document.
-  * The HTML can either be specified as its body or can be passed in via the
-  * html property which can be a Reader, InputStream, URL or String URI.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.9 $
-  */
-public class ParseTag extends ParseTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ParseTag.class);
-
-    /** The HTML to parse, either a String URI, a Reader or InputStream */
-    private Object html;
-    private String element = "match";
-    private String attribute = "no-change";
-
-    public ParseTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if (getVar() == null) {
-            throw new IllegalArgumentException("The var attribute cannot be null");
-        }
-        Document document = null;
-        if (html == null) {
-            String text = getText();
-            if (text != null) {
-                document = parseText(text);
-            }
-            else {
-                document = parseBody(output);
-            }
-        }
-        else {
-            document = parse(html);
-        }
-        context.setVariable(getVar(), document);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the source of the HTML which is either a String URI, Reader or InputStream */
-    public void setHtml(Object html) {
-        this.html = html;
-    }
-
-    /**
-     * Sets whether attributes should be converted to a different case.
-     * Possible values are "upper", "lower" or "no-change"
-     *
-     * @param attribute The processing mode of attributes
-     */
-    public void setAttribute(String attribute) {
-        this.attribute = attribute;
-    }
-
-    /**
-     * Sets whether elements should be converted to a different case
-     * Possible values are "upper", "lower" or "match"
-     *
-     * @param element The processing mode of elements
-     */
-    public void setElement(String element) {
-        this.element = element;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new SAXReader
-     */
-    protected SAXReader createSAXReader() throws SAXException {
-        // installs the NeckHTML parser
-        SAXParser parser = new SAXParser();
-        parser.setProperty(
-            "http://cyberneko.org/html/properties/names/elems",
-            element
-        );
-        parser.setProperty(
-            "http://cyberneko.org/html/properties/names/attrs",
-            attribute
-        );
-        return new SAXReader( parser );
-    }
-}
diff --git a/jelly-tags/html/src/java/org/apache/commons/jelly/tags/html/package.html b/jelly-tags/html/src/java/org/apache/commons/jelly/tags/html/package.html
deleted file mode 100644
index 59849da..0000000
--- a/jelly-tags/html/src/java/org/apache/commons/jelly/tags/html/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>Tags for parsing HTML so that it can be processed by Jelly using Andy Clark's 
-  	<a href="http://www.apache.org/~andyc/neko/doc/index.html">NekoHTML</a>
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/html/src/test/org/apache/commons/jelly/html/TestJelly.java b/jelly-tags/html/src/test/org/apache/commons/jelly/html/TestJelly.java
deleted file mode 100644
index e4e8eb9..0000000
--- a/jelly-tags/html/src/test/org/apache/commons/jelly/html/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.html;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/html/src/test/org/apache/commons/jelly/html/example.jelly b/jelly-tags/html/src/test/org/apache/commons/jelly/html/example.jelly
deleted file mode 100644
index fc843ce..0000000
--- a/jelly-tags/html/src/test/org/apache/commons/jelly/html/example.jelly
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:html="jelly:html">
-
-  <html:parse var="doc" html="index.html"/>
-
-  The title is: 
-  
-  <x:expr select="$doc/html/head/title"/>
-
-  <j:whitespace>
-      
-  The XML of the document is
-  
-  <x:copyOf select="$doc"/>
-  
-  </j:whitespace>
-  
-</j:jelly>
-
-
diff --git a/jelly-tags/html/src/test/org/apache/commons/jelly/html/example2.jelly b/jelly-tags/html/src/test/org/apache/commons/jelly/html/example2.jelly
deleted file mode 100644
index fa772ab..0000000
--- a/jelly-tags/html/src/test/org/apache/commons/jelly/html/example2.jelly
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:html="jelly:html">
-
-  <html:parse var="doc" html="textScript.txt"/>
-
-  <j:whitespace>
-      
-  The XML of the document is
-  
-  <x:copyOf select="$doc"/>
-  
-  </j:whitespace>
-  
-</j:jelly>
-
-
diff --git a/jelly-tags/html/src/test/org/apache/commons/jelly/html/index.html b/jelly-tags/html/src/test/org/apache/commons/jelly/html/index.html
deleted file mode 100644
index ed0f52b..0000000
--- a/jelly-tags/html/src/test/org/apache/commons/jelly/html/index.html
+++ /dev/null
@@ -1,46 +0,0 @@
-  <!DOCTYPE html PUBLIC "-//CollabNet//DTD XHTML 1.0 Transitional//EN"
-      "http://www.collabnet.com/dtds/collabnet_transitional_10.dtd">
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-  <html>
-    <head>
-      <title>Jelly - Jelly : Java and XML based processing engine</title>
-
-		<meta name="author" value="James Strachan"/>
-        <meta name="email" value="jstrachan@apache.org" />
-      
-    </head>
-
-    <body class="composite" marginwidth="0" marginheight="0">
-
-			<p>Some text</p>
-			
-    	<IMG URI="foo">
-    
-		some unmatched tags here...		    	
-    	<p>
-    	
-    	and here...
-    	<p>
-    	
-    	
-    	<br>
-
-		<foo:bar name="a custom tag"/>
-		    	
-    </body>
-  </html>
diff --git a/jelly-tags/html/src/test/org/apache/commons/jelly/html/radioToPDA.jelly b/jelly-tags/html/src/test/org/apache/commons/jelly/html/radioToPDA.jelly
deleted file mode 100644
index 0ce90e5..0000000
--- a/jelly-tags/html/src/test/org/apache/commons/jelly/html/radioToPDA.jelly
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core" 
-    xmlns:x="jelly:xml" 
-    xmlns:html="jelly:html" 
-    xmlns:log="jelly:log" 
-    xmlns:jsl="jelly:jsl">
-
-    <!-- 
-        || This script parsers the current news using Radio Userland's news aggregator
-        || and then outputs it in a simple HTML format that can be read easily on a PDA
-        -->
-
-  <html:parse var="doc" html="http://127.0.0.1:5335/system/pages/news"/>
-
-    <j:if test="${empty(outputFile)}">
-        <j:set var="outputFile" value="target/radio.html"/>            
-    </j:if>
-    
-    <log:info>About to generate file ${outputFile}</log:info>
-    
-    <j:file name="${outputFile}" outputMode="html" encoding="ISO-8859-1">
-        <jsl:stylesheet select="$doc">
-            <jsl:template match="/">
-                <jsl:applyTemplates/>
-            </jsl:template>
-        
-            <!-- strip out these elements-->
-            <jsl:template match="form|table|td|center">
-                <jsl:applyTemplates select="child::node()"/>
-            </jsl:template>
-                
-            <jsl:template match="tr">
-                <br />
-                <div>
-                    <jsl:applyTemplates select="child::node()"/>
-                </div>
-            </jsl:template>
-                
-            <jsl:template match="script|img|input"/>
-        
-            <!-- pass through all other elements -->
-            <jsl:template match="*" trim="false">
-                <jsl:copy>
-                    <jsl:applyTemplates/>
-                </jsl:copy>
-            </jsl:template>
-
-            <jsl:template match="@*"/>
-        </jsl:stylesheet>
-    </j:file> 
-    
-</j:jelly>
-
-
diff --git a/jelly-tags/html/src/test/org/apache/commons/jelly/html/suite.jelly b/jelly-tags/html/src/test/org/apache/commons/jelly/html/suite.jelly
deleted file mode 100644
index 6cd34c0..0000000
--- a/jelly-tags/html/src/test/org/apache/commons/jelly/html/suite.jelly
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<test:suite 

-  xmlns:html="jelly:html" 

-  xmlns:j="jelly:core"

-  xmlns:x="jelly:xml"

-  xmlns:test="jelly:junit">

-

-  <test:case name="testSimpleParse">

-    <html:parse var="doc" html="index.html"/>

-  

-    <test:assert xpath="$doc/html/head/title"/>

-    <test:assert xpath="$doc/html/body/IMG[@URI='foo']"/>

-  </test:case>

-

-  <test:case name="testUpperCase">

-    <html:parse var="doc" html="index.html" element="upper" attribute="upper"/>

-  

-    <test:assert xpath="$doc/HTML/HEAD/TITLE"/>    

-    <test:assert xpath="$doc/HTML/BODY/IMG[@URI='foo']"/>

-  </test:case>

-  

-  <test:case name="testLowerCase">

-    <html:parse var="doc" html="index.html" element="lower" attribute="lower"/>

-  

-    <test:assert xpath="$doc/html/head/title"/>

-    <test:assert xpath="$doc/html/body/img[@uri='foo']"/>

-  </test:case>

-  

-  <test:case name="testMixedCase">

-    <html:parse var="doc" html="index.html" element="upper" attribute="lower"/>

-  

-    <test:assert xpath="$doc/HTML/HEAD/TITLE"/>

-    <test:assert xpath="$doc/HTML/BODY/IMG[@uri='foo']"/>

-  </test:case>

-

-  <test:case name="testInlineHtml">

-    <html:parse var="doc">

-      <html>

-        <head>

-          <title>Jelly - Jelly : Java and XML based processing engine</title>

-          <meta name="author" value="James Strachan"/>

-          <meta name="email" value="jstrachan@apache.org" />

-        </head>

-        <body>

-        </body>

-      </html>

-    </html:parse>

-    

-    <test:assert xpath="$doc/html/head/title"/>

-    

-    <j:set var="title"><x:expr select="$doc/html/head/title" /></j:set>

-    <test:assertEquals expected="Jelly - Jelly : Java and XML based processing engine"

-      actual="${title}" />

-  </test:case>

-

-  <test:case name="testInlineFromVar">

-      

-      <!-- this will turn the HTML markup from XML events into text -->

-    <j:set var="html" encode="false">

-      <html>

-        <head>

-          <title>Jelly - Jelly : Java and XML based processing engine</title>

-                  <meta name="author" value="James Strachan"/>

-          <meta name="email" value="jstrachan@apache.org" />

-        </head>

-        <body>

-        </body>

-      </html>

-    </j:set>

-

-        <!-- parse the text as markup -->

-    <html:parse var="doc" text="${html}"/>

-

-    <test:assert xpath="$doc/html/head/title"/>

-    

-    <j:set var="title"><x:expr select="$doc/html/head/title" /></j:set>

-    

-    <test:assertEquals 

-        expected="Jelly - Jelly : Java and XML based processing engine"

-      actual="${title}" />

-  </test:case>

-

-</test:suite>

diff --git a/jelly-tags/html/src/test/org/apache/commons/jelly/html/textScript.txt b/jelly-tags/html/src/test/org/apache/commons/jelly/html/textScript.txt
deleted file mode 100644
index 32de52d..0000000
--- a/jelly-tags/html/src/test/org/apache/commons/jelly/html/textScript.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-this is some text
-
-<foo:bar name="a custom tag!">
-
-this is some more text
-
-<j:forEach select="${foo.bar}">
-  do something
-  ${12 + 12}
-</j:forEach>
-
-end of the page...  		  	
\ No newline at end of file
diff --git a/jelly-tags/html/xdocs/changes.xml b/jelly-tags/html/xdocs/changes.xml
deleted file mode 100644
index da14641..0000000
--- a/jelly-tags/html/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-11">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/html/xdocs/index.xml b/jelly-tags/html/xdocs/index.xml
deleted file mode 100644
index 75c8617..0000000
--- a/jelly-tags/html/xdocs/index.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>HTML Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        Tags for parsing HTML so that it can be processed by Jelly using Andy Clark's 
-          <a href="http://www.apache.org/~andyc/neko/doc/index.html">NekoHTML</a>.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/html/xdocs/navigation.xml b/jelly-tags/html/xdocs/navigation.xml
deleted file mode 100644
index fe0a7fa..0000000
--- a/jelly-tags/html/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="HTML Tag Library">
-
-  <title>HTML Tag Library</title>
-  
-  <body>
-    <menu name="HTML Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/http/.cvsignore b/jelly-tags/http/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/http/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/http/build.xml b/jelly-tags/http/build.xml
deleted file mode 100644
index c74f889..0000000
--- a/jelly-tags/http/build.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-http" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-http-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-http 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.http.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-httpclient-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-httpclient/jars/commons-httpclient-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-define-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-define-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/http/maven.xml b/jelly-tags/http/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/http/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/http/project.properties b/jelly-tags/http/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/http/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/http/project.xml b/jelly-tags/http/project.xml
deleted file mode 100644
index ebde90e..0000000
--- a/jelly-tags/http/project.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-http</id>
-  <currentVersion>1.1-SNAPSHOT</currentVersion>
-  <name>commons-jelly-tags-http</name>
-  <package>org.apache.commons.jelly.tags.http</package>
-  <description>These are simple Jelly tags that can perform HTTP requests.</description>
-  <shortDescription>Commons Jelly HTTP Tag Library</shortDescription>
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-HTTP-1_0</tag>
-    </version>
-  </versions>
-  <dependencies>
-    <dependency>
-      <id>commons-httpclient</id>
-      <version>2.0</version>
-    </dependency>
-    <!--  testing -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-define</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/define/</url>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/BodyTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/BodyTag.java
deleted file mode 100644
index eced0b3..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/BodyTag.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import java.net.MalformedURLException;
-
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.methods.PutMethod;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag to set the body for posts and puts etc
- *
- * @author  dion
- * @version $Id: BodyTag.java,v 1.3 2002/07/14 16:44:10 dion Exp $
- */
-public class BodyTag extends TagSupport {
-
-    /** Creates a new instance of BodyTag */
-    public BodyTag() {
-    }
-
-    /**
-     * Perform the tag functionality. In this case, get the parent http tag,
-     * and if it's a post or put, set the request body from the body of this
-     * tag.
-     *
-     * @param xmlOutput for writing output to
-     * @throws Exception when any error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        HttpTagSupport httpTag = (HttpTagSupport) findAncestorWithClass(
-            HttpTagSupport.class);
-
-        HttpMethod httpMethod = null;
-        try {
-            httpMethod = httpTag.getHttpMethod();
-        } catch (MalformedURLException e) {
-            throw new JellyTagException(e);
-        }
-
-        String bodyText = getBodyText();
-        if (httpMethod instanceof PostMethod) {
-            PostMethod postMethod = (PostMethod) httpMethod;
-            postMethod.setRequestBody(bodyText);
-        } else if (httpMethod instanceof PutMethod) {
-            PutMethod putMethod = (PutMethod) httpMethod;
-            putMethod.setRequestBody(bodyText);
-        } else {
-            throw new IllegalStateException("Http method from parent was "
-                + "not post or put");
-        }
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/DeleteTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/DeleteTag.java
deleted file mode 100644
index 6047e6b..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/DeleteTag.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import java.net.MalformedURLException;
-
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.methods.DeleteMethod;
-
-/**
- * A http delete tag
- *
- * @author  dion
- * @version $Id: DeleteTag.java,v 1.2 2002/07/14 12:38:22 dion Exp $
- */
-public class DeleteTag extends HttpTagSupport {
-
-    /** the delete method */
-    private DeleteMethod _deleteMethod;
-
-    /**
-     * Creates a new instance of DeleteTag
-     */
-    public DeleteTag() {
-    }
-
-    /**
-     * @return a url method for a get request
-     * @throws MalformedURLException when the url is bad
-     */
-    protected HttpMethod getHttpMethod() throws MalformedURLException {
-        if (_deleteMethod == null) {
-            _deleteMethod = new DeleteMethod(getResolvedUrl());
-        }
-        return _deleteMethod;
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/GetTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/GetTag.java
deleted file mode 100644
index 8797e4c..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/GetTag.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import java.net.MalformedURLException;
-
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.methods.GetMethod;
-
-/**
- * A http get tag
- *
- * @author  dion
- * @version $Id: GetTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class GetTag extends HttpTagSupport {
-
-    /** the get method */
-    private GetMethod _getMethod;
-
-    /**
-     * Creates a new instance of GetTag
-     */
-    public GetTag() {
-    }
-
-    /**
-     * @return a url method for a get request
-     * @throws MalformedURLException when the url is bad
-     */
-    protected HttpMethod getHttpMethod() throws MalformedURLException {
-        if (_getMethod == null) {
-            _getMethod = new GetMethod(getResolvedUrl());
-        }
-        return _getMethod;
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HeadTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HeadTag.java
deleted file mode 100644
index f51b2fc..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HeadTag.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import java.net.MalformedURLException;
-
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.methods.HeadMethod;
-
-/**
- * A http get tag
- *
- * @author  dion
- * @version $Id: HeadTag.java,v 1.2 2002/07/14 12:38:22 dion Exp $
- */
-public class HeadTag extends HttpTagSupport {
-
-    /** the head method */
-    private HeadMethod _headMethod;
-
-    /**
-     * Creates a new instance of HeadTag
-     */
-    public HeadTag() {
-    }
-
-    /**
-     * @return a url method for a Head request
-     * @throws MalformedURLException when the url is bad
-     */
-    protected HttpMethod getHttpMethod() throws MalformedURLException {
-        if (_headMethod == null) {
-            _headMethod = new HeadMethod(getResolvedUrl());
-        }
-        return _headMethod;
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HeaderTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HeaderTag.java
deleted file mode 100644
index a30dd51..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HeaderTag.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag to hold request headers
- *
- * @author  dion
- * @version $Id: HeaderTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class HeaderTag extends TagSupport {
-    /** parameter name */
-    private String _name;
-    /** parameter value */
-    private String _value;
-
-    /** Creates a new instance of HeaderTag */
-    public HeaderTag() {
-    }
-
-    /**
-     * Perform the tag functionality. In this case, simply evaluate the body.
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        HttpTagSupport http = (HttpTagSupport) findAncestorWithClass(
-            HttpTagSupport.class);
-        http.addRequestHeader(getName(), getValue());
-        invokeBody(xmlOutput);
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-    /**
-     * Getter for property name.
-     *
-     * @return Value of property name.
-     */
-    public String getName() {
-        return _name;
-    }
-
-    /**
-     * Setter for property name.
-     *
-     * @param name New value of property name.
-     */
-    public void setName(String name) {
-        _name = name;
-    }
-
-    /**
-     * Getter for property value.
-     *
-     * @return Value of property value.
-     */
-    public String getValue() {
-        return _value;
-    }
-
-    /**
-     * Setter for property value.
-     *
-     * @param value New value of property value.
-     */
-    public void setValue(String value) {
-        _value = value;
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HttpTagLibrary.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HttpTagLibrary.java
deleted file mode 100644
index 31c0785..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HttpTagLibrary.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import java.util.Map;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/**
- * The set of jelly tags provided by Latka
- *
- * @author dion
- * @version $Id: HttpTagLibrary.java,v 1.1 2002/07/14 13:05:14 dion Exp $
- */
-public class HttpTagLibrary extends TagLibrary {
-
-    /**
-     * Creates a new instance of LatkaTagLibrary
-     */
-    public HttpTagLibrary() {
-        registerTag("body", BodyTag.class);
-        registerTag("delete", DeleteTag.class);
-        registerTag("get", GetTag.class);
-        registerTag("head", HeadTag.class);
-        registerTag("header", HeaderTag.class);
-        registerTag("mppost", MultipartPostTag.class);
-        registerTag("options", OptionsTag.class);
-        registerTag("parameter", ParameterTag.class);
-        registerTag("part", PartTag.class);
-        registerTag("post", PostTag.class);
-        registerTag("put", PutTag.class);
-        registerTag("session", SessionTag.class);
-    }
-
-    /**
-     * @see TagLibarary#getTagClasses()
-     *
-     * @return a Map of tag name to tag class
-     */
-    public Map getTagClasses() {
-        return super.getTagClasses();
-    }
-
-}
-
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HttpTagSupport.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HttpTagSupport.java
deleted file mode 100644
index 8314c79..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/HttpTagSupport.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.NameValuePair;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * The base tag for all http requests
- *
- * @author  dion
- * @version $Id: HttpTagSupport.java,v 1.3 2002/07/14 16:51:33 dion Exp $
- */
-public abstract class HttpTagSupport extends TagSupport {
-
-    /** unique identifier of the tag/ variable to store result in */
-    private String _var;
-
-    /**
-     * the path to be tested relative to the host/port specifed on the parent
-     * {@link SuiteTag suite tag}.
-     * Either this property and the suite's host
-     * must be provided, or the {@link #getUrl() url} property must be specifed
-     */
-    private String _path;
-
-    /**
-     * The complete uri to be processed
-     * Either this property or the {@link #getPath() path} and the suite's host
-     * must be provided.
-     */
-    private String _uri;
-
-    /** whether or not to follow redirects */
-    private boolean _followRedirects = false;
-    /** list of parameters as name value pairs */
-    private List _parameters;
-    /** list of headers as name value pairs */
-    private List _requestHeaders;
-    /** the header name for the user agent */
-    private static final String HEADER_NAME_USER_AGENT = "User-Agent";
-
-    /**
-     * Creates a new instance of HttpTag
-     */
-    public HttpTagSupport() {
-        setParameters(new ArrayList());
-        setRequestHeaders(new ArrayList());
-    }
-
-    /**
-     * @return the url specified by the tag, either the url if not null, or
-     * a combination of the host, port and path
-     */
-    public String getResolvedUrl() {
-        if (getUri() != null) {
-            return getUri();
-        } else {
-            // build it from path, host and optionally port
-            SessionTag session = (SessionTag) findAncestorWithClass(
-                SessionTag.class);
-            String host = session.getHost();
-            String port = session.getPort();
-            // short term hack, need to add port and security in
-            return "http://" + host + getPath();
-        }
-    }
-
-    /**
-     * A method that must be implemented by subclasses to provide the
-     * {@link HttpMethod url method} implementation
-     *
-     * @return a HttpUrlMethod implementation
-     * @throws MalformedURLException when the {@link getUrl() url} or
-     * {@link #getPath() path} is invalid
-     */
-    protected abstract HttpMethod getHttpMethod()
-        throws MalformedURLException;
-
-    /**
-     * Perform the tag functionality. In this case, get the http url method
-     * execute it and make it available for validation
-     *
-     * @param xmlOutput where to send output
-     * @throws JellyTagException when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        // allow nested tags first, e.g body
-        invokeBody(xmlOutput);
-
-        // track request execution
-        long start = System.currentTimeMillis();
-        HttpMethod urlMethod = null;
-        try {
-            urlMethod = getConfiguredHttpMethod();
-            getHttpClient().executeMethod(urlMethod);
-        }
-        catch (MalformedURLException e) {
-            throw new JellyTagException(e);
-        }
-        catch (IOException e) {
-            throw new JellyTagException(e);
-        }
-        long end = System.currentTimeMillis();
-
-        // set variable to value
-        if (getVar() != null) {
-            getContext().setVariable(getVar(), urlMethod);
-            getContext().setVariable(getVar() + ".responseTime",
-                String.valueOf(end - start));
-        }
-    }
-
-    /**
-     * retrieve the {@link HttpUrlMethod method} from the subclass and
-     * configure it ready for execution
-     *
-     * @return a configured {@link HttpUrlMethod method}
-     * @throws MalformedURLException when retrieving the URL fails
-     */
-    private HttpMethod getConfiguredHttpMethod() throws
-    MalformedURLException {
-        // retrieve and configure url method
-        HttpMethod urlMethod = getHttpMethod();
-        urlMethod.setFollowRedirects(isFollowRedirects());
-        // add request headers
-        NameValuePair header = null;
-        for (int index = 0; index < getRequestHeaders().size(); index++) {
-            header = (NameValuePair) getRequestHeaders().get(index);
-            urlMethod.addRequestHeader(header.getName(), header.getValue());
-        }
-        // add parameters
-        setParameters(urlMethod);
-        // add the default user agent to the list if one doesn't exist
-        // and the session tag does exist and have a user agent
-        if (urlMethod.getRequestHeader(HttpTagSupport.HEADER_NAME_USER_AGENT)
-            == null && getSessionTag() != null
-            && getSessionTag().getUserAgent() != null) {
-
-            urlMethod.addRequestHeader(HttpTagSupport.HEADER_NAME_USER_AGENT,
-                    getSessionTag().getUserAgent());
-        }
-        return urlMethod;
-    }
-
-    /**
-     * Set the current parameters on the url method ready for processing
-     *
-     * @param method the {@link HttpUrlMethod method} to configure
-     * @throws MalformedURLException when {@link #getHttpUrlMethod()} does
-     */
-    protected void setParameters(HttpMethod method) throws
-    MalformedURLException {
-        if (getParameters().size() > 0) {
-            NameValuePair[] parameters = (NameValuePair[]) getParameters().
-                toArray(new NameValuePair[0]);
-            method.setQueryString(parameters);
-        }
-    }
-
-    /**
-     * retrieve the optional parent session tag
-     *
-     * @return the ancestor tag with class {@link SessionTag} or null if
-     *      not found
-     */
-    private SessionTag getSessionTag() {
-        SessionTag sessionTag = (SessionTag) findAncestorWithClass(
-            SessionTag.class);
-        return sessionTag;
-    }
-
-    /**
-     * return a HttpClient shared on the session tag, or a new one if no
-     * session tag exists
-     *
-     * @return the shared http client from the session tag, or create a new one.
-     */
-    private HttpClient getHttpClient() {
-        SessionTag session = getSessionTag();
-        HttpClient client = null;
-        if (session != null) {
-            client = session.getHttpClient();
-            client.setStrictMode(session.isStrictMode());
-        } else {
-            client = new HttpClient();
-        }
-        return client;
-    }
-
-    /**
-     * Add a parameter to the list
-     *
-     * @param name the parameter name
-     * @param value the parameter value
-     */
-    public void addParameter(String name, String value) {
-        getParameters().add(new NameValuePair(name, value));
-    }
-
-    /**
-     * Add a request header to the list
-     *
-     * @param name the header name
-     * @param value the header value
-     */
-    public void addRequestHeader(String name, String value) {
-        getRequestHeaders().add(new NameValuePair(name, value));
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-
-    /**
-     * Getter for property var.
-     *
-     * @return Value of property var.
-     */
-    public String getVar() {
-        return _var;
-    }
-
-    /**
-     * Setter for property var.
-     *
-     * @param var New value of property var.
-     */
-    public void setVar(String var) {
-        _var = var;
-    }
-
-    /**
-     * Getter for property path.
-     *
-     * @return Value of property path.
-     */
-    public String getPath() {
-        return _path;
-    }
-
-    /**
-     * Setter for property path.
-     *
-     * @param path New value of property path.
-     */
-    public void setPath(String path) {
-        _path = path;
-    }
-
-    /**
-     * Getter for property uri.
-     *
-     * @return Value of property uri.
-     */
-    public String getUri() {
-        return _uri;
-    }
-
-    /**
-     * Setter for property uri.
-     *
-     * @param uri New value of property uri.
-     */
-    public void setUri(String uri) {
-        _uri = uri;
-    }
-
-    /**
-     * Getter for property followRedirects.
-     *
-     * @return Value of property followRedirects.
-     */
-    public boolean isFollowRedirects() {
-        return _followRedirects;
-    }
-
-    /**
-     * Setter for property followRedirects.
-     *
-     * @param followRedirects New value of property followRedirects.
-     */
-    public void setFollowRedirects(boolean followRedirects) {
-        _followRedirects = followRedirects;
-    }
-
-    /**
-     * Getter for property parameters.
-     *
-     * @return Value of property parameters.
-     */
-    public List getParameters() {
-        return _parameters;
-    }
-
-    /**
-     * Setter for property parameters.
-     *
-     * @param parameters New value of property parameters.
-     */
-    public void setParameters(List parameters) {
-        _parameters = parameters;
-    }
-
-    /**
-     * Getter for property requestHeaders.
-     *
-     * @return Value of property requestHeaders.
-     */
-    public List getRequestHeaders() {
-        return _requestHeaders;
-    }
-
-    /**
-     * Setter for property requestHeaders.
-     *
-     * @param requestHeaders New value of property requestHeaders.
-     */
-    public void setRequestHeaders(List requestHeaders) {
-        _requestHeaders = requestHeaders;
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/MultipartPostTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/MultipartPostTag.java
deleted file mode 100644
index 265ea1d..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/MultipartPostTag.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.NameValuePair;
-import org.apache.commons.httpclient.methods.MultipartPostMethod;
-import org.apache.commons.httpclient.methods.multipart.Part;
-import org.apache.commons.httpclient.methods.multipart.StringPart;
-
-/**
- * A Multipart MIME message post
- *
- * This tag should contain one or more &lt;part&gt; tags, to
- * specify the multiple parts of the message
- *
- * Example:
- * <pre>
- *   &lt;mppost uri="http://localhost?doit"&gt;
- *       &lt;part name="user" type="text/plain"&gt;Fred&lt;/part&gt;
- *       &lt;part name="data"  type="text/plain"&gt;This is the second part of the message&lt;/part&gt;
- *   &lt;/mppost&gt;
- *</pre>
- *
- * @author <a href="mailto:wkeese@yahoo.com">Bill Keese</a>
- *
- * @since ???
- */
-public class MultipartPostTag extends PostTag {
-
-    /** the post method */
-    private MultipartPostMethod _postMethod;
-
-    /** list of parts as name value pairs */
-    private List _parts;
-
-    /** Creates a new instance of MppostTag */
-    public MultipartPostTag() {
-      _parts = new ArrayList();
-    }
-
-    /**
-     * Return a {@link HttpUrlMethod method} to be used for multi-part post'ing
-     *
-     * @return a HttpUrlMethod implementation
-     * @throws MalformedURLException when the {@link getUrl() url} or
-     * {@link #getPath() path} is invalid
-     */
-    protected HttpMethod getHttpMethod() throws MalformedURLException {
-        if (_postMethod == null) {
-            _postMethod = new MultipartPostMethod(getResolvedUrl());
-        }
-        return _postMethod;
-    }
-
-    /**
-     * Add a part to the message
-     *
-     * @param name the parameter name
-     * @param value the parameter value
-     */
-    public void addPart(Part p) {
-        _parts.add(p);
-    }
-
-    /**
-     * Set the current parameters on the url method ready for processing
-     *
-     * This method basically
-     * It <strong>must</strong> be called after
-     *  {@link getHttpUrlMethod}
-     */
-    protected void setParameters(HttpMethod method) {
-        for (int index = 0; index < _parts.size(); index++) {
-            ((MultipartPostMethod) method).addPart( (Part) _parts.get(index) );
-        }
-    }
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/OptionsTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/OptionsTag.java
deleted file mode 100644
index f07591e..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/OptionsTag.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import java.net.MalformedURLException;
-
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.methods.OptionsMethod;
-
-/**
- * A http get tag
- *
- * @author  dion
- * @version $Id: OptionsTag.java,v 1.2 2002/07/14 12:38:22 dion Exp $
- */
-public class OptionsTag extends HttpTagSupport {
-
-    /** the options method */
-    private OptionsMethod _optionsMethod;
-
-    /**
-     * Creates a new instance of OptionsTag
-     */
-    public OptionsTag() {
-    }
-
-    /**
-     * @return a url method for an options request
-     * @throws MalformedURLException when the url is bad
-     */
-    protected HttpMethod getHttpMethod() throws MalformedURLException {
-        if (_optionsMethod == null) {
-            _optionsMethod = new OptionsMethod(getResolvedUrl());
-        }
-        return _optionsMethod;
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/ParameterTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/ParameterTag.java
deleted file mode 100644
index 81d27e4..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/ParameterTag.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag to hold parameters
- *
- * @author  dion
- * @version $Id: ParameterTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class ParameterTag extends TagSupport {
-    /** parameter name */
-    private String _name;
-    /** parameter value */
-    private String _value;
-
-    /** Creates a new instance of ParameterTag */
-    public ParameterTag() {
-    }
-
-    /**
-     * Perform the tag functionality. In this case, simply evaluate the body.
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        HttpTagSupport http = (HttpTagSupport) findAncestorWithClass(
-            HttpTagSupport.class);
-        http.addParameter(getName(), getValue());
-        invokeBody(xmlOutput);
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-    /**
-     * Getter for property name.
-     *
-     * @return Value of property name.
-     */
-    public String getName() {
-        return _name;
-    }
-
-    /**
-     * Setter for property name.
-     *
-     * @param name New value of property name.
-     */
-    public void setName(String name) {
-        _name = name;
-    }
-
-    /**
-     * Getter for property value.
-     *
-     * @return Value of property value.
-     */
-    public String getValue() {
-        return _value;
-    }
-
-    /**
-     * Setter for property value.
-     *
-     * @param value New value of property value.
-     */
-    public void setValue(String value) {
-        _value = value;
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/PartTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/PartTag.java
deleted file mode 100644
index bef0f25..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/PartTag.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.httpclient.methods.multipart.StringPart;
-
-/**
- * A tag to hold a part of a multiPartPost
- *
- */
-public class PartTag extends TagSupport {
-    /** parameter name */
-    private String _name;
-    /** parameter value */
-    private String _value;
-    /** parameter type (like text/plain) */
-    private String _contentType = "text/plain";
-
-    /** Creates a new instance of PartTag */
-    public PartTag() {
-    }
-
-    /**
-     * Extend StringPart so that I can specify the content type (ex: text/plain)
-     */
-    private class MyStringPart extends StringPart {
-      String _contentType;
-      public MyStringPart(String name, String value, String contentType) {
-        super(name, value, "utf-8");
-        _contentType=contentType;
-      }
-      public String getContentType() { return _contentType; }
-    }
-
-    /**
-     * Perform the tag functionality. In this case, store this parameter
-     * in the &lt;mppost&gt; tag above me
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        MultipartPostTag http = (MultipartPostTag) findAncestorWithClass(MultipartPostTag.class);
-        StringPart sp = new MyStringPart(getName(), getValue(), getContentType());
-        http.addPart(sp);
-        invokeBody(xmlOutput);
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-    /**
-     * Getter for property name.
-     *
-     * @return Value of property name.
-     */
-    public String getName() {
-        return _name;
-    }
-
-    /**
-     * Setter for property name.
-     *
-     * @param name New value of property name.
-     */
-    public void setName(String name) {
-        _name = name;
-    }
-
-    /**
-     * Getter for property value.
-     *
-     * @return Value of property value.
-     */
-    public String getValue() {
-        return _value;
-    }
-
-    /**
-     * Setter for property value.
-     *
-     * @param value New value of property value.
-     */
-    public void setValue(String value) {
-        _value = value;
-    }
-
-    /**
-     * Getter for property contentType.
-     *
-     * @return Value of contentType.
-     */
-    public String getContentType() {
-        return _contentType;
-    }
-
-    /**
-     * Setter for property contentType.
-     *
-     * @param value New value of contentType.
-     */
-    public void setContentType(String contentType) {
-        _contentType = contentType;
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/PostTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/PostTag.java
deleted file mode 100644
index 8a43e19..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/PostTag.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import java.net.MalformedURLException;
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.NameValuePair;
-import org.apache.commons.httpclient.methods.PostMethod;
-
-
-/**
- * A http post
- *
- * @author  dion
- */
-public class PostTag extends HttpTagSupport {
-
-    /** the post method */
-    private PostMethod _postMethod;
-
-    /** Creates a new instance of PostTag */
-    public PostTag() {
-    }
-
-    /**
-     * Return a {@link HttpUrlMethod method} to be used for post'ing
-     *
-     * @return a HttpUrlMethod implementation
-     * @throws MalformedURLException when the {@link getUrl() url} or
-     * {@link #getPath() path} is invalid
-     */
-    protected HttpMethod getHttpMethod() throws MalformedURLException {
-        if (_postMethod == null) {
-            _postMethod = new PostMethod(getResolvedUrl());
-        }
-        return _postMethod;
-    }
-
-    /**
-     * Set the current parameters on the url method ready for processing
-     *
-     * This method <strong>must</strong> be called after
-     *  {@link getHttpUrlMethod}
-     */
-    protected void setParameters(HttpMethod method) {
-        NameValuePair nvp = null;
-        for (int index = 0; index < getParameters().size(); index++) {
-            NameValuePair parameter = (NameValuePair) getParameters().
-                get(index);
-            ((PostMethod) method).addParameter(parameter);
-        }
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/Proxy.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/Proxy.java
deleted file mode 100644
index 25cbad4..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/Proxy.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-/**
- * A class that holds proxy details for a session.
- * At the moment this is a placeholder for two simple properties that may
- * get added to as time goes by
- *
- * @author  dion
- * @version $Id: Proxy.java,v 1.3 2002/07/04 14:06:32 dion Exp $
- */
-public class Proxy {
-
-    /** the host to use as a proxy */
-    private String _host;
-    /** the port to send proxied requests on */
-    private int _port;
-    /** the port number that represents port is unassigned */
-    public static final int PORT_UNSPECIFIED = -1;
-
-    /**
-     * Creates a new instance of Proxy
-     */
-    public Proxy() {
-        this(null, Proxy.PORT_UNSPECIFIED);
-    }
-
-    /**
-     * Create a proxy given a host name and port number .
-     *
-     * @param host the host name of the proxy to be used.
-     * @param port the port to send proxied requests on.
-     */
-    public Proxy(String host, int port) {
-        setHost(host);
-        setPort(port);
-    }
-
-    /**
-     * Getter for property host.
-     *
-     * @return the host name of the proxy to be used.
-     */
-    public String getHost() {
-        return _host;
-    }
-
-    /**
-     * Setter for property host.
-     *
-     * @param host the host name of the proxy to be used.
-     */
-    public void setHost(String host) {
-        _host = host;
-    }
-
-    /**
-     * Getter for property port.
-     *
-     * @return the port to send proxied requests on.
-     */
-    public int getPort() {
-        return _port;
-    }
-
-    /**
-     * Setter for property port.
-     *
-     * @param port the port to send proxied requests on.
-     */
-    public void setPort(int port) {
-        _port = port;
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/PutTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/PutTag.java
deleted file mode 100644
index dbba34a..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/PutTag.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import java.net.MalformedURLException;
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.methods.PutMethod;
-
-
-/**
- * A http put
- *
- * @author  dion
- * @version $Id: PutTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class PutTag extends HttpTagSupport {
-
-    /** the put method */
-    private PutMethod _putMethod;
-
-    /** Creates a new instance of PutTag */
-    public PutTag() {
-    }
-
-    /**
-     * Return a {@link HttpMethod method} to be used for put'ing
-     *
-     * @return a HttpMethod implementation
-     * @throws MalformedURLException when the {@link getUrl() url} or
-     * {@link #getPath() path} is invalid
-     */
-    protected HttpMethod getHttpMethod() throws MalformedURLException {
-        if (_putMethod == null) {
-            _putMethod = new PutMethod(getResolvedUrl());
-        }
-        return _putMethod;
-    }
-
-    /**
-     * Set the current parameters on the url method ready for processing
-     *
-     */
-    protected void setParameters() {
-    }
-
-    /**
-     * Fail as PUT requests don't have parameters
-     *
-     * @param name the parameter name
-     * @param value the parameter value
-     */
-    public void addParameter(String name, String value) {
-        throw new IllegalArgumentException("PUT requests don't have params");
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/SessionTag.java b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/SessionTag.java
deleted file mode 100644
index 82643c3..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/SessionTag.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.http;
-
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A http session. This is the container for data shared across requests
- *
- * @author dion
- */
-public class SessionTag extends TagSupport {
-
-    /** default host for requests */
-    private String _host;
-    /** default port for requests */
-    private String _port;
-    /** Proxy details for requests */
-    private Proxy _proxy = new Proxy();
-    /** whether the default is for secure comms */
-    private boolean _secure;
-    /** the browser identifier */
-    private String _userAgent;
-    /** strict compliance */
-    private boolean _strictMode = false;
-
-    /** http client used to store state and execute requests */
-    private HttpClient _httpClient;
-
-    /**
-     * Creates a new instance of SessionTag
-     */
-    public SessionTag() {
-    }
-
-    /**
-     * Process the tag
-     *
-     * @param xmlOutput to write output
-     * @throws Exception when any error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        if (_httpClient == null)
-        {
-            _httpClient = new HttpClient();
-        }
-        
-        if (isProxyAvailable()) {
-            _httpClient.getHostConfiguration().setProxy(getProxyHost(), getProxyPort());
-        }
-
-        invokeBody(xmlOutput);
-    }
-
-    /**
-     * Getter for property httpClient.
-     *
-     * @return Value of property httpClient.
-     */
-    public HttpClient getHttpClient() {
-        return _httpClient;
-    }
-
-    /**
-     * Setter for property httpClient.
-     *
-     * @param httpClient New value of property httpClient.
-     */
-    public void setHttpClient(HttpClient httpClient) {
-        _httpClient = httpClient;
-    }
-    /**
-     * Tests whether the {@link #getProxy() proxy} is ready for use
-     *
-     * @return true if the {@link #getProxy() proxy} is configured for use
-     */
-    public boolean isProxyAvailable() {
-        return getProxy() != null && getProxy().getHost() != null
-            && getProxy().getPort() != Proxy.PORT_UNSPECIFIED;
-    }
-
-    /**
-     * Helper method for proxy host property
-     *
-     * @return the {@link #getProxy() proxy's} host property
-     */
-    public String getProxyHost() {
-        return getProxy().getHost();
-    }
-
-    /**
-     * Helper method for proxy <code>host</code> property
-     *
-     * @param host the {@link #getProxy() proxy's} host property
-     */
-    public void setProxyHost(String host) {
-        getProxy().setHost(host);
-    }
-
-    /**
-     * Helper method for proxy <code>port</code> property
-     *
-     * @return the {@link #getProxy() proxy's} port property
-     */
-    public int getProxyPort() {
-        return getProxy().getPort();
-    }
-
-    /**
-     * Helper method for proxy <code>port</code> property
-     *
-     * @param port the {@link #getProxy() proxy's} port property
-     */
-    public void setProxyPort(int port) {
-        getProxy().setPort(port);
-    }
-
-    /**
-     * Getter for property host.
-     *
-     * @return Value of property host.
-     */
-    public String getHost() {
-        return _host;
-    }
-
-    /**
-     * Setter for property host.
-     *
-     * @param host New value of property host.
-     */
-    public void setHost(String host) {
-        _host = host;
-    }
-
-    /** Getter for property port.
-     * @return Value of property port.
-     */
-    public String getPort() {
-        return _port;
-    }
-
-    /** Setter for property port.
-     * @param port New value of property port.
-     */
-    public void setPort(String port) {
-        _port = port;
-    }
-
-    /**
-     * Getter for property proxy.
-     *
-     * @return Value of property proxy.
-     */
-    public Proxy getProxy() {
-        return _proxy;
-    }
-
-    /**
-     * Setter for property proxy.
-     *
-     * @param proxy New value of property proxy.
-     */
-    public void setProxy(Proxy proxy) {
-        _proxy = proxy;
-    }
-
-    /**
-     * Getter for property secure.
-     *
-     * @return Value of property secure.
-     */
-    public boolean isSecure() {
-        return _secure;
-    }
-
-    /**
-     * Setter for property secure.
-     *
-     * @param secure New value of property secure.
-     */
-    public void setSecure(boolean secure) {
-        _secure = secure;
-    }
-
-    /** Getter for property userAgent.
-     * @return Value of property userAgent.
-     */
-    public String getUserAgent() {
-        return _userAgent;
-    }
-
-    /** Setter for property userAgent.
-     * @param userAgent New value of property userAgent.
-     */
-    public void setUserAgent(String userAgent) {
-        _userAgent = userAgent;
-    }
-
-    /** Getter for property strictMode.
-     * @return Value of property strictMode.
-     */
-    public boolean isStrictMode() {
-        return _strictMode;
-    }
-
-    /** Setter for property strictMode.
-     * @param strictMode New value of property strictMode.
-     */
-    public void setStrictMode(boolean strictMode) {
-        _strictMode = strictMode;
-    }
-
-}
diff --git a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/package.html b/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/package.html
deleted file mode 100644
index 2f8297b..0000000
--- a/jelly-tags/http/src/java/org/apache/commons/jelly/tags/http/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A tag library for working with HTTP, performing HTTP GET, POST and other actions
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/http/src/test/org/apache/commons/jelly/google/defineTags.jelly b/jelly-tags/http/src/test/org/apache/commons/jelly/google/defineTags.jelly
deleted file mode 100644
index a9394a7..0000000
--- a/jelly-tags/http/src/test/org/apache/commons/jelly/google/defineTags.jelly
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<j:jelly xmlns:j="jelly:core" xmlns:define="jelly:define" xmlns:http="jelly:http">

-  <define:taglib uri="jelly:babelfish">  

-

-

-    <!-- defines the <search> tag  -->

-    <define:tag name="search">

-      <j:if test="${key == null}">

-          <j:set var="key" value="00000000000"/>

-      </j:if>      

-      <http:post url="http://www.google.com/soap">

-       <http:header name="SOAPAction" value="urn:GoogleSearch"/>

-       <http:header name="Content-Type" value="text/xml"/>

-       <http:body>

-        <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">

-          <SOAP-ENV:Body>

-            <ns1:doGoogleSearch xmlns:ns1="urn:GoogleSearch" 

-                 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

-              <key xsi:type="xsd:string">${googleKey}</key>

-              <q xsi:type="xsd:string">${query}</q>

-              <start xsi:type="xsd:int">0</start>

-              <maxResults xsi:type="xsd:int">10</maxResults>

-              <filter xsi:type="xsd:boolean">true</filter>

-              <restrict xsi:type="xsd:string"></restrict>

-              <safeSearch xsi:type="xsd:boolean">false</safeSearch>

-              <lr xsi:type="xsd:string"></lr>

-              <ie xsi:type="xsd:string">latin1</ie>

-              <oe xsi:type="xsd:string">latin1</oe>

-            </ns1:doGoogleSearch>

-          </SOAP-ENV:Body>

-        </SOAP-ENV:Envelope>

-       </http:body>

-      </http:post>

-    </define:tag>

-    

-  </define:taglib>    

-</j:jelly>

diff --git a/jelly-tags/http/src/test/org/apache/commons/jelly/google/search.jelly b/jelly-tags/http/src/test/org/apache/commons/jelly/google/search.jelly
deleted file mode 100644
index ef19bca..0000000
--- a/jelly-tags/http/src/test/org/apache/commons/jelly/google/search.jelly
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<j:jelly xmlns:j="jelly:core" xmlns:http="jelly:http">

-

-<http:post uri="http://api.google.com/search/beta2">

-<http:body>

-<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">

-  <SOAP-ENV:Body>

-    <ns1:doGoogleSearch xmlns:ns1="urn:GoogleSearch" 

-         SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

-      <key xsi:type="xsd:string">${googleKey}</key>

-      <q xsi:type="xsd:string">jelly java xml</q>

-      <start xsi:type="xsd:int">0</start>

-      <maxResults xsi:type="xsd:int">10</maxResults>

-      <filter xsi:type="xsd:boolean">true</filter>

-      <restrict xsi:type="xsd:string"></restrict>

-      <safeSearch xsi:type="xsd:boolean">false</safeSearch>

-      <lr xsi:type="xsd:string"></lr>

-      <ie xsi:type="xsd:string">latin1</ie>

-      <oe xsi:type="xsd:string">latin1</oe>

-    </ns1:doGoogleSearch>

-  </SOAP-ENV:Body>

-</SOAP-ENV:Envelope>

-</http:body>

-</http:post>

-

-</j:jelly>
\ No newline at end of file
diff --git a/jelly-tags/http/src/test/org/apache/commons/jelly/http/http.jelly b/jelly-tags/http/src/test/org/apache/commons/jelly/http/http.jelly
deleted file mode 100644
index 0e00635..0000000
--- a/jelly-tags/http/src/test/org/apache/commons/jelly/http/http.jelly
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<j:jelly

-    xmlns:j="jelly:core"

-    xmlns="jelly:http"

-    trim="false">

-    <!-- a session holds shared http state info -->

-    <session>

-Tests for Get tag

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

-        <get var="mtc" uri="http://www.multitask.com.au/"/>

-        <j:if test='${mtc.statusCode == 200}'>

-            request ok

-        </j:if>

-            Results for mtc url are:

-            http return code = ${mtc.statusCode}

-            http status text = '${mtc.statusText}'

-            size of result = ${mtc.responseBodyAsString.length()}

-            response time = ${mtc.responseTime}

-            

-        <j:forEach items="${mtc.responseHeaders}" var="header" indexVar="i">

-            header[${i}] = ${header}

-        </j:forEach>

-        

-        <!-- test parameters and headers -->

-        <get var="mtc2" uri="http://www.multitask.com.au/default.html">

-            <parameter name="page" value="mt @News"/>

-            <parameter name="page2" value="junk"/>

-            <header name="Content-Type" value="text/plain"/>

-        </get>

-        queryString = ${mtc2.queryString}, length = ${mtc2.responseBodyAsString.length()}

-        response time = ${mtc2.responseTime}

-        <j:forEach items="${mtc2.requestHeaders}" var="rHeader" indexVar="i">

-            reqHeader[${i}] = ${rHeader}

-        </j:forEach>

-        <!-- test a 404 -->

-        <get var="badurl" uri="http://www.multitask.com.au/snafu.html"/>

-        http return code = ${badurl.statusCode}

-        bad response time = ${badurl.responseTime} in msec

-Tests for Post tag

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

-        <post var="jdc" uri="http://developer.java.sun.com/servlet/SessionServlet">

-            <parameter name="action" value="login" />

-            <parameter name="url" value="/developer/index.jshtml" />

-            <parameter name="UserId" value="XXXX" />

-            <parameter name="Password" value="XXXX" />

-        </post>

-        jdc login result = ${jdc.statusCode}

-        good login = ${jdc.responseBodyAsString.indexOf("Sorry!") == "-1"}

-

-        jdc response time = ${jdc.responseTime} in msec

-        <j:forEach items="${jdc.responseHeaders}" var="header" indexVar="i">

-            jdc.header[${i}] = ${header}

-        </j:forEach>

-Tests for Head tag

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

-        <head var="jakarta" uri="http://jakarta.apache.org/"/>

-        <j:forEach items="${jakarta.responseHeaders}" var="header" indexVar="i">

-            header[${i}] = ${header}

-        </j:forEach>

-Tests for Options tag

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

-        <options var="ms" uri="http://www.microsoft.com/"/>

-        <j:forEach items="${ms.responseHeaders}" var="header" indexVar="i">

-            header[${i}] = ${header}

-        </j:forEach>

-Tests for Body tag

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

-        <j:set var="googleKey" value="00000000000000000000000000000000" />

-        <post var="google" uri="http://api.google.com/search/beta2">

-            <header name="Content-Type" value="text/xml"/>

-            <body>

-            <env:Envelope

-                xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"

-                xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 

-                xmlns:xsd="http://www.w3.org/1999/XMLSchema">

-              <env:Body>

-                <ns1:doGoogleSearch xmlns:ns1="urn:GoogleSearch"

-                     env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

-                  <ns1:key xsi:type="xsd:string">${googleKey}</ns1:key>

-                  <ns1:q xsi:type="xsd:string">jelly java xml</ns1:q>

-                  <ns1:start xsi:type="xsd:int">0</ns1:start>

-                  <ns1:maxResults xsi:type="xsd:int">10</ns1:maxResults>

-                  <ns1:filter xsi:type="xsd:boolean">true</ns1:filter>

-                  <ns1:restrict xsi:type="xsd:string"></ns1:restrict>

-                  <ns1:safeSearch xsi:type="xsd:boolean">false</ns1:safeSearch>

-                  <ns1:lr xsi:type="xsd:string"></ns1:lr>

-                  <ns1:ie xsi:type="xsd:string">latin1</ns1:ie>

-                  <ns1:oe xsi:type="xsd:string">latin1</ns1:oe>

-                </ns1:doGoogleSearch>

-              </env:Body>

-            </env:Envelope>

-            </body>

-        </post>

-        <j:forEach items="${google.requestHeaders}" var="rHeader" indexVar="i">

-            reqHeader[${i}] = ${rHeader}

-        </j:forEach>

-        google response = ${google.statusCode}, ${google.statusText}

-        ${google.responseBodyAsString}

-    </session>

-    

-    <session>

-Tests for Cookie tag

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

-        <post var="ph" uri="http://www.pizzahut.com.au/logon.do">

-            <parameter name="username" value="xxx"/>

-            <parameter name="password" value="xxx"/>

-            <parameter name="actionToDo" value="continue"/>

-            <parameter name="target" value="registration"/>

-        </post>

-        SC: ${ph.getResponseHeader("Set-Cookie")}

-        <!-- show how to dump cookie name/value pairse -->

-        <j:forEach items='${ph.getResponseHeader("Set-Cookie").values}'

-            var="element" indexVar="i">

-            element[${i}] = ${element}

-        </j:forEach>

-        

-    </session>

- 

-    <get var="nosessionBad" uri="http://www.multitask.com.au/snafu.html"/>

-    outside session get - ${nosessionBad.statusText}

-    <get var="nosessionGood" uri="http://www.multitask.com.au/"/>

-    outside session get good - ${nosessionGood.statusText}

-    

-</j:jelly>

diff --git a/jelly-tags/http/xdocs/changes.xml b/jelly-tags/http/xdocs/changes.xml
deleted file mode 100644
index 7d4de2c..0000000
--- a/jelly-tags/http/xdocs/changes.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.1-SNAPSHOT" date="in CVS">
-      <action dev="dion" type="add" issue="JELLY-59" due-to="Bill Keese">multi-part mime http request</action>
-      <action dev="dion" type="fix" issue="JELLY-96" due-to="Jason Horne">HttpClient cannot be specified in HttpSession</action>
-    </release>
-    <release version="1.0" date="2004-09-12"></release>
-  </body>
-</document>
diff --git a/jelly-tags/http/xdocs/index.xml b/jelly-tags/http/xdocs/index.xml
deleted file mode 100644
index cb91ddf..0000000
--- a/jelly-tags/http/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>HTTP Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A tag library for working with the HTTP protocol, performing HTTP GET, POST and other actions.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/http/xdocs/navigation.xml b/jelly-tags/http/xdocs/navigation.xml
deleted file mode 100644
index 7673af9..0000000
--- a/jelly-tags/http/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="HTTP Tag Library">
-
-  <title>HTTP Tag Library</title>
-  
-  <body>
-    <menu name="HTTP Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/interaction/.cvsignore b/jelly-tags/interaction/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/interaction/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/interaction/build.xml b/jelly-tags/interaction/build.xml
deleted file mode 100644
index c650bd4..0000000
--- a/jelly-tags/interaction/build.xml
+++ /dev/null
@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-interaction" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-interaction-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-interaction 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.interaction.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/interaction/maven.xml b/jelly-tags/interaction/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/interaction/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/interaction/project.properties b/jelly-tags/interaction/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/interaction/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/interaction/project.xml b/jelly-tags/interaction/project.xml
deleted file mode 100644
index 42f86d5..0000000
--- a/jelly-tags/interaction/project.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-interaction</id>
-  <name>commons-jelly-tags-interaction</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.interaction</package>
-  <description>This is a Jelly interface to the user.</description>
-  <shortDescription>Commons Jelly Interaction Tag Library</shortDescription>
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-INTERACTION-1_0</tag>
-    </version>
-  </versions>
-
-</project>
diff --git a/jelly-tags/interaction/src/java/org/apache/commons/jelly/tags/interaction/AskTag.java b/jelly-tags/interaction/src/java/org/apache/commons/jelly/tags/interaction/AskTag.java
deleted file mode 100644
index cb78f5f..0000000
--- a/jelly-tags/interaction/src/java/org/apache/commons/jelly/tags/interaction/AskTag.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.interaction;
-
-import java.io.InputStreamReader;
-import java.io.BufferedReader;
-import java.io.IOException;
-
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Jelly Tag that asks the user a question, and puts his answer into
- * a variable, with the attribute "answer".
- * This variable may be reused further as any other Jelly variable.
- * @author <a href="mailto:smor@hasgard.net">Stéphane Mor</a>
- */
-public class AskTag extends TagSupport
-{
-    /** The question to ask to the user */
-    private String question;
-
-    /**
-     * The variable in which we will stock the user's input.
-     * This defaults to "interact.answer".
-     */
-    private String answer = "interact.answer";
-
-    /** The default value, if the user doesn't answer */
-    private String defaultInput;
-
-    /** The user's input */
-    private String input = "";
-
-    /** The prompt to display before the user input */
-    private String prompt = ">";
-
-    /**
-     * Sets the question to ask to the user. If a "default" attribute
-     * is present, it will appear inside [].
-     * @param question The question to ask to the user
-     */
-    public void setQuestion(String question)
-    {
-        this.question = question;
-    }
-
-    /**
-     * Sets the name of the variable that will hold the answer
-     * This defaults to "interact.answer".
-     * @param answer the name of the variable that will hold the answer
-     */
-    public void setAnswer(String answer)
-    {
-        this.answer = answer;
-    }
-
-    /**
-     * Sets the default answer to the question.
-     * If it is present, it will appear inside [].
-     * @param default the default answer to the question
-     */
-    public void setDefault(String defaultInput)
-    {
-        this.defaultInput = defaultInput;
-    }
-
-    /**
-     * Sets the prompt that will be displayed before the user's input.
-     * @param promt the prompt that will be displayed before the user's input.
-     */
-    public void setPrompt(String prompt)
-    {
-        this.prompt = prompt;
-    }
-
-
-    /**
-     * Perform functionality provided by the tag
-     * @param output the place to write output
-     */
-    public void doTag(XMLOutput output)
-    {
-        if (question != null)
-        {
-            if (defaultInput != null)
-            {
-                System.out.println(question + " [" + defaultInput + "]");
-            }
-            else
-            {
-                System.out.println(question);
-            }
-            // The prompt should be just before the user's input,
-            // but it doesn't work ...
-            //System.out.print(prompt + " ");
-        }
-
-        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
-
-        try {
-            input = br.readLine();
-            if (defaultInput != null && input.trim().equals(""))
-            {
-                input = defaultInput;
-            }
-        } catch (IOException ioe) {
-        }
-        context.setVariable(answer, input);
-    }
-}
diff --git a/jelly-tags/interaction/src/java/org/apache/commons/jelly/tags/interaction/InteractionTagLibrary.java b/jelly-tags/interaction/src/java/org/apache/commons/jelly/tags/interaction/InteractionTagLibrary.java
deleted file mode 100644
index 77172de..0000000
--- a/jelly-tags/interaction/src/java/org/apache/commons/jelly/tags/interaction/InteractionTagLibrary.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.interaction;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/**
-  * A TagLibrary to interact with the user.
-  * @author <a href="mailto:smor@hasgard.net">Stéphane MOR</a>
-  */
-public class InteractionTagLibrary extends TagLibrary {
-
-    /**
-     * Registers all the Tags.
-     */
-    public InteractionTagLibrary() {
-        registerTag("ask", AskTag.class);
-    }
-
-}
diff --git a/jelly-tags/interaction/src/java/org/apache/commons/jelly/tags/interaction/package.html b/jelly-tags/interaction/src/java/org/apache/commons/jelly/tags/interaction/package.html
deleted file mode 100644
index 0b00b90..0000000
--- a/jelly-tags/interaction/src/java/org/apache/commons/jelly/tags/interaction/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A simple interaction tag library so that Jelly scripts can be interactive.
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/interaction/src/test/org/apache/commons/jelly/tags/interaction/sample.jelly b/jelly-tags/interaction/src/test/org/apache/commons/jelly/tags/interaction/sample.jelly
deleted file mode 100644
index c777a67..0000000
--- a/jelly-tags/interaction/src/test/org/apache/commons/jelly/tags/interaction/sample.jelly
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core" xmlns:interaction="jelly:interaction">
-
-    <!-- some sample scripts would be a good idea -->
-
-</jelly>
\ No newline at end of file
diff --git a/jelly-tags/interaction/xdocs/changes.xml b/jelly-tags/interaction/xdocs/changes.xml
deleted file mode 100644
index e030810..0000000
--- a/jelly-tags/interaction/xdocs/changes.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-12"></release>
-  </body>
-</document>
diff --git a/jelly-tags/interaction/xdocs/index.xml b/jelly-tags/interaction/xdocs/index.xml
deleted file mode 100644
index 8f2af73..0000000
--- a/jelly-tags/interaction/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Interaction Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A tag library so that Jelly scripts can request input form the console.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/interaction/xdocs/navigation.xml b/jelly-tags/interaction/xdocs/navigation.xml
deleted file mode 100644
index e05c0db..0000000
--- a/jelly-tags/interaction/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Interaction Tag Library">
-
-  <title>Interaction Tag Library</title>
-  
-  <body>
-    <menu name="Interaction Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/jaxme/.cvsignore b/jelly-tags/jaxme/.cvsignore
deleted file mode 100644
index 5d1977c..0000000
--- a/jelly-tags/jaxme/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-target
-*.log
diff --git a/jelly-tags/jaxme/build.xml b/jelly-tags/jaxme/build.xml
deleted file mode 100644
index c9221bb..0000000
--- a/jelly-tags/jaxme/build.xml
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 0.1
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-jaxme" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-jaxme-0.1">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.xml">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/*TestCase.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2004-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-jaxme 0.1 API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.jaxme.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/jaxme-0.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxme/jars/jaxme-0.2.jar">
-    </get>
-    <get dest="${libdir}/jaxme-js-0.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxme/jars/jaxme-js-0.2.jar">
-    </get>
-    <get dest="${libdir}/jaxme-xs-0.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxme/jars/jaxme-xs-0.2.jar">
-    </get>
-    <get dest="${libdir}/jaxme-api-0.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxme/jars/jaxme-api-0.2.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-xmlunit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-xmlunit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-xml-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-xml-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xmlunit-0.8.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xmlunit/jars/xmlunit-0.8.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/jaxme/maven.xml b/jelly-tags/jaxme/maven.xml
deleted file mode 100644
index 71b2be2..0000000
--- a/jelly-tags/jaxme/maven.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version='1.0'?>
-<!--
-  Copyright 2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project 
-    default='dist'
-    xmlns:j='jelly:core'>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/jaxme/project.properties b/jelly-tags/jaxme/project.properties
deleted file mode 100644
index 4ca5fa8..0000000
--- a/jelly-tags/jaxme/project.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###
-#  Copyright 2004 The Apache Software Foundation.
-#  
-#  Licensed under the Apache License, Version 2.0 (the "License");
-#  you may not use this file except in compliance with the License.
-#  You may obtain a copy of the License at
-#  
-#       http://www.apache.org/licenses/LICENSE-2.0
-#  
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-###
-
-maven.repo.remote=http://www.ibiblio.org/maven
diff --git a/jelly-tags/jaxme/project.xml b/jelly-tags/jaxme/project.xml
deleted file mode 100644
index 7047e64..0000000
--- a/jelly-tags/jaxme/project.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright 2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <pomVersion>3</pomVersion>
-  <id>commons-jelly-tags-jaxme</id>
-  <name>commons-jelly-tags-jaxme</name>
-  <currentVersion>1.0</currentVersion>
-  <inceptionYear>2004</inceptionYear>
-  <package>org.apache.commons.jelly.tags.jaxme</package>
-  <logo/>
-  <description>JaxMe Tag Library. Apache JaxMe is an open source generative xml-object binder. Tags are provided that generate java objects from schema using JaxMe and that will marshall and unmarshall any JAXB complient implementations.</description>
-  <shortDescription>JaxMe Tag Library</shortDescription>
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-JAXME-1_0</tag>
-    </version>
-  </versions>
-  <dependencies>
-    <dependency>
-      <id>commons-logging</id>
-      <version>1.0.3</version>
-    </dependency>
-    <!-- TODO: These versions probably want updating -->
-    <dependency>
-      <artifactId>jaxme</artifactId>
-      <groupId>jaxme</groupId>
-      <version>0.2</version>
-      <properties>
-        <gump.project>ws-jaxme</gump.project>
-        <gump.id>jaxme2</gump.id>
-      </properties>
-    </dependency>
-    <dependency>
-      <artifactId>jaxme-js</artifactId>
-      <groupId>jaxme</groupId>
-      <version>0.2</version>
-      <properties>
-        <gump.project>ws-jaxme</gump.project>
-        <gump.id>js</gump.id>
-      </properties>
-    </dependency>
-    <dependency>
-      <artifactId>jaxme-xs</artifactId>
-      <groupId>jaxme</groupId>
-      <version>0.2</version>
-      <properties>
-        <gump.project>ws-jaxme</gump.project>
-        <gump.id>xs</gump.id>
-      </properties>
-    </dependency>
-    <dependency>
-      <artifactId>jaxme-api</artifactId>
-      <groupId>jaxme</groupId>
-      <version>0.2</version>
-      <properties>
-        <gump.project>ws-jaxme</gump.project>
-        <gump.id>api</gump.id>
-      </properties>
-    </dependency>
-    <dependency>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <groupId>commons-jelly</groupId>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <artifactId>commons-jelly-tags-xmlunit</artifactId>
-      <groupId>commons-jelly</groupId>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <artifactId>commons-jelly-tags-xml</artifactId>
-      <groupId>commons-jelly</groupId>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <artifactId>xmlunit</artifactId>
-      <groupId>xmlunit</groupId>
-      <version>0.8</version>
-    </dependency>
-  </dependencies>
-  <build>
-    <sourceDirectory>src/java</sourceDirectory>
-    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
-    <unitTest>
-      <includes>
-        <include>**/*TestCase.java</include>
-      </includes>
-    </unitTest>
-    <resources>
-      <resource>
-        <directory>src/test</directory>
-        <includes>
-          <include>**/*.jelly</include>
-          <include>**/*.properties</include>
-          <include>**/*.xml</include>
-        </includes>
-      </resource>
-    </resources>
-  </build>
-</project>
diff --git a/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/GeneratorTag.java b/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/GeneratorTag.java
deleted file mode 100644
index 2d2407a..0000000
--- a/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/GeneratorTag.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.commons.jelly.tags.jaxme;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.JellyTagException;
-
-import org.apache.ws.jaxme.generator.Generator;
-import org.apache.ws.jaxme.generator.SchemaReader;
-import org.apache.ws.jaxme.generator.sg.impl.JAXBSchemaReader;
-import org.apache.ws.jaxme.generator.sg.SchemaSG;
-import org.apache.ws.jaxme.generator.impl.GeneratorImpl;
-import org.apache.ws.jaxme.js.JavaSourceFactory;
-
-/** 
- * Generates java objects using JaxMe.
- * This object can be marshalled into xml and the results unmarshalled 
- * using JaxMe.
- *
- * @author <a href="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
- * @author <a href="mailto:commons-dev at jakarta.apache.org">Jakarta Commons Development Team</a>
- * @version $Revision: 1.2 $
- */
-public class GeneratorTag extends TagSupport {
-        
-    private String schemaUrl;
-    private String target;
-    
-    public String getSchemaUrl() {
-        return schemaUrl;
-    }
-        
-    /**
-     * Defines the schema against which the java object representations
-     * should be generated.
-     */
-    public void setSchemaUrl(String schemaUrl) {
-        this.schemaUrl = schemaUrl;
-    }
-    
-    public String getTarget() {
-        return target;
-    }
-    
-    /**
-     * Defines the target directory into which 
-     * the generated objects will be placed.
-     */
-    public void setTarget(String target) {
-        this.target = target;
-    }
-    
-        
-    private File getSchemaFile() throws JellyTagException {
-        return new File(schemaUrl);
-    }
-    
-    private File getTargetDirectory() throws JellyTagException {
-        return new File(target);
-    }
-    
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-    
-        if (schemaUrl == null) {
-            throw new MissingAttributeException( "schemaUrl" );
-        }
-        
-        if (target == null) {
-            throw new MissingAttributeException( "target" );
-        }    
-        
-        
-        
-        Generator generator = new GeneratorImpl();
-        
-        JAXBSchemaReader reader = new JAXBSchemaReader();
-        generator.setSchemaReader(reader);
-        reader.setGenerator(generator);
-        generator.setTargetDirectory(getTargetDirectory());
-        
-        System.out.println("Target: " + getTargetDirectory());
-        
-        try
-        {
-            SchemaSG schemaSG = generator.generate(getSchemaFile());
-        }
-        catch (Exception e) 
-        {
-            throw new JellyTagException(e);
-        }
-    }
-}
diff --git a/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/JaxMeTagLibrary.java b/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/JaxMeTagLibrary.java
deleted file mode 100644
index 4e1d378..0000000
--- a/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/JaxMeTagLibrary.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.commons.jelly.tags.jaxme;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/** 
- * <a href='http://java.sun.com/xml/jaxb/'>JAXB</a> tag library 
- * using the <a href='http://ws.apache.org/jaxme'>Apache JaxMe</a> implementation.
- * The marshalling and unmarshalling tags should work with any JAXB implementation.
- * The generation tag is JaxMe specific.
- *
- * @author <a href="mailto:commons-dev at jakarta.apache.org">Jakarta Commons Development Team</a>
- * @version $Revision: 1.2 $
- */
-public class JaxMeTagLibrary extends TagLibrary {
-        
-    public JaxMeTagLibrary() {
-        registerTag( "generator", GeneratorTag.class );
-        registerTag( "marshall", MarshallTag.class );
-        registerTag( "unmarshall", UnmarshallTag.class );
-    }
-}
diff --git a/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/MarshallTag.java b/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/MarshallTag.java
deleted file mode 100644
index 3e06b7b..0000000
--- a/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/MarshallTag.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.commons.jelly.tags.jaxme;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.JellyTagException;
-
-import org.xml.sax.SAXException;
-
-/** 
- * <p>Marshalls a generated object generated by a JAXB implementation into xml.</p>
- * <p>
- * The result is placed into the processed content for further processing by enclosing 
- * tags.</p>
- *
- * @author <a href="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
- * @author <a href="mailto:commons-dev at jakarta.apache.org">Jakarta Commons Development Team</a>
- * @version $Revision: 1.2 $
- */
-public class MarshallTag extends TagSupport {
-        
-    private String packages;
-    private Object object;
-    
-    public String getPackages() {
-        return packages;
-    }
-    
-    /**
-     * Defines the generated objects which will be marshalled by specifying the package name.
-     */
-    public void setPackages(String packages) {
-        this.packages = packages;
-    }
-    
-    public Object getObject() {
-        return object;
-    }
-    
-    /** 
-     * Defines the object to be unmarshalled into xml by specifying a jelly variable name.
-     */
-    public void setObject(Object object) {
-        this.object = object;
-    }
-    
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (packages == null) {
-            throw new MissingAttributeException( "packages" );
-        }
-        if (object == null) {
-            throw new MissingAttributeException( "object" );
-        }
-        try {   
-
-            JAXBContext jaxbContext = JAXBContext.newInstance(packages);
-            Marshaller marshaller = jaxbContext.createMarshaller();
-            marshaller.marshal(object, output);
-            
-        } catch (JAXBException ex)  {
-            throw new JellyTagException(ex);
-        }
-    }
-}
diff --git a/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/UnmarshallTag.java b/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/UnmarshallTag.java
deleted file mode 100644
index 0604722..0000000
--- a/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/UnmarshallTag.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.commons.jelly.tags.jaxme;
-
-import java.io.File;
-import java.io.IOException;
-
-import javax.xml.bind.UnmarshallerHandler;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.JAXBContext;
-
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.JellyTagException;
-
-import org.apache.ws.jaxme.generator.Generator;
-import org.apache.ws.jaxme.generator.SchemaReader;
-import org.apache.ws.jaxme.generator.sg.impl.JAXBSchemaReader;
-import org.apache.ws.jaxme.generator.sg.SchemaSG;
-import org.apache.ws.jaxme.generator.impl.GeneratorImpl;
-
-import org.xml.sax.SAXException;
-
-/** 
- * <p>Unmarshalls xml documents into java objects.</p>
- * <p>
- * This tag unmarshalls the xml content contained 
- * into the JaxMe generated java objects in the packages specified.
- * </p>
- *
- * @author <a href="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
- * @author <a href="mailto:commons-dev at jakarta.apache.org">Jakarta Commons Development Team</a>
- * @version $Revision: 1.2 $
- */
-public class UnmarshallTag extends TagSupport {
-       
-    private String packages;
-    private String var;
-    
-    public String getPackages() {
-        return packages;
-    }
-    
-    /**
-     * Defines the generated objects to which the xml should be unmarshalled. 
-     */
-    public void setPackages(String packages) {
-        this.packages = packages;
-    }
-    
-    public String getVar() {
-        return var;
-    }
-    
-    /**
-     * Sets the name of the jelly variable to which 
-     * the unmarshalled java object should be bound.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-    
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (packages == null) {
-            throw new MissingAttributeException( "packages" );
-        }
-        if ( var == null ) {
-            throw new MissingAttributeException( "var" );
-        }
-        try {   
-
-            JAXBContext jaxbContext = JAXBContext.newInstance(packages);
-            Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-            UnmarshallerHandler handler = unmarshaller.getUnmarshallerHandler();
-            
-            handler.startDocument();
-            
-            XMLOutput newOutput = new XMLOutput( handler );
-            
-            invokeBody(newOutput);
-            handler.endDocument();
-            
-            Object result = handler.getResult();
-            context.setVariable( var, result );
-            
-        } catch (JAXBException ex)  {
-            throw new JellyTagException(ex);
-        } catch (SAXException ex) {
-            throw new JellyTagException(ex);
-        }
-        
-    }
-}
diff --git a/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/package.html b/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/package.html
deleted file mode 100644
index f76e54c..0000000
--- a/jelly-tags/jaxme/src/java/org/apache/commons/jelly/tags/jaxme/package.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A <a href='http://java.sun.com/xml/jaxb/'>JAXB</a> tag library using the 
-  <a href='http://ws.apache.org/jaxme'>Apache JaxMe</a> implementation.
-  Tags are provided for marshalling java objects into xml 
-  and unmarshalling xml into java objects which will work with any JAXB implementation.
-  The generation tag generates java objects which can be marshalled and unmarshalled by
-  JaxMe and are specific to that implementation.
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/jaxme/src/test/org/apache/commons/jelly/tags/jaxme/ExecutionTestCase.java b/jelly-tags/jaxme/src/test/org/apache/commons/jelly/tags/jaxme/ExecutionTestCase.java
deleted file mode 100644
index ef9e78d..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/commons/jelly/tags/jaxme/ExecutionTestCase.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*      http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.commons.jelly.tags.jaxme;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-import junit.framework.TestSuite;
-
-/**
- *
- *
- * @author <a href="mailto:commons-dev at jakarta.apache.org">Jakarta Commons Development Team</a>
- * @version $Revision: 1.2 $
- */
-public class ExecutionTestCase extends JellyTestSuite {
-
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(ExecutionTestCase.class, "suite.jelly");
-    }
-}
-
diff --git a/jelly-tags/jaxme/src/test/org/apache/commons/jelly/tags/jaxme/address.xsd b/jelly-tags/jaxme/src/test/org/apache/commons/jelly/tags/jaxme/address.xsd
deleted file mode 100644
index 22aaa0a..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/commons/jelly/tags/jaxme/address.xsd
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<xs:schema
-    xmlns:xs="http://www.w3.org/2001/XMLSchema"
-    xml:lang="EN"
-    targetNamespace="http://ws.apache.org/jaxme/examples/misc/address"
-    elementFormDefault="qualified"
-    attributeFormDefault="unqualified">
-  <xs:element name="Address">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element name="Name">
-          <xs:annotation><xs:documentation>
-              A name consists of two required (first and last name)
-              and two optional parts (middle name and initials).
-          </xs:documentation></xs:annotation>
-          <xs:complexType>
-            <xs:sequence>
-              <xs:element name="First" type="xs:string"/>
-              <xs:element name="Middle" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
-              <xs:element name="Last" type="xs:string"/>
-              <xs:element name="Initials" minOccurs="0" type="xs:string"/>
-            </xs:sequence>
-          </xs:complexType>
-        </xs:element>
-      </xs:sequence>
-      <xs:attribute name="id"/>
-    </xs:complexType>
-  </xs:element>
-</xs:schema>
diff --git a/jelly-tags/jaxme/src/test/org/apache/commons/jelly/tags/jaxme/suite.jelly b/jelly-tags/jaxme/src/test/org/apache/commons/jelly/tags/jaxme/suite.jelly
deleted file mode 100644
index c7fff97..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/commons/jelly/tags/jaxme/suite.jelly
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite 
-        xmlns:j="jelly:core" 
-        xmlns:test="jelly:junit" 
-        xmlns:jaxme="jelly:org.apache.commons.jelly.tags.jaxme.JaxMeTagLibrary"
-        xmlns:xmlunit='jelly:xmlunit'>
-
-    <!--
-    <test:case name='generate-address'>
-        <jaxme:generator 
-                    schemaUrl='src/test/org/apache/commons/jelly/tags/jaxme/address.xsd' 
-                    target='out'/>        
-    </test:case>
-    -->
-
-    <test:case name='marshall-empty-address'>
-        <j:new className='org.apache.ws.jaxme.examples.misc.address.impl.AddressImpl' var='address'/>
-        <xmlunit:assertDocumentsEqual>
-            <xmlunit:actual>
-                <jaxme:marshall 
-                    object='${address}' 
-                    packages='org.apache.ws.jaxme.examples.misc.address'/>
-            </xmlunit:actual>
-            <xmlunit:expected>
-                <Address xmlns="http://ws.apache.org/jaxme/examples/misc/address"/>
-            </xmlunit:expected>
-        </xmlunit:assertDocumentsEqual>
-    </test:case>
-    
-    <test:case name='unmarshall-empty-address'>
-        <jaxme:unmarshall 
-            var='address' 
-            packages='org.apache.ws.jaxme.examples.misc.address'>
-            <Address xmlns="http://ws.apache.org/jaxme/examples/misc/address"/>
-        </jaxme:unmarshall>
-    </test:case>
-
-</test:suite>
diff --git a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/Address.java b/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/Address.java
deleted file mode 100644
index 2de6fc0..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/Address.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.ws.jaxme.examples.misc.address;
-
-public interface Address extends javax.xml.bind.Element , org.apache.ws.jaxme.examples.misc.address.AddressType {
-}
diff --git a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/AddressType.java b/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/AddressType.java
deleted file mode 100644
index 8a3864c..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/AddressType.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.ws.jaxme.examples.misc.address;
-
-public interface AddressType {
-  public interface NameType {
-    
-  
-  
-    public java.lang.String getFirst();
-  
-    public void setFirst(java.lang.String pFirst);
-  
-    public java.util.List getMiddle();
-  
-    public java.lang.String getLast();
-  
-    public void setLast(java.lang.String pLast);
-  
-    public java.lang.String getInitials();
-  
-    public void setInitials(java.lang.String pInitials);
-  
-  }
-
-  public java.lang.String getId();
-
-  public void setId(java.lang.String pId);
-
-  public org.apache.ws.jaxme.examples.misc.address.AddressType.NameType getName();
-
-  public void setName(org.apache.ws.jaxme.examples.misc.address.AddressType.NameType pName);
-
-}
diff --git a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/Configuration.xml b/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/Configuration.xml
deleted file mode 100644
index a605f6d..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/Configuration.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- Copyright 2004 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- 
-      http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<Configuration xmlns="http://ws.apache.org/jaxme/namespaces/jaxme2/configuration"><Manager validatorClass="org.apache.ws.jaxme.examples.misc.address.impl.AddressTypeValidator" qName="{http://ws.apache.org/jaxme/examples/misc/address}Address" marshallerClass="org.apache.ws.jaxme.examples.misc.address.impl.AddressTypeSerializer" handlerClass="org.apache.ws.jaxme.examples.misc.address.impl.AddressHandler" elementInterface="org.apache.ws.jaxme.examples.misc.address.Address" elementClass="org.apache.ws.jaxme.examples.misc.address.impl.AddressImpl"/></Configuration>
\ No newline at end of file
diff --git a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/ObjectFactory.java b/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/ObjectFactory.java
deleted file mode 100644
index 7cfa10a..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/ObjectFactory.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.ws.jaxme.examples.misc.address;
-
-public class ObjectFactory {
-  private org.apache.ws.jaxme.impl.JAXBContextImpl jaxbContext;
-
-  private java.util.Map properties;
-
-
-  public ObjectFactory() throws javax.xml.bind.JAXBException {
-    jaxbContext = (org.apache.ws.jaxme.impl.JAXBContextImpl) javax.xml.bind.JAXBContext.newInstance("org.apache.ws.jaxme.examples.misc.address");
-  }
-
-  public java.lang.Object newInstance(java.lang.Class pElementInterface) throws javax.xml.bind.JAXBException {
-    return jaxbContext.getElement(pElementInterface);
-  }
-
-  public java.lang.Object getProperty(java.lang.String pName) {
-    if (properties == null) {
-      return null;
-    }
-    return properties.get(pName);
-  }
-
-  public void setProperty(java.lang.String pName, java.lang.Object pValue) {
-    if (properties == null) {
-      properties = new java.util.HashMap();
-    }
-    properties.put(pName, pValue);
-  }
-
-  public org.apache.ws.jaxme.examples.misc.address.Address createAddress() throws javax.xml.bind.JAXBException {
-    return (org.apache.ws.jaxme.examples.misc.address.Address) newInstance(org.apache.ws.jaxme.examples.misc.address.Address.class);
-  }
-
-  public org.apache.ws.jaxme.examples.misc.address.AddressType createAddressType() throws javax.xml.bind.JAXBException {
-    return (org.apache.ws.jaxme.examples.misc.address.AddressType) newInstance(org.apache.ws.jaxme.examples.misc.address.AddressType.class);
-  }
-
-}
diff --git a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressHandler.java b/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressHandler.java
deleted file mode 100644
index ec8cfc5..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressHandler.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.ws.jaxme.examples.misc.address.impl;
-
-public class AddressHandler extends org.apache.ws.jaxme.examples.misc.address.impl.AddressTypeHandler implements org.apache.ws.jaxme.JMHandler {
-  protected org.apache.ws.jaxme.examples.misc.address.AddressType newResult() throws org.xml.sax.SAXException {
-    try {
-      return (org.apache.ws.jaxme.examples.misc.address.AddressType) getData().getFactory().getElement(org.apache.ws.jaxme.examples.misc.address.Address.class);
-    } catch (javax.xml.bind.JAXBException _1) {
-      throw new org.xml.sax.SAXException(_1);
-    }
-  }
-
-}
diff --git a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressImpl.java b/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressImpl.java
deleted file mode 100644
index c5d09ca..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressImpl.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.ws.jaxme.examples.misc.address.impl;
-
-public class AddressImpl extends org.apache.ws.jaxme.examples.misc.address.impl.AddressTypeImpl implements org.apache.ws.jaxme.examples.misc.address.Address , org.apache.ws.jaxme.JMElement {
-  private final static javax.xml.namespace.QName __qName = new javax.xml.namespace.QName("http://ws.apache.org/jaxme/examples/misc/address", "Address");
-
-
-  public javax.xml.namespace.QName getQName() {
-    return __qName;
-  }
-
-}
diff --git a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressTypeHandler.java b/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressTypeHandler.java
deleted file mode 100644
index d205afa..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressTypeHandler.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.ws.jaxme.examples.misc.address.impl;
-
-public class AddressTypeHandler extends org.apache.ws.jaxme.impl.JMHandlerImpl {
-  public static class NameTypeHandler extends org.apache.ws.jaxme.impl.JMHandlerImpl {
-    /** The current level of nested elements. 0, if outside the root element.
-     * 
-     */
-    private int __level;
-  
-    /** The current state. The following values are valid states:
-     *  0 = Before parsing the element
-     *  1 = Parsing an unknown element
-     *  2 = After parsing the element
-     *  3 = While parsing the child element {http://ws.apache.org/jaxme/examples/misc/address}First
-     *  4 = While parsing the child element {http://ws.apache.org/jaxme/examples/misc/address}Middle
-     *  5 = While parsing the child element {http://ws.apache.org/jaxme/examples/misc/address}Last
-     *  6 = While parsing the child element {http://ws.apache.org/jaxme/examples/misc/address}Initials
-     * 
-     */
-    private int __state;
-  
-    /** The current handler for parsing child elements or simple content.
-     * 
-     */
-    private org.apache.ws.jaxme.JMHandler __handler;
-  
-  
-    public void startDocument() throws org.xml.sax.SAXException {
-      __level = 0;
-      __state = 0;
-      __state = 0;
-      __handler = null;
-    }
-  
-    protected org.apache.ws.jaxme.examples.misc.address.AddressType.NameType newResult() throws org.xml.sax.SAXException {
-      return new org.apache.ws.jaxme.examples.misc.address.impl.AddressTypeImpl.NameTypeImpl();
-    }
-  
-    public void startElement(java.lang.String pNamespaceURI, java.lang.String pLocalName, java.lang.String pQName, org.xml.sax.Attributes pAttr) throws org.xml.sax.SAXException {
-      switch (__level++) {
-        case 0:
-          setResult(newResult());
-          if (pAttr != null) {
-            for (int _1 = 0;  _1 < pAttr.getLength();  _1++) {
-              super.addAttribute(pAttr.getURI(_1), pAttr.getLocalName(_1), pAttr.getValue(_1));
-            }
-          }
-          break;
-        case 1:
-          if ("http://ws.apache.org/jaxme/examples/misc/address".equals(pNamespaceURI)) {
-            if ("First".equals(pLocalName)) {
-              switch (__state) {
-                case 0:
-                  __state = 3;
-                  __handler = getData().getAtomicHandler();
-                  __handler.startDocument();
-                  __handler.startElement(pNamespaceURI, pLocalName, pQName, pAttr);
-                  break;
-                default:
-                  validationEvent(javax.xml.bind.ValidationEvent.WARNING, "The element " + pQName + " was unexpected at this place.", org.apache.ws.jaxme.ValidationEvents.EVENT_UNEXPECTED_CHILD_STATE);
-                  break;
-              }
-            } else if ("Middle".equals(pLocalName)) {
-              switch (__state) {
-                case 3:
-                case 4:
-                  __state = 4;
-                  __handler = getData().getAtomicHandler();
-                  __handler.startDocument();
-                  __handler.startElement(pNamespaceURI, pLocalName, pQName, pAttr);
-                  break;
-                default:
-                  validationEvent(javax.xml.bind.ValidationEvent.WARNING, "The element " + pQName + " was unexpected at this place.", org.apache.ws.jaxme.ValidationEvents.EVENT_UNEXPECTED_CHILD_STATE);
-                  break;
-              }
-            } else if ("Last".equals(pLocalName)) {
-              switch (__state) {
-                case 3:
-                case 4:
-                  __state = 5;
-                  __handler = getData().getAtomicHandler();
-                  __handler.startDocument();
-                  __handler.startElement(pNamespaceURI, pLocalName, pQName, pAttr);
-                  break;
-                default:
-                  validationEvent(javax.xml.bind.ValidationEvent.WARNING, "The element " + pQName + " was unexpected at this place.", org.apache.ws.jaxme.ValidationEvents.EVENT_UNEXPECTED_CHILD_STATE);
-                  break;
-              }
-            } else if ("Initials".equals(pLocalName)) {
-              switch (__state) {
-                case 5:
-                  __state = 6;
-                  __handler = getData().getAtomicHandler();
-                  __handler.startDocument();
-                  __handler.startElement(pNamespaceURI, pLocalName, pQName, pAttr);
-                  break;
-                default:
-                  validationEvent(javax.xml.bind.ValidationEvent.WARNING, "The element " + pQName + " was unexpected at this place.", org.apache.ws.jaxme.ValidationEvents.EVENT_UNEXPECTED_CHILD_STATE);
-                  break;
-              }
-            }
-          }
-          break;
-        default:
-          if (__handler == null) {
-            super.startElement(pNamespaceURI, pLocalName, pQName, pAttr);
-          } else {
-            __handler.startElement(pNamespaceURI, pLocalName, pQName, pAttr);
-          }
-      }
-    }
-  
-    public void endElement(java.lang.String pNamespaceURI, java.lang.String pLocalName, java.lang.String pQName) throws org.xml.sax.SAXException {
-      if (__handler == null) {
-        if (__level > 1) {
-          super.endElement(pNamespaceURI, pLocalName, pQName);
-        }
-      } else {
-        __handler.endElement(pNamespaceURI, pLocalName, pQName);
-      }
-      switch (--__level) {
-        case 0:
-          break;
-        case 1:
-          org.apache.ws.jaxme.examples.misc.address.AddressType.NameType _1 = (org.apache.ws.jaxme.examples.misc.address.AddressType.NameType) getResult();
-          switch (__state) {
-            case 3:
-              if (__handler != null) {
-                __handler.endDocument();
-              }
-              _1.setFirst(((java.lang.String) __handler.getResult()));
-              break;
-            case 4:
-              if (__handler != null) {
-                __handler.endDocument();
-              }
-              _1.getMiddle().add(__handler.getResult());
-              break;
-            case 5:
-              if (__handler != null) {
-                __handler.endDocument();
-              }
-              _1.setLast(((java.lang.String) __handler.getResult()));
-              break;
-            case 6:
-              if (__handler != null) {
-                __handler.endDocument();
-              }
-              _1.setInitials(((java.lang.String) __handler.getResult()));
-              break;
-            default:
-              throw new java.lang.IllegalStateException("Illegal state: " + __state);
-          }
-      }
-    }
-  
-    public void characters(char[] pChars, int pOffset, int pLen) throws org.xml.sax.SAXException {
-      if (__handler == null) {
-        super.characters(pChars, pOffset, pLen);
-      } else {
-        __handler.characters(pChars, pOffset, pLen);
-      }
-    }
-  
-  }
-
-  /** The current level of nested elements. 0, if outside the root element.
-   * 
-   */
-  private int __level;
-
-  /** The current state. The following values are valid states:
-   *  0 = Before parsing the element
-   *  1 = Parsing an unknown element
-   *  2 = After parsing the element
-   *  3 = While parsing the child element {http://ws.apache.org/jaxme/examples/misc/address}Name
-   * 
-   */
-  private int __state;
-
-  /** The current handler for parsing child elements or simple content.
-   * 
-   */
-  private org.apache.ws.jaxme.JMHandler __handler;
-
-  private org.apache.ws.jaxme.JMHandler __handler_Name;
-
-
-  public void startDocument() throws org.xml.sax.SAXException {
-    __level = 0;
-    __state = 0;
-    __state = 0;
-    __handler = null;
-  }
-
-  public void addAttribute(java.lang.String pURI, java.lang.String pLocalName, java.lang.String pValue) throws org.xml.sax.SAXException {
-    if (pURI == null) {
-      pURI = "";
-    }
-    org.apache.ws.jaxme.examples.misc.address.AddressType _1 = (org.apache.ws.jaxme.examples.misc.address.AddressType) getResult();
-    if ("".equals(pURI)) {
-      if ("id".equals(pLocalName)) {
-        _1.setId(pValue);
-        return;
-      }
-    }
-    super.addAttribute(pURI, pLocalName, pValue);
-  }
-
-  protected org.apache.ws.jaxme.examples.misc.address.AddressType newResult() throws org.xml.sax.SAXException {
-    try {
-      return (org.apache.ws.jaxme.examples.misc.address.AddressType) getData().getFactory().getElement(org.apache.ws.jaxme.examples.misc.address.AddressType.class);
-    } catch (javax.xml.bind.JAXBException _1) {
-      throw new org.xml.sax.SAXException(_1);
-    }
-  }
-
-  public void startElement(java.lang.String pNamespaceURI, java.lang.String pLocalName, java.lang.String pQName, org.xml.sax.Attributes pAttr) throws org.xml.sax.SAXException {
-    switch (__level++) {
-      case 0:
-        setResult(newResult());
-        if (pAttr != null) {
-          for (int _1 = 0;  _1 < pAttr.getLength();  _1++) {
-            addAttribute(pAttr.getURI(_1), pAttr.getLocalName(_1), pAttr.getValue(_1));
-          }
-        }
-        break;
-      case 1:
-        if ("http://ws.apache.org/jaxme/examples/misc/address".equals(pNamespaceURI)) {
-          if ("Name".equals(pLocalName)) {
-            switch (__state) {
-              case 0:
-                __state = 3;
-                __handler = getHandlerForName();
-                __handler.startDocument();
-                __handler.startElement(pNamespaceURI, pLocalName, pQName, pAttr);
-                break;
-              default:
-                validationEvent(javax.xml.bind.ValidationEvent.WARNING, "The element " + pQName + " was unexpected at this place.", org.apache.ws.jaxme.ValidationEvents.EVENT_UNEXPECTED_CHILD_STATE);
-                break;
-            }
-          }
-        }
-        break;
-      default:
-        if (__handler == null) {
-          super.startElement(pNamespaceURI, pLocalName, pQName, pAttr);
-        } else {
-          __handler.startElement(pNamespaceURI, pLocalName, pQName, pAttr);
-        }
-    }
-  }
-
-  public void endElement(java.lang.String pNamespaceURI, java.lang.String pLocalName, java.lang.String pQName) throws org.xml.sax.SAXException {
-    if (__handler == null) {
-      if (__level > 1) {
-        super.endElement(pNamespaceURI, pLocalName, pQName);
-      }
-    } else {
-      __handler.endElement(pNamespaceURI, pLocalName, pQName);
-    }
-    switch (--__level) {
-      case 0:
-        break;
-      case 1:
-        org.apache.ws.jaxme.examples.misc.address.AddressType _1 = (org.apache.ws.jaxme.examples.misc.address.AddressType) getResult();
-        switch (__state) {
-          case 3:
-            if (__handler != null) {
-              __handler.endDocument();
-            }
-            _1.setName(((org.apache.ws.jaxme.examples.misc.address.AddressType.NameType) __handler.getResult()));
-            break;
-          default:
-            throw new java.lang.IllegalStateException("Illegal state: " + __state);
-        }
-    }
-  }
-
-  public void characters(char[] pChars, int pOffset, int pLen) throws org.xml.sax.SAXException {
-    if (__handler == null) {
-      super.characters(pChars, pOffset, pLen);
-    } else {
-      __handler.characters(pChars, pOffset, pLen);
-    }
-  }
-
-  public void init(org.apache.ws.jaxme.JMHandler.Data pData) throws javax.xml.bind.JAXBException {
-    super.init(pData);
-    if (__handler_Name != null) {
-      __handler_Name.init(pData);
-    }
-  }
-
-  protected org.apache.ws.jaxme.JMHandler getHandlerForName() throws org.xml.sax.SAXException {
-    if (__handler_Name == null) {
-      try {
-        __handler_Name = new org.apache.ws.jaxme.examples.misc.address.impl.AddressTypeHandler.NameTypeHandler();
-        __handler_Name.init(getData());
-      } catch (javax.xml.bind.JAXBException _1) {
-        throw new org.xml.sax.SAXException(_1);
-      }
-    }
-    return __handler_Name;
-  }
-
-}
diff --git a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressTypeImpl.java b/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressTypeImpl.java
deleted file mode 100644
index a190224..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressTypeImpl.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.ws.jaxme.examples.misc.address.impl;
-
-public class AddressTypeImpl implements org.apache.ws.jaxme.examples.misc.address.AddressType {
-  public static class NameTypeImpl implements org.apache.ws.jaxme.examples.misc.address.AddressType.NameType {
-    private java.lang.String First;
-  
-    private java.util.List Middle = new java.util.ArrayList();
-  
-    private java.lang.String Last;
-  
-    private java.lang.String Initials;
-  
-  
-    public java.lang.String getFirst() {
-      return First;
-    }
-  
-    public void setFirst(java.lang.String pFirst) {
-      First = pFirst;
-    }
-  
-    public java.util.List getMiddle() {
-      return Middle;
-    }
-  
-    public java.lang.String getLast() {
-      return Last;
-    }
-  
-    public void setLast(java.lang.String pLast) {
-      Last = pLast;
-    }
-  
-    public java.lang.String getInitials() {
-      return Initials;
-    }
-  
-    public void setInitials(java.lang.String pInitials) {
-      Initials = pInitials;
-    }
-  
-  }
-
-  private java.lang.String Id;
-
-  private org.apache.ws.jaxme.examples.misc.address.AddressType.NameType Name;
-
-
-  public java.lang.String getId() {
-    return Id;
-  }
-
-  public void setId(java.lang.String pId) {
-    Id = pId;
-  }
-
-  public org.apache.ws.jaxme.examples.misc.address.AddressType.NameType getName() {
-    return Name;
-  }
-
-  public void setName(org.apache.ws.jaxme.examples.misc.address.AddressType.NameType pName) {
-    Name = pName;
-  }
-
-}
diff --git a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressTypeSerializer.java b/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressTypeSerializer.java
deleted file mode 100644
index 9dc7082..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/impl/AddressTypeSerializer.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
-* Copyright 2004 The Apache Software Foundation.
-* 
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* 
-*      http://www.apache.org/licenses/LICENSE-2.0
-* 
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.apache.ws.jaxme.examples.misc.address.impl;
-
-public class AddressTypeSerializer extends org.apache.ws.jaxme.impl.JMXmlSerializerImpl {
-  public static class NameTypeSerializer extends org.apache.ws.jaxme.impl.JMXmlSerializerImpl {
-    final static javax.xml.namespace.QName __ser_First_qname = new javax.xml.namespace.QName("http://ws.apache.org/jaxme/examples/misc/address", "First");
-  
-    final static javax.xml.namespace.QName __ser_Middle_qname = new javax.xml.namespace.QName("http://ws.apache.org/jaxme/examples/misc/address", "Middle");
-  
-    final static javax.xml.namespace.QName __ser_Last_qname = new javax.xml.namespace.QName("http://ws.apache.org/jaxme/examples/misc/address", "Last");
-  
-    final static javax.xml.namespace.QName __ser_Initials_qname = new javax.xml.namespace.QName("http://ws.apache.org/jaxme/examples/misc/address", "Initials");
-  
-  
-    protected void marshalChilds(org.apache.ws.jaxme.JMXmlSerializer.Data pData, java.lang.Object pObject) throws org.xml.sax.SAXException {
-      org.apache.ws.jaxme.examples.misc.address.AddressType.NameType _1 = (org.apache.ws.jaxme.examples.misc.address.AddressType.NameType) pObject;
-      java.lang.String _2 = _1.getFirst();
-      if (_2 != null) {
-        marshalAtomicChild(pData, __ser_First_qname, _1.getFirst());
-      }
-      java.util.List _3 = _1.getMiddle();
-      for (int _4 = 0;  _4 < (_3).size();  _4++) {
-        java.lang.String _5 = (java.lang.String)_3.get(_4);
-        if (_5 != null) {
-          marshalAtomicChild(pData, __ser_Middle_qname, (java.lang.String)_3.get(_4));
-        }
-      }
-      java.lang.String _6 = _1.getLast();
-      if (_6 != null) {
-        marshalAtomicChild(pData, __ser_Last_qname, _1.getLast());
-      }
-      java.lang.String _7 = _1.getInitials();
-      if (_7 != null) {
-        marshalAtomicChild(pData, __ser_Initials_qname, _1.getInitials());
-      }
-    }
-  
-  }
-
-  private org.apache.ws.jaxme.examples.misc.address.impl.AddressTypeSerializer.NameTypeSerializer __ser_Name;
-
-  final static javax.xml.namespace.QName __ser_Name_qname = new javax.xml.namespace.QName("http://ws.apache.org/jaxme/examples/misc/address", "Name");
-
-
-  protected org.xml.sax.helpers.AttributesImpl getAttributes(org.apache.ws.jaxme.JMXmlSerializer.Data pData, java.lang.Object pElement) throws org.xml.sax.SAXException {
-    org.xml.sax.helpers.AttributesImpl _1 = super.getAttributes(pData, pElement);
-    org.apache.ws.jaxme.examples.misc.address.AddressType _2 = (org.apache.ws.jaxme.examples.misc.address.AddressType) pElement;
-    java.lang.String _3 = _2.getId();
-    if (_3 != null) {
-      _1.addAttribute("", "id", getAttributeQName(pData, "", "id"), "CDATA", _2.getId());
-    }
-    return _1;
-  }
-
-  public void init(org.apache.ws.jaxme.impl.JAXBContextImpl pFactory) throws javax.xml.bind.JAXBException {
-    super.init(pFactory);
-    __ser_Name = new org.apache.ws.jaxme.examples.misc.address.impl.AddressTypeSerializer.NameTypeSerializer();
-    __ser_Name.init(pFactory);
-  }
-
-  protected void marshalChilds(org.apache.ws.jaxme.JMXmlSerializer.Data pData, java.lang.Object pObject) throws org.xml.sax.SAXException {
-    org.apache.ws.jaxme.examples.misc.address.AddressType _1 = (org.apache.ws.jaxme.examples.misc.address.AddressType) pObject;
-    org.apache.ws.jaxme.examples.misc.address.AddressType.NameType _2 = _1.getName();
-    if (_2 != null) {
-      __ser_Name.marshal(pData, __ser_Name_qname, _1.getName());
-    }
-  }
-
-}
diff --git a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/jaxb.properties b/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/jaxb.properties
deleted file mode 100644
index 229e7be..0000000
--- a/jelly-tags/jaxme/src/test/org/apache/ws/jaxme/examples/misc/address/jaxb.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###
-# Copyright 2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-###
-
-javax.xml.bind.context.factory=org.apache.ws.jaxme.impl.JAXBContextImpl
diff --git a/jelly-tags/jaxme/xdocs/changes.xml b/jelly-tags/jaxme/xdocs/changes.xml
deleted file mode 100644
index b3adc8d..0000000
--- a/jelly-tags/jaxme/xdocs/changes.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-11">
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/jaxme/xdocs/index.xml b/jelly-tags/jaxme/xdocs/index.xml
deleted file mode 100644
index 68b738b..0000000
--- a/jelly-tags/jaxme/xdocs/index.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>JaxMe Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A <a href='http://java.sun.com/xml/jaxb/'>JAXB</a> tag library using the 
-        <a href='http://ws.apache.org/jaxme'>Apache JaxMe</a> implementation.
-        Tags are provided for marshalling java objects into xml 
-        and unmarshalling xml into java objects which will work with any JAXB implementation.
-        The generation tag generates java objects which can be marshalled and unmarshalled by
-        JaxMe and are specific to that implementation.
-      </p>
-
-      <p>
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/jaxme/xdocs/navigation.xml b/jelly-tags/jaxme/xdocs/navigation.xml
deleted file mode 100644
index 9f99de6..0000000
--- a/jelly-tags/jaxme/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="JaxMe Tag Library">
-
-  <title>JaxMe Tag Library</title>
-  
-  <body>
-    <menu name="JaxMe Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/jetty/.cvsignore b/jelly-tags/jetty/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/jetty/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/jetty/build.xml b/jelly-tags/jetty/build.xml
deleted file mode 100644
index 1220791..0000000
--- a/jelly-tags/jetty/build.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-jetty" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-jetty-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-jetty 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.jetty.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-httpclient-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-httpclient/jars/commons-httpclient-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/jetty-4.2.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jetty/jars/jetty-4.2.3.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-http-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-http-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/servletapi-2.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/servletapi/jars/servletapi-2.2.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/jetty/maven.xml b/jelly-tags/jetty/maven.xml
deleted file mode 100644
index 8b844a1..0000000
--- a/jelly-tags/jetty/maven.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <echo>
-Warning:
-This tag library requires JDK1.4 or JDK1.3 with JSSE installed to build.
-You are using version ${java.version}
-  </echo>
-
-</project>
diff --git a/jelly-tags/jetty/project.properties b/jelly-tags/jetty/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/jetty/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/jetty/project.xml b/jelly-tags/jetty/project.xml
deleted file mode 100644
index 27fffdf..0000000
--- a/jelly-tags/jetty/project.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-jetty</id>
-  <name>commons-jelly-tags-jetty</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.jetty</package>
-  <description>These are Jelly tags that can set up an in-process web server.</description>
-  <shortDescription>Commons Jelly Jetty Tag Library</shortDescription>
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-JETTY-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-    <!-- START for compilation -->
-    <!-- may need JDK 1.4 or jsse -->
-
-    <!-- http taglib -->
-    <dependency>
-      <id>commons-httpclient</id>
-      <version>2.0</version>
-    </dependency>
-    <dependency>
-      <id>jetty</id>
-      <version>4.2.3</version>
-      <properties>
-        <gump.project>jetty4</gump.project>
-      </properties>
-    </dependency>
-    <!-- END for compilation -->
-
-    <!-- for testing -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-http</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <!-- PL: Commented out as it might be this is part of JDK 1.4...
-    <dependency>
-      <id>jsse</id>
-      <version>1.0.3</version>
-    </dependency>
-
-    <dependency>
-      <id>jsse+jnet</id>
-      <version>1.0.3</version>
-    </dependency> -->
-    <!-- END for testing -->
-    <!-- for runtime -->
-
-    <dependency>
-      <id>servletapi</id>
-      <version>2.2</version>
-      <url>http://jakarta.apache.org/tomcat/</url>
-      <properties>
-        <gump.project>jakarta-servletapi-5-servlet</gump.project>
-      </properties>
-    </dependency>
-    <!-- END for runtime -->
-
-  </dependencies>
-</project>
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/AbstractMethodHandlerTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/AbstractMethodHandlerTag.java
deleted file mode 100644
index b520fe7..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/AbstractMethodHandlerTag.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * An abstract base tag to declare a handler for a particular request method
- * in an http context in an http server
- *
- * @author  rtl
- * @version $Id: AbstractMethodHandlerTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-abstract public class AbstractMethodHandlerTag extends TagSupport {
-
-    /** Override this to return the name of the http method handled by this tag */
-    abstract public String getMethodHandled();
-
-    /**
-     * Perform the tag functionality. In this case, add a http method handler
-     * to the parent that invokes the script in the body of this tag when
-     * processing an http request
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        JellyResourceHandlerTag parentTag =
-            (JellyResourceHandlerTag) findAncestorWithClass(
-                JellyResourceHandlerTag.class);
-
-        if ( parentTag == null ) {
-            throw new JellyTagException( "<" + getMethodHandled().toLowerCase() +
-                                      "Request> tag must be enclosed inside a <jellyResourceHandler> tag" );
-        }
-
-        // register this tag with the http handler for the appropriate method
-        parentTag.getJellyResourceHttpHandler().registerTag(this, getMethodHandled());
-
-        // NOTE - don't invokeBody here as we only want to do it during a request
-    }
-
-}
-
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/DeleteRequestTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/DeleteRequestTag.java
deleted file mode 100644
index 53cb07e..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/DeleteRequestTag.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-
-/**
- * Respond to a DELETE request to a Jetty http server
- *
- * @author  rtl
- * @version $Id: DeleteRequestTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class DeleteRequestTag extends AbstractMethodHandlerTag {
-
-    /** return the name of the http method handled by this tag */
-    public String getMethodHandled() {
-        return "DELETE";
-    }
-}
-
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/GetRequestTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/GetRequestTag.java
deleted file mode 100644
index 6df9973..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/GetRequestTag.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-/**
- * Respond to a GET request to a Jetty http server
- *
- * @author  rtl
- * @version $Id: PutRequestTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class GetRequestTag extends AbstractMethodHandlerTag {
-
-    /** return the name of the http method handled by this tag */
-    public String getMethodHandled() {
-        return "GET";
-    }
-}
-
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/HttpContextTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/HttpContextTag.java
deleted file mode 100644
index 0608b7c..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/HttpContextTag.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.mortbay.http.HttpContext;
-import org.mortbay.http.HttpHandler;
-import org.mortbay.http.SecurityConstraint;
-import org.mortbay.http.SecurityConstraint.Authenticator;
-import org.mortbay.util.Resource;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.MalformedURLException;
-
-/**
- * Declare a context for a Jetty http server
- *
- * @author  rtl
- * @version $Id: HttpContextTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class HttpContextTag extends TagSupport {
-
-    /** parameter path with default*/
-    private String _contextPath = JettyHttpServerTag.DEFAULT_CONTEXT_PATH;
-
-    /** parameter resourceBase, with default */
-    private String _resourceBase = JettyHttpServerTag.DEFAULT_RESOURCE_BASE;
-
-    /** parameter realmName*/
-    private String _realmName;
-
-    /** the actual context this tag refers to */
-    private HttpContext _context;
-
-    /** Creates a new instance of HttpContextTag */
-    public HttpContextTag() {
-        // create an actual context for this tag
-        _context = new HttpContext();
-    }
-
-    /**
-     * Perform the tag functionality. In this case, setup the context path
-     * and resource base before adding the context to the parent server
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-
-        JettyHttpServerTag httpserver = (JettyHttpServerTag) findAncestorWithClass(
-            JettyHttpServerTag.class);
-        if ( httpserver == null ) {
-            throw new JellyTagException( "<httpContext> tag must be enclosed inside a <server> tag" );
-        }
-
-        // allow nested tags first, e.g body
-        invokeBody(xmlOutput);
-
-        _context.setContextPath(getContextPath());
-
-        // convert the resource string to a URL
-        // (this makes URL's relative to the location of the script
-        try {
-            URL baseResourceURL = getContext().getResource(getResourceBase());
-            _context.setBaseResource(Resource.newResource(baseResourceURL));
-        }
-        catch (MalformedURLException e) {
-            throw new JellyTagException(e);
-        }
-        catch (IOException e) {
-            throw new JellyTagException(e);
-        }
-
-        if (null != getRealmName()) {
-            _context.setRealmName(getRealmName());
-        }
-        httpserver.addContext(_context);
-
-    }
-
-    /**
-     * Add an http handler to the context instance
-     *
-     * @param handler the handler to add
-     */
-    public void addHandler(HttpHandler httHandler) {
-        _context.addHandler(httHandler);
-    }
-
-    /**
-     * Add a security constraint for the specified path specification
-     * to the context instance
-     *
-     * @param pathSpec the path specification for the security constraint
-     * @param sc the security constraint to add
-     */
-    public void addSecurityConstraint(String pathSpec, SecurityConstraint sc) {
-        _context.addSecurityConstraint(pathSpec, sc);
-    }
-
-    /**
-     * Add an authenticator to the context instance
-     *
-     * @param authenticator the authenticator to add
-     */
-    public void setAuthenticator(Authenticator authenticator)
-    {
-        _context.setAuthenticator(authenticator);
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-    /**
-     * Getter for property context path.
-     *
-     * @return value of property context path.
-     */
-    public String getContextPath() {
-        return _contextPath;
-    }
-
-    /**
-     * Setter for property context path.
-     *
-     * @param path New resourceBase of property context path.
-     */
-    public void setContextPath(String contextPath) {
-        _contextPath = contextPath;
-    }
-
-    /**
-     * Getter for property resourceBase.
-     *
-     * @return value of property resourceBase.
-     */
-    public String getResourceBase() {
-        return _resourceBase;
-    }
-
-    /**
-     * Setter for property resourceBase.
-     *
-     * @param resourceBase New value of property resourceBase.
-     */
-    public void setResourceBase(String resourceBase) {
-        _resourceBase = resourceBase;
-    }
-
-    /**
-     * Getter for property realm name.
-     *
-     * @return value of property realm name.
-     */
-    public String getRealmName() {
-        return _realmName;
-    }
-
-    /**
-     * Setter for property context path.
-     *
-     * @param path New resourceBase of property context path.
-     */
-    public void setRealmName(String realmName) {
-        _realmName = realmName;
-    }
-
-}
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JellyResourceHandlerTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JellyResourceHandlerTag.java
deleted file mode 100644
index 3da3889..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JellyResourceHandlerTag.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A resource handler that uses Jelly scripts to provide resources
- * to a context in a Jetty http server
- *
- * @author  rtl
- * @version $Id: JellyResourceHandlerTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class JellyResourceHandlerTag extends TagSupport {
-
-    /** The http handler that calls the body of the tag. */
-    private JellyResourceHttpHandler _jellyResourceHttpHandler;
-
-    /** Creates a new instance of JellyResourceHandlerTag */
-    public JellyResourceHandlerTag() {
-    }
-
-    /**
-     * Perform the tag functionality. In this case, add an http handler
-     * to the parent context that runs the script in the body of this tag
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        HttpContextTag httpContext = (HttpContextTag) findAncestorWithClass(
-            HttpContextTag.class);
-        if ( httpContext == null ) {
-            throw new JellyTagException( "<jellyResourceHandler> tag must be enclosed inside a <httpContext> tag" );
-        }
-
-        _jellyResourceHttpHandler =
-            new JellyResourceHttpHandler(xmlOutput);
-
-        httpContext.addHandler(_jellyResourceHttpHandler);
-
-        // process any child method handlers
-        invokeBody(xmlOutput);
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-
-    protected JellyResourceHttpHandler getJellyResourceHttpHandler() {
-        return _jellyResourceHttpHandler;
-    }
-
-}
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JellyResourceHttpHandler.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JellyResourceHttpHandler.java
deleted file mode 100644
index 6d81b1d..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JellyResourceHttpHandler.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.mortbay.http.HttpException;
-import org.mortbay.http.HttpRequest;
-import org.mortbay.http.HttpResponse;
-import org.mortbay.http.handler.AbstractHttpHandler;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.lang.StringBuffer;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * The actual http handler implementation for an http context in an http server
- *
- * @author  rtl
- * @version $Id: JellyResourceHttpHandler.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-class JellyResourceHttpHandler extends AbstractHttpHandler {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(JellyResourceHttpHandler.class);
-
-    /** The name of the var to check if setHandled should not be set to true . */
-    private static final String OVERRIDE_SET_HANDLED_VAR = "overrideSetHandled";
-
-    /** The list of  tags registered to handle a request method  */
-    private Map _tagMap;
-
-    /** The place where to output the results of the tag body */
-    private XMLOutput _xmlOutput;
-
-    /** Creates a new instance of JellyResourceHttpHandler */
-    public JellyResourceHttpHandler( XMLOutput xmlOutput ) {
-        _tagMap = new HashMap();
-        _xmlOutput = xmlOutput;
-    }
-
-    /*
-     * register this tag as the handler for the specified method
-     *
-     * @param tag the tag to be registered
-     * @param method the name of the http method which this tag processes
-     */
-    public void registerTag(Tag tag, String method){
-        _tagMap.put(method.toLowerCase(), tag);
-    }
-
-    /*
-     * handle an http request
-     *
-     * @param pathInContext the path of the http request
-     * @param pathParams the parameters (if any) of the http request
-     * @param request the actual http request
-     * @param response the place for any response
-     *
-     * @throws HttpException when an error occurs
-     * @throws IOException when an error occurs
-     */
-    public void handle(String pathInContext,
-                       String pathParams,
-                       HttpRequest request,
-                       HttpResponse response)
-        throws HttpException, IOException
-    {
-        Tag handlerTag = (Tag) _tagMap.get(request.getMethod().toLowerCase());
-        if (null != handlerTag) {
-            // setup the parameters in the jelly context
-            JellyContext jellyContext = handlerTag.getContext();
-            jellyContext.setVariable( "pathInContext", pathInContext);
-            jellyContext.setVariable( "pathParams", pathParams);
-            jellyContext.setVariable( "request", request);
-            jellyContext.setVariable( "requestBody", getRequestBody(request));
-            jellyContext.setVariable( "response", response);
-
-            try {
-                handlerTag.invokeBody(_xmlOutput);
-                // only call set handled if tag has not requested an override
-                // if it has requested an override then reset the request
-                if (null == jellyContext.getVariable(OVERRIDE_SET_HANDLED_VAR)) {
-                    request.setHandled(true);
-                    response.commit();
-                } else {
-                    jellyContext.removeVariable(OVERRIDE_SET_HANDLED_VAR);
-                }
-            } catch (Exception ex ) {
-                throw new HttpException(HttpResponse.__500_Internal_Server_Error,
-                                        "Error invoking method handler tag: " + ex.getLocalizedMessage());
-            }
-        } else {
-            log.info("No handler for request:" +
-                      request.getMethod() + " path:" +
-                      response.getHttpContext().getContextPath() +
-                      pathInContext);
-        }
-
-        return;
-    }
-
-    public String getRequestBody(HttpRequest request) throws IOException {
-
-        // read the body as a string from the input stream
-        InputStream is = request.getInputStream();
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        StringBuffer sb = new StringBuffer();
-        char[] buffer = new char[1024];
-        int len;
-
-        while ((len = isr.read(buffer, 0, 1024)) != -1)
-          sb.append(buffer, 0, len);
-
-        if (sb.length() > 0)
-          return sb.toString();
-        else
-          return null;
-
-    }
-}
-
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JettyHttpServerTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JettyHttpServerTag.java
deleted file mode 100644
index 16c1fb7..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JettyHttpServerTag.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import java.io.IOException;
-import java.net.UnknownHostException;
-import java.net.URL;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.LogFactory;
-import org.mortbay.http.HttpContext;
-import org.mortbay.http.HttpListener;
-import org.mortbay.http.HttpServer;
-import org.mortbay.http.SocketListener;
-import org.mortbay.http.UserRealm;
-import org.mortbay.http.handler.NotFoundHandler;
-import org.mortbay.http.handler.ResourceHandler;
-import org.mortbay.util.Log;
-import org.mortbay.util.MultiException;
-import org.mortbay.util.OutputStreamLogSink;
-import org.mortbay.util.Resource;
-
-/**
- * Declare an instance of a Jetty http server
- *
- * @author  rtl
- * @version $Id: JettyHttpServerTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class JettyHttpServerTag extends TagSupport {
-
-    /** default port to create listeners for */
-    public static final int DEFAULT_PORT = 8100;
-
-    /** default host to create listeners/context for */
-    public static final String DEFAULT_HOST = "localhost";
-
-    /** default context to create context for */
-    public static final String DEFAULT_CONTEXT_PATH = "/";
-
-    /** default resource base to use for context */
-    public static final String DEFAULT_RESOURCE_BASE = "./docRoot";
-
-    /** default log file for Jetty */
-    public static final String DEFAULT_LOG_FILE = "jetty.log";
-
-    /** The Log to which logging calls will be made. */
-    private static final org.apache.commons.logging.Log log =
-        LogFactory.getLog(JettyHttpServerTag.class);
-
-    /** the log sink for the Jety server */
-    private static OutputStreamLogSink _logSink;
-
-    // static initialisation
-    {
-        // setup a log for Jetty with a default filename
-        try {
-            _logSink = new OutputStreamLogSink(DEFAULT_LOG_FILE);
-            //_logSink.start();
-            Log.instance().add(_logSink);
-        } catch (Exception ex ) {
-            log.error(ex.getLocalizedMessage());
-        }
-
-    }
-
-    /** unique identifier of the tag/ variable to store result in */
-    private String _var;
-
-    /** the http server for this tag */
-    private HttpServer _server;
-
-    /** filename of Jetty log file - with default */
-    private String _logFileName = DEFAULT_LOG_FILE;
-
-    /** Creates a new instance of JettyHttpServerTag */
-    public JettyHttpServerTag() {
-
-        // Create the server
-        _server=new HttpServer();
-
-        // turn off alias checking in Jetty's FileResource,
-        // so that we don't need exact case in resource names
-        System.setProperty("org.mortbay.util.FileResource.checkAliases", "false");
-    }
-
-    /**
-     * Perform the tag functionality. In this case, create an http server after
-     * making sure that it has at least one context and associated http handler,
-     * creating defaults if it doesn't
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-
-        try {
-            URL logFileURL = getContext().getResource(getLogFileName());
-            _logSink.setFilename(logFileURL.getPath());
-            _logSink.start();
-        } catch (Exception ex ) {
-            log.error(ex.getLocalizedMessage());
-        }
-
-        // allow nested tags first, e.g body
-        invokeBody(xmlOutput);
-
-        try {
-            // if no listeners create a default port listener
-            if (_server.getListeners().length == 0) {
-                SocketListener listener=new SocketListener();
-                listener.setPort(DEFAULT_PORT);
-                listener.setHost(DEFAULT_HOST);
-                _server.addListener(listener);
-            }
-
-            // if no context/s create a default context
-            if (_server.getContexts().length == 0) {
-                log.info("Creating a default context");
-                // Create a context
-                HttpContext context = _server.getContext(DEFAULT_HOST,
-                                                        DEFAULT_CONTEXT_PATH);
-
-                // Serve static content from the context
-                URL baseResourceURL = getContext().getResource(DEFAULT_RESOURCE_BASE);
-                Resource resource = Resource.newResource(baseResourceURL);
-                context.setBaseResource(resource);
-                _server.addContext(context);
-            }
-        }
-        catch (UnknownHostException e) {
-            throw new JellyTagException(e);
-        }
-        catch (IOException e) {
-            throw new JellyTagException(e);
-        }
-
-        // check that all the contexts have at least one handler
-        // if not then add a default resource handler and a not found handler
-        HttpContext[] allContexts = _server.getContexts();
-        for (int i = 0; i < allContexts.length; i++) {
-            HttpContext currContext = allContexts[i];
-            if (currContext.getHandlers().length == 0) {
-                log.info("Adding resource and not found handlers to context:" +
-                         currContext.getContextPath());
-                currContext.addHandler(new ResourceHandler());
-                currContext.addHandler(new NotFoundHandler());
-            }
-        }
-
-        // Start the http server
-        try {
-            _server.start();
-        }
-        catch (MultiException e) {
-            throw new JellyTagException(e);
-        }
-
-        // set variable to value if required
-        if (getVar() != null) {
-            getContext().setVariable(getVar(), _server);
-        }
-    }
-
-    /**
-     * Add an http listener to the server instance
-     *
-     * @param listener the listener to add
-     */
-    public void addListener(HttpListener listener) {
-        _server.addListener(listener);
-    }
-
-    /**
-     * Add an http context to the server instance
-     *
-     * @param context the context to add
-     */
-    public void addContext(HttpContext context) {
-        _server.addContext(context);
-    }
-
-    /* ------------------------------------------------------------ */
-    /**
-     * Add a user authentication realm to the server instance
-     *
-     * @param realm the realm to add
-     * @return the realm added
-     */
-    public UserRealm addRealm(UserRealm realm)
-    {
-        return _server.addRealm(realm);
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-
-    /**
-     * Getter for property var.
-     *
-     * @return Value of property var.
-     */
-    public String getVar() {
-        return _var;
-    }
-
-    /**
-     * Setter for property var.
-     *
-     * @param var New value of property var.
-     */
-    public void setVar(String var) {
-        _var = var;
-    }
-
-    /**
-     * Getter for property logFileName.
-     *
-     * @return Value of property logFileName.
-     */
-    public String getLogFileName() {
-        return _logFileName;
-    }
-
-    /**
-     * Setter for property logFileName.
-     *
-     * @param logFileName New value of property logFileName.
-     */
-    public void setLogFileName(String logFileName) {
-        _logFileName = logFileName;
-    }
-
-}
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JettyTagLibrary.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JettyTagLibrary.java
deleted file mode 100644
index 10520bc..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/JettyTagLibrary.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import java.util.Map;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/**
- * A set of jelly tags for instantiating a Jetty HTTP server
- *
- * @author rtl
- * @version $Id: JettyTagLibrary.java,v 1.1 2002/07/14 13:05:14 dion Exp $
- */
-public class JettyTagLibrary extends TagLibrary {
-
-    /**
-     * Creates a new instance of LatkaTagLibrary
-     */
-    public JettyTagLibrary() {
-
-        registerTag("jettyHttpServer", JettyHttpServerTag.class);
-        registerTag("socketListener", SocketListenerTag.class);
-        registerTag("realm", RealmTag.class);
-        registerTag("httpContext", HttpContextTag.class);
-        registerTag("resourceHandler", ResourceHandlerTag.class);
-        registerTag("notFoundHandler", NotFoundHandlerTag.class);
-        registerTag("securityHandler", SecurityHandlerTag.class);
-
-        registerTag("jellyResourceHandler", JellyResourceHandlerTag.class);
-        registerTag("getRequest", GetRequestTag.class);
-        registerTag("postRequest", PostRequestTag.class);
-        registerTag("putRequest", PutRequestTag.class);
-        registerTag("deleteRequest", DeleteRequestTag.class);
-        registerTag("responseHeader", ResponseHeaderTag.class);
-        registerTag("responseBody", ResponseBodyTag.class);
-        registerTag("responseCode", ResponseCodeTag.class);
-    }
-
-    /**
-     * @see TagLibarary#getTagClasses()
-     *
-     * @return a Map of tag name to tag class
-     */
-    public Map getTagClasses() {
-        return super.getTagClasses();
-    }
-
-}
-
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/NotFoundHandlerTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/NotFoundHandlerTag.java
deleted file mode 100644
index 4c07ee4..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/NotFoundHandlerTag.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.mortbay.http.handler.NotFoundHandler;
-
-/**
- * Declare a not found resource handler for a Jetty http server
- *
- * @author  rtl
- * @version $Id: NotFoundHandlerTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class NotFoundHandlerTag extends TagSupport {
-
-    /** Creates a new instance of NotFoundHandlerTag */
-    public NotFoundHandlerTag() {
-    }
-
-    /**
-     * Perform the tag functionality. In this case, add a resource handler
-     * to the parent context, setting the allowed methods if required
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        HttpContextTag httpContext = (HttpContextTag) findAncestorWithClass(
-            HttpContextTag.class);
-        if ( httpContext == null ) {
-            throw new JellyTagException( "<notFoundHandler> tag must be enclosed inside a <httpContext> tag" );
-        }
-        NotFoundHandler notFoundHandler = new NotFoundHandler();
-        httpContext.addHandler(notFoundHandler);
-        invokeBody(xmlOutput);
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-
-}
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/PostRequestTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/PostRequestTag.java
deleted file mode 100644
index 2a232e8..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/PostRequestTag.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-/**
- * Respond to a POST request to a Jetty http server
- *
- * @author  rtl
- * @version $Id: PutRequestTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class PostRequestTag extends AbstractMethodHandlerTag {
-
-    /** return the name of the http method handled by this tag */
-    public String getMethodHandled() {
-        return "POST";
-    }
-}
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/PutRequestTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/PutRequestTag.java
deleted file mode 100644
index b65989f..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/PutRequestTag.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-/**
- * Respond to a PUT request to a Jetty http server
- *
- * @author  rtl
- * @version $Id: PutRequestTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-/** A tag for the http PUT method */
-public class PutRequestTag extends AbstractMethodHandlerTag {
-
-    /** return the name of the http method handled by this tag */
-    public String getMethodHandled() {
-        return "PUT";
-    }
-}
-
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/RealmTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/RealmTag.java
deleted file mode 100644
index be678a5..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/RealmTag.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.mortbay.http.HashUserRealm;
-
-import java.io.IOException;
-import java.net.URL;
-
-/**
- * Declare a user realm for a Jetty http server
- *
- * @author  rtl
- * @version $Id: RealmTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class RealmTag extends TagSupport {
-
-    /** parameter name with default*/
-    private String _name;
-
-    /** parameter config, with default */
-    private String _config;
-
-    /** Creates a new instance of RealmTag */
-    public RealmTag() {
-    }
-
-    /**
-     * Perform the tag functionality. In this case, add a realm with the
-     * specified name using the specified config (preperties) file to the
-     * parent server,
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        JettyHttpServerTag httpserver = (JettyHttpServerTag) findAncestorWithClass(
-            JettyHttpServerTag.class);
-        if ( httpserver == null ) {
-            throw new JellyTagException( "<realm> tag must be enclosed inside a <server> tag" );
-        }
-        if (null == getName() || null == getConfig()) {
-            throw new JellyTagException( "<realm> tag must have a name and a config" );
-        }
-
-        // convert the config string to a URL
-        // (this makes URL's relative to the location of the script
-        try {
-            URL configURL = getContext().getResource(getConfig());
-            httpserver.addRealm( new HashUserRealm(getName(), configURL.toString() ) );
-        } catch (IOException e) {
-            throw new JellyTagException(e);
-        }
-
-        invokeBody(xmlOutput);
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-
-    /**
-     * Getter for property name.
-     *
-     * @return value of property name.
-     */
-    public String getName() {
-        return _name;
-    }
-
-    /**
-     * Setter for property name.
-     *
-     * @param name New value of property name.
-     */
-    public void setName(String name) {
-        _name = name;
-    }
-
-    /**
-     * Getter for property config.
-     *
-     * @return value of property config.
-     */
-    public String getConfig() {
-        return _config;
-    }
-
-    /**
-     * Setter for property config.
-     *
-     * @param config New value of property config.
-     */
-    public void setConfig(String config) {
-        _config = config;
-    }
-
-}
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResourceHandlerTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResourceHandlerTag.java
deleted file mode 100644
index a0e030e..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResourceHandlerTag.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.mortbay.http.handler.ResourceHandler;
-
-import java.util.StringTokenizer;
-
-/**
- * Declare a static file resource handler for a Jetty http server
- *
- * @author  rtl
- * @version $Id: ResourceHandlerTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class ResourceHandlerTag extends TagSupport {
-
-    /** parameter allowed methods */
-    private String _allowedMethods;
-
-    /** Creates a new instance of ResourceHandlerTag */
-    public ResourceHandlerTag() {
-    }
-
-    /**
-     * Perform the tag functionality. In this case, add a resource handler
-     * to the parent context, setting the allowed methods if required
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        HttpContextTag httpContext = (HttpContextTag) findAncestorWithClass(
-            HttpContextTag.class);
-        if ( httpContext == null ) {
-            throw new JellyTagException( "<resourceHandler> tag must be enclosed inside a <httpContext> tag" );
-        }
-        ResourceHandler resourceHandler = new ResourceHandler();
-        if (getAllowedMethods() != null) {
-            // split comma-separated list up into tokens and convert to an array
-            StringTokenizer tokenizer =
-                new StringTokenizer( getAllowedMethods(), " ," );
-            String[] allowedMethods = new String[tokenizer.countTokens()];
-            for (int i = 0; i < allowedMethods.length; i++) {
-                allowedMethods[i] = tokenizer.nextToken();
-            }
-            resourceHandler.setAllowedMethods(allowedMethods);
-        }
-        httpContext.addHandler(resourceHandler);
-        invokeBody(xmlOutput);
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-
-    /**
-     * Getter for property allowedMethods.
-     *
-     * @return value of property allowedMethods.
-     */
-    public String getAllowedMethods() {
-        return _allowedMethods;
-    }
-
-    /**
-     * Setter for property allowedMethods.
-     *
-     * @param allowedMethods Comma separated list of allowed methods.
-     */
-    public void setAllowedMethods(String allowedMethods) {
-        _allowedMethods = allowedMethods;
-    }
-
-
-}
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResponseBodyTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResponseBodyTag.java
deleted file mode 100644
index ce6a4c5..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResponseBodyTag.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import java.io.IOException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.mortbay.http.HttpResponse;
-import org.mortbay.util.ByteArrayISO8859Writer;
-
-/**
- * Set the response body in a response handler for a Jetty http server
- *
- * @author  rtl
- */
-public class ResponseBodyTag extends TagSupport {
-
-    /**
-     * Perform the tag functionality. In this case, set the body of a
-     * http response found in the jelly context
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-
-        // get the response from the context
-        HttpResponse httpResponse = (HttpResponse) getContext().getVariable("response");
-        if (null == httpResponse) {
-            throw new JellyTagException("HttpResponse variable not available in Jelly context");
-        }
-
-        ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer(1500);
-        try {
-             writer.write(getBodyText());
-             writer.flush();
-             httpResponse.setContentLength(writer.size());
-             writer.writeTo(httpResponse.getOutputStream());
-        }
-        catch (IOException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
-
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResponseCodeTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResponseCodeTag.java
deleted file mode 100644
index 9c81bf0..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResponseCodeTag.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.mortbay.http.HttpResponse;
-
-/**
- * Set the response code in the request handler of a Jetty http server
- *
- * @author  rtl
- */
-public class ResponseCodeTag extends TagSupport {
-
-    /** parameter value */
-    private int _value;
-
-    /**
-     * Perform the tag functionality. In this case, set the response code in the
-     * http response found in the jelly context
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-
-        if (getValue() <= 100) {
-            throw new JellyTagException("<responseCode> tag must have a value of at least 100");
-        }
-
-        // get the response from the context
-        HttpResponse httpResponse = (HttpResponse) getContext().getVariable("response");
-        if (null == httpResponse) {
-            throw new JellyTagException("HttpResponse variable not available in Jelly context");
-        }
-
-        // set response code
-        httpResponse.setStatus(getValue());
-
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-
-    /**
-     * Getter for property value.
-     *
-     * @return value of property value.
-     */
-    public int getValue() {
-        return _value;
-    }
-
-    /**
-     * Setter for property value.
-     *
-     * @param value New value of property value.
-     */
-    public void setValue(int value) {
-        _value = value;
-    }
-
-}
-
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResponseHeaderTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResponseHeaderTag.java
deleted file mode 100644
index b744503..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/ResponseHeaderTag.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.mortbay.http.HttpResponse;
-
-/**
- * Set a response header in the request handler of a Jetty http server
- *
- * @author  rtl
- */
-public class ResponseHeaderTag extends TagSupport {
-
-    /** parameter name */
-    private String _name;
-
-    /** parameter value */
-    private String _value;
-
-    /**
-     * Perform the tag functionality. In this case, set a header in the
-     * http response found in the jelly context
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-
-        if (null == getName()) {
-            throw new JellyTagException("<responseHeader> tag must have a name");
-        }
-
-        // get the response from the context
-        HttpResponse httpResponse = (HttpResponse) getContext().getVariable("response");
-        if (null == httpResponse) {
-            throw new JellyTagException("HttpResponse variable not available in Jelly context");
-        }
-
-        // if value is valid then set it
-        // otherwise remove the field
-        if (null != getValue()) {
-            httpResponse.setField(getName(), getValue());
-        } else {
-            httpResponse.removeField(getName());
-        }
-
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-
-    /**
-     * Getter for property context path.
-     *
-     * @return value of property context path.
-     */
-    public String getName() {
-        return _name;
-    }
-
-    /**
-     * Setter for property context path.
-     *
-     * @param path New value of property context path.
-     */
-    public void setName(String name) {
-        _name = name;
-    }
-
-    /**
-     * Getter for property value.
-     *
-     * @return value of property value.
-     */
-    public String getValue() {
-        return _value;
-    }
-
-    /**
-     * Setter for property value.
-     *
-     * @param value New value of property value.
-     */
-    public void setValue(String value) {
-        _value = value;
-    }
-
-}
-
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/SecurityHandlerTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/SecurityHandlerTag.java
deleted file mode 100644
index 075f072..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/SecurityHandlerTag.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.mortbay.http.BasicAuthenticator;
-import org.mortbay.http.ClientCertAuthenticator;
-import org.mortbay.http.DigestAuthenticator;
-import org.mortbay.http.SecurityConstraint.Authenticator;
-import org.mortbay.http.SecurityConstraint;
-import org.mortbay.http.handler.SecurityHandler;
-import org.mortbay.jetty.servlet.FormAuthenticator;
-import org.mortbay.util.Code;
-import org.mortbay.xml.XmlParser;
-
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.Iterator;
-
-/**
- * Declare a security handler for a Jetty http server
- *
- * @author  rtl
- * @version $Id: SecurityHandlerTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class SecurityHandlerTag extends TagSupport {
-
-    /** a form authenticator used by this tag */
-    private transient FormAuthenticator _formAuthenticator;
-
-    /** parameter authentication method, defaults to BASIC in Jetty */
-    private String _authenticationMethod;
-
-    /** Creates a new instance of SecurityHandlerTag */
-    public SecurityHandlerTag() {
-    }
-
-    /**
-     * Perform the tag functionality. In this case, add a security handler
-     * to the parent context, setting the authentication method if required
-     * The security constraints should be specified as the body of this tag
-     * using the same format as a web.xml file wrapped in a single
-     * <constraints> tag to allow parsing of a well-formed snippet, e.g.
-     *
-     * <constraints>
-     *   <security-constraint>
-     *    <web-resource-collection>
-     *     <web-resource-name>Default</web-resource-name>
-     *      <url-pattern>/</url-pattern>
-     *    </web-resource-collection>
-     *    <auth-constraint/>
-     *   </security-constraint>
-     *
-     *   <security-constraint>
-     *     <web-resource-collection>
-     *       <url-pattern>/docRoot/resourceHandlerTest/*</url-pattern>
-     *       <http-method>GET</http-method>
-     *       <http-method>HEAD</http-method>
-     *     </web-resource-collection>
-     *     <auth-constraint>
-     *       <role-name>*</role-name>
-     *     </auth-constraint>
-     *   </security-constraint>
-     *
-     *   <login-config>
-     *     <auth-method>BASIC</auth-method>
-     *     <realm-name>Jetty Demo Realm</realm-name>
-     *   </login-config>
-     *
-     * </constraints>
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        HttpContextTag httpContext = (HttpContextTag) findAncestorWithClass(
-            HttpContextTag.class);
-        if ( httpContext == null ) {
-            throw new JellyTagException( "<securityHandler> tag must be enclosed inside a <httpContext> tag" );
-        }
-        SecurityHandler securityHandler = new SecurityHandler();
-        if (getauthenticationMethod() != null) {
-            securityHandler.setAuthMethod(getauthenticationMethod());
-        }
-        httpContext.addHandler(securityHandler);
-
-        // get the security constraints from the body of this tag
-        // by parsing the body of the parent (so it will be well formed)
-        String bodyText = getBodyText();
-        StringReader reader = new StringReader(bodyText);
-        InputSource inputSource = new InputSource(reader);
-
-        // crate a non-validating parser
-        XmlParser xmlParser = new XmlParser(false);
-
-        XmlParser.Node node = null;
-        try {
-            node = xmlParser.parse(inputSource);
-        }
-        catch (IOException e) {
-            throw new JellyTagException(e);
-        }
-        catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-
-        Iterator iter=node.iterator();
-        XmlParser.Node currNode = null;
-        while (iter.hasNext())
-        {
-                Object o = iter.next();
-                if (!(o instanceof XmlParser.Node))
-                    continue;
-
-                currNode=(XmlParser.Node)o;
-                String name=currNode.getTag();
-
-                if ("security-constraint".equals(name)) {
-                    initSecurityConstraint(currNode, httpContext);
-                } else if ("login-config".equals(name)) {
-                    initLoginConfig(currNode, httpContext);
-                } else {
-                    throw new JellyTagException("Invalid element in <securityHandler> tag. Are you using the <constraints> tag?: " + currNode);
-                }
-        }
-
-    }
-
-    /* ------------------------------------------------------------
-     * This is the code from Jetty's WebApplicationContext
-     * with the HttpContextTag parameter added
-     *
-     * Process a parsed xml node to setup the security constraints
-     * for an http server
-     *
-     * @param node the parsed xml starting node of the constraints
-     * @param httpContext the tag to add the security constraint to
-    */
-    protected void initSecurityConstraint(XmlParser.Node node,
-                                          HttpContextTag httpContext)
-    {
-        SecurityConstraint scBase = new SecurityConstraint();
-
-        XmlParser.Node auths=node.get("auth-constraint");
-        if (auths!=null)
-        {
-            scBase.setAuthenticate(true);
-            // auth-constraint
-            Iterator iter= auths.iterator("role-name");
-            while(iter.hasNext())
-            {
-                String role=((XmlParser.Node)iter.next()).toString(false,true);
-                scBase.addRole(role);
-            }
-        }
-
-        XmlParser.Node data=node.get("user-data-constraint");
-        if (data!=null)
-        {
-            data=data.get("transport-guarantee");
-            String guarantee = data.toString(false,true).toUpperCase();
-            if (guarantee==null || guarantee.length()==0 ||
-                "NONE".equals(guarantee))
-                scBase.setDataConstraint(SecurityConstraint.DC_NONE);
-            else if ("INTEGRAL".equals(guarantee))
-                scBase.setDataConstraint(SecurityConstraint.DC_INTEGRAL);
-            else if ("CONFIDENTIAL".equals(guarantee))
-                scBase.setDataConstraint(SecurityConstraint.DC_CONFIDENTIAL);
-            else
-            {
-                Code.warning("Unknown user-data-constraint:"+guarantee);
-                scBase.setDataConstraint(SecurityConstraint.DC_CONFIDENTIAL);
-            }
-        }
-
-        Iterator iter= node.iterator("web-resource-collection");
-        while(iter.hasNext())
-        {
-            XmlParser.Node collection=(XmlParser.Node)iter.next();
-            String name=collection.getString("web-resource-name",false,true);
-            SecurityConstraint sc = (SecurityConstraint)scBase.clone();
-            sc.setName(name);
-
-            Iterator iter2= collection.iterator("http-method");
-            while(iter2.hasNext())
-                sc.addMethod(((XmlParser.Node)iter2.next())
-                             .toString(false,true));
-
-            iter2= collection.iterator("url-pattern");
-            while(iter2.hasNext())
-            {
-                String url=
-                    ((XmlParser.Node)iter2.next()).toString(false,true);
-                httpContext.addSecurityConstraint(url,sc);
-            }
-        }
-    }
-
-    /* ------------------------------------------------------------
-     * This is the code from Jetty's WebApplicationContext
-     * with the HttpContextTag parameter added
-     *
-     *
-     * Process a parsed xml node to setup the authenticator and realm
-     * for an http server
-     *
-     * @param node the parsed xml starting node of the login configuration
-     * @param httpContext the tag to add the authenticator and realm to
-    */
-    protected void initLoginConfig(XmlParser.Node node,
-                                   HttpContextTag httpContext)
-    {
-        XmlParser.Node method=node.get("auth-method");
-        if (method!=null)
-        {
-            Authenticator authenticator=null;
-            String m=method.toString(false,true);
-
-            if (SecurityConstraint.__FORM_AUTH.equals(m))
-                authenticator=_formAuthenticator=new FormAuthenticator();
-            else if (SecurityConstraint.__BASIC_AUTH.equals(m))
-                authenticator=new BasicAuthenticator();
-            else if (SecurityConstraint.__DIGEST_AUTH.equals(m))
-                authenticator=new DigestAuthenticator();
-            else if (SecurityConstraint.__CERT_AUTH.equals(m))
-                authenticator=new ClientCertAuthenticator();
-            else
-                Code.warning("UNKNOWN AUTH METHOD: "+m);
-
-            httpContext.setAuthenticator(authenticator);
-        }
-
-        XmlParser.Node name=node.get("realm-name");
-        if (name!=null)
-            httpContext.setRealmName(name.toString(false,true));
-
-        XmlParser.Node formConfig = node.get("form-login-config");
-        if(formConfig != null)
-        {
-            if (_formAuthenticator==null)
-                Code.warning("FORM Authentication miss-configured");
-            else
-            {
-                XmlParser.Node loginPage = formConfig.get("form-login-page");
-                if (loginPage != null)
-                    _formAuthenticator.setLoginPage(loginPage.toString(false,true));
-                XmlParser.Node errorPage = formConfig.get("form-error-page");
-                if (errorPage != null)
-                    _formAuthenticator.setErrorPage(errorPage.toString(false,true));
-            }
-        }
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-
-    /**
-     * Getter for property authenticationMethod.
-     *
-     * @return value of property authenticationMethod.
-     */
-    public String getauthenticationMethod() {
-        return _authenticationMethod;
-    }
-
-    /**
-     * Setter for property authenticationMethod.
-     *
-     * @param authenticationMethod Type of authentication (BASIC, FORM, DIGEST, CLIENT-CERT)
-     * Note that only BASIC and CLIENT-CERT are supported by Jetty as of v4.1.1
-     */
-    public void setauthenticationMethod(String authenticationMethod) {
-        _authenticationMethod = authenticationMethod;
-    }
-
-
-}
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/SocketListenerTag.java b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/SocketListenerTag.java
deleted file mode 100644
index 873c0c8..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/SocketListenerTag.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jetty;
-
-import java.io.IOException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.mortbay.http.SocketListener;
-import org.mortbay.util.InetAddrPort;
-
-/**
- * Declare a socket listener for a Jetty http server
- *
- * @author  rtl
- * @version $Id: SocketListenerTag.java,v 1.3 2002/07/14 12:38:22 dion Exp $
- */
-public class SocketListenerTag extends TagSupport {
-
-    /** parameter port with default*/
-    private int _port = JettyHttpServerTag.DEFAULT_PORT;
-
-    /** parameter host, with default */
-    private String _host = JettyHttpServerTag.DEFAULT_HOST;
-
-    /** Creates a new instance of SocketListenerTag */
-    public SocketListenerTag() {
-    }
-
-    /**
-     * Perform the tag functionality. In this case, add a socket listener
-     * for the specified host and port to the parent server,
-     *
-     * @param xmlOutput where to send output
-     * @throws Exception when an error occurs
-     */
-    public void doTag(XMLOutput xmlOutput) throws JellyTagException {
-        JettyHttpServerTag httpserver = (JettyHttpServerTag) findAncestorWithClass(
-            JettyHttpServerTag.class);
-        if ( httpserver == null ) {
-            throw new JellyTagException( "<socketListener> tag must be enclosed inside a <server> tag" );
-        }
-
-        try {
-            httpserver.addListener(
-                new SocketListener(new InetAddrPort(getHost(), getPort())));
-        }
-        catch (IOException e) {
-            throw new JellyTagException(e);
-        }
-
-        invokeBody(xmlOutput);
-    }
-
-    //--------------------------------------------------------------------------
-    // Property accessors/mutators
-    //--------------------------------------------------------------------------
-    /**
-     * Getter for property port.
-     *
-     * @return value of property port.
-     */
-    public int getPort() {
-        return _port;
-    }
-
-    /**
-     * Setter for property port.
-     *
-     * @param port New value of property port.
-     */
-    public void setPort(int port) {
-        _port = port;
-    }
-
-    /**
-     * Getter for property host.
-     *
-     * @return value of property host.
-     */
-    public String getHost() {
-        return _host;
-    }
-
-    /**
-     * Setter for property host.
-     *
-     * @param host New value of property host.
-     */
-    public void setHost(String host) {
-        _host = host;
-    }
-
-}
diff --git a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/package.html b/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/package.html
deleted file mode 100644
index ed3cfa7..0000000
--- a/jelly-tags/jetty/src/java/org/apache/commons/jelly/tags/jetty/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>Tags for starting Jetty HTTP servers and procesing HTTP requests using Jelly scripts
-  </p>
-
-</body>
-</html>
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/.cvsignore b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/.cvsignore
deleted file mode 100644
index d43ab0b..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-JellyLogFileTest.log
-jetty.log
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/TestJettyHttpServerTags.java b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/TestJettyHttpServerTags.java
deleted file mode 100644
index c757a39..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/TestJettyHttpServerTags.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 1999-2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.jetty;
-
-import java.io.File;
-import java.io.StringWriter;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Tests the parser, the engine and the XML tags
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.6 $
-  */
-public class TestJettyHttpServerTags extends TestCase {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TestJettyHttpServerTags.class);
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestJettyHttpServerTags.class);
-    }
-
-    public TestJettyHttpServerTags(String testName) {
-        super(testName);
-    }
-
-    public void testDefaultServer() throws Exception {
-        String text = evaluteScriptAsText(
-            "src/test/org/apache/commons/jelly/jetty/defaultServer.jelly"
-        );
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testJettyLogFile() throws Exception {
-        File logFile = new File("src/test/org/apache/commons/jelly/jetty/JellyLogFileTest.log");
-        if (logFile.exists()) {
-            logFile.delete();
-        }
-        assertTrue("Logfile does not exist", !logFile.exists());
-        String text = evaluteScriptAsText(
-            "src/test/org/apache/commons/jelly/jetty/jettyLogFile.jelly"
-        );
-        assertEquals("Produces the correct output", "It works!", text);
-        assertTrue("Logfile exists", logFile.exists());
-    }
-
-    public void testSocketListener() throws Exception {
-        String text = evaluteScriptAsText(
-            "src/test/org/apache/commons/jelly/jetty/socketListener.jelly"
-        );
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testHttpContext() throws Exception {
-        String text = evaluteScriptAsText(
-            "src/test/org/apache/commons/jelly/jetty/httpContext.jelly"
-        );
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testResourceHandler() throws Exception {
-        String text = evaluteScriptAsText(
-            "src/test/org/apache/commons/jelly/jetty/resourceHandler.jelly"
-        );
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testSecurityHandler() throws Exception {
-        String text = evaluteScriptAsText(
-            "src/test/org/apache/commons/jelly/jetty/securityHandlerForbidden.jelly"
-        );
-        assertEquals("Forbidden test produces the correct output", "It works!", text);
-
-        text = evaluteScriptAsText(
-            "src/test/org/apache/commons/jelly/jetty/securityHandlerUnauthorized.jelly"
-        );
-        assertEquals("Unauthorized produces the correct output", "It works!", text);
-    }
-
-    public void testJellyResourceHandler() throws Exception {
-        String text = evaluteScriptAsText(
-            "src/test/org/apache/commons/jelly/jetty/jellyResourceHandler.jelly"
-        );
-        assertEquals("jellyResourceHandler produces the correct output", "It works!", text);
-
-        text = evaluteScriptAsText(
-            "src/test/org/apache/commons/jelly/jetty/jellyResourceHandlerRequestBody.jelly"
-        );
-        assertEquals("jellyResourceHandlerRequestBody produces the correct output", "It works!", text);
-    }
-
-    /**
-     * Evaluates the script by the given file name and
-     * returns the whitespace trimmed output as text
-     */
-    protected String evaluteScriptAsText(String fileName) throws Exception {
-        JellyContext context = new JellyContext();
-
-        // allow scripts to refer to any resource inside this project
-        // using an absolute URI like /src/test/org/apache/foo.xml
-        context.setRootURL(new File(".").toURL());
-
-        // cature the output
-        StringWriter buffer = new StringWriter();
-        XMLOutput output = XMLOutput.createXMLOutput(buffer);
-
-        context.runScript( new File(fileName), output );
-        String text = buffer.toString().trim();
-        if (log.isDebugEnabled()) {
-            log.debug("Evaluated script as...");
-            log.debug(text);
-        }
-        return text;
-    }
-}
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/defaultServer.jelly b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/defaultServer.jelly
deleted file mode 100644
index 9821176..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/defaultServer.jelly
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly
-    xmlns:j="jelly:core"
-    xmlns="jelly:jetty"
-    xmlns:http="jelly:http"
-    trim="false">
-
-    <j:set var="contextPathVar" value=""/>
-    <j:set var="testPort" value="8100"/>
-    <j:set var="testUri" value="http://localhost:${testPort}${contextPathVar}/test1.txt"/>
-
-    <jettyHttpServer var="httpServer"/>
-
-    <http:get var="mtc" uri="${testUri}"/>
-    <j:if test='${mtc.statusCode == 200}'>
-        ${mtc.responseBodyAsString}
-    </j:if>
-    <j:if test='${mtc.statusCode != 200}'>
-        Results for mtc url are:
-        http return code = ${mtc.statusCode}
-        http status text = '${mtc.statusText}'
-        size of result = ${mtc.responseBodyAsString.length()}
-        response time = ${mtc.responseTime}
-
-            <j:forEach items="${mtc.responseHeaders}" var="header" indexVar="i">
-                header[${i}] = ${header}
-            </j:forEach>
-    </j:if>
-    ${httpServer.stop()}
-
-</j:jelly>
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/docRoot/contextTest/contextTest.txt b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/docRoot/contextTest/contextTest.txt
deleted file mode 100644
index 68300b8..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/docRoot/contextTest/contextTest.txt
+++ /dev/null
@@ -1 +0,0 @@
-It works!
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/docRoot/resourceHandlerTest/resourceHandlerTest.txt b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/docRoot/resourceHandlerTest/resourceHandlerTest.txt
deleted file mode 100644
index 68300b8..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/docRoot/resourceHandlerTest/resourceHandlerTest.txt
+++ /dev/null
@@ -1 +0,0 @@
-It works!
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/docRoot/test1.txt b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/docRoot/test1.txt
deleted file mode 100644
index 68300b8..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/docRoot/test1.txt
+++ /dev/null
@@ -1 +0,0 @@
-It works!
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/httpContext.jelly b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/httpContext.jelly
deleted file mode 100644
index 5d99dad..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/httpContext.jelly
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly
-    xmlns:j="jelly:core"
-    xmlns="jelly:jetty"
-    xmlns:http="jelly:http"
-    trim="false">
-
-    <j:set var="contextPathVar" value="/contextTest"/>
-    <j:set var="testPort" value="8100"/>
-    <j:set var="testUri" value="http://localhost:${testPort}${contextPathVar}/contextTest.txt"/>
-
-    <jettyHttpServer var="httpServer">
-      <socketListener port="${testPort}"/>
-      <httpContext contextPath="${contextPathVar}" resourceBase="./docRoot/contextTest"/>
-    </jettyHttpServer>
-
-    <http:get var="mtc" uri="${testUri}"/>
-
-    <j:if test='${mtc.statusCode == 200}'>
-        ${mtc.responseBodyAsString}
-    </j:if>
-    <j:if test='${mtc.statusCode != 200}'>
-        Results for mtc url are:
-        http return code = ${mtc.statusCode}
-        http status text = '${mtc.statusText}'
-        size of result = ${mtc.responseBodyAsString.length()}
-        response time = ${mtc.responseTime}
-
-            <j:forEach items="${mtc.responseHeaders}" var="header" indexVar="i">
-                header[${i}] = ${header}
-            </j:forEach>
-    </j:if>
-    ${httpServer.stop(false)}
-
-</j:jelly>
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/jellyResourceHandler.jelly b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/jellyResourceHandler.jelly
deleted file mode 100644
index 98508d9..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/jellyResourceHandler.jelly
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly
-    xmlns:j="jelly:core"
-    xmlns="jelly:jetty"
-    xmlns:http="jelly:http"
-    trim="false">
-
-    <j:set var="contextPathVar" value="/resourceHandlerTest"/>
-    <j:set var="testPort1" value="8100"/>
-    <j:set var="testPort2" value="8200"/>
-    <j:set var="testUri1" value="http://localhost:${testPort1}${contextPathVar}/resourceHandlerTest.txt"/>
-    <j:set var="testUri2" value="http://localhost:${testPort2}${contextPathVar}/resourceHandlerTest.txt"/>
-
-    <jettyHttpServer var="httpServerNoOp">
-      <socketListener port="${testPort1}"/>
-      <httpContext contextPath="${contextPathVar}" resourceBase="./docRoot/resourceHandlerTest">
-          <jellyResourceHandler/>
-      </httpContext>
-    </jettyHttpServer>
-
-    <jettyHttpServer var="httpServerOp">
-      <socketListener port="${testPort2}"/>
-      <httpContext contextPath="${contextPathVar}" resourceBase="./docRoot/resourceHandlerTest">
-          <jellyResourceHandler>
-
-            <getRequest>
-                <j:set var="new.content.type" value="text/plain"/>
-                <j:set var="new.location" value="new location"/>
-
-                <responseHeader name="Content-Type" value="${new.content.type}"/>
-                <responseHeader name="Location" value="${new.location}"/>
-                <responseBody>
-                    It works!
-                </responseBody>
-
-            </getRequest>
-
-          </jellyResourceHandler>
-      </httpContext>
-    </jettyHttpServer>
-
-    <http:get var="mtc1" uri="${testUri1}"/>
-    <j:choose>
-      <j:when test="${mtc1.statusCode == 404}">
-          <http:get var="mtc2" uri="${testUri2}"/>
-          <j:choose>
-              <j:when test="${mtc2.statusCode == 200}">
-                It works!
-              </j:when>
-              <j:otherwise>
-                Results for mtc2 url are:
-                http return code = ${mtc2.statusCode}
-                http status text = '${mtc2.statusText}'
-                Content-Type = ${mtc2.getResponseHeader("Content-Type")}
-                Location = ${mtc2.getResponseHeader("Location")}
-              </j:otherwise>
-            </j:choose>
-      </j:when>
-
-      <j:otherwise>
-        Results for mtc1 url are:
-        http return code = ${mtc1.statusCode}
-        http status text = '${mtc1.statusText}'
-      </j:otherwise>
-    </j:choose>
-
-    ${httpServerNoOp.stop(false)}
-    ${httpServerOp.stop(false)}
-
-</j:jelly>
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/jellyResourceHandlerRequestBody.jelly b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/jellyResourceHandlerRequestBody.jelly
deleted file mode 100644
index 740bd4c..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/jellyResourceHandlerRequestBody.jelly
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<j:jelly

-    xmlns:j="jelly:core"

-    xmlns="jelly:jetty"

-    xmlns:http="jelly:http"

-    trim="false">

-

-    <j:set var="contextPathVar" value="/resourceHandlerTest"/>

-    <j:set var="testPort1" value="8100"/>

-    <j:set var="testUri1" value="http://localhost:${testPort1}${contextPathVar}/resourceHandlerTest.txt"/>

-

-    <jettyHttpServer var="httpServer">

-      <socketListener port="${testPort1}"/>

-      <httpContext contextPath="${contextPathVar}" resourceBase="./docRoot/resourceHandlerTest">

-          <jellyResourceHandler>

-

-            <postRequest>

-                <!-- return the request body -->

-                <responseHeader name="Content-Type" value="text/plain"/>

-                <responseBody>

-                    ${requestBody}

-                </responseBody>

-                <!-- also test response code -->

-                <responseCode value="202"/>

-            </postRequest>

-

-          </jellyResourceHandler>

-      </httpContext>

-    </jettyHttpServer>

-

-    <!-- post something -->

-    <http:post var="mtc1" uri="${testUri1}">

-        <http:header name="Content-Type" value="text/plain"/>

-        <http:body>

-            It works!

-        </http:body>

-    </http:post>

-

-    <j:choose>

-      <j:when test="${mtc1.statusCode == 202}">

-          ${mtc1.responseBodyAsString}

-      </j:when>

-

-      <j:otherwise>

-        Results for mtc1 url are:

-        http return code = ${mtc1.statusCode}

-        http status text = '${mtc1.statusText}'

-      </j:otherwise>

-    </j:choose>

-

-    ${httpServer.stop(false)}

-

-</j:jelly>

diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/jettyLogFile.jelly b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/jettyLogFile.jelly
deleted file mode 100644
index 13865d2..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/jettyLogFile.jelly
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<j:jelly

-    xmlns:j="jelly:core"

-    xmlns="jelly:jetty"

-    xmlns:http="jelly:http"

-    trim="false">

-

-    <j:set var="contextPathVar" value=""/>

-    <j:set var="testPort" value="8100"/>

-    <j:set var="testUri" value="http://localhost:${testPort}${contextPathVar}/test1.txt"/>

-

-    <jettyHttpServer var="httpServer" logFileName="JellyLogFileTest.log"/>

-

-    <http:get var="mtc" uri="${testUri}"/>

-    <j:if test='${mtc.statusCode == 200}'>

-        ${mtc.responseBodyAsString}

-    </j:if>

-    <j:if test='${mtc.statusCode != 200}'>

-        Results for mtc url are:

-        http return code = ${mtc.statusCode}

-        http status text = '${mtc.statusText}'

-        size of result = ${mtc.responseBodyAsString.length()}

-        response time = ${mtc.responseTime}

-

-            <j:forEach items="${mtc.responseHeaders}" var="header" indexVar="i">

-                header[${i}] = ${header}

-            </j:forEach>

-    </j:if>

-    ${httpServer.stop()}

-

-</j:jelly>

diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/resourceHandler.jelly b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/resourceHandler.jelly
deleted file mode 100644
index 9cc9c1e..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/resourceHandler.jelly
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly
-    xmlns:j="jelly:core"
-    xmlns="jelly:jetty"
-    xmlns:http="jelly:http"
-    trim="false">
-
-    <j:set var="contextPathVar" value="/resourceHandlerTest"/>
-    <j:set var="testPort1" value="8100"/>
-    <j:set var="testPort2" value="8200"/>
-    <j:set var="testUri" value="http://localhost:${testPort1}${contextPathVar}/resourceHandlerTest.txt"/>
-    <j:set var="bogusUri" value="http://localhost:${testPort1}${contextPathVar}/zzz"/>
-    <j:set var="testUriHeadOnly" value="http://localhost:${testPort2}${contextPathVar}/resourceHandlerTest.txt"/>
-
-    <jettyHttpServer var="httpServerDefault">
-      <socketListener port="${testPort1}"/>
-      <httpContext contextPath="${contextPathVar}" resourceBase="./docRoot/resourceHandlerTest">
-          <resourceHandler/>
-      </httpContext>
-    </jettyHttpServer>
-
-    <jettyHttpServer var="httpServerHeadOnly">
-      <socketListener port="${testPort2}"/>
-      <httpContext contextPath="${contextPathVar}" resourceBase="./docRoot/resourceHandlerTest">
-          <resourceHandler allowedMethods="OPTIONS,DELETE, HEAD"/>
-      </httpContext>
-    </jettyHttpServer>
-
-    <http:get var="mtc1" uri="${testUri}"/>
-
-    <!-- if get to default works and bogus uri returns 404
-         and a head request to the head only resource handler works
-         when a get fails then all is ok -->
-    <j:if test='${mtc1.statusCode == 200}'>
-        <http:get var="mtc2" uri="${bogusUri}"/>
-        <j:if test='${mtc2.statusCode == 404}'>
-            <http:head var="mtc3" uri="${testUriHeadOnly}"/>
-            <j:if test='${mtc3.statusCode == 200}'>
-                <http:get var="mtc4" uri="${testUriHeadOnly}"/>
-                <j:if test='${mtc4.statusCode == 405}'>
-                    It works!
-                </j:if>
-            </j:if>
-        </j:if>
-        <j:if test='${mtc2.statusCode != 404}'>
-            Results for mtc2 url are:
-            http return code = ${mtc2.statusCode}
-            http status text = '${mtc2.statusText}'
-            size of result = ${mtc2.responseBodyAsString.length()}
-            response time = ${mtc2.responseTime}
-
-                <j:forEach items="${mtc2.responseHeaders}" var="header" indexVar="i">
-                    header[${i}] = ${header}
-                </j:forEach>
-        </j:if>
-    </j:if>
-    <j:if test='${mtc1.statusCode != 200}'>
-        Results for mtc1 url are:
-        http return code = ${mtc1.statusCode}
-        http status text = '${mtc1.statusText}'
-        size of result = ${mtc1.responseBodyAsString.length()}
-        response time = ${mtc1.responseTime}
-
-            <j:forEach items="${mtc1.responseHeaders}" var="header" indexVar="i">
-                header[${i}] = ${header}
-            </j:forEach>
-    </j:if>
-    ${httpServerHeadOnly.stop(false)}
-    ${httpServerDefault.stop(false)}
-
-</j:jelly>
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/securityHandler.jelly b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/securityHandler.jelly
deleted file mode 100644
index ce82dd6..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/securityHandler.jelly
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly
-    xmlns:j="jelly:core"
-    xmlns="jelly:jetty"
-    xmlns:http="jelly:http"
-    trim="false">
-
-    <j:set var="contextPathVar" value="/resourceHandlerTest"/>
-    <j:set var="testPort1" value="8100"/>
-    <j:set var="testPort2" value="8200"/>
-    <j:set var="testUri1" value="http://localhost:${testPort1}${contextPathVar}/resourceHandlerTest.txt"/>
-    <j:set var="testUri2" value="http://localhost:${testPort2}${contextPathVar}/resourceHandlerTest.txt"/>
-
-    <jettyHttpServer var="httpServerNoAccess">
-      <socketListener port="${testPort1}"/>
-      <realm name="Demo Realm" config="setup/demoRealm.properties"/>
-      <httpContext contextPath="${contextPathVar}" resourceBase="./docRoot/resourceHandlerTest" realmName="Demo Realm">
-          <securityHandler>
-            <constraints>
-
-              <security-constraint>
-                <web-resource-collection>
-                 <web-resource-name>Default</web-resource-name>
-                  <url-pattern>/</url-pattern>
-                </web-resource-collection>
-                <auth-constraint>
-                  <role-name>*</role-name>
-                </auth-constraint>
-              </security-constraint>
-
-              <login-config>
-                <auth-method>BASIC</auth-method>
-                <realm-name>Demo Realm</realm-name>
-              </login-config>
-
-            </constraints>
-          </securityHandler>
-
-          <resourceHandler/>
-      </httpContext>
-    </jettyHttpServer>
-
-    <jettyHttpServer var="httpServerAllowAccess">
-      <socketListener port="${testPort2}"/>
-      <httpContext contextPath="${contextPathVar}" resourceBase="./docRoot/resourceHandlerTest">
-          <securityHandler>
-            <constraints>
-
-              <security-constraint>
-                <web-resource-collection>
-                 <web-resource-name>Resource Handler Test</web-resource-name>
-                  <url-pattern>/resourceHandlerTest/*</url-pattern>
-                  <http-method>GET</http-method>
-                  <http-method>HEAD</http-method>
-                </web-resource-collection>
-              </security-constraint>
-
-              <security-constraint>
-                <web-resource-collection>
-                 <web-resource-name>Default</web-resource-name>
-                  <url-pattern>/</url-pattern>
-                </web-resource-collection>
-                <auth-constraint/>
-              </security-constraint>
-
-            </constraints>
-          </securityHandler>
-
-          <resourceHandler/>
-      </httpContext>
-    </jettyHttpServer>
-
-    <!-- get with no authentication should fail-->
-    <http:get var="mtc1" uri="${testUri1}"/>
-
-    <j:choose>
-      <j:when test="${mtc1.statusCode == 403}">
-          <!-- get with no authentication in allowed area should work-->
-          <http:get var="mtc2" uri="${testUri2}"/>
-          <j:choose>
-              <j:when test="${mtc2.statusCode == 200}">
-                  <!-- get with authentication in controlled area should work-->
-                  <http:get var="mtc3" uri="${testUri1}">
-                     <http:header name="Authorization" value="Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="/>
-                  </http:get>
-                  <j:choose>
-                      <j:when test="${mtc3.statusCode == 200}">
-                          It works!
-                      </j:when>
-                      <j:otherwise>
-                        Results for mtc3 url are:
-                        http return code = ${mtc3.statusCode}
-                        http status text = '${mtc3.statusText}'
-                      </j:otherwise>
-                  </j:choose>
-              </j:when>
-
-              <j:otherwise>
-                Results for mtc2 url are:
-                http return code = ${mtc2.statusCode}
-                http status text = '${mtc2.statusText}'
-              </j:otherwise>
-          </j:choose>
-
-      </j:when>
-
-      <j:otherwise>
-        Results for mtc1 url are:
-        http return code = ${mtc1.statusCode}
-        http status text = '${mtc1.statusText}'
-      </j:otherwise>
-    </j:choose>
-    ${httpServerAllowAccess.stop(false)}
-    ${httpServerNoAccess.stop(false)}
-
-</j:jelly>
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/securityHandlerForbidden.jelly b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/securityHandlerForbidden.jelly
deleted file mode 100644
index 4b8756a..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/securityHandlerForbidden.jelly
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly
-    xmlns:j="jelly:core"
-    xmlns="jelly:jetty"
-    xmlns:http="jelly:http"
-    trim="false">
-
-    <j:set var="contextPathVar" value="/"/>
-    <j:set var="testPort" value="8100"/>
-    <j:set var="forbiddenUri" value="http://localhost:${testPort}/noaccess"/>
-
-    <jettyHttpServer var="httpServerForbidden">
-      <socketListener port="${testPort}"/>
-      <httpContext contextPath="${contextPathVar}" resourceBase="./docRoot">
-          <securityHandler>
-            <constraints>
-
-              <security-constraint>
-                <web-resource-collection>
-                  <web-resource-name>Forbidden</web-resource-name>
-                  <url-pattern>/*</url-pattern>
-                </web-resource-collection>
-                <auth-constraint>
-                </auth-constraint>
-              </security-constraint>
-
-            </constraints>
-          </securityHandler>
-
-          <resourceHandler/>
-      </httpContext>
-    </jettyHttpServer>
-
-    <!-- get should always be forbidden -->
-    <http:get var="mtc" uri="${forbiddenUri}"/>
-
-    <j:choose>
-      <j:when test="${mtc.statusCode == 403}">
-          It works!
-      </j:when>
-
-      <j:otherwise>
-        Results for mtc url are:
-        http return code = ${mtc.statusCode}
-        http status text = '${mtc.statusText}'
-      </j:otherwise>
-    </j:choose>
-    ${httpServerForbidden.stop(false)}
-
-</j:jelly>
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/securityHandlerUnauthorized.jelly b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/securityHandlerUnauthorized.jelly
deleted file mode 100644
index 573eb81..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/securityHandlerUnauthorized.jelly
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly
-    xmlns:j="jelly:core"
-    xmlns="jelly:jetty"
-    xmlns:http="jelly:http"
-    trim="false">
-
-    <j:set var="contextPathVar" value="/resourceHandlerTest"/>
-    <j:set var="testPort" value="8100"/>
-    <j:set var="testUri" value="http://localhost:${testPort}${contextPathVar}/resourceHandlerTest.txt"/>
-
-    <jettyHttpServer var="httpServerUnauthorized">
-      <socketListener port="${testPort}"/>
-      <realm name="Demo Realm" config="setup/demoRealm.properties"/>
-      <httpContext contextPath="${contextPathVar}" resourceBase="./docRoot/resourceHandlerTest" realmName="Demo Realm">
-          <securityHandler>
-            <constraints>
-
-              <security-constraint>
-                <web-resource-collection>
-                 <web-resource-name>Default</web-resource-name>
-                  <url-pattern>/</url-pattern>
-                </web-resource-collection>
-                <auth-constraint>
-                  <role-name>*</role-name>
-                </auth-constraint>
-              </security-constraint>
-
-              <login-config>
-                <auth-method>BASIC</auth-method>
-                <realm-name>Demo Realm</realm-name>
-              </login-config>
-
-            </constraints>
-          </securityHandler>
-
-          <resourceHandler/>
-      </httpContext>
-    </jettyHttpServer>
-
-    <!-- get with no authentication should fail with Unauthorized -->
-    <http:get var="mtc1" uri="${testUri}"/>
-
-    <j:choose>
-      <j:when test="${mtc1.statusCode == 401}">
-          <!-- get with authentication in controlled area should work-->
-          <http:get var="mtc2" uri="${testUri}">
-             <http:header name="Authorization" value="Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="/>
-          </http:get>
-          <j:choose>
-              <j:when test="${mtc2.statusCode == 200}">
-                  It works!
-              </j:when>
-              <j:otherwise>
-                Results for mtc2 url are:
-                http return code = ${mtc2.statusCode}
-                http status text = '${mtc2.statusText}'
-              </j:otherwise>
-          </j:choose>
-      </j:when>
-
-      <j:otherwise>
-        Results for mtc1 url are:
-        http return code = ${mtc1.statusCode}
-        http status text = '${mtc1.statusText}'
-      </j:otherwise>
-    </j:choose>
-    ${httpServerUnauthorized.stop(false)}
-
-</j:jelly>
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/setup/demoRealm.properties b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/setup/demoRealm.properties
deleted file mode 100644
index c1216c6..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/setup/demoRealm.properties
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-#
-# This file defines users passwords and roles for a HashUserRealm
-#
-# The format is
-#  <username>: <password>[,<rolename> ...]
-#
-# Passwords may be clear text, obfuscated or checksummed.  The class
-# com.mortbay.Util.Password should be used to generate obfuscated
-# passwords or password checksums
-#
-# If DIGEST Authentication is used, the password must be in a recoverable
-# format, either plain text or OBF:.
-#
-
-test: test
-Aladdin: open sesame
\ No newline at end of file
diff --git a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/socketListener.jelly b/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/socketListener.jelly
deleted file mode 100644
index 6bb21d6..0000000
--- a/jelly-tags/jetty/src/test/org/apache/commons/jelly/jetty/socketListener.jelly
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly
-    xmlns:j="jelly:core"
-    xmlns:http="jelly:http"
-    xmlns="jelly:jetty"
-    trim="false">
-
-    <j:set var="contextPathVar" value=""/>
-    <j:set var="testPort1" value="8100"/>
-    <j:set var="testPort2" value="8200"/>
-    <j:set var="testUri1" value="http://localhost:${testPort1}${contextPathVar}/test1.txt"/>
-    <j:set var="testUri2" value="http://localhost:${testPort2}${contextPathVar}/test1.txt"/>
-
-    <jettyHttpServer var="httpServer1">
-      <socketListener/>
-    </jettyHttpServer>
-
-    <jettyHttpServer var="httpServer2">
-      <socketListener port="${testPort2}"/>
-    </jettyHttpServer>
-
-    <http:get var="mtc1" uri="${testUri1}"/>
-    <http:get var="mtc2" uri="${testUri2}"/>
-
-    <j:if test='${mtc1.statusCode == 200}'>
-        <j:if test='${mtc2.statusCode == 200}'>
-            <j:if test='${mtc2.responseBodyAsString == mtc1.responseBodyAsString}'>
-                ${mtc2.responseBodyAsString}
-            </j:if>
-        </j:if>
-    </j:if>
-    <j:if test='${mtc1.statusCode != 200}'>
-        Results for mtc1 url are:
-        http return code = ${mtc1.statusCode}
-        http status text = '${mtc1.statusText}'
-        size of result = ${mtc1.responseBodyAsString.length()}
-        response time = ${mtc1.responseTime}
-
-            <j:forEach items="${mtc1.responseHeaders}" var="header" indexVar="i">
-                header[${i}] = ${header}
-            </j:forEach>
-    </j:if>
-    <j:if test='${mtc2.statusCode != 200}'>
-        Results for mtc2 url are:
-        http return code = ${mtc2.statusCode}
-        http status text = '${mtc2.statusText}'
-        size of result = ${mtc2.responseBodyAsString.length()}
-        response time = ${mtc2.responseTime}
-
-            <j:forEach items="${mtc2.responseHeaders}" var="header" indexVar="i">
-                header[${i}] = ${header}
-            </j:forEach>
-    </j:if>
-    ${httpServer2.stop()}
-    ${httpServer1.stop()}
-
-</j:jelly>
diff --git a/jelly-tags/jetty/xdocs/changes.xml b/jelly-tags/jetty/xdocs/changes.xml
deleted file mode 100644
index 3bdfaaa..0000000
--- a/jelly-tags/jetty/xdocs/changes.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-13"></release>
-  </body>
-</document>
diff --git a/jelly-tags/jetty/xdocs/index.xml b/jelly-tags/jetty/xdocs/index.xml
deleted file mode 100644
index 65189bc..0000000
--- a/jelly-tags/jetty/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Jetty Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        Tags for starting Jetty HTTP servers and procesing HTTP requests using Jelly scripts.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/jetty/xdocs/navigation.xml b/jelly-tags/jetty/xdocs/navigation.xml
deleted file mode 100644
index 8d1e240..0000000
--- a/jelly-tags/jetty/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Jetty Tag Library">
-
-  <title>Jetty Tag Library</title>
-  
-  <body>
-    <menu name="Jetty Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/jface/.cvsignore b/jelly-tags/jface/.cvsignore
deleted file mode 100644
index 263f2bf..0000000
--- a/jelly-tags/jface/.cvsignore
+++ /dev/null
@@ -1,5 +0,0 @@
-target
-maven.log
-personal-settings.props
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/jface/maven.xml b/jelly-tags/jface/maven.xml
deleted file mode 100644
index b7da6f5..0000000
--- a/jelly-tags/jface/maven.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-    <!-- demos -->
-  <goal name="demo" prereqs="create-classpath"
-        description="Runs a JellyJFace demo">
-    <java classname="org.apache.commons.jelly.tags.jface.JFaceDemo" fork="yes">
-      <classpath refid="test.classpath"/>
-    </java>
-  </goal>
-
-  <goal name="demo:preferences" prereqs="create-classpath"
-        description="Runs a Preferences demo">
-    <java classname="org.apache.commons.jelly.tags.jface.preference.PreferenceDemo" fork="yes">
-      <classpath refid="test.classpath"/>
-    </java>
-  </goal>
-
-  <goal name="demo:wizard" prereqs="create-classpath"
-        description="Runs a Wizard demo">
-    <java classname="org.apache.commons.jelly.tags.jface.wizard.WizardDemo" fork="yes">
-      <classpath refid="test.classpath"/>
-    </java>
-  </goal>
-
-</project>
diff --git a/jelly-tags/jface/project.properties b/jelly-tags/jface/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/jface/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/jface/project.xml b/jelly-tags/jface/project.xml
deleted file mode 100644
index 1c3d8ed..0000000
--- a/jelly-tags/jface/project.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-jface</id>
-  <name>commons-jelly-tags-jface</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.jface</package>
-  <description>This is a Jelly interface for jface.</description>
-  <shortDescription>Commons Jelly jface Tag Library</shortDescription>
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-JFACE-1_0</tag>
-    </version>
-  </versions>
-  <dependencies>
-    <!-- START for compilation -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-swt</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <!-- swt library -->
-
-    <dependency>
-      <id>swt</id>
-      <!-- don't know how to support OS-dependent jars in Maven yet -->
-
-      <version>win32-2.1.0</version>
-      <properties>
-        <gump.project>eclipse</gump.project>
-        <gump.id>swt</gump.id>
-      </properties>
-    </dependency>
-    <!-- jface libraries -->
-
-    <dependency>
-      <id>eclipse+boot</id>
-      <version>2.1.0</version>
-      <properties>
-        <gump.project>eclipse</gump.project>
-        <gump.id>boot</gump.id>
-      </properties>
-    </dependency>
-    <dependency>
-      <id>eclipse+jface</id>
-      <version>2.1.0</version>
-      <properties>
-        <gump.project>eclipse</gump.project>
-        <gump.id>jface</gump.id>
-      </properties>
-    </dependency>
-    <dependency>
-      <id>eclipse+runtime</id>
-      <version>2.1.0</version>
-      <properties>
-        <gump.project>eclipse</gump.project>
-        <gump.id>runtime</gump.id>
-      </properties>
-    </dependency>
-    <!-- END for compilation -->
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-log</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-define</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <!-- END for running demos -->
-
-  </dependencies>
-</project>
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ActionTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ActionTag.java
deleted file mode 100644
index b0a1668..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ActionTag.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface;
-
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * This tag creates an JFace Action
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class ActionTag extends UseBeanTag {
-
-    /**
-     *  Implementing Action class
-     */
-    class ActionImpl extends Action {
-        public void runWithEvent(Event event) {
-            try {
-                context.setVariable(var, event);
-                invokeBody(output);
-            } catch (Exception e) {
-                log.error(
-                    "Caught exception: "
-                        + e
-                        + " while processing event: "
-                        + event,
-                    e);
-            }
-        }
-    }
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ActionTag.class);
-    private XMLOutput output;
-    private String var = "event";
-
-    /**
-     * @param arg0
-     */
-    public ActionTag(Class arg0) {
-        super(arg0);
-    }
-
-    /**
-     * @return IContributionManager
-     */
-    protected IContributionManager getParentContributionManager() {
-        MenuManagerTag tag =
-            (MenuManagerTag) findAncestorWithClass(MenuManagerTag.class);
-        if (tag != null) {
-            return tag.getMenuManager();
-        }
-        return null;
-    }
-
-    /**
-      * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-      */
-    public void doTag(XMLOutput output)
-        throws MissingAttributeException, JellyTagException {
-
-        Map attributes = getAttributes();
-
-        Action action = new ActionImpl();
-        setBeanProperties(action, attributes);
-
-        IContributionManager cm = getParentContributionManager();
-        if (cm != null) {
-            cm.add(action);
-        }
-
-        this.output = output;
-    }
-
-}
\ No newline at end of file
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ContributionItemTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ContributionItemTag.java
deleted file mode 100644
index 21d118d..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ContributionItemTag.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.eclipse.jface.action.ContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-
-/**
- * This tag creates an JFace ContributionItem
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class ContributionItemTag extends UseBeanTag {
-
-    public ContributionItemTag(Class arg0) {
-        super(arg0);
-    }
-
-    /**
-      * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-      */
-    public void doTag(XMLOutput output)
-        throws MissingAttributeException, JellyTagException {
-
-        super.doTag(output);
-
-        Object bean = getBean();
-        if (bean != null && bean instanceof ContributionItem) {
-            IContributionManager cm = getParentContributionManager();
-            if (cm != null) {
-                cm.add((ContributionItem) bean);
-            }
-        }
-
-    }
-
-    /**
-     * @return IContributionManager
-     */
-    protected IContributionManager getParentContributionManager() {
-        MenuManagerTag tag =
-            (MenuManagerTag) findAncestorWithClass(MenuManagerTag.class);
-        if (tag != null) {
-            return tag.getMenuManager();
-        }
-        return null;
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/DoubleClickListenerTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/DoubleClickListenerTag.java
deleted file mode 100644
index 8ed3dc5..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/DoubleClickListenerTag.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * This tag adds a listener for double-clicks in this viewer.
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class DoubleClickListenerTag
-    extends TagSupport
-    implements IDoubleClickListener {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(DoubleClickListenerTag.class);
-
-    private String var = "event";
-    private XMLOutput output;
-
-    /*
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output)
-        throws MissingAttributeException, JellyTagException {
-        if (var == null) {
-            throw new MissingAttributeException("var");
-        }
-
-        StructuredViewer viewer = getParentViewer();
-        if (viewer == null) {
-            throw new JellyTagException("This tag must be nested within a viewer tag");
-        }
-
-        viewer.addDoubleClickListener(this);
-        this.output = output;
-    }
-
-    public StructuredViewer getParentViewer() {
-        ViewerTag tag = (ViewerTag) findAncestorWithClass(ViewerTag.class);
-        if (tag != null) {
-            Viewer viewer = tag.getViewer();
-            if (viewer instanceof StructuredViewer) {
-                return (StructuredViewer) viewer;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @return String
-     */
-    public String getVar() {
-        return var;
-    }
-
-    /**
-     * Sets the var.
-     * @param var The var to set
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    //  Listener interface
-    //-------------------------------------------------------------------------
-    /*
-     * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
-     */
-    public void doubleClick(DoubleClickEvent event) {
-        try {
-            context.setVariable(var, event);
-            invokeBody(output);
-        } catch (Exception e) {
-            log.error(
-                "Caught exception: " + e + " while processing event: " + event,
-                e);
-        }
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceImageTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceImageTag.java
deleted file mode 100644
index ec6c33b..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceImageTag.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowImpl;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
-import org.apache.commons.jelly.tags.swt.ImageTag;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Implementation of SWT ImageTag
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class JFaceImageTag extends ImageTag {
-
-    /**
-     * @return the parent window
-     */
-    public Window getParentWindow() {
-        ApplicationWindowTag tag =
-            (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
-        if (tag != null) {
-            return tag.getWindow();
-        }
-        return null;
-    }
-
-    /**
-     * Set default image Window
-     * @param window
-     * @param image
-     */
-    private void setWindowImage(Window window, Image image) {
-        window.getShell().setImage(image);
-    }
-
-    /*
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        // invoke by body just in case some nested tag configures me
-        invokeBody(output);
-
-        Widget parent = getParentWidget();
-        Window window = null;
-        if (parent == null) {
-            window = getParentWindow();
-            if (window != null && window instanceof ApplicationWindowImpl) {
-                parent = ((ApplicationWindowImpl) window).getContents();
-            }
-        }
-
-        if (parent == null && window == null) {
-            throw new JellyTagException("This tag must be nested within a Widget or a Window");
-        }
-
-        Image image = new Image(parent.getDisplay(), getSrc());
-        if (window != null) {
-            setWindowImage(window, image);
-        } else {
-            setWidgetImage(parent, image);
-        }
-
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceLayoutDataTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceLayoutDataTag.java
deleted file mode 100644
index ca507cc..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceLayoutDataTag.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-* Copyright 2002-2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.commons.jelly.tags.jface;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowImpl;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
-import org.apache.commons.jelly.tags.swt.LayoutDataTag;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Implementation of SWT LayoutDataTag
- *  
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a> 
- */
-public class JFaceLayoutDataTag extends LayoutDataTag {
-
-    /**
-     * @param layoutDataClass
-     */
-    public JFaceLayoutDataTag(Class layoutDataClass) {
-        super(layoutDataClass);
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#processBean(java.lang.String, java.lang.Object)
-     */
-    protected void processBean(String var, Object bean) throws JellyTagException {
-        Widget parent = getParentWidget();
-        Window window = null;
-        if (parent == null) {
-            window = getParentWindow();
-            if (window != null && window instanceof ApplicationWindowImpl) {
-                parent = ((ApplicationWindowImpl) window).getContents();
-            }
-        }
-
-        if (parent instanceof Control) {
-            Control control = (Control) parent;
-            control.setLayoutData(getBean());
-        } else {
-            throw new JellyTagException("This tag must be nested within a control widget tag");
-        }
-    }
-
-    /**
-     * @return the parent window 
-     */
-    public Window getParentWindow() {
-        ApplicationWindowTag tag =
-            (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
-        if (tag != null) {
-            return tag.getWindow();
-        }
-        return null;
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceLayoutTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceLayoutTag.java
deleted file mode 100644
index 939edc9..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceLayoutTag.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowImpl;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
-import org.apache.commons.jelly.tags.swt.LayoutTag;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Implementation of SWT LayoutTag
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class JFaceLayoutTag extends LayoutTag {
-
-    /**
-     * @param layoutClass
-     */
-    public JFaceLayoutTag(Class layoutClass) {
-        super(layoutClass);
-        // TODO Auto-generated constructor stub
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#processBean(java.lang.String, java.lang.Object)
-     */
-    protected void processBean(String var, Object bean) throws JellyTagException {
-
-        Widget parent = getParentWidget();
-        if (parent == null) { // perhaps parent is a Window
-            Window window = getParentWindow();
-            if (window != null && window instanceof ApplicationWindowImpl) {
-                parent = ((ApplicationWindowImpl) window).getContents();
-            }
-        }
-
-        if (parent instanceof Composite) {
-            Composite composite = (Composite) parent;
-            composite.setLayout(getLayout());
-
-        } else {
-            throw new JellyTagException("This tag must be nested within a composite widget tag");
-        }
-
-    }
-
-    /**
-     * @return the parent window
-     */
-    public Window getParentWindow() {
-        ApplicationWindowTag tag =
-            (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
-        if (tag != null) {
-            return tag.getWindow();
-        }
-        return null;
-    }
-}
-
-
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceTagLibrary.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceTagLibrary.java
deleted file mode 100644
index 3ec57c0..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceTagLibrary.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.jelly.tags.jface.preference.FieldEditorTag;
-import org.apache.commons.jelly.tags.jface.preference.PreferenceDialogTag;
-import org.apache.commons.jelly.tags.jface.preference.PreferencePageTag;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
-import org.apache.commons.jelly.tags.jface.wizard.WizardDialogTag;
-import org.apache.commons.jelly.tags.jface.wizard.WizardPageTag;
-import org.apache.commons.jelly.tags.swt.SwtTagLibrary;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.ColorFieldEditor;
-import org.eclipse.jface.preference.DirectoryFieldEditor;
-import org.eclipse.jface.preference.FileFieldEditor;
-import org.eclipse.jface.preference.FontFieldEditor;
-import org.eclipse.jface.preference.IntegerFieldEditor;
-import org.eclipse.jface.preference.StringFieldEditor;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.TableTreeViewer;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.window.ApplicationWindow;
-import org.eclipse.swt.SWT;
-import org.xml.sax.Attributes;
-
-/**
- * A Jelly custom tag library that creates JFace user interfaces
- * This taglib extends the SWT tag lib
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class JFaceTagLibrary extends SwtTagLibrary {
-
-    public JFaceTagLibrary() {
-
-        // Viewer tags
-        registerViewerTag("tableViewer", TableViewer.class);
-        registerViewerTag("tableTreeViewer", TableTreeViewer.class);
-        registerViewerTag("treeViewer", TreeViewer.class);
-        registerViewerTag("checkboxTreeViewer", CheckboxTreeViewer.class);
-
-        // Event tags
-        registerTag("doubleClickListener", DoubleClickListenerTag.class);
-        registerTag("selectionChangedListener", SelectionChangedListenerTag.class);
-
-        // Window tags
-        registerWindowTag("applicationWindow", ApplicationWindow.class);
-
-        // ContributionManager tags
-        registerMenuManager("menuManager", MenuManagerTag.class);
-
-        // Action tags
-        registerActionTag("action", ActionTag.class);
-
-        // ContributionItem tags
-        registerContributionItemTag("separator", Separator.class);
-
-        // Wizard tags
-        registerWizardDialogTag("wizardDialog", WizardDialogTag.class);
-        registerWizardPageTag("wizardPage", WizardPageTag.class);
-
-        // Preference tags
-        registerPreferenceDialogTag("preferenceDialog", PreferenceDialogTag.class);
-        registerTag("preferencePage", PreferencePageTag.class);
-        registerFieldEditorTag("booleanFieldEditor", BooleanFieldEditor.class);
-        registerFieldEditorTag("colorFieldEditor", ColorFieldEditor.class);
-        registerFieldEditorTag("directoryFieldEditor", DirectoryFieldEditor.class);
-        registerFieldEditorTag("fileFieldEditor", FileFieldEditor.class);
-        registerFieldEditorTag("fontFieldEditor", FontFieldEditor.class);
-        registerFieldEditorTag("integerFieldEditor", IntegerFieldEditor.class);
-        //registerFieldEditorTag("radioGroupFieldEditor", RadioGroupFieldEditor.class);
-        //registerFieldEditorTag("stringButtonFieldEditor", StringButtonFieldEditor.class);
-        registerFieldEditorTag("stringFieldEditor", StringFieldEditor.class);
-
-    }
-
-    /**
-     * @param string
-     * @param class1
-     */
-    private void registerMenuManager(String name, final Class theClass) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new MenuManagerTag();
-            }
-        });
-
-    }
-
-    /**
-     * Register a widget tag for the given name
-     *
-     * @param name
-     * @param widgetClass
-     */
-    protected void registerViewerTag(String name, Class widgetClass) {
-        registerViewerTag(name, widgetClass, SWT.NULL);
-    }
-
-    /**
-     * Register a widget tag for the given name
-     *
-     * @param name
-     * @param widgetClass
-     * @param style
-     */
-    protected void registerViewerTag(String name, final Class theClass, final int style) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new ViewerTag(theClass, style);
-            }
-        });
-    }
-
-    /**
-     * Register a widget tag for the given name
-     *
-     * @param name
-     * @param widgetClass
-     * @param style
-     */
-    protected void registerWindowTag(String name, final Class theClass) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new ApplicationWindowTag(theClass);
-            }
-        });
-    }
-
-    /**
-     * Register an action tag for the given name
-     */
-    protected void registerActionTag(String name, final Class theClass) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new ActionTag(theClass);
-            }
-        });
-    }
-
-    /**
-       * Register a contribution item tag for the given name
-       */
-    protected void registerContributionItemTag(String name, final Class theClass) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new ContributionItemTag(theClass);
-            }
-        });
-    }
-
-    /**
-     * @param name
-     * @param theClass
-     */
-    protected void registerPreferenceDialogTag(String name, final Class theClass) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new PreferenceDialogTag(theClass);
-            }
-        });
-    }
-
-    /**
-     * @param name
-     * @param theClass
-     */
-    protected void registerFieldEditorTag(String name, final Class theClass) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new FieldEditorTag(theClass);
-            }
-        });
-    }
-
-    /**
-     * @param name
-     * @param theClass
-     */
-    protected void registerWizardDialogTag(String name, final Class theClass) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new WizardDialogTag(theClass);
-            }
-        });
-    }
-
-    protected void registerWizardPageTag(String name, final Class theClass) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new WizardPageTag(theClass);
-            }
-        });
-    }
-
-    /**
-     * Register a widget tag for the given name
-     */
-    protected void registerWidgetTag(String name, Class widgetClass) {
-        registerWidgetTag(name, widgetClass, SWT.NULL);
-    }
-
-    /**
-     * Register a widget tag for the given name
-     */
-    protected void registerWidgetTag(String name, final Class widgetClass, final int style) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new JFaceWidgetTag(widgetClass, style);
-            }
-        });
-    }
-
-    /**
-     * Register a layout tag for the given name
-     */
-    protected void registerLayoutTag(String name, final Class layoutClass) {
-        registerTagFactory(name, new TagFactory() {
-            /**
-             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-             */
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new JFaceLayoutTag(layoutClass);
-            }
-        });
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceWidgetTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceWidgetTag.java
deleted file mode 100644
index 6140aeb..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceWidgetTag.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowImpl;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
-import org.apache.commons.jelly.tags.jface.wizard.WizardPageTag;
-import org.apache.commons.jelly.tags.swt.WidgetTag;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Implementation of SWT WidgetTag
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class JFaceWidgetTag extends WidgetTag implements Tag {
-
-    /**
-     * @param widgetClass
-     */
-    public JFaceWidgetTag(Class widgetClass) {
-        super(widgetClass);
-    }
-
-    /**
-     * @param widgetClass
-     * @param style
-     */
-    public JFaceWidgetTag(Class widgetClass, int style) {
-        super(widgetClass, style);
-    }
-
-    /*
-     * @see org.apache.commons.jelly.tags.swt.WidgetTag#attachWidgets(java.lang.Object, org.eclipse.swt.widgets.Widget)
-     */
-    protected void attachWidgets(Object parent, Widget widget) throws JellyTagException {
-        super.attachWidgets(parent, widget);
-
-        // set Parent composite of wizard page
-        if (getParent() instanceof WizardPageTag) {
-            WizardPageTag tag = (WizardPageTag) getParent();
-            if (tag.getWizardPageImpl().getParentControl() == null) {
-                if (widget instanceof Composite) {
-                    tag.getWizardPageImpl().setParentComposite((Composite) widget);
-                } else {
-                    throw new JellyTagException("First child of a <wizardPage> must be of type Composite");
-                }
-            }
-        }
-    }
-
-    /*
-     * @see org.apache.commons.jelly.tags.swt.WidgetTag#getParentWidget()
-     */
-    public Widget getParentWidget() {
-        parent = super.getParentWidget();
-
-        if (parent == null && getParent() instanceof WizardPageTag) {
-            WizardPageTag tag = (WizardPageTag) getParent();
-            if (tag != null) {
-                WizardPageTag.WizardPageImpl page = tag.getWizardPageImpl();
-                return page.getControl();
-            }
-        }
-
-        if (parent == null) {
-            ApplicationWindowTag tag =
-                (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
-            if (tag != null) {
-                Window window = tag.getWindow();
-                if (window != null && window instanceof ApplicationWindowImpl) {
-                    return ((ApplicationWindowImpl) window).getContents();
-                }
-            }
-        }
-
-        return parent;
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/MenuManagerTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/MenuManagerTag.java
deleted file mode 100644
index 9d55a6b..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/MenuManagerTag.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.apache.commons.jelly.tags.jface;
-
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.window.ApplicationWindow;
-import org.eclipse.jface.window.Window;
-
-/**
- * This tag creates an JFace MenuManager
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class MenuManagerTag extends UseBeanTag {
-
-    private String text;
-    private MenuManager mm;
-
-    /**
-     * @return the parent window which this widget will be added to.
-     */
-    public Window getParentWindow() {
-
-        ApplicationWindowTag tag =
-            (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag
-                .class);
-        if (tag != null) {
-            return tag.getWindow();
-        }
-
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output)
-        throws MissingAttributeException, JellyTagException {
-
-        Map attributes = getAttributes();
-        text = attributes.remove("text").toString();
-
-        if (text == null)
-            throw new MissingAttributeException("text attribute is missing");
-
-        mm = new MenuManager(text);
-
-        ApplicationWindow window = (ApplicationWindow) getParentWindow();
-        if (window != null) {
-            window.getMenuBarManager().add(mm);
-        }
-
-        // invoke by body just in case some nested tag configures me
-        invokeBody(output);
-    }
-
-    /**
-     * @return MenuManager
-     */
-    public MenuManager getMenuManager() {
-        return mm;
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/SelectionChangedListenerTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/SelectionChangedListenerTag.java
deleted file mode 100644
index 5146b0e..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/SelectionChangedListenerTag.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * This tag adds a listener for selection changes in this viewer.
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class SelectionChangedListenerTag
-    extends TagSupport
-    implements ISelectionChangedListener {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log =
-        LogFactory.getLog(SelectionChangedListenerTag.class);
-
-    private String var = "event";
-    private XMLOutput output;
-
-    /*
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output)
-        throws MissingAttributeException, JellyTagException {
-        if (var == null) {
-            throw new MissingAttributeException("var");
-        }
-
-        Viewer viewer = getParentViewer();
-        if (viewer == null) {
-            throw new JellyTagException("This tag must be nested within a viewer tag");
-        }
-
-        viewer.addSelectionChangedListener(this);
-        this.output = output;
-    }
-
-    public Viewer getParentViewer() {
-        ViewerTag tag = (ViewerTag) findAncestorWithClass(ViewerTag.class);
-        if (tag != null) {
-            return tag.getViewer();
-        }
-        return null;
-    }
-
-    /**
-     * @return String
-     */
-    public String getVar() {
-        return var;
-    }
-
-    /**
-     * Sets the var.
-     * @param var The var to set
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    //  Listener interface
-    //-------------------------------------------------------------------------
-
-    /*
-     * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        try {
-            context.setVariable(var, event);
-            invokeBody(output);
-        } catch (Exception e) {
-            log.error(
-                "Caught exception: " + e + " while processing event: " + event,
-                e);
-        }
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ViewerTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ViewerTag.java
deleted file mode 100644
index 199585e..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ViewerTag.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface;
-
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.swt.WidgetTag;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * This tag creates an JFace Viewer
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class ViewerTag extends WidgetTag {
-
-    private Composite parent;
-    private int style = SWT.NULL;
-
-    /**
-     * @param widgetClass
-     */
-    public ViewerTag(Class tagClass) {
-        super(tagClass);
-    }
-
-    /**
-     * @param widgetClass
-     * @param style
-     */
-    public ViewerTag(Class tagClass, int style) {
-        super(tagClass);
-        this.style = style;
-    }
-
-    /*
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
-     */
-    protected Object newInstance(
-        Class theClass,
-        Map attributes,
-        XMLOutput output)
-        throws JellyTagException {
-
-        int style = getStyle(attributes);
-
-        // now lets call the constructor with the parent
-        Widget parent = getParentWidget();
-        Viewer viewer = (Viewer) createWidget(theClass, parent, style);
-
-        return viewer;
-    }
-
-    /**
-     * @return the visible viewer, if there is one.
-     */
-    public Viewer getViewer() {
-        Object bean = getBean();
-        if (bean instanceof Viewer) {
-            return (Viewer) bean;
-        }
-        return null;
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/impl/ApplicationWindowImpl.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/impl/ApplicationWindowImpl.java
deleted file mode 100644
index 824c20e..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/impl/ApplicationWindowImpl.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface.impl;
-
-import org.eclipse.jface.window.ApplicationWindow;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * This is the default implementation for a ApplicationWindowTag
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class ApplicationWindowImpl extends ApplicationWindow {
-
-    /**
-     * @param shell
-     */
-    public ApplicationWindowImpl(Shell parentShell) {
-
-        super(parentShell);
-
-        // default at all
-        addMenuBar();
-        addStatusLine();
-        addToolBar(SWT.NULL);
-
-        setBlockOnOpen(true);
-
-        // create window
-        create();
-    }
-
-    /*
-     * override to make public
-     * @see org.eclipse.jface.window.Window#getContents()
-     */
-    public Control getContents() {
-        return super.getContents();
-    }
-
-}
-
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/package.html b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/package.html
deleted file mode 100644
index f6668fa..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/package.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>
-  	The JellyJFace Library is a Jelly Library for creating Rich User Interfaces 
-  	using SWT and JFace via XML markup (a Jelly script).
-  	JellyJFace is an eextension of JellySWT to add support for the JFace framework.
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/FieldEditorTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/FieldEditorTag.java
deleted file mode 100644
index fd747ed..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/FieldEditorTag.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface.preference;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.eclipse.jface.preference.FieldEditor;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * This Tag creates a JFace FieldEditor
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class FieldEditorTag extends UseBeanTag {
-
-    public FieldEditorTag(Class arg0) {
-        super(arg0);
-    }
-
-    /*
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        PreferencePageTag tag = (PreferencePageTag) findAncestorWithClass(PreferencePageTag.class);
-        if (tag == null) {
-            throw new JellyTagException("This tag must be nested inside a <preferencePage>");
-        }
-
-        // get new instance of FieldEditor
-        PreferencePageTag.PreferencePageImpl page = tag.getPreferencePageImpl();
-        getAttributes().put("parentComposite", page.getFieldEditorParent());
-
-        // add fieldEditor to PreferencePage
-        Object fieldEditor = newInstance(getDefaultClass(), getAttributes(), output);
-        if (fieldEditor instanceof FieldEditor) {
-            page.addField((FieldEditor) fieldEditor);
-        }
-
-    }
-
-    /*
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
-     */
-    protected Object newInstance(Class theClass, Map attributes, XMLOutput output)
-        throws JellyTagException {
-
-        if (theClass == null) {
-            throw new JellyTagException("No Class available to create the FieldEditor");
-        }
-
-        String name = (String) attributes.get("name");
-        if (name == null) {
-            throw new MissingAttributeException("name");
-        }
-
-        String labelText = (String) attributes.get("labelText");
-        if (labelText == null) {
-            throw new MissingAttributeException("labelText");
-        }
-
-        Composite parentComposite = (Composite) attributes.get("parentComposite");
-        if (parentComposite == null) {
-            throw new MissingAttributeException("parentComposite");
-        }
-
-        // let's try to call a constructor
-        try {
-            Class[] types = { String.class, String.class, Composite.class };
-            Constructor constructor = theClass.getConstructor(types);
-            if (constructor != null) {
-                Object[] arguments = { name, labelText, parentComposite };
-                return constructor.newInstance(arguments);
-            }
-            return theClass.newInstance();
-
-        } catch (NoSuchMethodException e) {
-            throw new JellyTagException(e);
-        } catch (InstantiationException e) {
-            throw new JellyTagException(e);
-        } catch (IllegalAccessException e) {
-            throw new JellyTagException(e);
-        } catch (InvocationTargetException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/PreferenceDialogTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/PreferenceDialogTag.java
deleted file mode 100644
index 29894d3..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/PreferenceDialogTag.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface.preference;
-
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * This Tag creates a JFace PreferenceDialog
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class PreferenceDialogTag extends UseBeanTag {
-
-    public PreferenceDialogTag(Class arg0) {
-        super(arg0);
-    }
-
-    /**
-     * @return PreferenceDialog
-     */
-    public PreferenceDialog getPreferenceDialog() {
-        Object bean = getBean();
-        if (bean instanceof PreferenceDialog) {
-            return (PreferenceDialog) bean;
-        }
-        return null;
-    }
-
-    /**
-     * @return Shell
-     * @throws JellyTagException
-     */
-    protected Shell getShell() throws JellyTagException {
-        ApplicationWindowTag tag =
-            (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
-
-        if (tag != null) {
-            return tag.getWindow().getShell();
-
-        } else {
-            Map attributes = getAttributes();
-            Object parent = attributes.remove("parent");
-            if (parent instanceof Shell) {
-                return (Shell) parent;
-            } else {
-                throw new JellyTagException("This tag must be nested inside a <applicationWindow> or have a parent of type Shell");
-            }
-        }
-    }
-
-    /*
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
-     */
-    protected Object newInstance(Class arg0, Map arg1, XMLOutput arg2) throws JellyTagException {
-        PreferenceManager pm = new PreferenceManager();
-        return new PreferenceDialog(getShell(), pm);
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/PreferencePageTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/PreferencePageTag.java
deleted file mode 100644
index aab9516..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/PreferencePageTag.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface.preference;
-
-import java.io.IOException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jface.preference.FieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.preference.PreferenceNode;
-import org.eclipse.jface.preference.PreferenceStore;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * This Tag creates a JFace PreferencePage
- *
- * Provides a concrete preference store implementation based on an internal java.util.Properties object
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class PreferencePageTag extends TagSupport {
-
-    /**
-     * Implementation of a FieldEditorPreferencePage
-     * method createFieldEditors is called on Dialog.open()
-     */
-    public class PreferencePageImpl extends FieldEditorPreferencePage {
-        private PreferenceStore preferenceStore;
-
-        public PreferencePageImpl(String title) {
-            super(title, FieldEditorPreferencePage.GRID);
-            try {
-                preferenceStore = new PreferenceStore(filename);
-                preferenceStore.load();
-                setPreferenceStore(preferenceStore);
-            } catch (IOException e) {
-                log.error(e);
-            }
-        }
-
-        public void addField(FieldEditor editor) {
-            super.addField(editor);
-        }
-
-        protected void createFieldEditors() {
-            try {
-                invokeBody(output);
-            } catch (JellyTagException e) {
-                log.error(e);
-            }
-        }
-
-        public Composite getFieldEditorParent() {
-            return super.getFieldEditorParent();
-        }
-
-        public IPreferenceStore getPreferenceStore() {
-            return preferenceStore;
-        }
-    }
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(PreferencePageTag.class);
-
-    /** Filename of the store */
-    private String filename;
-
-    /** Jelly XMLOutput */
-    private XMLOutput output;
-
-    /** Current PreferencePageImpl */
-    private PreferencePageImpl page;
-
-    /** Title of both PreferenceNode and PreferencePage */
-    private String title;
-
-    /*
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        // check location
-        PreferenceDialogTag dialogTag =
-            (PreferenceDialogTag) findAncestorWithClass(PreferenceDialogTag.class);
-        if (dialogTag == null) {
-            throw new JellyTagException("This tag must be nested within a <preferenceDialog>");
-        }
-
-        // check for missing attributes
-        if (filename == null) {
-            throw new MissingAttributeException("filename");
-        }
-        if (title == null) {
-            throw new MissingAttributeException("title");
-        }
-
-        // build new PreferenceNode with same title as the PreferencePage
-        PreferenceDialog dialog = dialogTag.getPreferenceDialog();
-        PreferenceNode node = new PreferenceNode(title);
-
-        // build new PreferencePage
-        page = new PreferencePageImpl(title);
-
-        // add node to PreferenceManager
-        node.setPage(page);
-        dialog.getPreferenceManager().addToRoot(node);
-
-        // used by PreferencePageImpl
-        this.output = output;
-    }
-
-    /**
-     * Get the PreferencePageImpl
-     * @return PreferencePageImpl
-     */
-    public PreferencePageImpl getPreferencePageImpl() {
-        return page;
-    }
-
-    /**
-     * Sets the filename.
-     * @param filename The filename to set
-     */
-    public void setFilename(String filename) {
-        this.filename = filename;
-    }
-
-    /**
-     * Sets the title.
-     * @param title The title to set
-     */
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/window/ApplicationWindowImpl.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/window/ApplicationWindowImpl.java
deleted file mode 100644
index 698d67e..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/window/ApplicationWindowImpl.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface.window;
-
-import org.eclipse.jface.window.ApplicationWindow;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * This is the default implementation for a ApplicationWindowTag
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class ApplicationWindowImpl extends ApplicationWindow {
-
-    /**
-     * @param shell
-     */
-    public ApplicationWindowImpl(Shell parentShell) {
-
-        super(parentShell);
-
-        // default at all
-        addMenuBar();
-        addStatusLine();
-        addToolBar(SWT.NULL);
-
-        setBlockOnOpen(true);
-
-        // create window
-        create();
-    }
-
-    /*
-     * override to make public
-     * @see org.eclipse.jface.window.Window#getContents()
-     */
-    public Control getContents() {
-        return super.getContents();
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/window/ApplicationWindowTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/window/ApplicationWindowTag.java
deleted file mode 100644
index cfecb78..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/window/ApplicationWindowTag.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface.window;
-
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.jelly.tags.swt.converters.PointConverter;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * This tag creates an JFace ApplicationWindow
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class ApplicationWindowTag extends UseBeanTag {
-
-    private Shell parent;
-    private int style = SWT.NULL;
-
-    /**
-     * @param widgetClass
-     */
-    public ApplicationWindowTag(Class tagClass) {
-        super(tagClass);
-    }
-
-    /*
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output)
-        throws MissingAttributeException, JellyTagException {
-        Map attributes = getAttributes();
-        Object parent = attributes.remove("parent");
-        if (parent != null) {
-            if (parent instanceof Shell) {
-                this.parent = (Shell) parent;
-            } else {
-                throw new JellyTagException(
-                    "The parent attribute is not a Shell, it is of type: "
-                        + parent.getClass().getName()
-                        + " value: "
-                        + parent);
-            }
-        }
-
-        super.doTag(output);
-
-        // set Title of aaplicationWindow
-        Object title = attributes.remove("title");
-        if (title != null) {
-            getWindow().getShell().setText((String)title);
-        }
-
-        // set size of applicationWindow
-        Object size = attributes.remove("size");
-        if (size != null) {
-            Point point = new PointConverter().parse((String) size);
-            getWindow().getShell().setSize(point);
-        }
-    }
-
-    /*
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
-     */
-    protected Object newInstance(
-        Class theClass,
-        Map attributes,
-        XMLOutput output)
-        throws JellyTagException {
-
-        return new ApplicationWindowImpl(parent);
-    }
-
-
-    /**
-     * @return the visible window, if there is one.
-     */
-    public Window getWindow() {
-        Object bean = getBean();
-        if (bean instanceof Window) {
-            return (Window) bean;
-        }
-        return null;
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/wizard/WizardDialogTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/wizard/WizardDialogTag.java
deleted file mode 100644
index 8d3c864..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/wizard/WizardDialogTag.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface.wizard;
-
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- *  This Tag creates a JFace WizardDialog
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class WizardDialogTag extends UseBeanTag {
-
-    /**
-     * Provide a public method getWizard
-     */
-    class WizardDialogImpl extends WizardDialog {
-        public WizardDialogImpl(Shell parentShell, IWizard newWizard) {
-            super(parentShell, newWizard);
-        }
-
-        public IWizard getWizard() {
-            return super.getWizard();
-        }
-    }
-
-    /**
-      * Provide a Wizard implementation
-      */
-    class WizardImpl extends Wizard {
-        public WizardImpl() {
-            super();
-            setNeedsProgressMonitor(true);
-        }
-
-        public boolean performCancel() {
-            try {
-                if (performCancel != null) {
-                    performCancel.run(context, output);
-                } else {
-                    invokeBody(output);
-                }
-            } catch (JellyTagException e) {
-                log.error(e);
-                return false;
-            }
-            return true;
-        }
-
-        public boolean performFinish() {
-            try {
-                if (performFinish != null) {
-                    performFinish.run(context, output);
-                } else {
-                    invokeBody(output);
-                }
-            } catch (JellyTagException e) {
-                log.error(e);
-                return false;
-            }
-            return true;
-        }
-    }
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(WizardDialogTag.class);
-
-    /** Jelly XMLOutput */
-    private XMLOutput output;
-
-    /** Script to be executed on performCancel */
-    private Script performCancel;
-
-    /** Script to be executed on performFinish */
-    private Script performFinish;
-
-    /**
-     * @param theClass
-     */
-    public WizardDialogTag(Class theClass) {
-        super(theClass);
-    }
-
-    /*
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        super.doTag(output);
-
-        if (getAttributes().get("performCancel") != null) {
-            Object script = getAttributes().get("performCancel");
-            if (script instanceof Script) {
-                performCancel = (Script) getAttributes().get("performCancel");
-            } else {
-                throw new JellyTagException("Attributevalue " + script + " must be a Script");
-            }
-        }
-
-        if (getAttributes().get("performFinish") != null) {
-            Object script = getAttributes().get("performFinish");
-            if (script instanceof Script) {
-                performFinish = (Script) getAttributes().get("performFinish");
-            } else {
-                throw new JellyTagException("Attributevalue " + script + " must be a Script");
-            }
-        }
-
-        this.output = output;
-    }
-
-    /**
-     * @return Shell
-     * @throws JellyTagException
-     */
-    protected Shell getShell() throws JellyTagException {
-        ApplicationWindowTag tag =
-            (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
-        if (tag == null) {
-            throw new JellyTagException("This tag must be nested inside a <applicationWindow>");
-        } else {
-            return tag.getWindow().getShell();
-        }
-    }
-
-    /**
-     * @return WizardDialog
-     */
-    public WizardDialogImpl getWizardDialogImpl() {
-        Object bean = getBean();
-        if (bean instanceof WizardDialog) {
-            return (WizardDialogImpl) bean;
-        }
-        return null;
-    }
-
-    /*
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
-     */
-    protected Object newInstance(Class theClass, Map attributes, XMLOutput output)
-        throws JellyTagException {
-        Wizard wizard = new WizardImpl();
-        return new WizardDialogImpl(getShell(), wizard);
-    }
-
-    /**
-     * Sets the Script to be executed on performCancel.
-     * @param performCancel The performCancel to set
-     */
-    public void setPerformCancel(Script performCancel) {
-        this.performCancel = performCancel;
-    }
-
-    /**
-     * Sets the Script to be executed on performFinish.
-     * @param performFinish The performFinish to set
-     */
-    public void setPerformFinish(Script performFinish) {
-        this.performFinish = performFinish;
-    }
-
-}
diff --git a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/wizard/WizardPageTag.java b/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/wizard/WizardPageTag.java
deleted file mode 100644
index 5d1137f..0000000
--- a/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/wizard/WizardPageTag.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface.wizard;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.jelly.tags.jface.preference.PreferencePageTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- *  This Tag creates a JFace WizardPage
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class WizardPageTag extends UseBeanTag {
-
-    /**
-     * Implementation of a WizardPage
-     * method createControl is called on Dialog.open()
-     */
-    public class WizardPageImpl extends WizardPage {
-        private Composite parentComposite;
-
-        public WizardPageImpl(String title) {
-            super(title);
-        }
-
-        public void createControl(Composite parent) {
-            // set initial parent Control to avoid a NPE during invokeBody
-            setControl(parent);
-
-            // create page contents
-            try {
-                invokeBody(output);
-            } catch (JellyTagException e) {
-                log.error(e);
-            }
-
-            // parentComposite should be first Composite child
-            if (parentComposite != null) {
-                setControl(parentComposite);
-            }
-        }
-
-        public Control getParentControl() {
-            return parentComposite;
-        }
-        public void setParentComposite(Composite parentComposite) {
-            this.parentComposite = parentComposite;
-        }
-
-    }
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(PreferencePageTag.class);
-
-    /** Jelly XMLOutput */
-    private XMLOutput output;
-
-    /**
-     * @param theClass
-     */
-    public WizardPageTag(Class theClass) {
-        super(theClass);
-    }
-
-    /*
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        // check location
-        WizardDialogTag wizardTag = (WizardDialogTag) findAncestorWithClass(WizardDialogTag.class);
-        if (wizardTag == null) {
-            throw new JellyTagException("This tag must be nested within a <wizardDialog>");
-        }
-
-        // check for missing attributes
-        String title = (String) getAttributes().get("title");
-        if (title == null) {
-            throw new MissingAttributeException("title");
-        }
-
-        // get WizardPageImpl
-        WizardPageImpl page = new WizardPageImpl(title);
-        setBean(page);
-        setBeanProperties(page, getAttributes());
-
-        String var = (String) getAttributes().get("var");
-        processBean(var, page);
-
-        // get Wizard
-        WizardDialogTag.WizardDialogImpl dialog = wizardTag.getWizardDialogImpl();
-        Wizard wizard = (Wizard) dialog.getWizard();
-
-        // add WizardPage to the Wizard
-        wizard.addPage(page);
-
-        // used by implementing page
-        this.output = output;
-    }
-
-    /**
-     * Get the WizardPageImpl
-     * @return WizardPageImpl
-     */
-    public WizardPageImpl getWizardPageImpl() {
-        Object bean = getBean();
-        if (bean instanceof WizardPageImpl) {
-            return (WizardPageImpl) bean;
-        }
-        return null;
-    }
-
-}
diff --git a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.java b/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.java
deleted file mode 100644
index c13352e..0000000
--- a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface;
-
-import java.net.URL;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.jface.JFaceTagLibrary;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class JFaceDemo {
-
-    public static void main(String[] args) {
-        try {
-
-            JellyContext context = new JellyContext();
-
-            /** @todo zap the following line once the Jelly core has this default */
-            context.registerTagLibrary("jelly:jface", new JFaceTagLibrary());
-
-            URL url = JFaceDemo.class.getResource("JFaceDemo.jelly");
-
-            XMLOutput output = XMLOutput.createXMLOutput(System.out, true);
-            context.runScript( url, output );
-            output.flush();
-
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-        }
-
-    }
-
-}
diff --git a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.jelly b/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.jelly
deleted file mode 100644
index ddd0018..0000000
--- a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.jelly
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<j:jelly xmlns:j="jelly:core" xmlns="jelly:jface" xmlns:log="jelly:log">

-

-  <applicationWindow var="mainapp" title="Welcome to the JFace Demo">

-

-        <menuManager text="File">

-            <action text="Test">

-                <log:info> Very Nice !!!</log:info>

-            </action>

-            <separator />

-            

-            <action text="Check me" checked="true">

-                <log:info>I've been checked</log:info>

-            </action>

-        </menuManager>

-        

-        <menuManager text="Edit">

-            <action text="Say Hi Statusbar">

-                  ${mainapp.setStatus('Hello ...')} 

-            </action>

-        </menuManager>

-    

-        <fillLayout type="vertical"/>    

-    

-        <label text="A big red label 1" background="204, 0, 0"/>

-        <label text="I can barelly read this ;-(" foreground="#f2f2f2" />

-        <label text="It sure looks like the dutch flag ;-)" foreground="#ffffff" background="0, 0, 153" />        

-    

-  </applicationWindow>

-  

-  ${mainapp.MenuBarManager.updateAll(true)} 

-  ${mainapp.getShell().pack()}

-  ${mainapp.open()}

-

-

-</j:jelly>

diff --git a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/preference/PreferenceDemo.java b/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/preference/PreferenceDemo.java
deleted file mode 100644
index 79103e8..0000000
--- a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/preference/PreferenceDemo.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface.preference;
-
-import java.net.URL;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.jface.JFaceTagLibrary;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class PreferenceDemo {
-
-    public static void main(String[] args) {
-        try {
-
-            JellyContext context = new JellyContext();
-
-            /** @todo zap the following line once the Jelly core has this default */
-            context.registerTagLibrary("jelly:jface", new JFaceTagLibrary());
-
-            URL url = PreferenceDemo.class.getResource("PreferenceDemo.jelly");
-
-            XMLOutput output = XMLOutput.createXMLOutput(System.out, true);
-            context.runScript( url, output );
-            output.flush();
-
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-        }
-
-    }
-
-}
diff --git a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/preference/PreferenceDemo.jelly b/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/preference/PreferenceDemo.jelly
deleted file mode 100644
index 5b3ef4d..0000000
--- a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/preference/PreferenceDemo.jelly
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns="jelly:jface" xmlns:log="jelly:log">
-
-  <applicationWindow var="mainapp">
-      
-      <preferenceDialog var="pd">
-                
-            <preferencePage title="General settings" filename="settings.props">
-                <booleanFieldEditor name="var1" labelText="It's boolean" />
-                <colorFieldEditor name="var2" labelText="MainColor" />
-                <directoryFieldEditor name="var3" labelText="Directory" />
-                <fileFieldEditor name="var4" labelText="File" />
-                <fontFieldEditor name="var5" labelText="Font" />                    
-                <integerFieldEditor name="var6" labelText="Integer" />                    
-                <stringFieldEditor name="var7" labelText="String" />    
-            </preferencePage>    
-                
-            <preferencePage title="Personal settings" filename="personal-settings.props" >
-                <stringFieldEditor name="var8" labelText="String1" />            
-                <stringFieldEditor name="var9" labelText="String2" />                                
-            </preferencePage>
-
-    </preferenceDialog>        
-
-        
-  </applicationWindow>
-
- 
-  ${pd.open()}    
-
- 
-
-</j:jelly>
diff --git a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/wizard/WizardDemo.java b/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/wizard/WizardDemo.java
deleted file mode 100644
index 9161f4f..0000000
--- a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/wizard/WizardDemo.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jface.wizard;
-
-import java.net.URL;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.jface.JFaceTagLibrary;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class WizardDemo {
-
-    public static void main(String[] args) {
-        try {
-
-            JellyContext context = new JellyContext();
-
-            /** @todo zap the following line once the Jelly core has this default */
-            context.registerTagLibrary("jelly:jface", new JFaceTagLibrary());
-
-            URL url = WizardDemo.class.getResource("WizardDemo.jelly");
-
-            XMLOutput output = XMLOutput.createXMLOutput(System.out, true);
-            context.runScript( url, output );
-            output.flush();
-
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-        }
-
-    }
-
-}
diff --git a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/wizard/WizardDemo.jelly b/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/wizard/WizardDemo.jelly
deleted file mode 100644
index 6aca95f..0000000
--- a/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/wizard/WizardDemo.jelly
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns="jelly:jface" xmlns:log="jelly:log" xmlns:define="jelly:define">
-
-  <define:script var="onPerformFinish">
-        <log:error>onPerformFinish called ...</log:error>
-  </define:script>
-  
-  <define:script var="onPerformCancel">
-        <log:error>onPerformCancel called ...</log:error>
-  </define:script>  
-  
-  <applicationWindow var="mainapp">
-      
-        <wizardDialog var="wizardDialog" performFinish="${onPerformFinish}" performCancel="${onPerformCancel}">
-
-            <wizardPage var="wpage1" title="Step 1" description="Step 1 in this wizard, showing page 1">
-                <composite>
-                    <gridLayout numColumns="2" />
-                    
-                    <label text="Some input" />
-                    <text />
-                    
-                    <label text="Label 1" />
-                    <button text="Set Message">    
-                        <onEvent type="Selection">
-                            ${wpage1.setMessage('Message: give me some more ...')}
-                        </onEvent>
-                    </button>
-                    <label text="Label 2" />
-                    <button text="Set Error Message">    
-                        <onEvent type="Selection">
-                            ${wpage1.setErrorMessage('ErrorMessage: This step is not complete')}
-                        </onEvent>                        
-                    </button>    
-                    <label text="Label 3" />
-                    <button text="Set Page Complete">    
-                        <onEvent type="Selection">
-                            ${wpage1.setPageComplete(true)}
-                        </onEvent>                        
-                    </button>
-                    
-                </composite>
-            </wizardPage>    
-
-            
-            <wizardPage var="wpage2" title="Step 2" description="Step 2 in this wizard">
-                <composite>
-                    <gridLayout numColumns="2" />
-                    <label text="Label 3" />
-                    <button text="Do nothing" />
-                </composite>
-            </wizardPage>    
-            
-        </wizardDialog>
-    
-  </applicationWindow>
-
-  ${wpage1.setPageComplete(false)}  
-  ${wizardDialog.open()}  
-
-
-</j:jelly>
-
diff --git a/jelly-tags/jface/xdocs/changes.xml b/jelly-tags/jface/xdocs/changes.xml
deleted file mode 100644
index 672587b..0000000
--- a/jelly-tags/jface/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-13">
-      <action dev="dion" type="fix" issue="JELLY-41" due-to="Christiaan ten Klooster">set size for applicationWindow</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/jface/xdocs/index.xml b/jelly-tags/jface/xdocs/index.xml
deleted file mode 100644
index ffa00d7..0000000
--- a/jelly-tags/jface/xdocs/index.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Jetty Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        The JellyJFace Library is a Jelly Library for creating Rich User Interfaces 
-        using SWT and JFace via XML markup (a Jelly script).
-          JellyJFace is an eextension of JellySWT to add support for the JFace framework.
-      </p>
-      <p>
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/jface/xdocs/navigation.xml b/jelly-tags/jface/xdocs/navigation.xml
deleted file mode 100644
index 3e44818..0000000
--- a/jelly-tags/jface/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="JFace Tag Library">
-
-  <title>JFace Tag Library</title>
-  
-  <body>
-    <menu name="JFace Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/jms/.cvsignore b/jelly-tags/jms/.cvsignore
deleted file mode 100644
index 36ceb76..0000000
--- a/jelly-tags/jms/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-maven.log
-target
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/jms/build.xml b/jelly-tags/jms/build.xml
deleted file mode 100644
index b4a7f59..0000000
--- a/jelly-tags/jms/build.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-jms" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-jms-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-jms 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.jms.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-messenger-1.0-dev-8.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-messenger/jars/commons-messenger-1.0-dev-8.jar">
-    </get>
-    <get dest="${libdir}/jms-1.0.2b.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jms/jars/jms-1.0.2b.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/jms/maven.xml b/jelly-tags/jms/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/jms/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/jms/project.properties b/jelly-tags/jms/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/jms/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/jms/project.xml b/jelly-tags/jms/project.xml
deleted file mode 100644
index 42769ae..0000000
--- a/jelly-tags/jms/project.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-jms</id>
-  <name>commons-jelly-tags-jms</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.jms</package>
-
-  <description>
-      This is a Jelly interface for the Java Message Service.
-  </description>
-  <shortDescription>Commons Jelly JMS Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-JMS-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-  
-    <!-- START for compilation -->
-  
-    <dependency>
-      <id>commons-messenger</id>
-      <version>1.0-dev-8</version>
-    </dependency>
-    
-    <dependency>
-      <id>jms</id>
-      <version>1.0.2b</version>
-      <url>http://java.sun.com/products/jms/</url>
-    </dependency>
- 
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ConnectionContext.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ConnectionContext.java
deleted file mode 100644
index ae71230..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ConnectionContext.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.JMSException;
-
-import org.apache.commons.jelly.JellyTagException;
-
-import org.apache.commons.messenger.Messenger;
-
-/** Represents a context capable of providing a Messenger connection to use
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public interface ConnectionContext {
-
-    public Messenger getConnection() throws JellyTagException, JMSException;
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ConnectionTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ConnectionTag.java
deleted file mode 100644
index e8dc4d4..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ConnectionTag.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.JMSException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.messenger.Messenger;
-import org.apache.commons.messenger.MessengerManager;
-
-/** Defines a JMS connection for use by other JMS tags.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class ConnectionTag extends TagSupport implements ConnectionContext {
-
-    /** The variable name to create */
-    private String var;
-
-    /** Stores the name of the map entry */
-    private String name;
-
-    /** The Messenger */
-    private Messenger connection;
-
-    // ConnectionContext interface
-    //-------------------------------------------------------------------------
-    public Messenger getConnection() {
-        return connection;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        try {
-            connection = MessengerManager.get( name );
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-
-        if (connection == null) {
-            throw new JellyTagException( "Could not find a JMS connection called: " + name );
-        }
-
-        if ( var != null ) {
-            context.setVariable( var, connection );
-        }
-
-        invokeBody(output);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** Sets the name of the Messenger (JMS connection pool) to use
-      */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /** Sets the variable name to use for the exported Messenger (JMS connection pool)
-      */
-    public void setVar(String var) {
-        this.var = var;
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ConsumerTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ConsumerTag.java
deleted file mode 100644
index 222b00d..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ConsumerTag.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.MessageListener;
-
-/**
- * Represents an interface for a Tag which consumes JMS messages.
- * By default this is the &lt;subscribe&gt; tag but other tags could
- * implement this interface to enabled things like Message pipelining,
- * transactional message consumer tags, stopwatch wrappers etc.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public interface ConsumerTag {
-
-    /**
-     * Sets the JMS messageListener used to consume JMS messages
-     */
-    public void setMessageListener(MessageListener messageListener);
-
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/DestinationTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/DestinationTag.java
deleted file mode 100644
index 192e232..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/DestinationTag.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.Destination;
-import javax.jms.JMSException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.messenger.Messenger;
-
-/** Creates a Destination object from a String name.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class DestinationTag extends TagSupport {
-
-    /** The variable name to create */
-    private String var;
-
-    /** Stores the name of the map entry */
-    private String name;
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        ConnectionContext messengerTag = (ConnectionContext) findAncestorWithClass( ConnectionContext.class );
-        if ( messengerTag == null ) {
-            throw new JellyTagException("<jms:destination> tag must be within a <jms:connection> or <jms:send> or <jms:receive> tag");
-        }
-
-        Destination destination = null;
-        try {
-            Messenger messenger = messengerTag.getConnection();
-            if (messenger == null) {
-                throw new JellyTagException("No JMS Connection could be found!" );
-            }
-            String subject = (name != null) ? name : getBodyText();
-            destination = messenger.getDestination( subject );
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-
-        if ( var != null ) {
-            context.setVariable( var, destination );
-        }
-        else {
-            MessageOperationTag tag = (MessageOperationTag) findAncestorWithClass( MessageOperationTag.class );
-            if ( tag == null ) {
-                throw new JellyTagException("<jms:destination> tag must be within a <jms:send> or <jms:receive> tag or the 'var' attribute should be specified");
-            }
-            tag.setDestination( destination );
-        }
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** Sets the name of the Destination
-      */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /** Sets the variable name to use for the Destination
-      */
-    public void setVar(String var) {
-        this.var = var;
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/JMSTagLibrary.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/JMSTagLibrary.java
deleted file mode 100644
index 1e9ca90..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/JMSTagLibrary.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class JMSTagLibrary extends TagLibrary {
-
-    public JMSTagLibrary() {
-        registerTag("connection", ConnectionTag.class);
-        registerTag("destination", DestinationTag.class);
-        registerTag("mapEntry", MapEntryTag.class);
-        registerTag("mapMessage", MapMessageTag.class);
-        registerTag("message", MessageTag.class);
-        registerTag("onMessage", OnMessageTag.class);
-        registerTag("objectMessage", ObjectMessageTag.class);
-        registerTag("property", PropertyTag.class);
-        registerTag("receive", ReceiveTag.class);
-        registerTag("send", SendTag.class);
-        registerTag("stopwatch", StopwatchTag.class);
-        registerTag("subscribe", SubscribeTag.class);
-        registerTag("textMessage", TextMessageTag.class);
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MapEntryTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MapEntryTag.java
deleted file mode 100644
index ed97beb..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MapEntryTag.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/** Adds a map entry to the outer Map Message tag
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class MapEntryTag extends TagSupport {
-
-    /** Stores the name of the map entry */
-    private String name;
-
-    /** Stores the value of the map entry */
-    private Object value;
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( name == null ) {
-            throw new MissingAttributeException("name");
-        }
-        MapMessageTag tag = (MapMessageTag) findAncestorWithClass( MapMessageTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException("<jms:mapEntry> tag must be within a <jms:mapMessage> tag");
-        }
-
-        if (value != null) {
-            tag.addEntry( name, value );
-        }
-        else {
-            tag.addEntry( name, getBodyText() );
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the name of the entry in the map message
-      */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /** Sets the value of the entry in the map message.
-      * If no value is set then the body of the tag is used
-      */
-    public void setValue(Object value) {
-        this.value = value;
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MapMessageTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MapMessageTag.java
deleted file mode 100644
index 4af796b..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MapMessageTag.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.jms.Message;
-import javax.jms.MapMessage;
-import javax.jms.JMSException;
-
-import org.apache.commons.jelly.JellyTagException;
-
-/** Creates a JMS MapMessage
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class MapMessageTag extends MessageTag {
-
-    public MapMessageTag() {
-    }
-
-    public void addEntry(String name, Object value) throws JellyTagException {
-        MapMessage message = (MapMessage) getMessage();
-        try {
-            message.setObject(name, value);
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the Map of entries to be used for this Map Message
-     */
-    public void setMap(Map map) throws JellyTagException {
-        MapMessage message = (MapMessage) getMessage();
-        for (Iterator iter = map.entrySet().iterator(); iter.hasNext(); ) {
-            Map.Entry entry = (Map.Entry) iter.next();
-            String name = entry.getKey().toString();
-            Object value = entry.getValue();
-
-            try {
-                message.setObject(name, value);
-            }
-            catch (JMSException e) {
-                throw new JellyTagException(e);
-            }
-        }
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected Message createMessage() throws JellyTagException {
-        try {
-            return getConnection().createMapMessage();
-        } catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MessageOperationTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MessageOperationTag.java
deleted file mode 100644
index f4827b8..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MessageOperationTag.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.Destination;
-import javax.jms.JMSException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.messenger.Messenger;
-
-/** An abstract base class for JMS Message operation tags such as send, receive or call.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public abstract class MessageOperationTag extends TagSupport implements ConnectionContext {
-
-    /** The Messenger used to access the JMS connection */
-    private Messenger connection;
-
-    /** The Destination */
-    private Destination destination;
-
-    /** The String subject used to find a destination */
-    private String subject;
-
-    public MessageOperationTag() {
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public Messenger getConnection() throws JellyTagException, JMSException {
-        if ( connection == null ) {
-            return findConnection();
-        }
-        return connection;
-    }
-
-    /**
-     * Sets the Messenger (the JMS connection pool) that will be used to send the message
-     */
-    public void setConnection(Messenger connection) {
-        this.connection = connection;
-    }
-
-    public Destination getDestination() throws JellyTagException, JMSException {
-        if (destination == null) {
-            // if we have a subject defined, lets use it to find the destination
-            if (subject != null) {
-                destination = findDestination(subject);
-            }
-        }
-        return destination;
-    }
-
-    /**
-     * Sets the JMS Destination to be used by this tag
-     */
-    public void setDestination(Destination destination) {
-        this.destination = destination;
-    }
-
-    /**
-     * Sets the subject as a String which is used to create the
-     * JMS Destination to be used by this tag
-     */
-    public void setSubject(String subject) {
-        this.subject = subject;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Strategy Method allowing derived classes to change this behaviour
-     */
-    protected Messenger findConnection() throws JellyTagException, JMSException {
-        ConnectionContext messengerTag = (ConnectionContext) findAncestorWithClass( ConnectionContext.class );
-        if ( messengerTag == null ) {
-            throw new JellyTagException("This tag must be within a <jms:connection> tag or the 'connection' attribute should be specified");
-        }
-        return messengerTag.getConnection();
-    }
-
-    /**
-     * Strategy Method allowing derived classes to change this behaviour
-     */
-    protected Destination findDestination(String subject) throws JellyTagException, JMSException {
-        return getConnection().getDestination(subject);
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MessageTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MessageTag.java
deleted file mode 100644
index 583ba32..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/MessageTag.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.Destination;
-import javax.jms.Message;
-import javax.jms.JMSException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.apache.commons.messenger.Messenger;
-
-/** A tag which creates a JMS message
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class MessageTag extends TagSupport {
-
-    /** The name of the Message variable that is created */
-    private String var;
-
-    /** The JMS Message created */
-    private Message message;
-
-    /** The Messenger used to access the JMS connection */
-    private Messenger connection;
-
-    public MessageTag() {
-    }
-
-    /** Adds a JMS property to the message */
-    public void addProperty(String name, Object value) throws JellyTagException {
-        Message message = getMessage();
-
-        try {
-            message.setObjectProperty(name, value);
-        } catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if ( var == null ) {
-            // expose message to parent message consumer
-            SendTag tag = (SendTag) findAncestorWithClass( SendTag.class );
-            if ( tag == null ) {
-                throw new JellyTagException("<jms:message> tags must either have the 'var' attribute specified or be used inside a <jms:send> tag");
-            }
-
-            tag.setMessage( getMessage() );
-        }
-        else {
-
-            context.setVariable( var, getMessage() );
-
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** Sets the name of the variable that the message will be exported to */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    public Messenger getConnection() throws JellyTagException {
-        if ( connection == null ) {
-            return findConnection();
-        }
-        return connection;
-    }
-
-    /**
-     * Sets the Messenger (the JMS connection pool) that will be used to send the message
-     */
-    public void setConnection(Messenger connection) {
-        this.connection = connection;
-    }
-
-    public Message getMessage() throws JellyTagException {
-        if ( message == null ) {
-            message = createMessage();
-        }
-        return message;
-    }
-
-
-    // JMS related properties
-
-    /**
-     * Sets the JMS Correlation ID to be used on the message
-     */
-    public void setCorrelationID(String correlationID) throws JellyTagException {
-        try {
-            getMessage().setJMSCorrelationID(correlationID);
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    /**
-     * Sets the reply-to destination to add to the message
-     */
-    public void setReplyTo(Destination destination) throws JellyTagException {
-        try {
-            getMessage().setJMSReplyTo(destination);
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    /**
-     * Sets the type name of the message
-     */
-    public void setType(String type) throws JellyTagException {
-        try {
-            getMessage().setJMSType(type);
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected Messenger findConnection() throws JellyTagException {
-        ConnectionContext messengerTag = (ConnectionContext) findAncestorWithClass( ConnectionContext.class );
-        if ( messengerTag == null ) {
-            throw new JellyTagException("This tag must be within a <jms:connection> tag or the 'connection' attribute should be specified");
-        }
-
-        try {
-            return messengerTag.getConnection();
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    protected Message createMessage() throws JellyTagException {
-        try {
-            return getConnection().createMessage();
-        } catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ObjectMessageTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ObjectMessageTag.java
deleted file mode 100644
index 47c92ce..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ObjectMessageTag.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import java.io.Serializable;
-
-import javax.jms.JMSException;
-import javax.jms.Message;
-
-import org.apache.commons.jelly.JellyTagException;
-
-/** Creates a JMS ObjectMessage
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class ObjectMessageTag extends MessageTag {
-
-    private Serializable object;
-
-    public ObjectMessageTag() {
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the body of the message, a serializable java object.
-     * If this value is not set or the value is null then the content
-     * of the tag will be used instead.
-     */
-    public void setObject(Serializable object) {
-        this.object = object;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected Message createMessage() throws JellyTagException {
-        Serializable value = (object != null) ? object : getBodyText();
-        try {
-            return getConnection().createObjectMessage(value);
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/OnMessageTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/OnMessageTag.java
deleted file mode 100644
index 78e8b80..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/OnMessageTag.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.Message;
-import javax.jms.MessageListener;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This tag creates a JMS MessageListener which will invoke this
- * tag's body whenever a JMS Message is received. The JMS Message
- * will be available via a variable, which defaults to the 'message'
- * variable name, but can be overloaded by the var attribute.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class OnMessageTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(OnMessageTag.class);
-
-    private String var = "message";
-
-    public OnMessageTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        ConsumerTag tag = (ConsumerTag) findAncestorWithClass(ConsumerTag.class);
-        if (tag == null) {
-            throw new JellyTagException("This tag must be nested within a ConsumerTag like the subscribe tag");
-        }
-
-        final JellyContext childContext = context.newJellyContext();
-        final Script script = getBody();
-        final XMLOutput childOutput = output;
-
-        MessageListener listener = new MessageListener() {
-            public void onMessage(Message message) {
-                childContext.setVariable(var, message);
-                try {
-                    script.run(childContext, childOutput);
-                }
-                catch (Exception e) {
-                    log.error("Caught exception processing message: " + message + ". Exception: " + e, e);
-                }
-            }
-        };
-
-        // perform the consumption
-        tag.setMessageListener(listener);
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of the variable used to make the JMS message available to this tags
-     * body when a message is received.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/PropertyTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/PropertyTag.java
deleted file mode 100644
index 74b9a7d..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/PropertyTag.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jms;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/** Defines a property on an outer JMS Message tag
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class PropertyTag extends TagSupport {
-
-    /** Stores the name of the property */
-    private String name;
-
-    /** Stores the value of the property */
-    private Object value;
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( name == null ) {
-            throw new MissingAttributeException("name");
-        }
-        MessageTag tag = (MessageTag) findAncestorWithClass( MessageTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException("<jms:property> tag must be within a <jms:message> tag");
-        }
-
-        if ( value != null ) {
-            tag.addProperty(name, value);
-        }
-        else {
-            tag.addProperty(name, getBodyText());
-        }
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the name of the JMS property
-      */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /** Sets the value of the JMS property.
-      * If no value is set then the body of the tag is used
-      */
-    public void setValue(Object value) {
-        this.value = value;
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ReceiveTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ReceiveTag.java
deleted file mode 100644
index eada911..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/ReceiveTag.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.Destination;
-import javax.jms.Message;
-import javax.jms.JMSException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Receives a JMS message.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class ReceiveTag extends MessageOperationTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ReceiveTag.class);
-
-    private String var;
-    private long timeout = -1L;
-
-    public ReceiveTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        // evaluate body as it may contain a <destination> tag
-        invokeBody(output);
-
-        Message message = null;
-        try {
-            Destination destination = getDestination();
-            if ( destination == null ) {
-                throw new JellyTagException( "No destination specified. Either specify a 'destination' attribute or use a nested <jms:destination> tag" );
-            }
-            if ( timeout > 0 ) {
-                if ( log.isDebugEnabled() ) {
-                    log.debug( "Receiving message on destination: " + destination + " with timeout: " + timeout );
-                }
-
-                message = getConnection().receive( destination, timeout );
-            }
-            else if ( timeout == 0 ) {
-                if ( log.isDebugEnabled() ) {
-                    log.debug( "Receiving message on destination: " + destination + " with No Wait" );
-                }
-
-                message = getConnection().receiveNoWait( destination );
-            }
-            else {
-                if ( log.isDebugEnabled() ) {
-                    log.debug( "Receiving message on destination: " + destination );
-                }
-                message = getConnection().receive( destination );
-            }
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-
-        onMessage( message );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public String getVar() {
-        return var;
-    }
-
-    /**
-     * Sets the variable name to create for the received message, which will be null if no
-     * message could be returned in the given time period.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    public long getTimeout() {
-        return timeout;
-    }
-
-    /**
-     * Sets the timeout period in milliseconds to wait for a message. A value
-     * of -1 will wait forever for a message.
-     */
-    public void setTimeout(long timeout) {
-        this.timeout = timeout;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * A strategy method which processes the incoming message, allowing derived classes
-     * to implement different processing methods
-     */
-    protected void onMessage( Message message ) {
-        if ( message != null ) {
-            context.setVariable( var, message );
-        }
-        else {
-            context.removeVariable( var );
-        }
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/SendTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/SendTag.java
deleted file mode 100644
index 815691d..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/SendTag.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.Destination;
-import javax.jms.JMSException;
-import javax.jms.Message;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-/** Sends a JMS message to some destination.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class SendTag extends MessageOperationTag {
-
-    /** The JMS Message to be sent */
-    private Message message;
-
-    public SendTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        // evaluate body as it may contain a <destination> or message tag
-        invokeBody(output);
-
-        Message message = getMessage();
-        if ( message == null ) {
-            throw new JellyTagException( "No message specified. Either specify a 'message' attribute or use a nested <jms:message> tag" );
-        }
-
-        try {
-            Destination destination = getDestination();
-            if ( destination == null ) {
-                throw new JellyTagException( "No destination specified. Either specify a 'destination' attribute or use a nested <jms:destination> tag" );
-            }
-            getConnection().send( destination, message );
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public Message getMessage() {
-        return message;
-    }
-
-    /**
-     * Sets the JMS message to be sent
-     */
-    public void setMessage(Message message) {
-        this.message = message;
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/StopwatchTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/StopwatchTag.java
deleted file mode 100644
index 822591b..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/StopwatchTag.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.MessageListener;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.commons.messenger.tool.StopWatchMessageListener;
-
-/**
- * This tag can be used to measure the amount of time it takes to process JMS messages.
- * This tag can be wrapped around any custom JMS tag which consumes JMS messages.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class StopwatchTag extends MessageOperationTag implements ConsumerTag {
-
-    /** the underlying MessageListener */
-    private MessageListener messageListener;
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog( StopwatchTag.class );
-
-    /** the message group size */
-    private int groupSize = 1000;
-
-    public StopwatchTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        // evaluate body as it may contain child tags to register a MessageListener
-        invokeBody(output);
-
-        MessageListener listener = getMessageListener();
-
-        ConsumerTag tag = (ConsumerTag) findAncestorWithClass(ConsumerTag.class);
-        if (tag == null) {
-            throw new JellyTagException("This tag must be nested within a ConsumerTag like the subscribe tag");
-        }
-
-        // clear the listener for the next tag invocation, if caching is employed
-        setMessageListener(null);
-
-        StopWatchMessageListener stopWatch = new StopWatchMessageListener(listener);
-        stopWatch.setGroupSize(groupSize);
-        stopWatch.setLog(log);
-
-        // perform the consumption
-        tag.setMessageListener(stopWatch);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the number of messages in the group before the performance statistics are logged
-     */
-    public int getGroupSize() {
-        return groupSize;
-    }
-
-    /**
-     * Sets the number of messages in the group before the performance statistics are logged
-     */
-    public void setGroupSize(int groupSize) {
-        this.groupSize = groupSize;
-    }
-
-
-    /**
-     * @return the logger to which statistic messages will be sent
-     */
-    public Log getLog() {
-        return log;
-    }
-
-    /**
-     * Sets the logger to which statistic messages will be sent
-     */
-    public void setLog(Log log) {
-        this.log = log;
-    }
-
-    /**
-     * @return the MessageListener which this listener delegates to
-     */
-    public MessageListener getMessageListener() {
-        return messageListener;
-    }
-
-    /**
-     * Sets the JMS messageListener used to consume JMS messages on the given destination
-     */
-    public void setMessageListener(MessageListener messageListener) {
-        this.messageListener = messageListener;
-    }
-
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/SubscribeTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/SubscribeTag.java
deleted file mode 100644
index 83a430d..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/SubscribeTag.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.Destination;
-import javax.jms.JMSException;
-import javax.jms.MessageListener;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Performs a subscription to some JMS connection to a destination maybe with a selector.
- * A JMS MessageListener can be specified, or a special child tag can explicitly set it on
- * its parent (so a special tag could construct a MessageListener object and register it with this tag).
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class SubscribeTag extends MessageOperationTag implements ConsumerTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(SubscribeTag.class);
-
-    /** the JMS Selector for the subscription */
-    private String selector;
-
-    /** The JMS MessageListener used to create the subscription */
-    private MessageListener messageListener;
-
-    public SubscribeTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        // evaluate body as it may contain child tags to register a MessageListener
-        invokeBody(output);
-
-        MessageListener listener = getMessageListener();
-        if (listener == null) {
-            throw new JellyTagException( "No messageListener attribute is specified so could not subscribe" );
-        }
-
-        // clear the listener for the next tag invocation, if caching is employed
-        setMessageListener(null);
-
-
-        Destination destination = null;
-        try {
-            destination = getDestination();
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-
-        if ( destination == null ) {
-            throw new JellyTagException( "No destination specified. Either specify a 'destination' attribute or use a nested <jms:destination> tag" );
-        }
-
-        if ( log.isDebugEnabled() ) {
-            log.debug( "About to consume to: " + destination + " with listener: " + listener );
-        }
-
-        log.info( "About to consume to: " + destination + " with listener: " + listener );
-
-        try {
-            if (selector == null ) {
-                getConnection().addListener( destination, listener );
-            }
-            else {
-                getConnection().addListener( destination, selector, listener );
-            }
-        }
-        catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the optional JMS Message selector for the subscription
-     */
-    public void setSelector(String selector) {
-        this.selector = selector;
-    }
-
-
-    /**
-     * Returns the messageListener.
-     * @return MessageListener
-     */
-    public MessageListener getMessageListener() {
-        return messageListener;
-    }
-
-
-    /**
-     * Sets the JMS messageListener used ot consume JMS messages on the given destination
-     */
-    public void setMessageListener(MessageListener messageListener) {
-        this.messageListener = messageListener;
-    }
-
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/TextMessageTag.java b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/TextMessageTag.java
deleted file mode 100644
index d3b1c41..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/TextMessageTag.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jms;
-
-import javax.jms.Message;
-import javax.jms.JMSException;
-
-import org.apache.commons.jelly.JellyTagException;
-
-/** Creates a JMS TextMessage
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class TextMessageTag extends MessageTag {
-
-    private String text;
-
-    public TextMessageTag() {
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the body of the message, a String. If this value is not set or
-     * the value is null then the content of the tag will be used instead.
-     */
-    public void setText(String text) {
-        this.text = text;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected Message createMessage() throws JellyTagException {
-        String value = (text != null) ? text : getBodyText();
-        try {
-            return getConnection().createTextMessage(value);
-        } catch (JMSException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
diff --git a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/package.html b/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/package.html
deleted file mode 100644
index 7850511..0000000
--- a/jelly-tags/jms/src/java/org/apache/commons/jelly/tags/jms/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A tag library for working with JMS using the 
-  <a href="http://jakarta.apache.org/commons/sandbox/messenger/">Messenger</a> project
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/flushQueue.jelly b/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/flushQueue.jelly
deleted file mode 100644
index 08ed25c..0000000
--- a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/flushQueue.jelly
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<jelly xmlns="jelly:core" xmlns:jms="jelly:jms">
-
-Flushing the input queue
-
-<jms:connection name="queue" var="conn">
-  <forEach begin="1" end="1000">
-    <jms:receive var="message" timeout="1">
-      <jms:destination name="myQueue"/>
-    </jms:receive>
-    <if test="${message != null}">
-Found message: ${message}.
-    </if>
-  </forEach>
-      
-</jms:connection>
-    
-</jelly>
diff --git a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/receive.jelly b/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/receive.jelly
deleted file mode 100644
index 12b2772..0000000
--- a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/receive.jelly
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<jelly xmlns="jelly:core" xmlns:jms="jelly:jms">
-
-Waiting until I receive a JMS message
-
-<jms:connection name="queue" var="conn">
-  <jms:receive var="message">
-    <jms:destination name="myQueue"/>
-  </jms:receive>
-</jms:connection>
-
-Found message: ${message}
-
-Properties are:
-<forEach items="${message.propertyNames}" var="key">
-  ${key} = ${message.getObjectProperty(key)}
-</forEach>
-
-The text body is: ${message.text}
-    
-</jelly>
diff --git a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/receiveMap.jelly b/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/receiveMap.jelly
deleted file mode 100644
index f3d3803..0000000
--- a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/receiveMap.jelly
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<jelly xmlns="jelly:core" xmlns:jms="jelly:jms">
-
-Waiting until I receive a JMS message
-
-<jms:connection name="queue" var="conn">
-  <jms:receive var="message">
-    <jms:destination name="myQueue"/>
-  </jms:receive>
-</jms:connection>
-
-Found message: ${message.JMSMessageID}.
-
-Map values are:
-<forEach items="${message.mapNames}" var="key">
-  ${key} = ${message.getObject(key)}
-</forEach>
-    
-</jelly>
diff --git a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/receiveObject.jelly b/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/receiveObject.jelly
deleted file mode 100644
index dbecda1..0000000
--- a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/receiveObject.jelly
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<jelly xmlns="jelly:core" xmlns:jms="jelly:jms">
-
-Waiting until I receive a JMS message
-
-<jms:connection name="queue" var="conn">
-  <jms:receive var="message">
-    <jms:destination name="myQueue"/>
-  </jms:receive>
-</jms:connection>
-
-Found message: ${message}
-The object body is: ${message.getObject()}
-    
-</jelly>
diff --git a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendMap.jelly b/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendMap.jelly
deleted file mode 100644
index d34804e..0000000
--- a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendMap.jelly
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<jelly xmlns="jelly:core" xmlns:jms="jelly:jms">
-
-About to send a JMS map message
-
-<jms:connection name="queue">
-  <jms:send>
-    <jms:destination name="myQueue"/>
-    <jms:mapMessage type="Order" correlationID="1234">
-      <jms:mapEntry name="a" value="pizza"/>
-      <jms:mapEntry name="b">cheese</jms:mapEntry>
-      <jms:mapEntry name="c" value="${12 * 20}"/>
-    </jms:mapMessage>
-  </jms:send>
-
-  <new className="java.util.HashMap" var="m"/>
-  <set target="${m}" property="a" value="pizza"/>  
-  <set target="${m}" property="b" value="1234"/>  
-  <set target="${m}" property="c" value="${12+57}"/>  
-
-Sending map message with map: ${m}
-  
-  <jms:send>
-    <jms:destination name="myQueue"/>
-    <jms:mapMessage type="Order2" correlationID="23456" map="${m}"/>
-  </jms:send>
-  
-</jms:connection>
-
-</jelly>
diff --git a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendMessage.jelly b/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendMessage.jelly
deleted file mode 100644
index bc231e5..0000000
--- a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendMessage.jelly
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<jelly xmlns="jelly:core" xmlns:jms="jelly:jms">
-
-About to send a JMS message
-
-<jms:connection name="queue">
-  <jms:send>
-    <jms:destination name="myQueue"/>
-    <jms:message type="Pizza" correlationID="9999">
-      <jms:property name="a" value="topping"/>
-      <jms:property name="b" value="${123+456}"/>
-      <jms:property name="c">cheese x ${2+2}</jms:property>
-    </jms:message>
-  </jms:send>
-</jms:connection>
-
-Message sent!
-
-</jelly>
-
-
diff --git a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendObject.jelly b/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendObject.jelly
deleted file mode 100644
index 789ba9b..0000000
--- a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendObject.jelly
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<jelly xmlns="jelly:core" xmlns:jms="jelly:jms">
-
-About to send a JMS Object message
-
-<new className="java.util.Date" var="d"/>
-
-<jms:connection name="queue">
-  <jms:send>
-    <jms:destination name="myQueue"/>
-    <jms:objectMessage object="${d}" type="Date" correlationID="4321"/>
-  </jms:send>
-</jms:connection>
-
-Message sent!
-
-</jelly>
-
-
diff --git a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendText.jelly b/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendText.jelly
deleted file mode 100644
index 7c7df06..0000000
--- a/jelly-tags/jms/src/test/org/apache/commons/jelly/tags/jms/sendText.jelly
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<jelly xmlns="jelly:core" xmlns:jms="jelly:jms">
-
-About to send a JMS text message
-
-<jms:connection name="queue">
-  <jms:send>
-    <jms:destination>myQueue</jms:destination>
-    <jms:textMessage type="Chat">This is some text via the tag body</jms:textMessage>
-  </jms:send>
-
-  <jms:send>
-    <jms:destination name="myQueue"/>
-    <jms:textMessage text="This is some text via the attribute" type="Chat"/>
-  </jms:send>
-</jms:connection>
-
-Messages sent!
-
-</jelly>
diff --git a/jelly-tags/jms/xdocs/changes.xml b/jelly-tags/jms/xdocs/changes.xml
deleted file mode 100644
index 7e44081..0000000
--- a/jelly-tags/jms/xdocs/changes.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-12">
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/jms/xdocs/index.xml b/jelly-tags/jms/xdocs/index.xml
deleted file mode 100644
index 513ad5c..0000000
--- a/jelly-tags/jms/xdocs/index.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>JMS Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A tag library for working with JMS using the 
-        <a href="http://jakarta.apache.org/commons/sandbox/messenger/">Messenger</a> project.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/jms/xdocs/navigation.xml b/jelly-tags/jms/xdocs/navigation.xml
deleted file mode 100644
index 539d410..0000000
--- a/jelly-tags/jms/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="JMS Tag Library">
-
-  <title>JMS Tag Library</title>
-  
-  <body>
-    <menu name="JMS Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/jmx/.cvsignore b/jelly-tags/jmx/.cvsignore
deleted file mode 100644
index d0b1766..0000000
--- a/jelly-tags/jmx/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-target
-maven.log
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/jmx/maven.xml b/jelly-tags/jmx/maven.xml
deleted file mode 100644
index ca6203c..0000000
--- a/jelly-tags/jmx/maven.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile, test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-
-  <goal name="demo" prereqs="create-classpath"
-    description="Runs a demo creating various MBeans">
-    
-    <echo>Running the JellyMBean demo...</echo>
-    
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/tags/jmx/example.jelly"/>
-    </java>
-  </goal>
-
-</project>
diff --git a/jelly-tags/jmx/project.properties b/jelly-tags/jmx/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/jmx/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/jmx/project.xml b/jelly-tags/jmx/project.xml
deleted file mode 100644
index a26f1d7..0000000
--- a/jelly-tags/jmx/project.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-jmx</id>
-  <name>commons-jelly-tags-jmx</name>
-  <currentVersion>1.0</currentVersion>
-
-  <package>org.apache.commons.jelly.tags.jmx</package>
-
-  <description>
-       The Jelly JMX Tag Library is a Jelly library for instantiating and
-       configuring Java Beans and MBeans and registering them with a 
-       JMX Server in a similar way to the Ant tasks in Jakarta Commons Modeler.
-  </description>
-  
-  <shortDescription>Commons Jelly JMX Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-JMX-1_0</tag>
-    </version>
-  </versions>
-
-<dependencies>
-
-    <!-- START for compilation -->
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-bean</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/bean/</url>
-    </dependency>
-      
-    <dependency>
-      <id>mx4j+jmx</id>
-      <version>1.1.1</version>
-      <properties>
-        <gump.project>mx4j</gump.project>
-        <gump.id>mx4j-jmx</gump.id>
-      </properties>
-    </dependency>
-      
-    <!-- END for compilation -->
-    
-    <!-- START for test-->
-  
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-log</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/log/</url>
-    </dependency>
-      
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-
-    <dependency>
-      <id>mx4j+tools</id>
-      <version>1.1.1</version>
-    </dependency>
-    
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-      
-    <!-- END for test -->
-
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/JMXTagLibrary.java b/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/JMXTagLibrary.java
deleted file mode 100644
index 18d93f8..0000000
--- a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/JMXTagLibrary.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jmx;
-
-import javax.management.ObjectName;
-
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.jelly.tags.bean.BeanTag;
-import org.apache.commons.jelly.tags.bean.BeanTagLibrary;
-
-
-/**
- * A Tag library for creating an instantiating Java Beans and MBeans
- * and registering them with JMX. Support for setting JMX attributes
- * and invoking JMX operations is also supported.
- *
- * @author
- * @version $Revision: 1.4 $
- */
-public class JMXTagLibrary extends BeanTagLibrary {
-
-    static {
-        // register the various beanutils Converters from Strings to various JMX types
-        ConvertUtils.register( new ObjectNameConverter(), ObjectName.class );
-    }
-
-    public JMXTagLibrary() {
-        registerTag("mbean", BeanTag.class);
-        registerTag("operation", OperationTag.class);
-        registerTag("register", RegisterTag.class);
-        registerTag("server", ServerTag.class);
-    }
-}
diff --git a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/ObjectNameConverter.java b/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/ObjectNameConverter.java
deleted file mode 100644
index ac940ad..0000000
--- a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/ObjectNameConverter.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jmx;
-
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-
-import org.apache.commons.beanutils.ConversionException;
-import org.apache.commons.beanutils.Converter;
-
-/**
- * A Converter that turns Strings into JMX ObjectName objects
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class ObjectNameConverter implements Converter {
-
-    private static final ObjectNameConverter instance =
-        new ObjectNameConverter();
-
-    public static ObjectNameConverter getInstance() {
-        return instance;
-    }
-
-    //-------------------------------------------------------------------------
-    public Object convert(Class type, Object value) {
-        try {
-            if (value == null) {
-                return new ObjectName("");
-            }
-            else {
-                return new ObjectName(value.toString());
-            }
-        }
-        catch (MalformedObjectNameException e) {
-            throw new ConversionException(
-                "Could not convert: "
-                    + value
-                    + " into ObjectName. Reason: "
-                    + e,
-                e);
-        }
-    }
-}
\ No newline at end of file
diff --git a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/OperationTag.java b/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/OperationTag.java
deleted file mode 100644
index d7d1e35..0000000
--- a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/OperationTag.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jmx;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.management.ObjectName;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.CollectionTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Registers a JavaBean or JMX MBean with a server..
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class OperationTag extends TagSupport implements CollectionTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(OperationTag.class);
-
-    private String name;
-    private Object arguments;
-    private List argList = null;
-    private String[] parameters;
-
-    public OperationTag() {
-    }
-
-
-    // CollectionTag interface
-    //-------------------------------------------------------------------------
-    public void addItem(Object value) {
-        if (argList == null) {
-            argList = new ArrayList();
-        }
-        argList.add(value);
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (name == null) {
-            throw new MissingAttributeException("name");
-        }
-
-        RegisterTag registerTag = (RegisterTag) findAncestorWithClass(RegisterTag.class);
-        if (registerTag == null) {
-            throw new JellyTagException("This class must be nested inside a <register> tag");
-        }
-        Object bean = null;
-        try {
-            invokeBody(output);
-
-            ObjectName objectName = registerTag.getName();
-            registerTag.getServer().invoke(objectName, getName(), getArgumentArray(), getParameters());
-        }
-        catch (JellyTagException e) {
-            throw e;
-        }
-        catch (Exception e) {
-            throw new JellyTagException("Failed to register bean: " + bean, e);
-        }
-        finally {
-            argList = null;
-        }
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-
-
-    /**
-     * @return Object
-     */
-    public Object getArguments() {
-        return arguments;
-    }
-
-    /**
-     * @return String
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * @return String[]
-     */
-    public String[] getParameters() {
-        return parameters;
-    }
-
-    /**
-     * Sets the arguments.
-     * @param arguments The arguments to set
-     */
-    public void setArguments(Object arguments) {
-        this.arguments = arguments;
-    }
-
-    /**
-     * Sets the name.
-     * @param name The name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Sets the parameters.
-     * @param parameters The parameters to set
-     */
-    public void setParameters(String[] parameters) {
-        this.parameters = parameters;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Converts the argument property into an Object[] or converts the list of
-     * added argument objects (added via child tags) to an Object[] or
-     * return an empty argument array.
-     */
-    protected Object[] getArgumentArray() {
-        Object arg = getArguments();
-        if (arg != null) {
-            if (arg instanceof Object[]) {
-                return (Object[]) arg;
-            }
-            else {
-                return new Object[] { arg };
-            }
-        }
-        else if (argList != null) {
-            return argList.toArray();
-        }
-        else {
-            return new Object[0];
-        }
-    }
-}
\ No newline at end of file
diff --git a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/RegisterTag.java b/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/RegisterTag.java
deleted file mode 100644
index 65729f2..0000000
--- a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/RegisterTag.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jmx;
-
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.MBeanRegistrationException;
-import javax.management.MBeanServer;
-import javax.management.NotCompliantMBeanException;
-import javax.management.ObjectName;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.CollectionTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Registers a JavaBean or JMX MBean with a server..
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class RegisterTag extends TagSupport implements CollectionTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(RegisterTag.class);
-
-    private ObjectName name;
-    private MBeanServer server;
-
-    public RegisterTag() {
-    }
-
-
-    // CollectionTag interface
-    //-------------------------------------------------------------------------
-    public void addItem(Object bean) throws JellyTagException {
-        try {
-            register(server, bean);
-        }
-        catch (Exception e) {
-            throw new JellyTagException("Failed to register bean: " + bean, e);
-        }
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (name == null) {
-            throw new MissingAttributeException("name");
-        }
-        if (server == null) {
-            ServerTag serverTag = (ServerTag) findAncestorWithClass(ServerTag.class);
-            if (serverTag == null) {
-                throw new JellyTagException("This class must be nested inside a <server> tag");
-            }
-            server = serverTag.getServer();
-        }
-        invokeBody(output);
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-
-    /**
-     * @return ObjectName
-     */
-    public ObjectName getName() {
-        return name;
-    }
-
-    /**
-     * Sets the name.
-     * @param name The name to set
-     */
-    public void setName(ObjectName name) {
-        this.name = name;
-    }
-
-    /**
-     * @return MBeanServer
-     */
-    public MBeanServer getServer() {
-        return server;
-    }
-
-    /**
-     * Sets the MBeanServer. If this attribute is not supplied then the parent &lt;server&gt; tag
-     * is used to get the MBeanServer instance to use.
-     *
-     * @param server The MBeanServer to register the mbeans with.
-     */
-    public void setServer(MBeanServer server) {
-        this.server = server;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Registers the given bean with the MBeanServer
-     */
-    protected void register(MBeanServer server, Object bean) throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException {
-        server.registerMBean(bean, getName());
-    }
-
-}
diff --git a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/ServerTag.java b/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/ServerTag.java
deleted file mode 100644
index f982184..0000000
--- a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/ServerTag.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jmx;
-
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Binds a Java bean to the given named Jelly tag so that the attributes of
- * the tag set the bean properties..
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class ServerTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ServerTag.class);
-
-    private MBeanServer server;
-
-    public ServerTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-
-        // force the creation of a Server
-        MBeanServer server = getServer();
-
-        // allow children to register beans
-        invokeBody(output);
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * @return MBeanServer
-     */
-    public MBeanServer getServer() {
-        if (server == null) {
-            server = createServer();
-        }
-        return server;
-    }
-
-    /**
-     * Sets the server.
-     * @param server The server to set
-     */
-    public void setServer(MBeanServer server) {
-        this.server = server;
-    }
-
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    /**
-     * Factory method to lazily create an MBeanServer if none is supplied
-     *
-     * @return MBeanServer
-     */
-    protected MBeanServer createServer() {
-        return MBeanServerFactory.newMBeanServer();
-    }
-
-}
diff --git a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/package.html b/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/package.html
deleted file mode 100644
index 02cce8d..0000000
--- a/jelly-tags/jmx/src/java/org/apache/commons/jelly/tags/jmx/package.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>
-  	A tag library for creating beans and MBeans and registering them with a JMX Server in a similar way
-  	to the Ant tasks in Jakarta Commons Modeler
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/jmx/src/test/jndi.properties b/jelly-tags/jmx/src/test/jndi.properties
deleted file mode 100644
index 13091ab..0000000
--- a/jelly-tags/jmx/src/test/jndi.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-java.naming.factory.initial = com.sun.jndi.rmi.registry.RegistryContextFactory
-java.naming.provider.url = rmi://localhost:1099
diff --git a/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/Dummy.java b/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/Dummy.java
deleted file mode 100644
index 7703157..0000000
--- a/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/Dummy.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jmx;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A dummy MBean used for the demo
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class Dummy implements DummyMBean {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(Dummy.class);
-
-    private String name = "James";
-    private int count;
-
-    public void doSomething() {
-        ++count;
-        log.info("Do something! on: " + this);
-    }
-
-    public String toString() {
-        return super.toString() + "[name=" + name + "]";
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return int
-     */
-    public int getCount() {
-        return count;
-    }
-
-    /**
-     * @return String
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the count.
-     * @param count The count to set
-     */
-    public void setCount(int count) {
-        this.count = count;
-    }
-
-    /**
-     * Sets the name.
-     * @param name The name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-
-}
diff --git a/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/DummyMBean.java b/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/DummyMBean.java
deleted file mode 100644
index 5bdb766..0000000
--- a/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/DummyMBean.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jmx;
-
-/**
- * A dummy MBean interface
- * @author James Strachan
- */
-public interface DummyMBean {
-    int getCount();
-    String getName();
-    void setCount(int count);
-    void setName(String name);
-
-    void doSomething();
-
-}
\ No newline at end of file
diff --git a/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/TestJelly.java b/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/TestJelly.java
deleted file mode 100644
index a3de17f..0000000
--- a/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jmx;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/example.jelly b/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/example.jelly
deleted file mode 100644
index 645e822..0000000
--- a/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/example.jelly
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<server xmlns="jelly:jmx">
-    <!--
-        || define some common MBean types
-        -->
-    <beandef name="dummyMBean" className="org.apache.commons.jelly.tags.jmx.Dummy"/>
-    
-    <!-- 
-        || Register the MBeans 
-        || Attributes can be set on MBeans using 
-        || XML attributes or nested elements
-        -->
-    <register name="Examples:type=short">
-        <dummyMBean name="Short version"/>
-        <operation name="doSomething"/>
-    </register>                
-        
-    <register name="Examples:type=long">
-        <mbean class="org.apache.commons.jelly.tags.jmx.Dummy" name="Longer version"/>
-        <operation name="doSomething"/>
-    </register>                
-        
-    <register name="Naming:type=rmiregistry">
-        <mbean class="mx4j.tools.naming.NamingService"/>
-        <operation name="start"/>
-    </register>
-        
-    <register name="Adaptor:protocol=JRMP">
-        <mbean class="mx4j.adaptor.rmi.jrmp.JRMPAdaptor" JNDIName="jrmp"/>
-        <operation name="start"/>
-    </register>
-        
-</server>
\ No newline at end of file
diff --git a/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/suite.jelly b/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/suite.jelly
deleted file mode 100644
index b29397f..0000000
--- a/jelly-tags/jmx/src/test/org/apache/commons/jelly/tags/jmx/suite.jelly
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<test:suite 
-    xmlns:j="jelly:core"
-    xmlns="jelly:jmx"
-    xmlns:test="jelly:junit"
-    xmlns:log="jelly:log">
-
-    <test:case name="foo">
-    </test:case>
-    
-</test:suite>
diff --git a/jelly-tags/jmx/xdocs/changes.xml b/jelly-tags/jmx/xdocs/changes.xml
deleted file mode 100644
index 7e44081..0000000
--- a/jelly-tags/jmx/xdocs/changes.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-12">
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/jmx/xdocs/index.xml b/jelly-tags/jmx/xdocs/index.xml
deleted file mode 100644
index 0d4ae1a..0000000
--- a/jelly-tags/jmx/xdocs/index.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>JellyMBean</title>
-  <author email="jstrachan@apache.org">James Strachan</author>
- </properties>
-
-<body>
-
-<section name="JellyMBean">
-
-<p>
-    JellyMBean is a Jelly library for creating, configuring and registering beans and 
-    MBeans with a JMX server.
-    JellyMBean uses the 
-    <a href="http://jakarta.apache.org/commons/jelly/libs/bean/">JellyBean</a> library 
-    to create and configure beans and extends it to support JMX operations.
-</p>
-
-<p>
-    JellyMBean is similar to the MLET parser in 
-    <a href="http://mx4j.sourceforge.net/">mx4j</a> and 
-    <a href="http://jboss.org/">JBoss</a> and the 
-    <a href="http://ant.apache.org/">Ant</a> tasks in 
-    <a href="http://jakarta.apache.org/commons/modeler.html">commons-modeler</a>
-</p>
-
-<p>
-    There is an example JellyBean deployment descriptor file 
-    <a href="">here</a>.
-</p>
-</section>
-
-
-</body>
-</document>
-
diff --git a/jelly-tags/jmx/xdocs/navigation.xml b/jelly-tags/jmx/xdocs/navigation.xml
deleted file mode 100644
index 705f607..0000000
--- a/jelly-tags/jmx/xdocs/navigation.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="JellyMBean">
-
-  <title>JellyMBean</title>
-
-  <body>
-    <links>
-      <item name="Jelly"               href="http://jakarta.apache.org/commons/jelly/"/>
-      <item name="Commons Modeler"     href="http://jakarta.apache.org/commons/modeler/"/>
-      <item name="JBoss"               href="http://jboss.org/"/>
-      <item name="mx4j"                href="http://mx4j.sourceforge.net/"/>
-    </links>
-    
-    <menu name="JellyMBean">
-      <item name="Overview"            href="index.html"/>
-      <item name="Tags"                href="tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/jsl/.cvsignore b/jelly-tags/jsl/.cvsignore
deleted file mode 100644
index bca2cda..0000000
--- a/jelly-tags/jsl/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-target
-maven.log
-velocity.log
diff --git a/jelly-tags/jsl/build.xml b/jelly-tags/jsl/build.xml
deleted file mode 100644
index 2871b74..0000000
--- a/jelly-tags/jsl/build.xml
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.1-SNAPSHOT
-  on date December 21 2004, time 2157-->
-
-<project default="jar" name="commons-jelly-tags-jsl" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-jsl-1.1-SNAPSHOT">
-  </property>
-  <path id="build.classpath">
-    <fileset dir="${libdir}">
-      <include name="**/*.jar">
-      </include>
-    </fileset>
-  </path>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-    <!--Test if JUNIT is present in ANT classpath-->
-
-    <available property="Junit.present" classname="junit.framework.Test">
-    </available>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath refid="build.classpath">
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="${defaulttargetdir}/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" if="Junit.present" depends="junit-present,compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <path refid="build.classpath">
-        </path>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="junit-present" unless="Junit.present" depends="init">
-    <echo>================================= WARNING ================================</echo>
-    <echo>Junit isn't present in your ${ANT_HOME}/lib directory. Tests not executed.</echo>
-    <echo>==========================================================================</echo>
-  </target>
-  <target name="compile-tests" if="Junit.present" depends="junit-present,compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <path refid="build.classpath">
-        </path>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="get-deps">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-jsl 1.1-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.jsl.*">
-      <classpath>
-        <path refid="build.classpath">
-        </path>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <!--Proxy settings works only with a JDK 1.2 and higher.-->
-
-    <setproxy>
-    </setproxy>
-    <get dest="${libdir}/commons-jelly-1.0-beta-4.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-1.0-beta-4.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-xml-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-xml-1.0.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-ant-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-ant-1.0.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-1.0.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-log-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-log-1.0.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.3-1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.3-1.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.3-1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.3-1.jar">
-    </get>
-    <get dest="${libdir}/commons-grant-1.0-beta-4.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-grant/jars/commons-grant-1.0-beta-4.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-1.0.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-1.0.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/jsl/maven.xml b/jelly-tags/jsl/maven.xml
deleted file mode 100644
index 8636827..0000000
--- a/jelly-tags/jsl/maven.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-    <!-- demos -->
-    <goal name="demo:jsl" prereqs="create-classpath"
-      description="Runs a simple demo of the JSL tags">
-
-        <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/jsl/example.jelly"/>
-    </java>
-
-    </goal>
-
-    <goal name="demo:jsl2" prereqs="create-classpath"
-        description="Runs demo #2 of the JSL tags">
-
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/jsl/example2.jelly"/>
-    </java>
-    </goal>
-
-
-</project>
diff --git a/jelly-tags/jsl/project.properties b/jelly-tags/jsl/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/jsl/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/jsl/project.xml b/jelly-tags/jsl/project.xml
deleted file mode 100644
index 99b9ccd..0000000
--- a/jelly-tags/jsl/project.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-jsl</id>
-  <name>commons-jelly-tags-jsl</name>
-  <currentVersion>1.1-SNAPSHOT</currentVersion>
-
-  <package>org.apache.commons.jelly.tags.jsl</package>
-
-  <description>
-       The Jelly Stylesheet Library (JSL) 
-  </description>
-  <shortDescription>Commons Jelly JSL Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_JSL-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-
-    <!-- START for compilation -->
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-xml</artifactId>
-      <version>1.0</version>
-      <properties>
-        <classloader>root.maven</classloader>
-      </properties>
-      <url>http://jakarta.apache.org/commons/jelly/tags/xml/</url>
-    </dependency>
-    
-      
-    <!-- END for compilation -->
-    
-    <!-- below for testing, pulled in by ant taglib -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-ant</artifactId>
-      <version>1.0</version>
-      <properties>
-        <classloader>root.maven</classloader>
-      </properties>
-      <url>http://jakarta.apache.org/commons/jelly/tags/ant/</url>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-log</artifactId>
-      <version>1.0</version>
-      <properties>
-        <classloader>root.maven</classloader>
-      </properties>
-      <url>http://jakarta.apache.org/commons/jelly/tags/log/</url>
-    </dependency>
-
-    <dependency>
-      <id>ant</id>
-      <version>1.5.3-1</version>
-    </dependency>
-    
-    <dependency>
-      <id>ant+optional</id>
-      <version>1.5.3-1</version>
-      <properties>
-        <gump.project>ant</gump.project>
-      </properties>
-    </dependency>
-    
-    <dependency>
-      <id>commons-grant</id>
-      <version>1.0-beta-4</version>
-    </dependency>
-
-    
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-        
-    <!-- END for running demos -->
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/ApplyTemplatesTag.java b/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/ApplyTemplatesTag.java
deleted file mode 100644
index 7c56cda..0000000
--- a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/ApplyTemplatesTag.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jsl;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.rule.Stylesheet;
-import org.jaxen.XPath;
-
-/**
- * Implements the apply templates function in the stylesheet, similar to the XSLT equivalent.
- * a JSP include.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class ApplyTemplatesTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(ApplyTemplatesTag.class);
-
-    /** Holds value of property mode. */
-    private String mode;
-
-    /** Holds the XPath object */
-    private XPath select;
-
-
-    public ApplyTemplatesTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    /** By default just evaluate the body */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        StylesheetTag tag = (StylesheetTag) findAncestorWithClass( StylesheetTag.class );
-        if (tag == null) {
-            throw new JellyTagException(
-                "<applyTemplates> tag must be inside a <stylesheet> tag"
-            );
-        }
-        Stylesheet stylesheet = tag.getStylesheet();
-
-        XMLOutput oldOutput = tag.getStylesheetOutput();
-        tag.setStylesheetOutput(output);
-
-        Object source = tag.getXPathSource();
-        // for some reason, these DOM4J methods only throw Exception
-        try {
-            if ( select != null ) {
-                stylesheet.applyTemplates( source, select, mode );
-            }
-            else {
-                stylesheet.applyTemplates( source, mode );
-            }
-        }
-        catch (Exception e) {
-            throw new JellyTagException(e);
-        }
-
-        tag.setStylesheetOutput(oldOutput);
-
-        // #### should support MODE!!!
-
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    public void setSelect( XPath select ) {
-        this.select = select;
-    }
-
-    /** Sets the mode.
-     * @param mode New value of property mode.
-     */
-    public void setMode(String mode) {
-        this.mode = mode;
-    }
-}
diff --git a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/JSLTagLibrary.java b/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/JSLTagLibrary.java
deleted file mode 100644
index 757428a..0000000
--- a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/JSLTagLibrary.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jsl;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-import org.apache.commons.jelly.impl.TagScript;
-import org.apache.commons.jelly.tags.xml.ExprTag;
-import org.apache.commons.jelly.tags.xml.XMLTagLibrary;
-import org.apache.commons.jelly.expression.xpath.XPathExpression;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.DocumentHelper;
-import org.dom4j.rule.Pattern;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.6 $
-  */
-public class JSLTagLibrary extends XMLTagLibrary {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(JSLTagLibrary.class);
-
-    public JSLTagLibrary() {
-        registerTag("stylesheet", StylesheetTag.class);
-        registerTag("style", StyleTag.class);
-        registerTag("template", TemplateTag.class);
-        registerTag("applyTemplates", ApplyTemplatesTag.class);
-        registerTag("valueOf", ExprTag.class);
-    }
-
-    public Expression createExpression(
-        ExpressionFactory factory,
-        TagScript tagScript,
-        String attributeName,
-        String attributeValue) throws JellyException {
-
-        // #### may need to include some namespace URI information in the XPath instance?
-
-        if (attributeName.equals("select")) {
-            if ( log.isDebugEnabled() ) {
-                log.debug( "Parsing XPath expression: " + attributeValue );
-            }
-
-            Expression xpathExpr = createXPathTextExpression( attributeValue );
-
-            return new XPathExpression(attributeValue, xpathExpr, tagScript);
-        }
-
-        if (attributeName.equals("match")) {
-            if ( log.isDebugEnabled() ) {
-                log.debug( "Parsing XPath pattern: " + attributeValue );
-            }
-
-            try {
-                Pattern pattern = DocumentHelper.createPattern( attributeValue );
-                return new XPathPatternExpression(attributeValue, pattern);
-            }
-            catch (Exception e) {
-                throw new JellyException( "Could not parse XPath expression: \"" + attributeValue + "\" reason: " + e, e );
-            }
-        }
-
-        // will use the default expression instead
-        return super.createExpression(factory, tagScript, attributeName, attributeValue);
-    }
-
-
-}
diff --git a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/JellyStylesheet.java b/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/JellyStylesheet.java
deleted file mode 100644
index f50fa55..0000000
--- a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/JellyStylesheet.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jsl;
-
-import org.apache.commons.jelly.XMLOutput;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.dom4j.Node;
-import org.dom4j.rule.Action;
-import org.dom4j.rule.Stylesheet;
-
-/**
- * This class is a specialization of the Stylesheet from dom4j's rule engine
- * that adds some Jelly specific features.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class JellyStylesheet extends Stylesheet {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(JellyStylesheet.class);
-
-    private XMLOutput output;
-
-    public JellyStylesheet() {
-        setValueOfAction(
-            new Action() {
-                public void run(Node node) throws Exception {
-                    String text = node.getStringValue();
-                    if ( text != null && text.length() > 0 ) {
-                        getOutput().write( text );
-                    }
-                }
-            }
-        );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the output.
-     * @return XMLOutput
-     */
-    public XMLOutput getOutput() {
-        return output;
-    }
-
-    /**
-     * Sets the output.
-     * @param output The output to set
-     */
-    public void setOutput(XMLOutput output) {
-        this.output = output;
-    }
-
-}
diff --git a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/StyleTag.java b/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/StyleTag.java
deleted file mode 100644
index ff25e35..0000000
--- a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/StyleTag.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jsl;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.rule.Stylesheet;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-
-/**
- * This tag performs a JSL stylesheet which was previously
- * created via an &lt;stylesheet&gt; tag.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class StyleTag extends XPathTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(StyleTag.class);
-
-
-    /** Holds the stylesheet which will be applied to the source context. */
-    private Stylesheet stylesheet;
-
-    /** The XPath expression to evaluate. */
-    private XPath select;
-
-    public StyleTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        Stylesheet stylesheet = getStylesheet();
-        if (stylesheet == null) {
-            throw new MissingAttributeException("stylesheet");
-        }
-
-        if (stylesheet instanceof JellyStylesheet) {
-            JellyStylesheet jellyStyle = (JellyStylesheet) stylesheet;
-            jellyStyle.setOutput(output);
-        }
-
-        // dom4j only seems to throw Exception
-        try {
-            Object source = getSource();
-            if (log.isDebugEnabled()) {
-                log.debug("About to evaluate stylesheet on source: " + source);
-            }
-
-            stylesheet.run(source);
-        } catch (Exception e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    public Stylesheet getStylesheet() {
-        return stylesheet;
-    }
-
-    /**
-     * Sets the stylesheet to use to style this tags body
-     */
-    public void setStylesheet(Stylesheet stylesheet) {
-        this.stylesheet = stylesheet;
-    }
-
-    /** Sets the XPath expression to evaluate. */
-    public void setSelect(XPath select) {
-        this.select = select;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /** @return the source on which the stylesheet should run
-     */
-    protected Object getSource() throws JaxenException {
-        Object source = getXPathContext();
-        if ( select != null ) {
-            return select.evaluate(source);
-        }
-        return source;
-    }
-}
diff --git a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/StylesheetTag.java b/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/StylesheetTag.java
deleted file mode 100644
index 53104f0..0000000
--- a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/StylesheetTag.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jsl;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathSource;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.rule.Rule;
-import org.dom4j.rule.Stylesheet;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-
-
-/**
- * This tag implements a JSL stylesheet which is similar to an
- * XSLT stylesheet but can use Jelly tags inside it
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class StylesheetTag extends XPathTagSupport implements XPathSource {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(StylesheetTag.class);
-
-
-    /** Holds the stylesheet which will be applied to the source context. */
-    private Stylesheet stylesheet;
-
-    /** Holds value of property mode. */
-    private String mode;
-
-    /** The variable which the stylesheet will be output as */
-    private String var;
-
-    /** The XPath expression to evaluate. */
-    private XPath select;
-
-    /** The XPath source used by TemplateTag and ApplyTemplatesTag to pass XPath contexts */
-    private Object xpathSource;
-
-    public StylesheetTag() {
-    }
-
-
-    /**
-     * @return the XMLOutput from the stylesheet if available
-     */
-    public XMLOutput getStylesheetOutput() {
-        if (stylesheet instanceof JellyStylesheet) {
-            JellyStylesheet jellyStyle = (JellyStylesheet) stylesheet;
-            return jellyStyle.getOutput();
-        }
-        return null;
-    }
-
-    /**
-     * Sets the XMLOutput to use by the current stylesheet
-     */
-    public void setStylesheetOutput(XMLOutput output) {
-        if (stylesheet instanceof JellyStylesheet) {
-            JellyStylesheet jellyStyle = (JellyStylesheet) stylesheet;
-            jellyStyle.setOutput(output);
-        }
-    }
-
-    /**
-     * Adds a new template rule to this stylesheet
-     */
-    public void addTemplate( Rule rule ) {
-        getStylesheet().addRule( rule );
-    }
-
-    // XPathSource interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the current XPath iteration value
-     *  so that any other XPath aware child tags to use
-     */
-    public Object getXPathSource() {
-        return xpathSource;
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        stylesheet = createStylesheet(output);
-
-        // run the body to add the rules
-        invokeBody(output);
-        stylesheet.setModeName(getMode());
-
-        if (var != null) {
-            context.setVariable(var, stylesheet);
-        }
-        else {
-
-            //dom4j seems to only throw generic Exceptions
-            try {
-                Object source = getSource();
-
-                if (log.isDebugEnabled()) {
-                    log.debug("About to evaluate stylesheet on source: " + source);
-                }
-
-                stylesheet.run(source);
-            }
-            catch (Exception e) {
-                throw new JellyTagException(e);
-            }
-
-        }
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Getter for property mode.
-     * @return Value of property mode.
-     */
-    public String getMode() {
-        return mode;
-    }
-
-    /**
-     * Sets the mode.
-     * @param mode New value of property mode.
-     */
-    public void setMode(String mode) {
-        this.mode = mode;
-    }
-
-    public Stylesheet getStylesheet() {
-        return stylesheet;
-    }
-
-    /** Sets the variable name to define for this expression
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /** Sets the XPath expression to evaluate. */
-    public void setSelect(XPath select) {
-        this.select = select;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /** @return the source on which the stylesheet should run
-     */
-    protected Object getSource() throws JaxenException {
-        Object source = getXPathContext();
-        if ( select != null ) {
-            return select.evaluate(source);
-        }
-        return source;
-    }
-
-
-    /**
-     * Factory method to create a new stylesheet
-     */
-    protected Stylesheet createStylesheet(final XMLOutput output) {
-        JellyStylesheet answer = new JellyStylesheet();
-        answer.setOutput(output);
-        return answer;
-    }
-
-    /**
-     * Sets the xpathSource.
-     * @param xpathSource The xpathSource to set
-     */
-    void setXPathSource(Object xpathSource) {
-        this.xpathSource = xpathSource;
-    }
-
-}
diff --git a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/TemplateTag.java b/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/TemplateTag.java
deleted file mode 100644
index 0d47770..0000000
--- a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/TemplateTag.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.jsl;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathSource;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.Node;
-import org.dom4j.rule.Action;
-import org.dom4j.rule.Pattern;
-import org.dom4j.rule.Rule;
-
-/**
- * This tag represents a declarative matching rule, similar to the template tag in XSLT.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class TemplateTag extends TagSupport implements XPathSource {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(TemplateTag.class);
-
-
-    /** Holds value of property name. */
-    private String name;
-
-    /** Holds value of property mode. */
-    private String mode;
-
-    /** Holds value of property priority. */
-    private double priority;
-
-    /** The pattern to match */
-    private Pattern match;
-
-    /** The source XPath context for any child tags */
-    private Object xpathSource;
-
-
-    public TemplateTag() {
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        StylesheetTag tag = (StylesheetTag) findAncestorWithClass( StylesheetTag.class );
-        if (tag == null) {
-            throw new JellyTagException( "This <template> tag must be used inside a <stylesheet> tag" );
-        }
-
-        if ( log.isDebugEnabled() ) {
-            log.debug( "adding template rule for match: " + match );
-        }
-
-        Rule rule = createRule(tag, output);
-        if ( rule != null && tag != null) {
-            rule.setMode( mode );
-            tag.addTemplate( rule );
-        }
-    }
-
-    // XPathSource interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the current XPath value on which relative paths are evaluated
-     */
-    public Object getXPathSource() {
-        return xpathSource;
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    public void setMatch(Pattern match) {
-        this.match = match;
-    }
-
-    /** Getter for property priority.
-     * @return Value of property priority.
-     */
-    public double getPriority() {
-        return priority;
-    }
-
-    /** Sets the priority.
-     * @param priority New value of property priority.
-     */
-    public void setPriority(double priority) {
-        this.priority = priority;
-    }
-
-    /** Getter for property name.
-     * @return Value of property name.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /** Sets the name.
-     * @param name New value of property name.
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-
-    /** Sets the mode.
-     * @param mode New value of property mode.
-     */
-    public void setMode(String mode) {
-        this.mode = mode;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected Rule createRule(StylesheetTag tag, XMLOutput output) {
-        return new Rule( match, createAction(tag, output) );
-    }
-
-    protected Action createAction(final StylesheetTag tag, final XMLOutput output) {
-        return new Action() {
-            public void run(Node node) throws Exception {
-
-                // store the context for use by applyTemplates tag
-                tag.setXPathSource( node );
-
-                xpathSource = node;
-
-                if (log.isDebugEnabled()) {
-                    log.debug( "Firing template body for match: " + match + " and node: " + node );
-                }
-
-                XMLOutput actualOutput = tag.getStylesheetOutput();
-                if (actualOutput == null) {
-                    actualOutput = output;
-                }
-
-                invokeBody(actualOutput);
-            }
-        };
-    }
-}
diff --git a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/XPathPatternExpression.java b/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/XPathPatternExpression.java
deleted file mode 100644
index 189c34b..0000000
--- a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/XPathPatternExpression.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.jsl;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.expression.ExpressionSupport;
-import org.dom4j.rule.Pattern;
-import org.jaxen.VariableContext;
-
-/** An expression which returns an XPath based Pattern (like an XSLT pattern).
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class XPathPatternExpression extends ExpressionSupport implements VariableContext {
-
-    private String text;
-    private Pattern pattern;
-    private JellyContext context;
-
-    public XPathPatternExpression(String text, Pattern pattern) {
-        this.text = text;
-        this.pattern = pattern;
-    }
-
-    // Expression interface
-    //-------------------------------------------------------------------------
-    public String getExpressionText() {
-        return text;
-    }
-
-    public Object evaluate(JellyContext context) {
-        this.context = context;
-        //pattern.setVariableContext(this);
-        return pattern;
-    }
-
-    // VariableContext interface
-    //-------------------------------------------------------------------------
-    public Object getVariableValue(
-        String namespaceURI,
-        String prefix,
-        String localName) {
-
-        Object value = context.getVariable(localName);
-
-        //log.info( "Looking up XPath variable of name: " + localName + " value is: " + value );
-
-        return value;
-    }
-}
diff --git a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/package.html b/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/package.html
deleted file mode 100644
index 25b5b7c..0000000
--- a/jelly-tags/jsl/src/java/org/apache/commons/jelly/tags/jsl/package.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>The Jelly Stylesheet Library (JSL)</p>
-  
-  <p>The JSL tag library implements an XSLT-like declarative XML based processing engine which allows 
-  	dynamic stylesheets and a free mix and match of all Jelly tags within the script.
-  </p>
-  <p>
-  	The JSL tag library relies on the XML tags in JSTL to do most of its work, so JSL just provides
-  	the declarative XML processing via &lt;jsl:stylesheet&gt;  &lt;jsl:template&gt; and  &lt;jsl:applyTemplates&gt;
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/TestJSL.java b/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/TestJSL.java
deleted file mode 100644
index 8f8c402..0000000
--- a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/TestJSL.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.jsl;
-
-import java.io.FileInputStream;
-import java.io.InputStream;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.parser.XMLParser;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.io.SAXContentHandler;
-
-/**
- * Tests the JSL tags.
- * Note this test harness could be written in Jelly script
- * if we had the junit tag library!
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class TestJSL extends TestCase {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TestJSL.class);
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestJSL.class);
-    }
-
-    public TestJSL(String testName) {
-        super(testName);
-    }
-
-    public void testExample1() throws Exception {
-        Document document = runScript( "src/test/org/apache/commons/jelly/jsl/example.jelly" );
-        Element small = (Element) document.selectSingleNode("/html/body/small");
-
-        assertTrue( "<small> starts with 'James Elson'", small.getText().startsWith("James Elson") );
-        assertEquals( "I am a title!", small.valueOf( "h2" ).trim() );
-        assertEquals( "Twas a dark, rainy night...", small.valueOf( "small" ).trim() );
-        assertEquals( "dfjsdfjsdf", small.valueOf( "p" ).trim() );
-    }
-
-
-    protected Document runScript(String fileName) throws Exception {
-        InputStream in = new FileInputStream(fileName);
-        XMLParser parser = new XMLParser();
-        Script script = parser.parse(in);
-        script = script.compile();
-        JellyContext context = parser.getContext();
-
-        SAXContentHandler contentHandler = new SAXContentHandler();
-        XMLOutput output = new XMLOutput( contentHandler );
-
-        contentHandler.startDocument();
-        script.run(context, output);
-        contentHandler.endDocument();
-
-        return contentHandler.getDocument();
-    }
-}
diff --git a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/TestJSLSuite.java b/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/TestJSLSuite.java
deleted file mode 100644
index 9919b87..0000000
--- a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/TestJSLSuite.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.jsl;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:dion@apache.org">dIon Gillard</a>
- * @version $Revision: 1.8 $
- */
-public class TestJSLSuite extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJSLSuite.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/example.jelly b/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/example.jelly
deleted file mode 100644
index a446bd5..0000000
--- a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/example.jelly
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:jsl="jelly:jsl">
-
-<html>
-<body>
-    
-  <x:parse var="doc">
-  <simpleDocument author="James Elson">
-
-    <title>I am a title!</title>
-
-    <synopsis>Twas a dark, rainy night...</synopsis>
-
-    <para>dfjsdfjsdf</para>
-    <para>fdsfsdfhdsff gyuf uysgf ds</para>
-
-  </simpleDocument>
-  </x:parse>
-
-
-<h1>Output</h1>
-
-
-<jsl:stylesheet select="$doc">
-
-  <jsl:template match="/">
-    <jsl:applyTemplates/>
-  </jsl:template>
-
-  <jsl:template match="*">
-    <small><jsl:applyTemplates/></small>
-  </jsl:template>
-
-  <jsl:template match="title">
-    <h2><jsl:applyTemplates/></h2>
-  </jsl:template>
-
-
-  <jsl:template match="para">
-    <p><jsl:applyTemplates/></p>
-  </jsl:template>
-
-</jsl:stylesheet>
-
-</body>
-</html>
-
-</j:jelly>
-
diff --git a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/example2.jelly b/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/example2.jelly
deleted file mode 100644
index a986b3e..0000000
--- a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/example2.jelly
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly trim="false" xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:jsl="jelly:jsl">
-
-<html>
-<body>
-    
-  <x:parse var="doc">
-  <simpleDocument author="James Elson">
-
-    <title>I am a title!</title>
-
-    <synopsis>Twas a dark, rainy night...</synopsis>
-
-    <para>dfjsdfjsdf</para>
-    <para>fdsfsdfhdsff gyuf uysgf ds</para>
-
-  </simpleDocument>
-  </x:parse>
-
-
-<h1>Output of first stylesheet1</h1>
-
-<jsl:stylesheet select="$doc">
-
-  <jsl:template match="/">
-    <jsl:applyTemplates/>
-  </jsl:template>
-
-  <jsl:template match="title">
-    <h2><jsl:applyTemplates/></h2>
-  </jsl:template>
-
-
-  <jsl:template match="para">
-    <p><jsl:applyTemplates/></p>
-  </jsl:template>
-
-  <jsl:template match="*">
-    <small><jsl:applyTemplates/></small>
-  </jsl:template>
-
-</jsl:stylesheet>
-
-<hr />
-
-<h1>Output of stylesheet2</h1>
-
-<jsl:stylesheet select="$doc">
-
-  <jsl:template match="/">
-    <jsl:applyTemplates/>
-  </jsl:template>
-
-  <jsl:template match="*">
-    <small><jsl:applyTemplates/></small>
-  </jsl:template>
-
-  <jsl:template match="title">
-    <h2><jsl:applyTemplates/></h2>
-  </jsl:template>
-
-
-  <jsl:template match="para">
-    <p><jsl:applyTemplates/></p>
-  </jsl:template>
-
-</jsl:stylesheet>
-
-<hr />
-
-<h1>Output of stylesheet3</h1>
-
-
-<jsl:stylesheet select="$doc">
-
-  <jsl:template match="/simpleDocument">
-   <h2>Book review</h2>
-   <b>Title:</b> <jsl:applyTemplates select="title"/><br />
-   <b>Author:</b> <jsl:applyTemplates select="@author"/><br />
-   <b>Summary:</b> <em><jsl:applyTemplates select="synopsis"/></em><br />
-  </jsl:template>
-
-  <jsl:template match="title">
-    <span style="color:blue"><jsl:applyTemplates/></span>
-  </jsl:template>
-
-
-  <jsl:template match="para">
-    <p><jsl:applyTemplates/></p>
-  </jsl:template>
-
-</jsl:stylesheet>
-
-<h1>Output of stylesheet4</h1>
-
-
-<jsl:stylesheet select="$doc">
-
-  <jsl:template match="/simpleDocument">
-   <h2>Book review</h2>
-   <jsl:applyTemplates/>
-  </jsl:template>
-
-  <jsl:template match="*">
-    <jsl:copy>
-      <jsl:applyTemplates/>
-    </jsl:copy>
-  </jsl:template>
-</jsl:stylesheet>
-
-
-</body>
-</html>
-
-</j:jelly>
-
diff --git a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/suite.jelly b/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/suite.jelly
deleted file mode 100644
index ffc6bc7..0000000
--- a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/suite.jelly
+++ /dev/null
@@ -1,250 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite xmlns:j="jelly:core" 
-            xmlns:jsl="jelly:jsl"
-            xmlns:m="jelly:ant"
-            xmlns:test="jelly:junit" 
-            xmlns:u="jelly:util" 
-            xmlns:x="jelly:xml"
-            xmlns:log="jelly:log">
-
-    <test:case name="testDionsBug" xmlns="dummy">
-
-        <log:info>
-            <!-- see if we can break template -->
-            <m:fileScanner var="files">
-                <m:fileset dir="src/test/org/apache/commons/jelly/jsl">
-                    <m:patternset>
-                        <m:include name="**/*.xml"/>
-                    </m:patternset>
-                </m:fileset>
-            </m:fileScanner>
-    
-            <j:forEach var="file" items="${files.iterator()}">
-                <x:parse var="doc" xml="${file.toURL()}" />
-                <jsl:stylesheet select="$doc">
-                    <jsl:template match="document" trim="no">
-    
-                        <h>
-                            <j:set var="full"><x:expr select="$doc/document/properties/title"/></j:set>
-                            <j:set var="short"><x:expr select="./properties/title" /></j:set>
-                            <m:echo>full=${full},short=${short}</m:echo>
-                            <test:assert test="${full == short}">All iterations should succeed</test:assert>
-                        </h>
-                    </jsl:template>
-                </jsl:stylesheet>
-    
-            </j:forEach>
-    
-            <!-- test stylesheet external to loop -->
-            <jsl:stylesheet var="ss1">
-                <jsl:template match="document" trim="no">
-                    <h>
-    
-                        <j:set var="full"><x:expr select="$doc/document/properties/title"/></j:set>
-                        <j:set var="short"><x:expr select="./properties/title" /></j:set>
-                        <m:echo>full=${full},short=${short}</m:echo>
-                        <test:assert test="${full == short}">All iterations should succeed</test:assert>
-                    </h>
-                </jsl:template>
-            </jsl:stylesheet>
-    
-            <j:forEach var="file" items="${files.iterator()}">
-                <x:parse var="doc" xml="${file.toURL()}" />
-                <jsl:style stylesheet="${ss1}" select="$doc" />
-            </j:forEach>
-        </log:info>            
-  </test:case>  
-
-
-    <test:case name="testStylesheetReuse" xmlns="dummy">
-        
-    <!-- see if we can break template -->
-    <m:fileScanner var="files">
-      <m:fileset dir="src/test/org/apache/commons/jelly/jsl">
-        <m:patternset>
-          <m:include name="**/*.xml"/>
-        </m:patternset>
-      </m:fileset>
-    </m:fileScanner>
-
-    <jsl:stylesheet var="myStylesheet">
-        <jsl:template match="document" trim="no">
-            <h>
-        <j:set var="full"><x:expr select="$doc/document/properties/title"/></j:set>
-        <j:set var="short"><x:expr select="./properties/title" /></j:set>
-        <m:echo>full=${full},short=${short}</m:echo>
-        <test:assert test="${full == short}">All iterations should succeed</test:assert>
-            </h>
-        </jsl:template>
-    </jsl:stylesheet>
-
-
-    <j:forEach var="file" items="${files.iterator()}">
-      <x:parse var="doc" xml="${file.toURL()}" />
-      <jsl:style stylesheet="${myStylesheet}"/>
-    </j:forEach>
-  </test:case>  
-
-
-    <test:case name="testRelativeXPaths">
-
-        <j:forEach var="i" begin="1" end="5">
-            <x:parse var="doc">
-                <document id="${i}">
-                    <a x="1">
-                        <b y="123"/>
-                    </a>
-                    <properties><title>value ${i}</title></properties>
-                </document>
-            </x:parse>
-        
-            <jsl:stylesheet select="$doc">
-                <jsl:template match="document">
-                    <log:info>Found document with ID <x:expr select="./@id"/> title <x:expr select="./properties/title"/></log:info>
-
-                    <j:set var="title"><x:expr select="./properties/title"/></j:set>
-                    <test:assertEquals expected="value ${i}" actual="${title}"/>
-                    
-                    <j:set var="title"><x:expr select="$doc/document/properties/title"/></j:set>
-                    <test:assertEquals expected="value ${i}" actual="${title}"/>
-                    
-                    
-                    <j:set var="id"><x:expr select="./@id"/></j:set>
-                    <test:assert test="${id == i}"/>
-                    
-                    <test:assert xpath="a[@x = '1']"/>
-                    
-                    <test:assert xpath="@id = $i"/>
-                    
-                    <jsl:applyTemplates/>
-                </jsl:template>
-    
-                <jsl:template match="a">
-                    <test:assert xpath="@x='1'"/>                
-                    <jsl:applyTemplates/>
-                </jsl:template>
-    
-                <jsl:template match="b">
-                    <test:assert xpath="@y='123'"/>                
-                    <jsl:applyTemplates/>
-                </jsl:template>
-
-
-                <jsl:template match="@*"/>
-            </jsl:stylesheet>
-        </j:forEach>      
-        
-  </test:case>  
-  
-  <!-- 
-    test case to test that the xml output for a stylesheet template is
-    'remembered' when using applyTemplates
-   -->
-  <test:case name="testXMLContextKept" xmlns="dummy">
-    <x:parse var="testDoc">
-      <element1>
-         <element2>SomeText</element2>
-      </element1>
-    </x:parse>
-
-    <!-- stylesheet with embedded set -->    
-    <jsl:stylesheet var="contextStyleSheet">
-      <jsl:template match="element1">
-        <j:set var="contextText">El1<jsl:applyTemplates /></j:set>
-      </jsl:template>
-      <jsl:template match="element2"><x:expr select="."/></jsl:template>
-    </jsl:stylesheet>
-
-    <log:info>
-        ...
-        <jsl:style stylesheet="${contextStyleSheet}" select="$testDoc"/>
-        ...
-    </log:info>
-
-    <m:echo>text is '${contextText}'</m:echo>
-    
-    <test:assertEquals expected="El1SomeText" actual="${contextText}" />
-  </test:case>
-  
-  <test:case name="testXMLContextKept2" xmlns="dummy">
-    <x:parse var="testDoc">
-      <element1>
-         <element2>SomeText</element2>
-      </element1>
-    </x:parse>
-
-    <!-- stylesheet with embedded set and text() rule -->    
-    <jsl:stylesheet var="contextStyleSheet">
-      <jsl:template match="element1">
-        <j:set var="contextText">El1<jsl:applyTemplates /></j:set>
-      </jsl:template>
-      <jsl:template match="element2"><x:expr select="."/></jsl:template>
-      <jsl:template match="text()"><x:expr select="."/></jsl:template>
-    </jsl:stylesheet>
-
-    <log:info>
-        ...
-        <jsl:style stylesheet="${contextStyleSheet}" select="$testDoc"/>
-        ...
-    </log:info>
-
-    <m:echo>text is '${contextText}'</m:echo>
-    
-    <test:assertEquals expected="El1SomeText" actual="${contextText}" />
-  </test:case>
-  
-  <test:case name="testXMLContextKept3" xmlns="dummy">
-    <x:parse var="testDoc">
-      <element1>
-         <element2>SomeText</element2>
-      </element1>
-    </x:parse>
-
-    <jsl:stylesheet var="contextStyleSheet">
-      <jsl:template match="element1">El1<jsl:applyTemplates /></jsl:template>
-      <jsl:template match="element2"><x:expr select="."/></jsl:template>
-    </jsl:stylesheet>
-
-    <j:set var="contextText"><jsl:style stylesheet="${contextStyleSheet}" select="$testDoc"/></j:set>
-
-    <m:echo>text is '${contextText}'</m:echo>
-    
-    <test:assertEquals expected="El1SomeText" actual="${contextText}" />
-  </test:case>  
-  
-  <test:case name="testModeBug" xmlns="dummy">
-    <x:parse var="testDoc">
-      <menu>
-        <item />
-        <item />
-      </menu>
-    </x:parse>
-    
-    <jsl:stylesheet var="modeStyleSheet">
-      <jsl:template match="menu"><jsl:applyTemplates mode="bbb"/></jsl:template>
-	  <jsl:template match="item">No mode</jsl:template>
-	  <jsl:template match="item" trim="false" mode="bbb">BBB</jsl:template>
-    </jsl:stylesheet>
-    
-    <j:set var="modeText"><jsl:style stylesheet="${modeStyleSheet}" select="$testDoc"/></j:set>
-
-    <m:echo>text is '${modeText}'</m:echo>
-    
-    <test:assertEquals expected="BBBBBB" actual="${modeText}" />
-  </test:case>
-</test:suite>
\ No newline at end of file
diff --git a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/test1.xml b/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/test1.xml
deleted file mode 100644
index 8108088..0000000
--- a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/test1.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<document>
-  <properties>
-    <title>Test1</title>
-  </properties>
-</document>
\ No newline at end of file
diff --git a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/test2.xml b/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/test2.xml
deleted file mode 100644
index f26015f..0000000
--- a/jelly-tags/jsl/src/test/org/apache/commons/jelly/jsl/test2.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<document>
-  <properties>
-    <title>Test2</title>
-  </properties>
-</document>
\ No newline at end of file
diff --git a/jelly-tags/jsl/xdocs/changes.xml b/jelly-tags/jsl/xdocs/changes.xml
deleted file mode 100644
index 6c106ae..0000000
--- a/jelly-tags/jsl/xdocs/changes.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.1-SNAPSHOT" date="in CVS">
-      <action dev="dion" type="fix" issue="JELLY-109" due-to="Maarten Coene">jsl:applyTemplates mode attribute not functioning.</action>
-    </release>
-    <release version="1.0" date="2004-09-11">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/jsl/xdocs/index.xml b/jelly-tags/jsl/xdocs/index.xml
deleted file mode 100644
index 9dd2068..0000000
--- a/jelly-tags/jsl/xdocs/index.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>JSL Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        The JSL tag library implements an XSLT-like declarative XML based processing engine which allows 
-        dynamic stylesheets and a free mix and match of all Jelly tags within the script.
-        </p>
-        <p>
-          The JSL tag library relies on the XML tags in JSTL to do most of its work, so JSL just provides
-          the declarative XML processing via &lt;jsl:stylesheet&gt;, &lt;jsl:template&gt; and  &lt;jsl:applyTemplates&gt;
-      </p>
-        <p>
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/jsl/xdocs/navigation.xml b/jelly-tags/jsl/xdocs/navigation.xml
deleted file mode 100644
index 725e7b2..0000000
--- a/jelly-tags/jsl/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="JSL Tag Library">
-
-  <title>JSL Tag Library</title>
-  
-  <body>
-    <menu name="JSL Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/junit/.cvsignore b/jelly-tags/junit/.cvsignore
deleted file mode 100644
index 38b48b3..0000000
--- a/jelly-tags/junit/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-target
-maven.log
-lib
-velocity.log
diff --git a/jelly-tags/junit/build.xml b/jelly-tags/junit/build.xml
deleted file mode 100644
index 0bfe830..0000000
--- a/jelly-tags/junit/build.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2300-->
-<project default="jar" name="commons-jelly-tags-junit" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-junit-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-junit 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.junit.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/junit/maven.xml b/jelly-tags/junit/maven.xml
deleted file mode 100644
index 4eaf861..0000000
--- a/jelly-tags/junit/maven.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-    <!-- demo -->
-  <goal name="demo" prereqs="create-classpath"
-        description="Runs a sample JUnit test suite via Jelly">
-
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/tags/junit/runSuite.jelly"/>
-      <sysproperty key="http.proxyHost" value="${maven.proxy.host}"/>
-      <sysproperty key="http.proxyPort" value="${maven.proxy.port}"/>
-    </java>
-  </goal>
-
-</project>
diff --git a/jelly-tags/junit/project.properties b/jelly-tags/junit/project.properties
deleted file mode 100644
index 2cc6a8a..0000000
--- a/jelly-tags/junit/project.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-
diff --git a/jelly-tags/junit/project.xml b/jelly-tags/junit/project.xml
deleted file mode 100644
index 7389fb8..0000000
--- a/jelly-tags/junit/project.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-junit</id>
-  <name>commons-jelly-tags-junit</name>
-  <currentVersion>1.0</currentVersion>
-
-  <package>org.apache.commons.jelly.tags.junit</package>
-
-  <description>
-       The Jelly JUnit Tag Library
-  </description>
-  <shortDescription>Commons Jelly JUnit Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_JUNIT-1_0</tag>
-    </version>
-  </versions>
-    
-  <dependencies>
-  
-    <!-- START for compilation -->
-    <dependency>
-      <id>junit</id>
-      <version>3.8.1</version>
-      <url>http://www.junit.org/</url>
-    </dependency>
-      
-    <!-- END for compilation -->
-    
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-        
-    <!-- END for running demos -->
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertEqualsTag.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertEqualsTag.java
deleted file mode 100644
index a4ec4fa..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertEqualsTag.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-/**
- * Compares an actual object against an expected object and if they are different
- * then the test will fail.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class AssertEqualsTag extends AssertTagSupport {
-
-    private Expression actual;
-    private Expression expected;
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        String message = getBodyText();
-
-        Object expectedValue = expected.evaluate(context);
-        Object actualValue = actual.evaluate(context);
-
-        if (expectedValue == null && actualValue == null) {
-            return;
-        }
-        if (actualValue != null && expectedValue.equals(actualValue)) {
-            return;
-        }
-
-        String expressions = "\nExpected expression: "
-            + expected.getExpressionText()
-            + "\nActual expression: "
-            + actual.getExpressionText();
-
-        failNotEquals(message, expectedValue, actualValue, expressions);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the actual value which will be compared against the
-     * expected value.
-     */
-    public void setActual(Expression actual) {
-        this.actual = actual;
-    }
-
-    /**
-     * Sets the expected value to be tested against
-     */
-    public void setExpected(Expression expected) {
-        this.expected = expected;
-    }
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertTag.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertTag.java
deleted file mode 100644
index 4adefc7..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertTag.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-
-/**
- * Performs an assertion that a given boolean expression, or XPath expression is
- * true. If the expression returns false then this test fails.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class AssertTag extends AssertTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(AssertTag.class);
-
-    /** The expression to evaluate. */
-    private Expression test;
-
-    /** The XPath expression to evaluate */
-    private XPath xpath;
-
-    public AssertTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (test == null && xpath == null) {
-            throw new MissingAttributeException( "test" );
-        }
-        if (test != null) {
-            if (! test.evaluateAsBoolean(context)) {
-                fail( getBodyText(), "evaluating test: "+ test.getExpressionText() );
-            }
-        }
-        else {
-            Object xpathContext = getXPathContext();
-            try {
-                if (! xpath.booleanValueOf(xpathContext)) {
-                    fail( getBodyText(), "evaluating xpath: "+ xpath );
-                }
-            }
-            catch (JaxenException e) {
-                throw new JellyTagException(e);
-            }
-        }
-
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the boolean expression to evaluate. If this expression returns true
-     * then the test succeeds otherwise if it returns false then the text will
-     * fail with the content of the tag being the error message.
-     */
-    public void setTest(Expression test) {
-        this.test = test;
-    }
-
-    /**
-     * Sets the boolean XPath expression to evaluate. If this expression returns true
-     * then the test succeeds otherwise if it returns false then the text will
-     * fail with the content of the tag being the error message.
-     */
-    public void setXpath(XPath xpath) {
-        this.xpath = xpath;
-    }
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertTagSupport.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertTagSupport.java
deleted file mode 100644
index 6190752..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertTagSupport.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-
-/**
- * The abstract base class of any assertion tag which is
- * useful for implementation inheritence.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public abstract class AssertTagSupport extends XPathTagSupport {
-
-    public AssertTagSupport() {
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Produces a failure assertion with the given message
-     */
-    protected void fail(String message) throws JellyAssertionFailedError {
-        throw new JellyAssertionFailedError(message);
-    }
-
-    /**
-     * Produces a failure assertion with the given message and added detail.
-     */
-    protected void fail(String message, String detail) throws JellyAssertionFailedError {
-        if (message == null || message.length() == 0) {
-            fail(detail);
-        }
-        else {
-            fail(message + ". Assertion failed while " + detail);
-        }
-    }
-
-    /**
-     * Produces a failure if the actual value was not equal to the expected value
-     */
-    protected void failNotEquals(String message, Object expected, Object actual, String expressions) throws JellyAssertionFailedError {
-        String formatted= "";
-        if (message != null) {
-            formatted = message +" ";
-        }
-        fail(formatted + "expected:[" + expected + "] but was:[" + actual + "]" + expressions);
-    }
-
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertThrowsTag.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertThrowsTag.java
deleted file mode 100644
index ba25a3d..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertThrowsTag.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Runs its body and asserts that an exception is thrown by it.  If no
- * exception is thrown the tag fails.  By default all exceptions are caught.
- * If however <code>expected</code> was specified the body must throw
- * an exception of the given class, otherwise the assertion fails.  The
- * exception thrown by the body can also be of any subtype of the specified
- * exception class.  The optional <code>var</code> attribute can be specified if
- * the caught exception is to be exported to a variable.
- */
-public class AssertThrowsTag extends AssertTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(AssertThrowsTag.class);
-
-    /**
-     * The variable name to export the caught exception to.
-     */
-    private String var;
-
-    /**
-     * The class name (fully qualified) of the exception expected to be thrown
-     * by the body.  Also a superclass of the expected exception can be given.
-     */
-    private String expected;
-
-    /**
-     * Sets the ClassLoader to be used when loading an exception class
-     */
-    private ClassLoader classLoader;
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Class throwableClass = null;
-        try {
-             throwableClass = getThrowableClass();
-        } catch (ClassNotFoundException e) {
-            throw new JellyTagException(e);
-        }
-
-        try {
-            invokeBody(output);
-        }
-        catch (Throwable t) {
-            if (t instanceof JellyException) {
-                // unwrap Jelly exceptions which wrap other exceptions
-                JellyException je = (JellyException) t;
-                if (je.getCause() != null) {
-                    t = je.getCause();
-                }
-            }
-            if (var != null) {
-                context.setVariable(var, t);
-            }
-            if (throwableClass != null && !throwableClass.isAssignableFrom(t.getClass())) {
-                fail("Unexpected exception: " + t);
-            }
-            else {
-                return;
-            }
-        }
-        fail("No exception was thrown.");
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * Sets the class name of exception expected to be thrown by the body.  The
-     * class name must be fully qualified and can either be the expected
-     * exception class itself or any supertype of it, but must be a subtype of
-     * <code>java.lang.Throwable</code>.
-     */
-    public void setExpected(String expected) {
-        this.expected = expected;
-    }
-
-    /**
-     * Sets the variable name to define for this expression.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Sets the class loader to be used to load the exception type
-     */
-    public void setClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
-    public ClassLoader getClassLoader() {
-        return ClassLoaderUtils.getClassLoader(classLoader, getContext().getUseContextClassLoader(), getClass());
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the <code>Class</code> corresponding to the class
-     * specified by <code>expected</code>. If
-     * <code>expected</code> was either not specified then <code>java. lang.
-     * Throwable</code> is returned.
-     * Otherwise if the class couldn't be
-     * found or doesn't denote an exception class then an exception is thrown.
-     *
-     * @return Class The class of the exception to expect
-     */
-    protected Class getThrowableClass() throws ClassNotFoundException {
-        if (expected == null) {
-            return Throwable.class;
-        }
-
-        Class throwableClass = null;
-        try {
-            throwableClass = getClassLoader().loadClass(expected);
-        }
-        catch (ClassNotFoundException e) {
-            try {
-                throwableClass = Thread.currentThread().getContextClassLoader().loadClass(expected);
-            }
-            catch (ClassNotFoundException e2) {
-                log.warn( "Could not find exception class: " + expected );
-                throw e;
-            }
-        }
-
-        if (!Throwable.class.isAssignableFrom(throwableClass)) {
-            log.warn( "The class: " + expected + " is not an Exception class.");
-            return null;
-        }
-        return throwableClass;
-    }
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/CaseTag.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/CaseTag.java
deleted file mode 100644
index 48f85ac..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/CaseTag.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Represents a single test case in a test suite; this tag is analagous to
- * JUnit's TestCase class.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class CaseTag extends TagSupport {
-
-    private String name;
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        String name = getName();
-        if ( name == null ) {
-            name = toString();
-        }
-
-        // #### we need to redirect the output to a TestListener
-        // or something?
-        TestCase testCase = new TestCase(name) {
-            protected void runTest() throws Throwable {
-                // create a new child context so that each test case
-                // will have its own variable scopes
-                JellyContext newContext = new JellyContext( context );
-
-                // disable inheritence of variables and tag libraries
-                newContext.setExportLibraries(false);
-                newContext.setExport(false);
-
-                // invoke the test case
-                getBody().run(newContext, output);
-            }
-        };
-
-        // lets find the test suite
-        TestSuite suite = getSuite();
-        if ( suite == null ) {
-            throw new JellyTagException( "Could not find a TestSuite to add this test to. This tag should be inside a <test:suite> tag" );
-        }
-        suite.addTest(testCase);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the name of this test case
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the name of this test case
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Strategy method to find the corrent TestSuite to add a new Test case to
-     */
-    protected TestSuite getSuite() {
-        SuiteTag tag = (SuiteTag) findAncestorWithClass( SuiteTag.class );
-        if ( tag != null ) {
-            return tag.getSuite();
-        }
-        return (TestSuite) context.getVariable( "org.apache.commons.jelly.junit.suite" );
-    }
-
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/FailTag.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/FailTag.java
deleted file mode 100644
index 9955d2a..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/FailTag.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * This tag causes a failure message. The message can either
- * be specified in the tags body or via the message attribute.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class FailTag extends AssertTagSupport {
-
-    private String message;
-
-    public FailTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        String message = getMessage();
-        if ( message == null ) {
-            message = getBodyText();
-        }
-        fail( message );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the failure message
-     */
-    public String getMessage() {
-        return message;
-    }
-
-
-    /**
-     * Sets the failure message. If this attribute is not specified then the
-     * body of this tag will be used instead.
-     */
-    public void setMessage(String message) {
-        this.message = message;
-    }
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java
deleted file mode 100644
index 247925b..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.TagLibrary;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-import org.apache.commons.jelly.impl.TagScript;
-import org.apache.commons.jelly.expression.xpath.XPathExpression;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.jaxen.JaxenException;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class JUnitTagLibrary extends TagLibrary {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(JUnitTagLibrary.class);
-
-    public JUnitTagLibrary() {
-        registerTag("assert", AssertTag.class);
-        registerTag("assertEquals", AssertEqualsTag.class);
-        registerTag("assertThrows", AssertThrowsTag.class);
-        registerTag("fail", FailTag.class);
-        registerTag("run", RunTag.class );
-        registerTag("case", CaseTag.class );
-        registerTag("suite", SuiteTag.class );
-    }
-
-    public Expression createExpression(
-        ExpressionFactory factory,
-        TagScript tagScript,
-        String attributeName,
-        String attributeValue) throws JellyException {
-
-        // #### may need to include some namespace URI information in the XPath instance?
-
-        if (attributeName.equals("xpath")) {
-            if ( log.isDebugEnabled() ) {
-                log.debug( "Parsing XPath expression: " + attributeValue );
-            }
-
-            // XPath xpath = new Dom4jXPath(attributeValue);
-            Expression xpathExpr = super.createExpression( factory,
-                                                               tagScript,
-                                                               attributeName,
-                                                               attributeValue );
-
-            return new XPathExpression(attributeValue, xpathExpr, tagScript);
-        }
-
-        // will use the default expression instead
-        return super.createExpression(factory, tagScript, attributeName, attributeValue);
-    }
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JellyAssertionFailedError.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JellyAssertionFailedError.java
deleted file mode 100644
index ba79aae..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JellyAssertionFailedError.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.junit;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-import junit.framework.AssertionFailedError;
-
-import org.apache.commons.jelly.LocationAware;
-
-/**
- * <p><code>JellyAssertionFailedError</code> is
- * a JUnit AssertionFailedError which is LocationAware so that it can include
- * details of where in the JellyUnit test case that the failure occurred.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-
-public class JellyAssertionFailedError extends AssertionFailedError implements LocationAware {
-
-    /** the underlying cause of the exception */
-    private Throwable cause;
-
-    /** the Jelly file which caused the problem */
-    private String fileName;
-
-    /** the tag name which caused the problem */
-    private String elementName;
-
-    /** the line number in the script of the error */
-    private int lineNumber = -1;
-
-    /** the column number in the script of the error */
-    private int columnNumber = -1;
-
-    public JellyAssertionFailedError() {
-    }
-
-    public JellyAssertionFailedError(String message) {
-        super(message);
-    }
-
-    public JellyAssertionFailedError(String message, Throwable cause) {
-        super(message);
-        this.cause = cause;
-    }
-
-    public JellyAssertionFailedError(Throwable cause) {
-        super(cause.getLocalizedMessage());
-        this.cause = cause;
-    }
-
-    public Throwable getCause() {
-        return cause;
-    }
-
-
-    /**
-     * @return the line number of the tag
-     */
-    public int getLineNumber() {
-        return lineNumber;
-    }
-
-    /**
-     * Sets the line number of the tag
-     */
-    public void setLineNumber(int lineNumber) {
-        this.lineNumber = lineNumber;
-    }
-
-    /**
-     * @return the column number of the tag
-     */
-    public int getColumnNumber() {
-        return columnNumber;
-    }
-
-    /**
-     * Sets the column number of the tag
-     */
-    public void setColumnNumber(int columnNumber) {
-        this.columnNumber = columnNumber;
-    }
-
-    /**
-     * @return the Jelly file which caused the problem
-     */
-    public String getFileName() {
-        return fileName;
-    }
-
-    /**
-     * Sets the Jelly file which caused the problem
-     */
-    public void setFileName(String fileName) {
-        this.fileName = fileName;
-    }
-
-
-    /**
-     * @return the element name which caused the problem
-     */
-    public String getElementName() {
-        return elementName;
-    }
-
-    /**
-     * Sets the element name which caused the problem
-     */
-    public void setElementName(String elementName) {
-        this.elementName = elementName;
-    }
-
-
-    public String getMessage() {
-        return fileName + ":" + lineNumber + ":" + columnNumber + ": <" + elementName + "> " + super.getMessage();
-    }
-
-    public String getReason() {
-        return super.getMessage();
-    }
-
-    // #### overload the printStackTrace methods...
-    public void printStackTrace(PrintWriter s) {
-        synchronized (s) {
-            super.printStackTrace(s);
-            if  (cause != null) {
-                s.println("Root cause");
-                cause.printStackTrace(s);
-            }
-        }
-    }
-
-    public void printStackTrace(PrintStream s) {
-        synchronized (s) {
-            super.printStackTrace(s);
-            if  (cause != null) {
-                s.println("Root cause");
-                cause.printStackTrace(s);
-            }
-        }
-    }
-
-    public void printStackTrace() {
-        super.printStackTrace();
-        if (cause != null) {
-            System.out.println("Root cause");
-            cause.printStackTrace();
-        }
-    }
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JellyTestSuite.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JellyTestSuite.java
deleted file mode 100644
index c38ca63..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/JellyTestSuite.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import java.net.URL;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * An abstract base class for creating a TestSuite via a Jelly script.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public abstract class JellyTestSuite {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(JellyTestSuite.class);
-
-
-    /**
-     * Helper method to create a test suite from a file name on the class path
-     * in the package of the given class.
-     * For example a test could call
-     * <code>
-     * createTestSuite( Foo.class, "suite.jelly" );
-     * </code>
-     * which would loaad the 'suite.jelly script from the same package as the Foo
-     * class on the classpath.
-     *
-     * @param testClass is the test class used to load the script via the classpath
-     * @param script is the name of the script, which is typically just a name, no directory.
-     * @return a newly created TestSuite
-     */
-    public static TestSuite createTestSuite(Class testClass, String script) throws Exception {
-        URL url = testClass.getResource(script);
-        if ( url == null ) {
-            throw new Exception(
-                "Could not find Jelly script: " + script
-                + " in package of class: " + testClass.getName()
-            );
-        }
-        return createTestSuite( url );
-    }
-
-    /**
-     * Helper method to create a test suite from the given Jelly script
-     *
-     * @param script is the URL to the script which should create a TestSuite
-     * @return a newly created TestSuite
-     */
-    public static TestSuite createTestSuite(URL script) throws Exception {
-        JellyContext context = new JellyContext(script);
-        XMLOutput output = XMLOutput.createXMLOutput(System.out);
-        context = context.runScript(script, output);
-        TestSuite answer = (TestSuite) context.getVariable("org.apache.commons.jelly.junit.suite");
-        if ( answer == null ) {
-            log.warn( "Could not find a TestSuite created by Jelly for the script:" + script );
-            // return an empty test suite
-            return new TestSuite();
-        }
-        return answer;
-    }
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/RunTag.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/RunTag.java
deleted file mode 100644
index 674add5..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/RunTag.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestListener;
-import junit.framework.TestResult;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * This tag will run the given Test which could be an individual TestCase or a TestSuite.
- * The TestResult can be specified to capture the output, otherwise the results are output
- * as XML so that they can be formatted in some custom manner.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class RunTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(RunTag.class);
-
-    private Test test;
-    private TestResult result;
-    private TestListener listener;
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        Test test = getTest();
-        if ( test == null ) {
-            test = (Test) context.getVariable("org.apache.commons.jelly.junit.suite");
-        }
-        if ( test == null ) {
-            throw new MissingAttributeException( "test" );
-        }
-        TestResult result = getResult();
-        if ( result == null ) {
-            result = createResult(output);
-        }
-        TestListener listener = getListener();
-        if ( listener == null ) {
-            listener = createTestListener(output);
-        }
-        result.addListener(listener);
-        test.run(result);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the TestResult used to capture the output of the test.
-     * @return TestResult
-     */
-    public TestResult getResult() {
-        return result;
-    }
-
-    /**
-     * Returns the Test to be ran.
-     * @return Test
-     */
-    public Test getTest() {
-        return test;
-    }
-
-    /**
-     * Sets the JUnit TestResult used to capture the results of the tst
-     * @param result The TestResult to use
-     */
-    public void setResult(TestResult result) {
-        this.result = result;
-    }
-
-    /**
-     * Sets the JUnit Test to run which could be an individual test or a TestSuite
-     * @param test The test to run
-     */
-    public void setTest(Test test) {
-        this.test = test;
-    }
-
-    /**
-     * Returns the listener.
-     * @return TestListener
-     */
-    public TestListener getListener() {
-        return listener;
-    }
-
-    /**
-     * Sets the TestListener.to be used to format the output of running the unit test cases
-     * @param listener The listener to set
-     */
-    public void setListener(TestListener listener) {
-        this.listener = listener;
-    }
-
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new TestResult to capture the output of
-     * the test cases
-     */
-    protected TestResult createResult(XMLOutput output) {
-        return new TestResult();
-    }
-
-    /**
-     * Factory method to create a new TestListener to capture the output of
-     * the test cases
-     */
-    protected TestListener createTestListener(final XMLOutput output) {
-        return new TestListener() {
-            public void addError(Test test, Throwable t) {
-                try {
-                    output.startElement("error");
-
-                    output.startElement("message");
-                    output.write(t.getMessage());
-                    output.endElement("message");
-
-                    output.startElement("stack");
-                    output.write( stackTraceToString(t) );
-                    output.endElement("stack");
-
-                    output.endElement("error");
-                }
-                catch (SAXException e) {
-                    handleSAXException(e);
-                }
-            }
-
-            public void addFailure(Test test, AssertionFailedError t) {
-                try {
-                    output.startElement("failure");
-
-                    output.startElement("message");
-                    output.write(t.getMessage());
-                    output.endElement("message");
-
-                    output.startElement("stack");
-                    output.write( stackTraceToString(t) );
-                    output.endElement("stack");
-
-                    output.endElement("failure");
-                }
-                catch (SAXException e) {
-                    handleSAXException(e);
-                }
-            }
-
-            public void endTest(Test test) {
-                try {
-                    output.endElement("test");
-                }
-                catch (SAXException e) {
-                    handleSAXException(e);
-                }
-            }
-
-            public void startTest(Test test) {
-                try {
-                    String name = test.toString();
-                    AttributesImpl attributes = new AttributesImpl();
-                    attributes.addAttribute("", "name", "name", "CDATA", name);
-
-                    output.startElement("test", attributes);
-                }
-                catch (SAXException e) {
-                    handleSAXException(e);
-                }
-            }
-        };
-    }
-
-    /**
-     * @return the stack trace as a String
-     */
-    protected String stackTraceToString(Throwable t) {
-        StringWriter writer = new StringWriter();
-        t.printStackTrace(new PrintWriter(writer));
-        return writer.toString();
-    }
-
-    /**
-     * Handles SAX Exceptions
-     */
-    protected void handleSAXException(SAXException e) {
-        log.error( "Caught: " + e, e );
-    }
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/SuiteTag.java b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/SuiteTag.java
deleted file mode 100644
index 8707c94..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/SuiteTag.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Represents a collection of TestCases.. This tag is analagous to
- * JUnit's TestSuite class.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class SuiteTag extends TagSupport {
-
-    /** the test suite this tag created */
-    private TestSuite suite;
-
-    /** the name of the variable of the test suite */
-    private String var;
-
-    /** the name of the test suite to create */
-    private String name;
-
-    public SuiteTag() {
-    }
-
-    /**
-     * Adds a new Test to this suite
-     */
-    public void addTest(Test test) {
-        getSuite().addTest(test);
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        suite = createSuite();
-
-        TestSuite parent = (TestSuite) context.getVariable("org.apache.commons.jelly.junit.suite");
-        if ( parent == null ) {
-            context.setVariable("org.apache.commons.jelly.junit.suite", suite );
-        }
-        else {
-            parent.addTest( suite );
-        }
-
-        invokeBody(output);
-
-        if ( var != null ) {
-            context.setVariable(var, suite);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public TestSuite getSuite() {
-        return suite;
-    }
-
-    /**
-     * Sets the name of the test suite whichi is exported
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * @return the name of this test suite
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the name of this test suite
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new TestSuite
-     */
-    protected TestSuite createSuite() {
-        if ( name == null ) {
-            return new TestSuite();
-        }
-        else {
-            return new TestSuite(name);
-        }
-    }
-}
diff --git a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/package.html b/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/package.html
deleted file mode 100644
index 2f19768..0000000
--- a/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A collection of <a href="http://www.junit.org">JUnit</a> tags for 
-  	performing unit tests written in Jelly script.
-  </p>
-  
-  <p>
-    The &lt;suite&gt; tag allows a test suite to be created and then test cases can either 
-    be individually ran or the whole suite ran.
-  </p>
-  <p>
-    The &lt;case&gt; tag allows a single test case to be created as part of a suite.
-  </p>
-  <p>
-    The &lt;run&gt; tag can be used to run a given Test, TestCase or TestSuite
-  </p>
-  
-  <p>There is an example of these tags in action 
-	<a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly?rev=HEAD&content-type=text/vnd.viewcvs-markup">here</a>
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/TestJUnit.java b/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/TestJUnit.java
deleted file mode 100644
index 0f37b28..0000000
--- a/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/TestJUnit.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public class TestJUnit extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJUnit.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/runSuite.jelly b/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/runSuite.jelly
deleted file mode 100644
index fc61ed5..0000000
--- a/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/runSuite.jelly
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<j:jelly xmlns:j="jelly:core" xmlns:test="jelly:junit">

-

-<!-- lets define a test suite -->

-<test:suite var="suite"> 

-  <j:include uri="suite.jelly"/>

-</test:suite>

-

-Lets run the test suite.

-

-<test:run test="${suite}"/>

-

-Tests finished.

-

-</j:jelly>

diff --git a/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly b/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly
deleted file mode 100644
index b663419..0000000
--- a/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-<test:suite xmlns:j="jelly:core" 

-  xmlns:test="jelly:junit">

-

-  <test:case name="assertTests">

-  

-    <test:assert test="${2 == 2}">This should never fail</test:assert>

-    

-    <j:catch var="ex">

-            <test:assert test="${2 != 2}">This should always fail</test:assert>

-        </j:catch>        

-    

-        <test:assert test="${ex != null}">We should have created an exception</test:assert>

-    

-        The exception was: ${ex.message}    

-    

-  </test:case>

-

-

-  <test:case name="failTests">

-  

-        <j:catch var="ex">

-            <test:fail>This should always fail</test:fail>

-        </j:catch>        

-        

-        <test:assert test="${ex != null}">We should have created an exception</test:assert>

-        

-        The exception was: ${ex.message}    

-    

-    <j:catch var="ex">

-          <test:fail message="This should always fail"/>

-        </j:catch>        

-    

-        <test:assert test="${ex != null}">We should have created an exception</test:assert>

-        

-        The exception was: ${ex.message}    

-  </test:case>

-

-    

-  <test:case name="assertEqualTests">

-  

-    <j:set var="foo" value="abc"/>

-    

-    <test:assertEquals actual="${foo}" expected="abc">This should never fail</test:assertEquals>

-    

-    <j:catch var="ex">

-      <test:assertEquals actual="${foo}" expected="def">This should always fail</test:assertEquals>

-        </j:catch>        

-        

-        <test:assert test="${ex != null}">We should have created an exception</test:assert>

-        

-        The exception was: ${ex.message}    

-  </test:case>

-

-

-  <test:case name="assertThrowsTests">

-

-    <!-- test using var attribute -->

-    <test:assertThrows var="ex">

-      <test:fail message="This exeption should be exported"/>

-    </test:assertThrows>

-    <test:assert test="${ex != null}">No exception exported</test:assert>

-

-    <!-- test using superclass of expected throwable -->

-    <test:assertThrows expected="java.lang.Error">

-      <test:fail message="This should always fail"/>

-    </test:assertThrows>

-

-    <!-- test using non exception class -->

-    <test:assertThrows expected="java.lang.Class">

-      <test:fail message="This should always fail"/>

-    </test:assertThrows>

-

-    <!-- test using undefined class -->

-    <test:assertThrows expected="java.lang.ClassNotFoundException">

-            <test:assertThrows expected="foo.bar.Baz">

-                <test:fail message="This should always fail"/>

-            </test:assertThrows>

-        </test:assertThrows>

-

-    <!-- test using other exception class -->

-    <j:catch var="ex">

-      <test:assertThrows expected="java.io.IOException">

-        <test:fail message="This should always fail"/>

-      </test:assertThrows>

-    </j:catch>

-    

-        <test:assert test="${ex != null}">We should have created an exception</test:assert>

-

-    <!-- test with no exception from body -->

-    <j:catch var="ex">

-      <test:assertThrows>

-      </test:assertThrows>

-    </j:catch>

-    

-        <test:assert test="${ex != null}">assertThrows should fail when nothing is thrown from within it</test:assert>

-        

-    <test:assert test="${ex.message.endsWith('No exception was thrown.')}"/>

-

-    <test:assertEquals actual="${ex.elementName}" expected="test:assertThrows"/>

-    <test:assert test="${ex.fileName != null}">fileName not set</test:assert>

-    <test:assert test="${ex.lineNumber gt 0}">lineNumber not set</test:assert>

-    <test:assert test="${ex.columnNumber gt 0}">columnNumber not set</test:assert>

-  </test:case>

-

-<!--

-    

-    #### uncomment when assertEquals supports type conversions

-    

-  <test:case name="assertEqualsConversion">

-  

-        <test:assertEquals expected="${4}" actual="${2+2}"/>

-

-  </test:case>

--->

-

-</test:suite>

diff --git a/jelly-tags/junit/xdocs/changes.xml b/jelly-tags/junit/xdocs/changes.xml
deleted file mode 100644
index 9f3e8e1..0000000
--- a/jelly-tags/junit/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-10">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/junit/xdocs/index.xml b/jelly-tags/junit/xdocs/index.xml
deleted file mode 100644
index e6b736f..0000000
--- a/jelly-tags/junit/xdocs/index.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Jetty Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-    
-      <p>A collection of <a href="http://www.junit.org">JUnit</a> tags for 
-        performing unit tests written in Jelly script.
-      </p>
-  
-      <p>
-        The &lt;suite&gt; tag allows a test suite to be created and then test cases can either 
-        be individually ran or the whole suite ran.
-      </p>
-      <p>
-        The &lt;case&gt; tag allows a single test case to be created as part of a suite.
-      </p>
-      <p>
-        The &lt;run&gt; tag can be used to run a given Test, TestCase or TestSuite
-      </p>
-  
-      <p>
-        There is an example of these tags in action 
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup">here</a>
-      </p>
-      <p>
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/junit/xdocs/navigation.xml b/jelly-tags/junit/xdocs/navigation.xml
deleted file mode 100644
index c074c5b..0000000
--- a/jelly-tags/junit/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="JUnit Tag Library">
-
-  <title>JUnit Tag Library</title>
-  
-  <body>
-    <menu name="JUnit Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/log/.cvsignore b/jelly-tags/log/.cvsignore
deleted file mode 100644
index bca2cda..0000000
--- a/jelly-tags/log/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-target
-maven.log
-velocity.log
diff --git a/jelly-tags/log/build.xml b/jelly-tags/log/build.xml
deleted file mode 100644
index c073bd1..0000000
--- a/jelly-tags/log/build.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-log" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-log-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-log 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.log.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/log/maven.xml b/jelly-tags/log/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/log/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/log/project.properties b/jelly-tags/log/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/log/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/log/project.xml b/jelly-tags/log/project.xml
deleted file mode 100644
index 8451048..0000000
--- a/jelly-tags/log/project.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-log</id>
-  <name>commons-jelly-tags-log</name>
-  <currentVersion>1.0</currentVersion>
-
-  <package>org.apache.commons.jelly.tags.log</package>
-
-  <description>
-       The Jelly Log Tag Library
-  </description>
-  <shortDescription>Commons Jelly Log Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_LOG-1_0</tag>
-    </version>
-  </versions>
-  
-  <dependencies>
-  
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/DebugTag.java b/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/DebugTag.java
deleted file mode 100644
index 70c7079..0000000
--- a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/DebugTag.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.log;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-
-/**
- * A tag which generates DEBUG level logging statement using
- * the given category name.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class DebugTag extends LogTagSupport {
-
-    public DebugTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Log log = getLog();
-        if ( log.isDebugEnabled() ) {
-            log.debug( getBodyText(isEncode()) );
-        }
-    }
-}
diff --git a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/ErrorTag.java b/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/ErrorTag.java
deleted file mode 100644
index fe60a3a..0000000
--- a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/ErrorTag.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.log;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-
-/**
- * A tag which generates ERROR level logging statement using
- * the given category name.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class ErrorTag extends LogTagSupport {
-
-    public ErrorTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Log log = getLog();
-        if ( log.isErrorEnabled() ) {
-            log.error( getBodyText(isEncode()) );
-        }
-    }
-}
diff --git a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/FatalTag.java b/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/FatalTag.java
deleted file mode 100644
index 5ba20b2..0000000
--- a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/FatalTag.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.log;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-
-/**
- * A tag which generates FATAL level logging statement using
- * the given category name.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class FatalTag extends LogTagSupport {
-
-    public FatalTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Log log = getLog();
-        if ( log.isFatalEnabled() ) {
-            log.fatal( getBodyText(isEncode()) );
-        }
-    }
-}
diff --git a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/InfoTag.java b/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/InfoTag.java
deleted file mode 100644
index f4f7d37..0000000
--- a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/InfoTag.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.log;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-
-/**
- * A tag which generates INFO level logging statement using
- * the given category name.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class InfoTag extends LogTagSupport {
-
-    public InfoTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Log log = getLog();
-        if ( log.isInfoEnabled() ) {
-            log.info( getBodyText(isEncode()) );
-        }
-    }
-}
diff --git a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/LogTagLibrary.java b/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/LogTagLibrary.java
deleted file mode 100644
index 42157aa..0000000
--- a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/LogTagLibrary.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.log;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class LogTagLibrary extends TagLibrary {
-
-    public LogTagLibrary() {
-        registerTag("trace", TraceTag.class);
-        registerTag("debug", DebugTag.class);
-        registerTag("info", InfoTag.class);
-        registerTag("warn", WarnTag.class);
-        registerTag("error", ErrorTag.class);
-        registerTag("fatal", FatalTag.class);
-    }
-
-}
diff --git a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/LogTagSupport.java b/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/LogTagSupport.java
deleted file mode 100644
index afc8d72..0000000
--- a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/LogTagSupport.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.log;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * An abstract base class for any logging tag..
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public abstract class LogTagSupport extends TagSupport {
-
-    private Log log;
-    private boolean encode;
-
-    public LogTagSupport() {
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the Log being used by this tag. If none is returned then a new one will be created.
-     */
-    public Log getLog() {
-        if ( log == null ) {
-            // use a default Log
-            // ### we could inherit from a parent tag?
-            log = LogFactory.getLog( getClass() );
-        }
-        return log;
-    }
-
-    /**
-     * Sets the name of the logger to use
-     */
-    public void setName(String name) {
-        setLog( LogFactory.getLog(name) );
-    }
-
-    /** Sets the Log instance to use for logging. */
-    public void setLog(Log log) {
-        this.log = log;
-    }
-
-    /**
-     * Returns whether the body of this tag will be XML encoded or not.
-     */
-    public boolean isEncode() {
-        return encode;
-    }
-
-    /**
-     * Sets whether the body of the tag should be encoded as text (so that &lt; and &gt; are
-     * encoded as &amp;lt; and &amp;gt;) or leave the text as XML which is the default.
-     */
-    public void setEncode(boolean encode) {
-        this.encode = encode;
-    }
-
-}
diff --git a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/TraceTag.java b/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/TraceTag.java
deleted file mode 100644
index a2c2096..0000000
--- a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/TraceTag.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.log;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-
-/**
- * A tag which generates TRACE level logging statement using
- * the given category name.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class TraceTag extends LogTagSupport {
-
-    public TraceTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Log log = getLog();
-        if ( log.isTraceEnabled() ) {
-            log.trace( getBodyText(isEncode()) );
-        }
-    }
-}
diff --git a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/WarnTag.java b/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/WarnTag.java
deleted file mode 100644
index ebbc159..0000000
--- a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/WarnTag.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.log;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-
-/**
- * A tag which generates WARN level logging statement using
- * the given category name.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class WarnTag extends LogTagSupport {
-
-    public WarnTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Log log = getLog();
-        if ( log.isWarnEnabled() ) {
-            log.warn( getBodyText(isEncode()) );
-        }
-    }
-}
diff --git a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/package.html b/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/package.html
deleted file mode 100644
index 43d49d7..0000000
--- a/jelly-tags/log/src/java/org/apache/commons/jelly/tags/log/package.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>Custom tags for generating textual logging information using
-  	<a href="http://jakarta.apache.org/commons/logging.html">commons-logging</a> 
-  	which will use either log4j, logkit or JDK1.4 logging
-  	depending on the classpath and configuration.
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/log/src/test/org/apache/commons/jelly/tags/log/MockLog.java b/jelly-tags/log/src/test/org/apache/commons/jelly/tags/log/MockLog.java
deleted file mode 100644
index 79eeda08..0000000
--- a/jelly-tags/log/src/test/org/apache/commons/jelly/tags/log/MockLog.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.log;
-
-import org.apache.commons.logging.Log;
-
-/**
- * A Mock Object useful for unit testing of commons-logging. (Maybe this should
- * be contributed back to commons-logging?)
- *
- * @author James Strachan
- * @version 1.1 2003/01/22 10:22:30
- */
-public class MockLog implements Log {
-
-    private Object debug;
-    private Object trace;
-    private Object info;
-    private Object warn;
-    private Object error;
-    private Object fatal;
-    private Throwable lastThrowable;
-
-    public MockLog() {
-    }
-
-    /**
-     * Resets all the last logging messages received
-     */
-    public void clear() {
-        this.debug = null;
-        this.trace = null;
-        this.info = null;
-        this.warn = null;
-        this.error = null;
-        this.fatal = null;
-        this.lastThrowable = null;
-    }
-
-
-    // Log interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * @see org.apache.commons.logging.Log#debug(java.lang.Object, java.lang.Throwable)
-     */
-    public void debug(Object message, Throwable exception) {
-        this.debug = message;
-        this.lastThrowable = exception;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#debug(java.lang.Object)
-     */
-    public void debug(Object message) {
-        this.debug = message;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#error(java.lang.Object, java.lang.Throwable)
-     */
-    public void error(Object message, Throwable exception) {
-        this.error = message;
-        this.lastThrowable = exception;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#error(java.lang.Object)
-     */
-    public void error(Object message) {
-        this.error = message;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#fatal(java.lang.Object, java.lang.Throwable)
-     */
-    public void fatal(Object message, Throwable exception) {
-        this.fatal = message;
-        this.lastThrowable = exception;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#fatal(java.lang.Object)
-     */
-    public void fatal(Object message) {
-        this.fatal = message;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#info(java.lang.Object, java.lang.Throwable)
-     */
-    public void info(Object message, Throwable exception) {
-        this.info = message;
-        this.lastThrowable = exception;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#info(java.lang.Object)
-     */
-    public void info(Object message) {
-        this.info = message;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#isDebugEnabled()
-     */
-    public boolean isDebugEnabled() {
-        return true;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#isErrorEnabled()
-     */
-    public boolean isErrorEnabled() {
-        return true;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#isFatalEnabled()
-     */
-    public boolean isFatalEnabled() {
-        return true;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#isInfoEnabled()
-     */
-    public boolean isInfoEnabled() {
-        return true;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#isTraceEnabled()
-     */
-    public boolean isTraceEnabled() {
-        return true;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#isWarnEnabled()
-     */
-    public boolean isWarnEnabled() {
-        return true;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#trace(java.lang.Object, java.lang.Throwable)
-     */
-    public void trace(Object message, Throwable exception) {
-        this.trace = message;
-        this.lastThrowable = exception;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#trace(java.lang.Object)
-     */
-    public void trace(Object message) {
-        this.trace = message;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#warn(java.lang.Object, java.lang.Throwable)
-     */
-    public void warn(Object message, Throwable exception) {
-        this.warn = message;
-    }
-
-    /**
-     * @see org.apache.commons.logging.Log#warn(java.lang.Object)
-     */
-    public void warn(Object message) {
-        this.warn = message;
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the error.
-     * @return Object
-     */
-    public Object getError() {
-        return error;
-    }
-
-    /**
-     * Returns the fatal.
-     * @return Object
-     */
-    public Object getFatal() {
-        return fatal;
-    }
-
-    /**
-     * Returns the info.
-     * @return Object
-     */
-    public Object getInfo() {
-        return info;
-    }
-
-    /**
-     * Returns the lastThrowable.
-     * @return Throwable
-     */
-    public Throwable getLastThrowable() {
-        return lastThrowable;
-    }
-
-    /**
-     * Returns the warn.
-     * @return Object
-     */
-    public Object getWarn() {
-        return warn;
-    }
-
-    /**
-     * Returns the trace.
-     * @return Object
-     */
-    public Object getTrace() {
-        return trace;
-    }
-
-    /**
-     * Returns the debug.
-     * @return Object
-     */
-    public Object getDebug() {
-        return debug;
-    }
-
-}
diff --git a/jelly-tags/log/src/test/org/apache/commons/jelly/tags/log/TestJelly.java b/jelly-tags/log/src/test/org/apache/commons/jelly/tags/log/TestJelly.java
deleted file mode 100644
index 9f66600..0000000
--- a/jelly-tags/log/src/test/org/apache/commons/jelly/tags/log/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.log;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/log/src/test/org/apache/commons/jelly/tags/log/suite.jelly b/jelly-tags/log/src/test/org/apache/commons/jelly/tags/log/suite.jelly
deleted file mode 100644
index 295ea2f..0000000
--- a/jelly-tags/log/src/test/org/apache/commons/jelly/tags/log/suite.jelly
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite xmlns:test="jelly:junit" xmlns:j="jelly:core" xmlns:log="jelly:log">
-
-    <test:case name="debugTest">
-        
-        <j:useBean var="logger" class="org.apache.commons.jelly.tags.log.MockLog"/>
-        
-        <log:debug log="${logger}">abcde</log:debug>
-        
-        <test:assertEquals expected="abcde" actual="${logger.debug}" />
-        
-    </test:case>
-
-    <test:case name="traceTest">
-        
-        <j:useBean var="logger" class="org.apache.commons.jelly.tags.log.MockLog"/>
-        
-        <log:trace log="${logger}">abcde</log:trace>
-        
-        <test:assertEquals expected="abcde" actual="${logger.trace}" />
-        
-    </test:case>
-
-    <test:case name="infoTest">
-        
-        <j:useBean var="logger" class="org.apache.commons.jelly.tags.log.MockLog"/>
-        
-        <log:info log="${logger}">abcde</log:info>
-        
-        <test:assertEquals expected="abcde" actual="${logger.info}" />
-        
-    </test:case>
-
-    <test:case name="warnTest">
-        
-        <j:useBean var="logger" class="org.apache.commons.jelly.tags.log.MockLog"/>
-        
-        <log:warn log="${logger}">abcde</log:warn>
-        
-        <test:assertEquals expected="abcde" actual="${logger.warn}" />
-        
-    </test:case>
-
-    <test:case name="errorTest">
-        
-        <j:useBean var="logger" class="org.apache.commons.jelly.tags.log.MockLog"/>
-        
-        <log:error log="${logger}">abcde</log:error>
-        
-        <test:assertEquals expected="abcde" actual="${logger.error}" />
-        
-    </test:case>
-
-    <test:case name="fatalTest">
-        
-        <j:useBean var="logger" class="org.apache.commons.jelly.tags.log.MockLog"/>
-        
-        <log:fatal log="${logger}">abcde</log:fatal>
-        
-        <test:assertEquals expected="abcde" actual="${logger.fatal}" />
-        
-    </test:case>
-    
-</test:suite>
diff --git a/jelly-tags/log/xdocs/changes.xml b/jelly-tags/log/xdocs/changes.xml
deleted file mode 100644
index 9f3e8e1..0000000
--- a/jelly-tags/log/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-10">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/log/xdocs/index.xml b/jelly-tags/log/xdocs/index.xml
deleted file mode 100644
index 127a143..0000000
--- a/jelly-tags/log/xdocs/index.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Logging Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        Custom tags for generating textual logging information using
-          <a href="http://jakarta.apache.org/commons/logging/index.html">commons-logging</a> 
-          which will use either log4j, logkit or JDK1.4 logging
-          depending on the classpath and configuration.
-      </p>
-      <p>
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/log/xdocs/navigation.xml b/jelly-tags/log/xdocs/navigation.xml
deleted file mode 100644
index 8b61ae0..0000000
--- a/jelly-tags/log/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Logging Tag Library">
-
-  <title>Logging Tag Library</title>
-  
-  <body>
-    <menu name="Logging Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/maven.xml b/jelly-tags/maven.xml
deleted file mode 100644
index 8010c7e..0000000
--- a/jelly-tags/maven.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="jar">
-  <!-- deregister linkcheck -->
-  <postGoal name="xdoc:register-reports">
-    <attainGoal name="maven-linkcheck-plugin:deregister"/>  
-  </postGoal>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/ojb/.cvsignore b/jelly-tags/ojb/.cvsignore
deleted file mode 100644
index 36ceb76..0000000
--- a/jelly-tags/ojb/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-maven.log
-target
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/ojb/build.xml b/jelly-tags/ojb/build.xml
deleted file mode 100644
index 73a9c7c..0000000
--- a/jelly-tags/ojb/build.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2302-->
-<project default="jar" name="commons-jelly-tags-ojb" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-ojb-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-ojb 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.ojb.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/ojb-0.9.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ojb/jars/ojb-0.9.6.jar">
-    </get>
-    <get dest="${libdir}/commons-lang-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-lang/jars/commons-lang-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/ojb/maven.xml b/jelly-tags/ojb/maven.xml
deleted file mode 100644
index 897adb3..0000000
--- a/jelly-tags/ojb/maven.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/ojb/project.properties b/jelly-tags/ojb/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/ojb/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/ojb/project.xml b/jelly-tags/ojb/project.xml
deleted file mode 100644
index 0647e24..0000000
--- a/jelly-tags/ojb/project.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-ojb</id>
-  <name>commons-jelly-tags-ojb</name>
-  <currentVersion>1.0</currentVersion>
-
-  <package>org.apache.commons.jelly.tags.ojb</package>
-
-  <description>
-       A variety of tags for working with the  ObjectBridge persistence engine 
-  </description>
-  <shortDescription>Commons Jelly OjB Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-OJB-1_0</tag>
-    </version>
-  </versions>
-  
-  <dependencies>
-    
-    <!-- ojb taglib -->
-    <dependency>
-      <id>ojb</id>
-      <version>0.9.6</version>
-      <properties>
-        <gump.project>db-ojb-from-packages</gump.project>
-      </properties>
-    </dependency>
-    
-    <dependency>
-      <id>commons-lang</id>
-      <version>1.0</version>
-    </dependency>
-    
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/BrokerTag.java b/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/BrokerTag.java
deleted file mode 100644
index cb43052..0000000
--- a/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/BrokerTag.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.ojb;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.ojb.broker.PersistenceBroker;
-import org.apache.ojb.broker.PersistenceBrokerFactory;
-
-/**
- * <p>Tag handler for &lt;Driver&gt; in JSTL, used to create
- * a simple DataSource for prototyping.</p>
- *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
- */
-public class BrokerTag extends TagSupport {
-
-    /** The variable name to export. */
-    private String var;
-
-    /** The persistence broker instance */
-    private PersistenceBroker broker;
-
-    public BrokerTag() {
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if ( var == null ) {
-            var = "org.apache.commons.jelly.ojb.Broker";
-        }
-        if ( broker != null ) {
-            context.setVariable(var, broker);
-            invokeBody(output);
-        }
-        else {
-            broker = PersistenceBrokerFactory.defaultPersistenceBroker();
-            context.setVariable(var, broker);
-
-            try {
-                invokeBody(output);
-            }
-            finally {
-                broker.close();
-                broker = null;
-                context.removeVariable(var);
-            }
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the variable name to define for this expression
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /** @return the persistence broker instance */
-    public PersistenceBroker getBroker() {
-        return broker;
-    }
-
-    /** Sets the persistence broker instance */
-    public void setBroker(PersistenceBroker broker) {
-        this.broker = broker;
-    }
-}
diff --git a/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/OjbTagLibrary.java b/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/OjbTagLibrary.java
deleted file mode 100644
index 4c205c1..0000000
--- a/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/OjbTagLibrary.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.ojb;
-
-import org.apache.commons.jelly.tags.core.CoreTagLibrary;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-
-public class OjbTagLibrary extends CoreTagLibrary {
-
-    public OjbTagLibrary() {
-        registerTag("broker", BrokerTag.class);
-        registerTag("store", StoreTag.class);
-        //registerTag("delete", DeleteTag.class);
-        //registerTag("query", QueryTag.class);
-        //registerTag("transaction", TransactionTag.class);
-    }
-
-}
diff --git a/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/StoreTag.java b/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/StoreTag.java
deleted file mode 100644
index 8157a36..0000000
--- a/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/StoreTag.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.ojb;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.ojb.broker.PersistenceBroker;
-
-/**
- * <p>This Store tag will store the given object in ObjectBridge using
- * the given broker or it will use the parent broker tags broker instance.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class StoreTag extends TagSupport {
-
-    /** the value to persist */
-    private Object value;
-
-    /** The persistence broker instance */
-    private PersistenceBroker broker;
-
-    public StoreTag() {
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if ( value == null ) {
-            throw new JellyTagException( "No value is supplied!" );
-        }
-        getBroker().store( value );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** Sets the value to be persisted */
-    public void setValue(Object value) {
-        this.value = value;
-    }
-
-    /** @return the persistence broker instance */
-    public PersistenceBroker getBroker() {
-        if (broker == null) {
-            BrokerTag brokerTag = (BrokerTag) findAncestorWithClass( BrokerTag.class );
-            if ( brokerTag != null ) {
-                broker = brokerTag.getBroker();
-            }
-            else {
-                broker = (PersistenceBroker) context.getVariable(
-                    "org.apache.commons.jelly.ojb.Broker"
-                );
-            }
-        }
-        return broker;
-    }
-
-    /** Sets the persistence broker instance */
-    public void setBroker(PersistenceBroker broker) {
-        this.broker = broker;
-    }
-}
-
diff --git a/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/package.html b/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/package.html
deleted file mode 100644
index 7ca141b..0000000
--- a/jelly-tags/ojb/src/java/org/apache/commons/jelly/tags/ojb/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A variety of tags for working with the 
-  	<a href="http://jakarta.apache.org/ojb/">ObjectBridge</a> persistence engine
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/ojb/src/test/org/apache/commons/jelly/tags/ojb/sample.jelly b/jelly-tags/ojb/src/test/org/apache/commons/jelly/tags/ojb/sample.jelly
deleted file mode 100644
index 430d8ce..0000000
--- a/jelly-tags/ojb/src/test/org/apache/commons/jelly/tags/ojb/sample.jelly
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core" xmlns:ojb="jelly:ojb">
-
-    <!-- some sample scripts would be a good idea -->
-
-</jelly>
\ No newline at end of file
diff --git a/jelly-tags/ojb/xdocs/changes.xml b/jelly-tags/ojb/xdocs/changes.xml
deleted file mode 100644
index 7e44081..0000000
--- a/jelly-tags/ojb/xdocs/changes.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-12">
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/ojb/xdocs/index.xml b/jelly-tags/ojb/xdocs/index.xml
deleted file mode 100644
index 6f4656f..0000000
--- a/jelly-tags/ojb/xdocs/index.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>OJB Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A variety of tags for working with the 
-          <a href="http://db.apache.org/ojb/">ObjectBridge</a> persistence engine.
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/ojb/xdocs/navigation.xml b/jelly-tags/ojb/xdocs/navigation.xml
deleted file mode 100644
index b3b3cf0..0000000
--- a/jelly-tags/ojb/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="OJB Tag Library">
-
-  <title>OJB Tag Library</title>
-  
-  <body>
-    <menu name="OJB Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/project.properties b/jelly-tags/project.properties
deleted file mode 100644
index 2ece255..0000000
--- a/jelly-tags/project.properties
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
-maven.junit.fork=true
-
-maven.compile.deprecation = on
-
-maven.checkstyle.properties=${basedir}/../tag-checkstyle.xml
-maven.checkstyle.header.file=${basedir}/../../short-license.txt
-
-maven.changes.issue.template=http://issues.apache.org/jira/browse/%ISSUE%
-
-maven.license.licenseFile=${basedir}/../../LICENSE.txt
-
-maven.xdoc.date=left
-maven.xdoc.developmentProcessUrl=http://jakarta.apache.org/commons/charter.html
-maven.xdoc.poweredby.image=maven-feather.png
-
-maven.xdoc.jsl=file:${basedir}/../../../commons-build/commons-site.jsl
-maven.xdoc.distributionUrl=http://www.apache.org/dist/java-repository/commons-jelly/jars
-
-maven.linkcheck.enable=false
-maven.pmd.rulesetfiles=\
-  rulesets/basic.xml,\
-  rulesets/unusedcode.xml,\
-  rulesets/imports.xml,\
-  rulesets/codesize.xml,\
-  rulesets/coupling.xml,\
-  rulesets/design.xml,\
-  rulesets/strings.xml
diff --git a/jelly-tags/project.xml b/jelly-tags/project.xml
deleted file mode 100644
index 6e7a1d8..0000000
--- a/jelly-tags/project.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <pomVersion>3</pomVersion>
-  <id>commons-jelly-tags</id>
-  <name>Jelly Library Master Maven POM</name>
-  <currentVersion>1.0</currentVersion>
-
-  <organization>
-    <name>Apache Software Foundation</name>
-    <url>http://www.apache.org</url>
-    <logo>http://jakarta.apache.org/commons/images/jakarta-logo-blue.gif</logo>
-  </organization>
-  <logo>/images/logo.jpg</logo>
-  <package>org.apache.commons.jelly.tags.*</package>
-  <gumpRepositoryId>jakarta</gumpRepositoryId>
-  
-  <url>http://jakarta.apache.org/commons/jelly/libs/</url>
-  <issueTrackingUrl>http://issues.apache.org/</issueTrackingUrl>
-  
-  <siteAddress>jakarta.apache.org</siteAddress>
-  <siteDirectory>/www/jakarta.apache.org/commons/jelly/jelly-tags</siteDirectory>
-  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/jelly/jelly-tags</distributionDirectory>
-  
-  <repository>
-    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/jelly/jelly-tags</connection>
-    <url>http://cvs.apache.org/viewcvs/jakarta-commons/jelly/jelly-tags</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>
-
-  <build>
-    <nagEmailAddress>commons-dev@jakarta.apache.org</nagEmailAddress>
-    <sourceDirectory>${basedir}/src/java</sourceDirectory>
-    <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>
-    <integrationUnitTestSourceDirectory/>
-    <aspectSourceDirectory/>
-
-    <!-- Unit test classes -->
-    <unitTest>
-      <includes>
-        <include>**/Test*.java</include>
-      </includes>
-    </unitTest>
-
-    <!-- Integration unit test classes -->
-    <integrationUnitTestPatterns></integrationUnitTestPatterns>
-    
-    <resources>
-      <includes>
-        <include>**/*.properties</include>
-      </includes>
-    </resources>
-    
-    <jars></jars>
-  </build>
-
-</project>
diff --git a/jelly-tags/quartz/.cvsignore b/jelly-tags/quartz/.cvsignore
deleted file mode 100644
index 36ceb76..0000000
--- a/jelly-tags/quartz/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-maven.log
-target
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/quartz/build.xml b/jelly-tags/quartz/build.xml
deleted file mode 100644
index 507e835..0000000
--- a/jelly-tags/quartz/build.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2302-->
-<project default="jar" name="commons-jelly-tags-quartz" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-quartz-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-quartz 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.quartz.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/quartz-1.0.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/quartz/jars/quartz-1.0.2.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/log4j-1.2.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/log4j/jars/log4j-1.2.5.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/quartz/maven.xml b/jelly-tags/quartz/maven.xml
deleted file mode 100644
index 7e2669c..0000000
--- a/jelly-tags/quartz/maven.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <!-- add log4j config files to classpath -->
-            <pathelement location="src/conf"/>
-            
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-            
-        </path>
-  </goal>
-
-  <goal name="demo" prereqs="create-classpath"
-        description="Runs the example quartz demo">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/tags/quartz/example.jelly"/>
-      <sysproperty key="log4j.configuration" value="src/conf/log4j.configuration"/>
-        </java>
-  </goal>
-
-
-</project>
diff --git a/jelly-tags/quartz/project.properties b/jelly-tags/quartz/project.properties
deleted file mode 100644
index 2d19cbc..0000000
--- a/jelly-tags/quartz/project.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/quartz/project.xml b/jelly-tags/quartz/project.xml
deleted file mode 100644
index ecb88a0..0000000
--- a/jelly-tags/quartz/project.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-quartz</id>
-  <name>commons-jelly-tags-quartz</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.quartz</package>
-
-  <description>
-      This is a Jelly interface for the Quartz Scheduler.
-  </description>
-  <shortDescription>Commons Jelly Quartz Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-QUARTZ-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-    <!-- START for compilation -->
-    <dependency>
-      <id>quartz</id>
-      <version>1.0.2</version>
-    </dependency>
-    <!-- END for compilation -->
-    
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <id>log4j</id>
-      <version>1.2.5</version>
-      <properties>
-        <gump.project>logging-log4j</gump.project>
-      </properties>
-    </dependency>
-    
-    <!-- END for running demos -->
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/quartz/src/conf/log4j.properties b/jelly-tags/quartz/src/conf/log4j.properties
deleted file mode 100644
index fe152de..0000000
--- a/jelly-tags/quartz/src/conf/log4j.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-log4j.rootLogger=DEBUG, A1
-log4j.rootCategory=INFO, A1
-
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-
-log4j.logger.scheduler=INFO
-log4j.logger.org=INFO
-
-log4j.category.scheduler=INFO
-log4j.category.org.apache.commons.jelly.parser=INFO
-
diff --git a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/CronTriggerTag.java b/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/CronTriggerTag.java
deleted file mode 100644
index 3b1d5b4..0000000
--- a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/CronTriggerTag.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package org.apache.commons.jelly.tags.quartz;
-
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.text.ParseException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.MissingAttributeException;
-
-import org.quartz.CronTrigger;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-
-import java.util.Date;
-
-/** Define a trigger using a cron time spec.
- *
- *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- */
-public class CronTriggerTag extends QuartzTagSupport
-{
-    // ------------------------------------------------------------
-    //     Instance members
-    // ------------------------------------------------------------
-
-    /** Cron time spec. */
-    private String spec;
-
-    /** Trigger name. */
-    private String name;
-
-    /** Trigger group. */
-    private String group;
-
-    /** Job name. */
-    private String jobName;
-
-    /** Job group. */
-    private String jobGroup;
-
-    // ------------------------------------------------------------
-    //     COnstructors
-    // ------------------------------------------------------------
-
-    /** Construct.
-     */
-    public CronTriggerTag()
-    {
-        // intentionally left blank.
-    }
-
-    // ------------------------------------------------------------
-    // ------------------------------------------------------------
-
-    /** Set the name.
-     *
-     *  @param name.
-     */
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    /** Retrieve the name.
-     *
-     *  @return The name.
-     */
-    public String getName()
-    {
-        return this.name;
-    }
-
-    /** Set the group
-     *
-     *  @param group The group
-     */
-    public void setGroup(String group)
-    {
-        this.group = group;
-    }
-
-    /** Retrieve the group.
-     *
-     *  @return The group.
-     */
-    public String getGroup()
-    {
-        return this.group;
-    }
-
-    /** Set the cron time spec.
-     *
-     *  @param spec The cron time spec.
-     */
-    public void setSpec(String spec)
-    {
-        this.spec = spec;
-    }
-
-    /** Retrieve the cron time spec.
-     *
-     *  @param spec The cron time spec.
-     */
-    public String getSpec()
-    {
-        return this.spec;
-    }
-
-    /** Set the job name.
-     *
-     *  @param jobName The job name.
-     */
-    public void setJobName(String jobName)
-    {
-        this.jobName = jobName;
-    }
-
-    /** Retrieve the job name.
-     *
-     *  @return The job name.
-     */
-    public String getJobName()
-    {
-        return this.jobName;
-    }
-
-    /** Set the job group.
-     *
-     *  @param jobGroup The job group.
-     */
-    public void setJobGroup(String jobGroup)
-    {
-        this.jobGroup = jobGroup;
-    }
-
-    /** Retrieve the job group.
-     *
-     *  @return The job group.
-     */
-    public String getJobGroup()
-    {
-        return this.jobGroup;
-    }
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-    //     org.apache.commons.jelly.Tag
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-    /** Perform this tag.
-     *
-     *  @param output Output sink.
-     *
-     *  @throws Exception If an error occurs.
-     */
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException
-    {
-        if ( getSpec() == null )
-        {
-            throw new MissingAttributeException( "spec" );
-        }
-
-        if ( getName() == null )
-        {
-            throw new MissingAttributeException( "name" );
-        }
-
-        if ( getGroup() == null )
-        {
-            throw new MissingAttributeException( "group" );
-        }
-
-        if ( getJobName() == null )
-        {
-            throw new MissingAttributeException( "jobName" );
-        }
-
-        if ( getJobGroup() == null )
-        {
-            throw new MissingAttributeException( "jobGroup" );
-        }
-
-        CronTrigger trigger = new CronTrigger( getName(),
-                                               getGroup() );
-        try {
-            trigger.setCronExpression( getSpec() );
-        }
-        catch (ParseException e) {
-            throw new JellyTagException(e);
-        }
-        trigger.setJobName( getJobName() );
-        trigger.setJobGroup( getJobGroup() );
-        trigger.setStartTime( new Date() );
-
-        try {
-            Scheduler sched = getScheduler();
-            sched.scheduleJob( trigger );
-        }
-        catch (SchedulerException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
diff --git a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/JellyJob.java b/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/JellyJob.java
deleted file mode 100644
index 938a265..0000000
--- a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/JellyJob.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.apache.commons.jelly.tags.quartz;
-
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.quartz.Job;
-import org.quartz.JobDetail;
-import org.quartz.JobDataMap;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-
-/** Implementation of a quart <code>Job</code> to execute jellyscript.
- *
- *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- */
-public class JellyJob implements Job
-{
-    // ------------------------------------------------------------
-    //     Constructors
-    // ------------------------------------------------------------
-
-    /** Construct.
-     */
-    public JellyJob()
-    {
-        // intentionally left blank.
-    }
-
-    // ------------------------------------------------------------
-    //     Instance methods
-    // ------------------------------------------------------------
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-    //     org.quartz.Job
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-    /** Execute this job.
-     *
-     *  @param jobContext Job context data.
-     *
-     *  @throws JobExecutionException If an error occurs during job execution.
-     */
-    public void execute(JobExecutionContext jobContext) throws JobExecutionException
-    {
-
-        JobDetail  detail = jobContext.getJobDetail();
-
-        JobDataMap data   = detail.getJobDataMap();
-
-        Script script = (Script) data.get( "jelly.script" );
-
-        JellyContext jellyContext = (JellyContext) data.get( "jelly.context" );
-
-        XMLOutput    output       = (XMLOutput) data.get( "jelly.output" );
-
-        try
-        {
-            script.run( jellyContext,
-                        output );
-            output.flush();
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
-            throw new JobExecutionException( e,
-                                             false );
-        }
-    }
-}
diff --git a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/JobTag.java b/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/JobTag.java
deleted file mode 100644
index c863418..0000000
--- a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/JobTag.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package org.apache.commons.jelly.tags.quartz;
-
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.MissingAttributeException;
-
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.quartz.JobDetail;
-import org.quartz.JobDataMap;
-
-/** Defines a schedulable job.
- *
- *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- */
-public class JobTag extends QuartzTagSupport
-{
-    // ------------------------------------------------------------
-    //     Instance members
-    // ------------------------------------------------------------
-
-    /** Group of the job. */
-    private String group;
-
-    /** Name of the job. */
-    private String name;
-
-    // ------------------------------------------------------------
-    //     Constructors
-    // ------------------------------------------------------------
-
-    /** Construct.
-     */
-    public JobTag()
-    {
-        // intentionally left blank.
-    }
-
-    // ------------------------------------------------------------
-    //     Instance methods
-    // ------------------------------------------------------------
-
-    /** Set the name of this job.
-     *
-     *  @param name The name of this job.
-     */
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    /** Retrieve the name of this job.
-     *
-     *  @return The name of this job.
-     */
-    public String getName()
-    {
-        return this.name;
-    }
-
-    /** Set the group of this job.
-     *
-     *  @param group The group of this job.
-     */
-    public void setGroup(String group)
-    {
-        this.group = group;
-    }
-
-    /** Retrieve the group of this job.
-     *
-     *  @return The group of this job.
-     */
-    public String getGroup()
-    {
-        return this.group;
-    }
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-    //     org.apache.commons.jelly.Tag
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-    /** Perform this tag.
-     *
-     *  @param output Output sink.
-     *
-     *  @throws Exception If an error occurs.
-     */
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException
-    {
-        if ( getName() == null )
-        {
-            throw new MissingAttributeException( "name" );
-        }
-
-        if ( getGroup() == null )
-        {
-            throw new MissingAttributeException( "group" );
-        }
-
-        JobDetail detail = new JobDetail( getName(),
-                                          getGroup(),
-                                          JellyJob.class );
-
-        detail.setDurability( true );
-
-        JobDataMap data = new JobDataMap();
-
-        data.put( "jelly.output",
-                  output );
-
-        data.put( "jelly.context",
-                  getContext() );
-
-        data.put( "jelly.script",
-                  getBody() );
-
-        detail.setJobDataMap( data );
-
-        try {
-            Scheduler sched = getScheduler();
-            sched.addJob( detail,
-                          true );
-        }
-        catch (SchedulerException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
-
diff --git a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/QuartzTagLibrary.java b/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/QuartzTagLibrary.java
deleted file mode 100644
index afe5cef..0000000
--- a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/QuartzTagLibrary.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.apache.commons.jelly.tags.quartz;
-
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.commons.jelly.TagLibrary;
-
-/** Tag library for the Quartz enterprise job scheduler.
- *
- *  <p>
- *  <a href="http://quartz.sf.net/">quartz @ sourceforge</a>
- *  </p>
- *
- *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- */
-public class QuartzTagLibrary extends TagLibrary
-{
-    /** Construct and register tags.
-     */
-    public QuartzTagLibrary()
-    {
-        registerTag( "job",
-                     JobTag.class );
-
-        registerTag( "cron",
-                     CronTriggerTag.class );
-
-        registerTag( "wait-for-scheduler",
-                     WaitForSchedulerTag.class );
-    }
-}
diff --git a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/QuartzTagSupport.java b/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/QuartzTagSupport.java
deleted file mode 100644
index 3e709d9..0000000
--- a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/QuartzTagSupport.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.apache.commons.jelly.tags.quartz;
-
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.commons.jelly.TagSupport;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.quartz.impl.StdSchedulerFactory;
-
-/** Basic support for all tags requiring a Quartz scheduler.
- *
- *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- */
-public abstract class QuartzTagSupport extends TagSupport
-{
-    /** The scheduler variable name in the JellyContext. */
-    public static final String SCHED_VAR_NAME = "org.apache.commons.jelly.quartz.Scheduler";
-
-
-    /** Retrieve or create a scheduler.
-     *
-     *  <p>
-     *  If a scheduler has already been created an installed
-     *  in the variable {@link #SCHED_VAR_NAME}, then that scheduler
-     *  will be returned.  Otherwise, a new StdScheduler will be
-     *  created, started, and installed.  Additionally, a runtime
-     *  shutdown hook will be added to cleanly shutdown the scheduler.
-     *
-     *  @return The scheduler.
-     *
-     *  @throws SchedulerException If there is an error creating the
-     *          scheduler.
-     */
-    public Scheduler getScheduler() throws SchedulerException
-    {
-        Scheduler sched = (Scheduler) getContext().getVariable( SCHED_VAR_NAME );
-
-        if ( sched == null )
-        {
-            StdSchedulerFactory factory = new StdSchedulerFactory();
-
-            final Scheduler newSched = factory.getScheduler();
-
-            sched = newSched;
-
-            getContext().setVariable( SCHED_VAR_NAME,
-                                      newSched );
-
-            Runtime.getRuntime().addShutdownHook(
-                new Thread() {
-                    public void run()
-                    {
-                        try
-                        {
-                            if ( ! newSched.isShutdown() )
-                            {
-                                newSched.shutdown();
-                            }
-                        }
-                        catch (SchedulerException e)
-                        {
-                            e.printStackTrace();
-                        }
-                    }
-                }
-                );
-            newSched.start();
-        }
-
-
-        return sched;
-    }
-}
-
diff --git a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/TriggerTag.java b/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/TriggerTag.java
deleted file mode 100644
index cfc47fc..0000000
--- a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/TriggerTag.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.commons.jelly.tags.quartz;
-
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/** Abstract base for all triggers.
- *
- *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- */
-public abstract class TriggerTag extends QuartzTagSupport
-{
-    // ------------------------------------------------------------
-    //     Constructors
-    // ------------------------------------------------------------
-
-    /** Construct.
-     */
-    protected TriggerTag()
-    {
-        // intentionally left blank
-    }
-}
diff --git a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/WaitForSchedulerTag.java b/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/WaitForSchedulerTag.java
deleted file mode 100644
index 76f1dcf..0000000
--- a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/WaitForSchedulerTag.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.apache.commons.jelly.tags.quartz;
-
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.commons.jelly.XMLOutput;
-
-import org.apache.commons.jelly.JellyTagException;
-
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-
-/** Block and wait for the Quartz scheduler to shutdown.
- *
- *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- */
-public class WaitForSchedulerTag extends QuartzTagSupport
-{
-    // ------------------------------------------------------------
-    //     Constructors
-    // ------------------------------------------------------------
-
-    /** Construct.
-     */
-    public WaitForSchedulerTag()
-    {
-        // intentionally left blank.
-    }
-
-    // ------------------------------------------------------------
-    //     Instance methods
-    // ------------------------------------------------------------
-
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-    //     org.apache.commons.jelly.Tag
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-    /** Perform this tag.
-     *
-     *  @param output Output sink.
-     *
-     *  @throws Exception If an error occurs.
-     */
-    public void doTag(XMLOutput output) throws JellyTagException
-    {
-        try {
-            Scheduler sched = getScheduler();
-
-            while ( ! sched.isShutdown() )
-            {
-                try
-                {
-                    Thread.sleep( 500 );
-                }
-                catch (InterruptedException e)
-                {
-                    break;
-                }
-            }
-        }
-        catch (SchedulerException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
-
diff --git a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/package.html b/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/package.html
deleted file mode 100644
index 4358145..0000000
--- a/jelly-tags/quartz/src/java/org/apache/commons/jelly/tags/quartz/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A tag library for scheduling tasks to be run using the 
-  <a href="http://www.part.net/quartz.html">Quartz</a> library
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/quartz/src/test/org/apache/commons/jelly/tags/quartz/example.jelly b/jelly-tags/quartz/src/test/org/apache/commons/jelly/tags/quartz/example.jelly
deleted file mode 100644
index e49443c..0000000
--- a/jelly-tags/quartz/src/test/org/apache/commons/jelly/tags/quartz/example.jelly
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<j:jelly xmlns:j="jelly:core"

-         xmlns:q="jelly:quartz">

-

-

-  <q:job group="demo" name="cheese">

-    I like cheese

-  </q:job>

-

-  <q:cron spec="*/5 * * ? * *"

-          name="every.5.seconds"

-          group="demo"

-          jobName="cheese"

-          jobGroup="demo"/>

-

-  <q:wait-for-scheduler/>

-

-</j:jelly>

diff --git a/jelly-tags/quartz/xdocs/changes.xml b/jelly-tags/quartz/xdocs/changes.xml
deleted file mode 100644
index 7e44081..0000000
--- a/jelly-tags/quartz/xdocs/changes.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-12">
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/quartz/xdocs/index.xml b/jelly-tags/quartz/xdocs/index.xml
deleted file mode 100644
index ffb8239..0000000
--- a/jelly-tags/quartz/xdocs/index.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Quartz Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A tag library for scheduling tasks to be run using the 
-        <a href="http://www.part.net/quartz.html">Quartz</a> library.
-        See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/quartz/xdocs/navigation.xml b/jelly-tags/quartz/xdocs/navigation.xml
deleted file mode 100644
index a796c42..0000000
--- a/jelly-tags/quartz/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Quartz Tag Library">
-
-  <title>Quartz Tag Library</title>
-  
-  <body>
-    <menu name="Quartz Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/regexp/.cvsignore b/jelly-tags/regexp/.cvsignore
deleted file mode 100644
index 36ceb76..0000000
--- a/jelly-tags/regexp/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-maven.log
-target
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/regexp/project.properties b/jelly-tags/regexp/project.properties
deleted file mode 100644
index e00343c..0000000
--- a/jelly-tags/regexp/project.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/regexp/project.xml b/jelly-tags/regexp/project.xml
deleted file mode 100644
index 938e6e3..0000000
--- a/jelly-tags/regexp/project.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" ?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-regexp</id>
-  <name>commons-jelly-tags-regexp</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.regexp</package>
-
-  <description>
-      This is a Jelly interface for ORO.
-  </description>
-  <shortDescription>Commons Jelly Regular Expression Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-REGEXP-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-    <dependency>
-      <groupId>oro</groupId>
-      <artifactId>oro</artifactId>
-      <version>2.0.8</version>
-      <properties>
-        <gump.project>jakarta-oro</gump.project>
-      </properties>
-    </dependency>
-
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/ContainsTag.java b/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/ContainsTag.java
deleted file mode 100644
index bc486bb..0000000
--- a/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/ContainsTag.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.regexp;
-
-/**
- * This tag checks whether a regexp contains a string.
- *
- * @author <a href="mailto:christian@inx-soft.com">Christian Amor Kvalheim</a>
- * @version $Revision: 1.1 $
- */
-public class ContainsTag extends RegexpTag {
-    protected boolean getResult() {
-        return getPatternMatcher().contains(getText(), getPattern());
-    }
-}
diff --git a/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/MatchTag.java b/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/MatchTag.java
deleted file mode 100644
index f57c9cd..0000000
--- a/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/MatchTag.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.regexp;
-
-/**
- * This tag checks whether a regexp matches a string.
- *
- * @author <a href="mailto:christian@inx-soft.com">Christian Amor Kvalheim</a>
- * @version $Revision: 1.1 $
- */
-public class MatchTag extends RegexpTag {
-    protected boolean getResult() {
-        return getPatternMatcher().matches(getText(), getPattern());
-    }
-}
\ No newline at end of file
diff --git a/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/RegexpTag.java b/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/RegexpTag.java
deleted file mode 100644
index 690f645..0000000
--- a/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/RegexpTag.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.regexp;
-
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.oro.text.regex.Perl5Matcher;
-import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Pattern;
-import org.apache.oro.text.regex.MalformedPatternException;
-
-/**
- * Base class for tags using the Oro Regexp library.
- *
- * @author <a href="mailto:christian@inx-soft.com">Christian Amor Kvalheim</a>
- * @version $Revision: 1.1 $
- */
-public abstract class RegexpTag extends TagSupport {
-    private Perl5Matcher patternMatcher = new Perl5Matcher();
-    private Pattern pattern;
-    private String var;
-    private String text;
-    private String scope;
-
-    protected final String getText() {
-        return text;
-    }
-
-    protected final Pattern getPattern() {
-        return pattern;
-    }
-
-    protected final Perl5Matcher getPatternMatcher() {
-        return patternMatcher;
-    }
-
-    public final void setExpr(String expr) throws MalformedPatternException {
-        Perl5Compiler patternCompiler = new Perl5Compiler();
-        pattern = patternCompiler.compile(expr);
-    }
-
-    public final void setText(String text) {
-        this.text = text;
-    }
-
-    // Sets the variable name to define for this expression
-    public final void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Sets the variable scope for this variable. For example setting this value to 'parent' will
-     * set this value in the parent scope. When Jelly is run from inside a Servlet environment
-     * then other scopes will be available such as 'request', 'session' or 'application'.
-     *
-     * Other applications may implement their own custom scopes.
-     */
-    public final void setScope(String scope) {
-        this.scope = scope;
-    }
-
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        // Check required properties
-        if (getText() == null || getText().length() == 0)
-            throw new MissingAttributeException("text must be provided");
-
-        if (pattern == null)
-            throw new MissingAttributeException("expr must be provided");
-
-        if (var == null || var.length() == 0)
-            throw new MissingAttributeException("var must be provided");
-
-        // Evaluate pattern against text string
-        boolean result = getResult();
-        String resultString = result ? "true" : "false";
-
-        if (var != null) {
-            if (scope != null) {
-                context.setVariable(var, scope, resultString);
-            } else {
-                context.setVariable(var, resultString);
-            }
-        }
-    }
-
-    protected abstract boolean getResult();
-}
diff --git a/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/RegexpTagLibrary.java b/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/RegexpTagLibrary.java
deleted file mode 100644
index 1836c40..0000000
--- a/jelly-tags/regexp/src/java/org/apache/commons/jelly/tags/regexp/RegexpTagLibrary.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.regexp;
-
-import org.apache.commons.jelly.TagLibrary;
-/** Implements regexp tags.
- *
- *  @author <a href="mailto:christian@inx-soft.com">Christian Amor Kvalheim</a>
- *  @version $Revision: 1.1 $
- */
-public class RegexpTagLibrary extends TagLibrary {
-    
-    public RegexpTagLibrary()
-    {
-        registerTag("match", MatchTag.class);
-        registerTag("contains", ContainsTag.class);
-    }
-}
\ No newline at end of file
diff --git a/jelly-tags/regexp/src/test/org/apache/commons/jelly/tags/regexp/ContainsTagTest.java b/jelly-tags/regexp/src/test/org/apache/commons/jelly/tags/regexp/ContainsTagTest.java
deleted file mode 100644
index 3c34db6..0000000
--- a/jelly-tags/regexp/src/test/org/apache/commons/jelly/tags/regexp/ContainsTagTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.regexp;
-
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.JellyContext;
-import junit.framework.TestCase;
-import org.apache.commons.jelly.tags.regexp.ContainsTag;
-
-/*** <p><code>ContainsTagTest</code> a class that is useful to perform regexp matches
-* in strings.</p>
-*
-* @author <a href="mailto:christian@inx-soft.com">Christian Amor Kvalheim</a>
-* @version $Revision: 1.1 $
-*/
-public class ContainsTagTest extends TestCase {
-
-    public ContainsTagTest(String name)
-    {
-      super(name);
-    }
-
-    public void setUp() throws Exception
-    {
-    }
-
-    public void testDoTag() throws Exception
-    {
-      ContainsTag containsExpTag = new ContainsTag();
-      XMLOutput xmlOutput = new XMLOutput();
-
-      containsExpTag.setText("Hello World");
-      containsExpTag.setExpr("World");
-      containsExpTag.setVar("testvar");
-      containsExpTag.setContext(new JellyContext());
-      containsExpTag.doTag(xmlOutput);
-
-      assertEquals("TRUE", containsExpTag.getContext().getVariable("testvar").toString().toUpperCase());
-    }
-
-    public void tearDown()
-    {
-    }
-
-}
diff --git a/jelly-tags/regexp/src/test/org/apache/commons/jelly/tags/regexp/MatchTagTest.java b/jelly-tags/regexp/src/test/org/apache/commons/jelly/tags/regexp/MatchTagTest.java
deleted file mode 100644
index 8922c56..0000000
--- a/jelly-tags/regexp/src/test/org/apache/commons/jelly/tags/regexp/MatchTagTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.regexp;
-
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.JellyContext;
-import junit.framework.TestCase;
-import org.apache.commons.jelly.tags.regexp.MatchTag;
-
-/*** <p><code>MatchTagTest</code> a class that is useful to perform regexp matches
-* in strings.</p>
-*
-* @author <a href="mailto:christian@inx-soft.com">Christian Amor Kvalheim</a>
-* @version $Revision: 1.1 $
-*/
-public class MatchTagTest extends TestCase {
-
-  public MatchTagTest(String name)
-  {
-    super(name);
-  }
-
-  public void setUp() throws Exception
-  {
-  }
-
-  public void testDoTag() throws Exception
-  {
-    MatchTag matchExpTag = new MatchTag();
-    XMLOutput xmlOutput = new XMLOutput();
-
-    matchExpTag.setText("ID1234");
-    matchExpTag.setExpr("[A-Z][A-Z][0-9]{4}");
-    matchExpTag.setVar("testvar");
-    matchExpTag.setContext(new JellyContext());
-    matchExpTag.doTag(xmlOutput);
-
-    assertEquals("TRUE", matchExpTag.getContext().getVariable("testvar").toString().toUpperCase());
-  }
-
-  public void tearDown()
-  {
-  }
-}
\ No newline at end of file
diff --git a/jelly-tags/regexp/xdocs/changes.xml b/jelly-tags/regexp/xdocs/changes.xml
deleted file mode 100644
index 1b0103c..0000000
--- a/jelly-tags/regexp/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0-SNAPSHOT" date="in CVS">
-      <action dev="dion" type="add" issue="JELLY-49" due-to="Aslak Hellesoy">Added</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/regexp/xdocs/index.xml b/jelly-tags/regexp/xdocs/index.xml
deleted file mode 100644
index 2358d8e..0000000
--- a/jelly-tags/regexp/xdocs/index.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Regexp Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        Tags for working with regular expressions. See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/regexp/xdocs/navigation.xml b/jelly-tags/regexp/xdocs/navigation.xml
deleted file mode 100644
index 32795f8..0000000
--- a/jelly-tags/regexp/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Regexp Tag Library">
-
-  <title>Regexp Tag Library</title>
-  
-  <body>
-    <menu name="Regexp Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/soap/.cvsignore b/jelly-tags/soap/.cvsignore
deleted file mode 100644
index 36ceb76..0000000
--- a/jelly-tags/soap/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-maven.log
-target
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/soap/build.xml b/jelly-tags/soap/build.xml
deleted file mode 100644
index 513ecc2..0000000
--- a/jelly-tags/soap/build.xml
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.1-SNAPSHOT
-  on date September 14 2004, time 1453-->
-
-<project default="jar" name="commons-jelly-tags-soap" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-soap-1.1-SNAPSHOT">
-  </property>
-  <path id="build.classpath">
-    <fileset dir="${libdir}">
-      <include name="**/*.jar">
-      </include>
-    </fileset>
-  </path>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-    <!--Test if JUNIT is present in ANT classpath-->
-
-    <available property="Junit.present" classname="junit.framework.Test">
-    </available>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath refid="build.classpath">
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="${defaulttargetdir}/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" if="Junit.present" depends="junit-present,compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <path refid="build.classpath">
-        </path>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="junit-present" unless="Junit.present" depends="init">
-    <echo>================================= WARNING ================================</echo>
-    <echo>Junit isn't present in your ${ANT_HOME}/lib directory. Tests not executed.</echo>
-    <echo>==========================================================================</echo>
-  </target>
-  <target name="compile-tests" if="Junit.present" depends="junit-present,compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <path refid="build.classpath">
-        </path>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="get-deps">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-soap 1.1-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.soap.*">
-      <classpath>
-        <path refid="build.classpath">
-        </path>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <!--Proxy settings works only with a JDK 1.2 and higher.-->
-
-    <setproxy>
-    </setproxy>
-    <get dest="${libdir}/commons-jelly-1.0-beta-4.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-1.0-beta-4.jar">
-    </get>
-    <get dest="${libdir}/axis-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/axis/jars/axis-1.0.jar">
-    </get>
-    <get dest="${libdir}/commons-httpclient-2.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-httpclient/jars/commons-httpclient-2.0.jar">
-    </get>
-    <get dest="${libdir}/jaxrpc-api-1.1-FCS.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxrpc/jars/jaxrpc-api-1.1-FCS.jar">
-    </get>
-    <get dest="${libdir}/saaj-api-1.2-FCS.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/saaj/jars/saaj-api-1.2-FCS.jar">
-    </get>
-    <get dest="${libdir}/jax-qname-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jax-qname/jars/jax-qname-1.0.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-1.0.jar">
-    </get>
-    <get dest="${libdir}/commons-discovery-20030211.213356.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-discovery/jars/commons-discovery-20030211.213356.jar">
-    </get>
-    <get dest="${libdir}/servletapi-2.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/servletapi/jars/servletapi-2.3.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-1.0.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/soap/maven.xml b/jelly-tags/soap/maven.xml
deleted file mode 100644
index 9b23711..0000000
--- a/jelly-tags/soap/maven.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" ?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-    <!-- demos -->
-  <goal name="demo" prereqs="create-classpath"
-        description="Runs a sample using Apache Axis to invoke a web service from inside Jelly">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/tags/soap/example.jelly"/>
-    </java>
-  </goal>
-
-</project>
diff --git a/jelly-tags/soap/project.properties b/jelly-tags/soap/project.properties
deleted file mode 100644
index e00343c..0000000
--- a/jelly-tags/soap/project.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/soap/project.xml b/jelly-tags/soap/project.xml
deleted file mode 100644
index d782aae..0000000
--- a/jelly-tags/soap/project.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" ?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-soap</id>
-  <name>commons-jelly-tags-soap</name>
-  <currentVersion>1.1-SNAPSHOT</currentVersion>
-  <package>org.apache.commons.jelly.tags.soap</package>
-
-  <description>
-      This is a Jelly interface for SOAP.
-  </description>
-  <shortDescription>Commons Jelly SOAP Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-SOAP-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-
-    <!-- START for compilation -->
-    <dependency>
-      <id>axis</id>
-      <version>1.0</version>
-      <properties>
-        <gump.project>ws-axis</gump.project>
-        <gump.id>axis</gump.id>
-      </properties>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-httpclient</groupId>
-      <artifactId>commons-httpclient</artifactId>
-      <version>2.0</version>
-    </dependency>
-
-    <!-- can be found in jwsdp-1.3/jaxrpc/lib -->
-    <dependency>
-      <groupId>jaxrpc</groupId>
-      <artifactId>jaxrpc-api</artifactId>
-      <version>1.1-FCS</version>
-      <url>http://java.sun.com/webservices/webservicespack.html</url>
-      <properties>
-        <gump.project>ws-axis</gump.project>
-        <gump.id>axis-jaxrpc</gump.id>
-      </properties>
-    </dependency>
-    
-    <!-- can be found in jwsdp-1.3/saaj/lib -->
-    <dependency>
-      <groupId>saaj</groupId>
-      <artifactId>saaj-api</artifactId>
-      <version>1.2-FCS</version>
-      <url>http://java.sun.com/webservices/webservicespack.html</url>
-      <properties>
-        <gump.project>ws-axis</gump.project>
-        <gump.id>axis-saaj</gump.id>
-      </properties>
-    </dependency>
-
-		
-    <dependency><!-- just for javax.xml.namespace.QName... was taken out of jaxrpc in some version jwsdp -->
-      <groupId>jaxme</groupId>
-      <artifactId>jaxme-api</artifactId>
-      <version>0.3</version>
-      <properties>
-        <gump.project>ws-jaxme</gump.project>
-        <gump.id>api</gump.id>
-      </properties>
-    </dependency>
-
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <id>commons-discovery</id>
-      <version>20030211.213356</version>
-    </dependency>
-    <dependency>
-      <id>servletapi</id>
-      <version>2.3</version>
-      <url>http://java.sun.com/products/servlets/</url>
-      <properties>
-        <gump.project>jakarta-servletapi-5-servlet</gump.project>
-      </properties>
-    </dependency>
-        
-    <!-- END for running demos -->
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/InvokeRawTag.java b/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/InvokeRawTag.java
deleted file mode 100644
index 2d92c16..0000000
--- a/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/InvokeRawTag.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.soap;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.rmi.RemoteException;
-
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Invokes a web service
- * 
- * @author <a href="mailto:jim@bnainc.net">James Birchfield</a>
- * @version $Revision: 1.1 $
- */
-public class InvokeRawTag extends TagSupport
-{
-
-    private String var;
-    private String endpoint = null;
-    private String soapAction;
-
-    public InvokeRawTag()
-    {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output)
-        throws MissingAttributeException, JellyTagException
-    {
-        if (endpoint == null)
-        {
-            throw new MissingAttributeException("endpoint");
-        }
-
-        String request = getBodyText();
-
-        String answer = null;
-        try
-        {
-            // Prepare HTTP post
-            PostMethod post = new PostMethod(endpoint);
-
-            // Request content will be retrieved directly 
-            // from the input stream
-            post.setRequestBody(new StringInputStream(request));
-
-            // Per default, the request content needs to be buffered
-            // in order to determine its length.
-            // Request body buffering can be avoided when
-            // = content length is explicitly specified
-            // = chunk-encoding is used
-            if (request.length() < Integer.MAX_VALUE)
-            {
-                post.setRequestContentLength((int) request.length());
-            }
-            else
-            {
-                post.setRequestContentLength(
-                    EntityEnclosingMethod.CONTENT_LENGTH_CHUNKED);
-            }
-
-            // Specify content type and encoding
-            // If content encoding is not explicitly specified
-            // ISO-8859-1 is assumed
-            post.setRequestHeader(
-                "Content-type",
-                "text/xml; charset=ISO-8859-1");
-            
-            // Set the SOAPAction header
-            if ( soapAction == null )
-            {
-                post.setRequestHeader( "SOAPAction", "");
-            }
-            else
-            {
-                post.setRequestHeader( "SOAPAction", soapAction);
-            }
-            
-            // Get HTTP client
-            HttpClient httpclient = new HttpClient();
-            // Execute request
-            int result = httpclient.executeMethod(post);
-
-            answer = post.getResponseBodyAsString();
-            
-            // Release current connection to the connection pool once you are done
-            post.releaseConnection();
-        }
-        catch (MalformedURLException e)
-        {
-            throw new JellyTagException(e);
-        }
-        catch (RemoteException e)
-        {
-            throw new JellyTagException(e);
-        }
-        catch (HttpException e)
-        {
-            throw new JellyTagException(e);
-        }
-        catch (IOException e)
-        {
-            throw new JellyTagException(e);
-        }
-
-        if (var != null)
-        {
-            context.setVariable(var, answer);
-        }
-        else
-        {
-            // should turn the answer into XML events...
-            throw new JellyTagException(
-                "Not implemented yet; should stream results as XML events. Results: "
-                    + answer);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * Sets the end point to which the invocation will occur
-     */
-    public void setEndpoint(String endpoint)
-    {
-        this.endpoint = endpoint;
-    }
-
-    /**
-     * Sets the name of the variable to output the results of the SOAP call to.
-     */
-    public void setVar(String var)
-    {
-        this.var = var;
-    }
-    
-    /**
-     * The SOAPAction HTTP header.
-     */
-    public void setSoapAction(String action)
-    {
-        soapAction = action;
-    }
-
-}
diff --git a/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/InvokeTag.java b/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/InvokeTag.java
deleted file mode 100644
index 02952bc..0000000
--- a/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/InvokeTag.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.soap;
-
-import java.net.MalformedURLException;
-import java.rmi.RemoteException;
-import java.util.Collection;
-
-import javax.xml.namespace.QName;
-import javax.xml.rpc.ServiceException;
-
-import org.apache.axis.client.Call;
-import org.apache.axis.client.Service;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Invokes a web service
- *
- * @author <a href="mailto:jim@bnainc.net">James Birchfield</a>
- * @version $Revision: 1.6 $
- */
-public class InvokeTag extends TagSupport {
-
-    private String var;
-    private String endpoint = null;
-    private String namespace = null;
-    private String method = null;
-    private String username;
-    private String password;
-    private Service service;
-    private Object params;
-
-    public InvokeTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (endpoint == null) {
-            throw new MissingAttributeException("endpoint");
-        }
-        if (namespace == null) {
-            throw new MissingAttributeException("namespace");
-        }
-        if (method == null) {
-            throw new MissingAttributeException("method");
-        }
-
-        Object[] params = getParamArray();
-        if (params == null) {
-            params = new Object[]{ getBodyText() };
-        } else {
-            // invoke body just in case we have nested tags
-            invokeBody(output);
-        }
-
-        Service service = getService();
-        if (service == null) {
-            service = createService();
-        }
-
-        Object answer = null;
-        try {
-            Call call = (Call) service.createCall();
-
-            // @todo Jelly should have native support for URL and QName
-            // directly on properties
-            call.setTargetEndpointAddress(new java.net.URL(endpoint));
-            call.setOperationName(new QName(namespace, method));
-
-            if ( username != null && !username.equals("") ) {
-                call.setUsername( username );
-                call.setPassword( password );
-            }
-            
-            answer = call.invoke(params);
-        } catch (MalformedURLException e) {
-            throw new JellyTagException(e);
-        } catch (ServiceException e) {
-            throw new JellyTagException(e);
-        } catch (RemoteException e) {
-            throw new JellyTagException(e);
-        }
-
-        if (var != null) {
-            context.setVariable(var, answer);
-        } else {
-            // should turn the answer into XML events...
-            throw new JellyTagException( "Not implemented yet; should stream results as XML events. Results: " + answer );
-        }
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * Sets the end point to which the invocation will occur
-     */
-    public void setEndpoint(String endpoint) {
-        this.endpoint = endpoint;
-    }
-
-    /**
-     * Sets the namespace of the operation
-     */
-    public void setNamespace(String namespace) {
-        this.namespace = namespace;
-    }
-
-    public void setMethod(String method) {
-        this.method = method;
-    }
-
-    /**
-     * Returns the service to be used by this web service invocation.
-     * @return Service
-     */
-    public Service getService() {
-        return service;
-    }
-
-    /**
-     * Sets the service to be used by this invocation.
-     * If none is specified then a default is used.
-     */
-    public void setService(Service service) {
-        this.service = service;
-    }
-
-    /**
-     * Sets the name of the variable to output the results of the SOAP call to.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Sets the parameters for this SOAP call. This can be an array or collection of
-     * SOAPBodyElements or types.
-     */
-    public void setParams(Object params) {
-        this.params = params;
-    }
-
-    /**
-     * Set the password for the SOAP call.
-     */
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    /**
-     * Set the username for the SOAP call.
-     */
-    public void setUsername(String username)
-    {
-        this.username = username;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new default Service instance
-     */
-    protected Service createService() {
-        return new Service();
-    }
-
-    /**
-     * Performs any type coercion on the given parameters to form an Object[]
-     * or returns null if no parameter has been specified
-     */
-    protected Object[] getParamArray() {
-        if (params == null) {
-            return null;
-        }
-        if (params instanceof Object[]) {
-            return (Object[]) params;
-        }
-        if (params instanceof Collection) {
-            Collection coll = (Collection) params;
-            return coll.toArray();
-        }
-        // lets just wrap the current object inside an array
-        return new Object[] { params };
-    }
-}
diff --git a/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/SoapTagLibrary.java b/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/SoapTagLibrary.java
deleted file mode 100644
index bf99e85..0000000
--- a/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/SoapTagLibrary.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.soap;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/** Implements general utility tags.
- *
- *  @author <a href="mailto:jim@bnainc.net">jim birchfield</a>
- *  @version $Revision: 1.5 $
- */
-public class SoapTagLibrary extends TagLibrary {
-    public SoapTagLibrary() {
-        registerTag("invoke", InvokeTag.class);
-        registerTag("invokeraw", InvokeRawTag.class);
-    }
-}
diff --git a/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/StringInputStream.java b/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/StringInputStream.java
deleted file mode 100644
index d945ca6..0000000
--- a/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/StringInputStream.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.soap;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringReader;
-
-/**
- * Wraps a String as an InputStream. Note that data will be lost for
- * characters not in ISO Latin 1, as a simple char->byte mapping is assumed.
- *
- * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a>
- */
-public class StringInputStream
-    extends InputStream
-{
-    /** Source string, stored as a StringReader */
-    private StringReader in;
-
-    /**
-     * Composes a stream from a String
-     *
-     * @param source The string to read from. Must not be <code>null</code>.
-     */
-    public StringInputStream( String source )
-    {
-        in = new StringReader( source );
-    }
-
-    /**
-     * Reads from the Stringreader, returning the same value. Note that
-     * data will be lost for characters not in ISO Latin 1. Clients
-     * assuming a return value in the range -1 to 255 may even fail on
-     * such input.
-     *
-     * @return the value of the next character in the StringReader
-     *
-     * @exception IOException if the original StringReader fails to be read
-     */
-    public int read() throws IOException
-    {
-        return in.read();
-    }
-
-    /**
-     * Closes the Stringreader.
-     *
-     * @exception IOException if the original StringReader fails to be closed
-     */
-    public void close() throws IOException
-    {
-        in.close();
-    }
-
-    /**
-     * Marks the read limit of the StringReader.
-     *
-     * @param limit the maximum limit of bytes that can be read before the
-     *              mark position becomes invalid
-     */
-    public synchronized void mark( final int limit )
-    {
-        try
-        {
-            in.mark( limit );
-        }
-        catch ( IOException ioe )
-        {
-            throw new RuntimeException( ioe.getMessage() );
-        }
-    }
-
-    /**
-     * Resets the StringReader.
-     *
-     * @exception IOException if the StringReader fails to be reset
-     */
-    public synchronized void reset() throws IOException
-    {
-        in.reset();
-    }
-
-    /**
-     * @see InputStream#markSupported
-     */
-    public boolean markSupported()
-    {
-        return in.markSupported();
-    }
-}
-
diff --git a/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/package.html b/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/package.html
deleted file mode 100644
index 435b751..0000000
--- a/jelly-tags/soap/src/java/org/apache/commons/jelly/tags/soap/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-  <p>
-  	Tags for invoking Web Services via <a href="http://xml.apache.org/axis/">Apache Axis</a>
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/soap/src/test/org/apache/commons/jelly/tags/soap/example.jelly b/jelly-tags/soap/src/test/org/apache/commons/jelly/tags/soap/example.jelly
deleted file mode 100644
index 006fa27..0000000
--- a/jelly-tags/soap/src/test/org/apache/commons/jelly/tags/soap/example.jelly
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-

-<j:jelly

-  xmlns:soap="jelly:soap"

-  xmlns:log="jelly:log"

-  xmlns:j="jelly:core">

-

-  <soap:invoke

-      var="answer"

-    endpoint="http://nagoya.apache.org:5049/axis/services/echo"

-    namespace="http://soapinterop.org/"

-    method="echoString">Hi Jim!</soap:invoke>

-

-  <log:info>Sent: Hi Jim! and received: ${answer} of type: ${answer.class.name}</log:info>

-

-  <soap:invoke

-      var="answer"

-      endpoint="http://services.xmethods.net:80/soap/servlet/rpcrouter"

-      namespace="urn:xmethods-Temperature"

-      method="getTemp">40031</soap:invoke>

-      

-  <log:info>Sent: 40031 and received: ${answer} of type: ${answer.class.name}</log:info>

-

-    <j:set var="x" value="${300}"/>

-    

-  <soap:invoke

-      var="answer"

-      endpoint="http://www.xmlbus.com:9010/xmlbus/container/Converter/ConverterService/ConverterPort/"

-      namespace="urn:target-converter-service"

-      method="mmToInch"

-      params="${x.floatValue()}"/>

-      

-  <log:info>Sent: ${x} mm and received: ${answer} inches of type: ${answer.class.name}</log:info>

-</j:jelly>

diff --git a/jelly-tags/soap/xdocs/changes.xml b/jelly-tags/soap/xdocs/changes.xml
deleted file mode 100644
index 1418f69..0000000
--- a/jelly-tags/soap/xdocs/changes.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.1-SNAPSHOT" date="in CVS">
-      <action dev="dion" type="add" issue="JELLY-60" due-to="Dan Diephouse">add invoke raw tag</action>
-    </release>
-    <release version="1.0" date="2004-09-12">
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/soap/xdocs/index.xml b/jelly-tags/soap/xdocs/index.xml
deleted file mode 100644
index 250853e..0000000
--- a/jelly-tags/soap/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>SOAP Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        Tags for invoking Web Services via <a href="http://ws.apache.org/axis/">Apache Axis</a>.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/soap/xdocs/navigation.xml b/jelly-tags/soap/xdocs/navigation.xml
deleted file mode 100644
index 1fd46bc..0000000
--- a/jelly-tags/soap/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="SOAP Tag Library">
-
-  <title>SOAP Tag Library</title>
-  
-  <body>
-    <menu name="SOAP Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/sql/.cvsignore b/jelly-tags/sql/.cvsignore
deleted file mode 100644
index 36ceb76..0000000
--- a/jelly-tags/sql/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-maven.log
-target
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/sql/build.xml b/jelly-tags/sql/build.xml
deleted file mode 100644
index 458735a..0000000
--- a/jelly-tags/sql/build.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2302-->
-<project default="jar" name="commons-jelly-tags-sql" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-sql-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-sql 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.sql.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/hsqldb-1.7.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/hsqldb/jars/hsqldb-1.7.1.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/sql/maven.xml b/jelly-tags/sql/maven.xml
deleted file mode 100644
index 5abfbbe..0000000
--- a/jelly-tags/sql/maven.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-    <!-- demos -->
-    <goal name="demo" prereqs="create-classpath"
-        description="Runs an SQL demo">
-
-      <!-- Values used for testing -->
-      <property name="databaseUrl"             value="jdbc:hsqldb:target/hsql"/>
-      <property name="databaseDriver"          value="org.hsqldb.jdbcDriver"/>
-      <property name="databaseUser"            value="sa"/>
-      <property name="databaseTable"           value="SYSTEM_TABLES"/>
-
-        <echo message="Running examples and outputting results to target directory"/>
-
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <sysproperty key="databaseUrl" value="${databaseUrl}"/>
-      <sysproperty key="databaseDriver" value="${databaseDriver}"/>
-      <sysproperty key="databaseUser" value="${databaseUser}"/>
-      <sysproperty key="databaseTable" value="${databaseTable}"/>
-      <arg value="src/test/org/apache/commons/jelly/tags/sql/example3.jelly"/>
-    </java>
-
-  </goal>
-
-</project>
diff --git a/jelly-tags/sql/project.properties b/jelly-tags/sql/project.properties
deleted file mode 100644
index 39c1b61..0000000
--- a/jelly-tags/sql/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/sql/project.xml b/jelly-tags/sql/project.xml
deleted file mode 100644
index b24f58f..0000000
--- a/jelly-tags/sql/project.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-sql</id>
-  <name>commons-jelly-tags-sql</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.sql</package>
-
-  <description>
-      This is a Jelly interface for SQL.
-  </description>
-  <shortDescription>Commons Jelly SQL Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-SQL-1_0</tag>
-    </version>
-  </versions>
-  
-    
-  <dependencies>
-    <!-- START for compilation -->
-    <!-- unneeded at least for java 1.4 -->
-    <dependency>
-      <groupId>jdbc</groupId>
-      <artifactId>jdbc</artifactId>
-      <version>2.0</version>
-      <!-- this is jdbc2_0-stdext.jar -->
-    </dependency>
-    
-    <!-- END for compilation -->
-    
-    <!-- START for testing -->
-    
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-    
-    <!-- END for testing -->
-
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <id>hsqldb</id>
-      <version>1.7.1</version>
-    </dependency>
-        
-    <!-- END for running demos -->
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/Result.java b/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/Result.java
deleted file mode 100644
index f16fec2..0000000
--- a/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/Result.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package javax.servlet.jsp.jstl.sql;
-
-import java.util.SortedMap;
-
-/**
- * <p>This interface represents the result of a &lt;sql:query&gt;
- * action. It provides access to the following information in the
- * query result:</p>
- *
- * <ul>
- * <li> result rows
- * <li> result rows using an index
- * <li> number of rows in the result
- * <li> result meta data
- * <li> indication whether result returned is a complete set or
- *      a subset limited by a maximum row setting
- * </ul>
- *
- * @author Justyna Horwat
- *
- */
-public interface Result {
-
-    /**
-     * Returns an array of SortedMap objects. Column name is used as the key
-     * for the column value. SortedMap must use the CASE_INSENSITIVE_ORDER
-     * Comparator so that the key is the case insensitive representation
-     * of the column name.
-     *
-     * @return the result rows as an array of <code>SortedMap</code> objects
-     */
-    public SortedMap[] getRows();
-
-    /**
-     * Returns an array of Objects[]. The first index
-     * designates the Row, the second the Column. The array
-     * stores the value at the specified row and column.
-     *
-     * @return the result rows as an array of <code>Object[]</code> objects
-     */
-    public Object[][] getRowsByIndex();
-
-    /**
-     * Returns an array of column names.
-     *
-     * @return the column names as an array of <code>String</code> objects
-     */
-    public String[] getColumnNames();
-
-    /**
-     * Returns the number of rows in the cached ResultSet
-     *
-     * @return the number of rows in the result
-     */
-    public int getRowCount();
-
-    /**
-     * Returns true of the query was limited by a maximum row setting
-     *
-     * @return <tt>true</tt> if the query was limited by a maximum
-     * row setting
-     */
-    public boolean isLimitedByMaxRows();
-}
diff --git a/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/ResultImpl.java b/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/ResultImpl.java
deleted file mode 100644
index 900df59..0000000
--- a/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/ResultImpl.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package javax.servlet.jsp.jstl.sql;
-
-import java.sql.*;
-import java.util.*;
-
-/**
- * <p>This class creates a cached version of a <tt>ResultSet</tt>.
- * It's represented as a <tt>Result</tt> implementation, capable of
- * returing an array of <tt>Row</tt> objects containing a <tt>Column</tt>
- * instance for each column in the row.   It is not part of the JSTL
- * API; it serves merely as a back-end to ResultSupport's static methods.
- * Thus, we scope its access to the package.
- *
- * @author Hans Bergsten
- * @author Justyna Horwat
- */
-
-class ResultImpl implements Result {
-    private List rowMap;
-    private List rowByIndex;
-    private String[] columnNames;
-    private boolean isLimited;
-
-    /**
-     * This constructor reads the ResultSet and saves a cached
-     * copy.
-     *
-     * @param rs an open <tt>ResultSet</tt>, positioned before the first
-     * row
-     * @param startRow, beginning row to be cached
-     * @param maxRows, query maximum rows limit
-     * @exception if a database error occurs
-     */
-    public ResultImpl(ResultSet rs, int startRow, int maxRows)
-        throws SQLException
-    {
-        rowMap = new ArrayList();
-        rowByIndex = new ArrayList();
-
-        ResultSetMetaData rsmd = rs.getMetaData();
-        int noOfColumns = rsmd.getColumnCount();
-
-        // Create the column name array
-        columnNames = new String[noOfColumns];
-        for (int i = 1; i <= noOfColumns; i++) {
-            columnNames[i-1] = rsmd.getColumnName(i);
-        }
-
-        // Throw away all rows upto startRow
-        for (int i = 0; i < startRow; i++) {
-            rs.next();
-        }
-
-        // Process the remaining rows upto maxRows
-        int processedRows = 0;
-        while (rs.next()) {
-            if ((maxRows != -1) && (processedRows == maxRows)) {
-                isLimited = true;
-                break;
-            }
-            Object[] columns = new Object[noOfColumns];
-            SortedMap columnMap =
-                new TreeMap(String.CASE_INSENSITIVE_ORDER);
-
-            // JDBC uses 1 as the lowest index!
-            for (int i = 1; i <= noOfColumns; i++) {
-                Object value =  rs.getObject(i);
-                if (rs.wasNull()) {
-                    value = null;
-                }
-                columns[i-1] = value;
-                columnMap.put(columnNames[i-1], value);
-            }
-            rowMap.add(columnMap);
-            rowByIndex.add(columns);
-            processedRows++;
-        }
-    }
-
-    /**
-     * Returns an array of SortedMap objects. The SortedMap
-     * object key is the ColumnName and the value is the ColumnValue.
-     * SortedMap was created using the CASE_INSENSITIVE_ORDER
-     * Comparator so the key is the case insensitive representation
-     * of the ColumnName.
-     *
-     * @return an array of Map, or null if there are no rows
-     */
-    public SortedMap[] getRows() {
-        if (rowMap == null) {
-            return null;
-        }
-
-        //should just be able to return SortedMap[] object
-        return (SortedMap []) rowMap.toArray(new SortedMap[0]);
-    }
-
-
-    /**
-     * Returns an array of Object[] objects. The first index
-     * designates the Row, the second the Column. The array
-     * stores the value at the specified row and column.
-     *
-     * @return an array of Object[], or null if there are no rows
-     */
-    public Object[][] getRowsByIndex() {
-        if (rowByIndex == null) {
-            return null;
-        }
-
-        //should just be able to return Object[][] object
-        return (Object [][])rowByIndex.toArray(new Object[0][0]);
-    }
-
-    /**
-     * Returns an array of String objects. The array represents
-     * the names of the columns arranged in the same order as in
-     * the getRowsByIndex() method.
-     *
-     * @return an array of String[]
-     */
-    public String[] getColumnNames() {
-        return columnNames;
-    }
-
-    /**
-     * Returns the number of rows in the cached ResultSet
-     *
-     * @return the number of cached rows, or -1 if the Result could
-     *    not be initialized due to SQLExceptions
-     */
-    public int getRowCount() {
-        if (rowMap == null) {
-            return -1;
-        }
-        return rowMap.size();
-    }
-
-    /**
-     * Returns true of the query was limited by a maximum row setting
-     *
-     * @return true if the query was limited by a MaxRows attribute
-     */
-    public boolean isLimitedByMaxRows() {
-        return isLimited;
-    }
-
-}
diff --git a/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/ResultSupport.java b/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/ResultSupport.java
deleted file mode 100644
index fdd9703..0000000
--- a/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/ResultSupport.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package javax.servlet.jsp.jstl.sql;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-/**
- * <p>This class represents the conversion of a ResultSet to
- * a Result object.</p>
- *
- *
- * @author Justyna Horwat
- *
- */
-public class ResultSupport {
-
-
-    /**
-     * Returns an array of Row objects.
-     *
-     * @param ResultSet the ResultSet object
-     *
-     * @return the <code>Result</code> object of the result
-     */
-    public static Result toResult(ResultSet rs) {
-        try {
-            return new ResultImpl(rs, -1, -1);
-        } catch (SQLException ex) {
-            return null;
-        }
-    }
-
-    /**
-     * Returns the Result object of the cached ResultSet limited by maxRows
-     *
-     * @param ResultSet the ResultSet object
-     * @param maxRows the maximum number of rows
-     *
-     * @return the <code>Result</code> object of the result limited by maxRows
-     */
-    public static Result toResult(ResultSet rs, int maxRows) {
-        try {
-            return new ResultImpl(rs, -1, maxRows);
-        } catch (SQLException ex) {
-            return null;
-        }
-    }
-
-}
diff --git a/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/SQLExecutionTag.java b/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/SQLExecutionTag.java
deleted file mode 100644
index 2cfd941..0000000
--- a/jelly-tags/sql/src/java/javax/servlet/jsp/jstl/sql/SQLExecutionTag.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package javax.servlet.jsp.jstl.sql;
-
-/**
- * <p>This interface allows tag handlers implementing it to receive
- * values for parameter markers ("?") in their SQL statements.</p>
- *
- * <p>This interface is implemented by both &lt;sql:query&gt; and
- * &lt;sql:update&gt;. Its <code>addSQLParameter()</code> method
- * is called by nested parameter actions (such as &lt;sql:param&gt;)
- * to substitue <code>PreparedStatement<code> parameter values for
- * "?" parameter markers in the SQL statement of the enclosing
- * <code>SQLExecutionTag</code> action.</p>
- *
- * <p>The given parameter values are converted to their corresponding
- * SQL type (following the rules in the JDBC specification) before
- * they are sent to the database.</p>
- *
- * <p>Keeing track of the index of the parameter values being added
- * is the responsibility of the tag handler implementing this
- * interface</p>
- *
- * <p>The <code>SQLExcecutionTag</code> interface is exposed in order
- * to support custom parameter actions which may retrieve their
- * parameters from any source and process them before substituting
- * them for a parameter marker in the sQL statement of the
- * enclosing <code>SQLExecutionTag</code> action</p>
- *
- * @author Justyna Horwat
- */
-public interface SQLExecutionTag {
-
-    /**
-     * Adds a PreparedStatement parameter value
-     *
-     * @param the PreparedStatement parameter value
-     */
-    public void addSQLParameter(Object value);
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DataSourceUtil.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DataSourceUtil.java
deleted file mode 100644
index 7893833..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DataSourceUtil.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.sql;
-
-import javax.sql.DataSource;
-import javax.naming.InitialContext;
-import javax.naming.Context;
-import javax.naming.NamingException;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.tags.Resources;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * <p>A simple <code>DataSource</code> utility for the standard
- * <code>DriverManager</code> class.
- *
- * TO DO: need to cache DataSource
- *
- * @author Justyna Horwat
- */
-public class DataSourceUtil {
-
-    private static final String ESCAPE = "\\";
-    private static final String TOKEN = ",";
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(DataSourceUtil.class);
-
-    /**
-     * If dataSource is a String first do JNDI lookup.
-     * If lookup fails parse String like it was a set of JDBC parameters
-     * Otherwise check to see if dataSource is a DataSource object and use as
-     * is
-     */
-    static DataSource getDataSource(Object rawDataSource, JellyContext pc)
-        throws JellyTagException {
-        DataSource dataSource = null;
-
-        if (rawDataSource == null) {
-            rawDataSource = pc.getVariable("org.apache.commons.jelly.sql.DataSource");
-        }
-
-        if (rawDataSource == null) {
-            return null;
-        }
-
-        /*
-        * If the 'dataSource' attribute's value resolves to a String
-        * after rtexpr/EL evaluation, use the string as JNDI path to
-        * a DataSource
-        */
-        if (rawDataSource instanceof String) {
-            try {
-                Context ctx = new InitialContext();
-                // relative to standard JNDI root for J2EE app
-                Context envCtx = (Context) ctx.lookup("java:comp/env");
-                dataSource = (DataSource) envCtx.lookup((String) rawDataSource);
-            }
-            catch (NamingException ex) {
-                dataSource = getDataSource((String) rawDataSource);
-            }
-        }
-        else if (rawDataSource instanceof DataSource) {
-            dataSource = (DataSource) rawDataSource;
-        }
-        else {
-            throw new JellyTagException(Resources.getMessage("SQL_DATASOURCE_INVALID_TYPE"));
-        }
-
-        return dataSource;
-    }
-
-    /**
-     * Parse JDBC parameters and setup dataSource appropriately
-     */
-    private static DataSource getDataSource(String params) throws JellyTagException {
-        DataSourceWrapper dataSource = new DataSourceWrapper();
-
-        String[] paramString = new String[4];
-        int escCount = 0;
-        int aryCount = 0;
-        int begin = 0;
-
-        for (int index = 0; index < params.length(); index++) {
-            char nextChar = params.charAt(index);
-            if (TOKEN.indexOf(nextChar) != -1) {
-                if (escCount == 0) {
-                    paramString[aryCount] = params.substring(begin, index);
-                    begin = index + 1;
-                    if (++aryCount > 4) {
-                        throw new JellyTagException(Resources.getMessage("JDBC_PARAM_COUNT"));
-                    }
-                }
-            }
-            if (ESCAPE.indexOf(nextChar) != -1) {
-                escCount++;
-            }
-            else {
-                escCount = 0;
-            }
-        }
-        paramString[aryCount] = params.substring(begin);
-
-        // use the JDBC URL from the parameter string
-        dataSource.setJdbcURL(paramString[0]);
-
-        // try to load a driver if it's present
-        if (paramString[1] != null) {
-            try {
-                dataSource.setDriverClassName(paramString[1]);
-            }
-            catch (Exception ex) {
-                throw new JellyTagException(
-                    Resources.getMessage("DRIVER_INVALID_CLASS", ex.getMessage()));
-            }
-        }
-
-        // set the username and password
-        dataSource.setUserName(paramString[2]);
-        dataSource.setPassword(paramString[3]);
-
-        return dataSource;
-    }
-
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DataSourceWrapper.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DataSourceWrapper.java
deleted file mode 100644
index f395e9b..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DataSourceWrapper.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.sql;
-
-import java.io.PrintWriter;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-
-import javax.sql.DataSource;
-
-import org.apache.commons.jelly.tags.Resources;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * <p>A simple <code>DataSource</code> wrapper for the standard
- * <code>DriverManager</code> class.
- *
- * @author Hans Bergsten
- */
-public class DataSourceWrapper implements DataSource {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(DataSourceWrapper.class);
-
-    private String driverClassName;
-    private String jdbcURL;
-    private String userName;
-    private String password;
-
-    public void setDriverClassName(String driverClassName)
-        throws ClassNotFoundException, InstantiationException, IllegalAccessException {
-
-        if (log.isDebugEnabled()) {
-            log.debug("Loading JDBC driver: [" + driverClassName + "]");
-        }
-
-        this.driverClassName = driverClassName;
-        ClassLoaderUtils.getClassLoader(getClass()).loadClass(driverClassName).newInstance();
-    }
-
-    public void setJdbcURL(String jdbcURL) {
-        this.jdbcURL = jdbcURL;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    /**
-     * Returns a Connection using the DriverManager and all
-     * set properties.
-     */
-    public Connection getConnection() throws SQLException {
-        Connection conn = null;
-        if (userName != null) {
-            if (log.isDebugEnabled()) {
-                log.debug(
-                    "Creating connection from url: " + jdbcURL + " userName: " + userName);
-            }
-
-            conn = DriverManager.getConnection(jdbcURL, userName, password);
-        }
-        else {
-            if (log.isDebugEnabled()) {
-                log.debug("Creating connection from url: " + jdbcURL);
-            }
-
-            conn = DriverManager.getConnection(jdbcURL);
-        }
-        if (log.isDebugEnabled()) {
-            log.debug(
-                "Created connection: " + conn );
-        }
-        return conn;
-    }
-
-    /**
-     * Always throws a SQLException. Username and password are set
-     * in the constructor and can not be changed.
-     */
-    public Connection getConnection(String username, String password)
-        throws SQLException {
-        throw new SQLException(Resources.getMessage("NOT_SUPPORTED"));
-    }
-
-    /**
-     * Always throws a SQLException. Not supported.
-     */
-    public int getLoginTimeout() throws SQLException {
-        throw new SQLException(Resources.getMessage("NOT_SUPPORTED"));
-    }
-
-    /**
-     * Always throws a SQLException. Not supported.
-     */
-    public PrintWriter getLogWriter() throws SQLException {
-        throw new SQLException(Resources.getMessage("NOT_SUPPORTED"));
-    }
-
-    /**
-     * Always throws a SQLException. Not supported.
-     */
-    public void setLoginTimeout(int seconds) throws SQLException {
-        throw new SQLException(Resources.getMessage("NOT_SUPPORTED"));
-    }
-
-    /**
-     * Always throws a SQLException. Not supported.
-     */
-    public synchronized void setLogWriter(PrintWriter out) throws SQLException {
-        throw new SQLException(Resources.getMessage("NOT_SUPPORTED"));
-    }
-
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DateParamTag.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DateParamTag.java
deleted file mode 100644
index efff996..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DateParamTag.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.sql;
-
-import java.sql.Date;
-
-import javax.servlet.jsp.jstl.sql.SQLExecutionTag;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.Resources;
-
-/**
- * <p>Tag handler for &lt;Param&gt; in JSTL, used to set
- * parameter values for a SQL statement.</p>
- *
- * @author Justyna Horwat
- */
-
-public class DateParamTag extends TagSupport {
-
-    //*********************************************************************
-    // Private constants
-
-    private static final String TIMESTAMP_TYPE = "timestamp";
-    private static final String TIME_TYPE = "time";
-    private static final String DATE_TYPE = "date";
-
-    //*********************************************************************
-    // Protected state
-
-    protected String type;
-    protected java.util.Date value;
-
-    //*********************************************************************
-    // Constructor
-
-    public DateParamTag() {
-    }
-
-    //*********************************************************************
-    // Properties
-
-    public void setValue(Date value) {
-        this.value = value;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    //*********************************************************************
-    // Tag logic
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-        SQLExecutionTag parent =
-            (SQLExecutionTag) findAncestorWithClass(this, SQLExecutionTag.class);
-        if (parent == null) {
-            throw new JellyTagException(Resources.getMessage("SQL_PARAM_OUTSIDE_PARENT"));
-        }
-
-        if (value != null) {
-            convertValue();
-        }
-
-        parent.addSQLParameter(value);
-    }
-
-    //*********************************************************************
-    // Private utility methods
-
-    private void convertValue() throws JellyTagException {
-
-        if ((type == null) || (type.equalsIgnoreCase(TIMESTAMP_TYPE))) {
-            if (!(value instanceof java.sql.Timestamp)) {
-                value = new java.sql.Timestamp(value.getTime());
-            }
-        }
-        else if (type.equalsIgnoreCase(TIME_TYPE)) {
-            if (!(value instanceof java.sql.Time)) {
-                value = new java.sql.Time(value.getTime());
-            }
-        }
-        else if (type.equalsIgnoreCase(DATE_TYPE)) {
-            if (!(value instanceof java.sql.Date)) {
-                value = new java.sql.Date(value.getTime());
-            }
-        }
-        else {
-            throw new JellyTagException(
-                Resources.getMessage("SQL_DATE_PARAM_INVALID_TYPE", type));
-        }
-    }
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DriverTag.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DriverTag.java
deleted file mode 100644
index 9b4b667..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DriverTag.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.sql;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * <p>Tag handler for &lt;Driver&gt; in JSTL, used to create
- * a simple DataSource for prototyping.</p>
- *
- * @author Hans Bergsten
- */
-public class DriverTag extends TagSupport {
-    private static final String DRIVER_CLASS_NAME =
-        "javax.servlet.jsp.jstl.sql.driver";
-    private static final String JDBC_URL = "javax.servlet.jsp.jstl.sql.jdbcURL";
-    private static final String USER_NAME = "javax.servlet.jsp.jstl.sql.userName";
-    private static final String PASSWORD = "javax.servlet.jsp.jstl.sql.password";
-
-    private String driverClassName;
-    private String jdbcURL;
-    private String scope = "page";
-    private String userName;
-    private String var;
-
-    //*********************************************************************
-    // Accessor methods
-
-    public void setDriver(String driverClassName) {
-        this.driverClassName = driverClassName;
-    }
-
-    public void setJdbcURL(String jdbcURL) {
-        this.jdbcURL = jdbcURL;
-    }
-
-    /**
-     * Sets the scope of the variable to hold the
-     * result.
-     *
-     */
-    public void setScope(String scopeName) {
-        this.scope = scopeName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    //*********************************************************************
-    // Tag logic
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-        DataSourceWrapper ds = new DataSourceWrapper();
-        try {
-            ds.setDriverClassName(getDriverClassName());
-        }
-        catch (Exception e) {
-            throw new JellyTagException("Invalid driver class name: " + e.getMessage());
-        }
-        ds.setJdbcURL(getJdbcURL());
-        ds.setUserName(getUserName());
-        ds.setPassword(getPassword());
-        context.setVariable(var, ds);
-    }
-
-    //*********************************************************************
-    // Private utility methods
-
-    private String getDriverClassName() {
-        if (driverClassName != null) {
-            return driverClassName;
-        }
-        return getInitParameter(DRIVER_CLASS_NAME);
-    }
-
-    private String getJdbcURL() {
-        if (jdbcURL != null) {
-            return jdbcURL;
-        }
-        return getInitParameter(JDBC_URL);
-    }
-
-    private String getUserName() {
-        if (userName != null) {
-            return userName;
-        }
-        return getInitParameter(USER_NAME);
-    }
-
-    private String getPassword() {
-        return getInitParameter(PASSWORD);
-    }
-
-    protected String getInitParameter(String key) {
-        return "";
-    }
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/ParamTag.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/ParamTag.java
deleted file mode 100644
index d53ecbd..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/ParamTag.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.sql;
-
-import javax.servlet.jsp.jstl.sql.SQLExecutionTag;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.Resources;
-
-/**
- * <p>Tag handler for &lt;Param&gt; in JSTL, used to set
- * parameter values for a SQL statement.</p>
- *
- * @author Hans Bergsten
- */
-
-public class ParamTag extends TagSupport {
-    protected Object value;
-
-
-    public void setValue(Object value) {
-        this.value = value;
-    }
-
-    //*********************************************************************
-    // Tag logic
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-        SQLExecutionTag parent =
-            (SQLExecutionTag) findAncestorWithClass(this, SQLExecutionTag.class);
-        if (parent == null) {
-            throw new JellyTagException(Resources.getMessage("SQL_PARAM_OUTSIDE_PARENT"));
-        }
-
-        Object paramValue = value;
-        if (value != null) {
-            paramValue = value;
-        }
-        else {
-            String bodyContent = getBodyText();
-            if (bodyContent != null) {
-                bodyContent = bodyContent.trim();
-                if (bodyContent.length() > 0) {
-                    paramValue = bodyContent;
-                }
-            }
-        }
-
-        parent.addSQLParameter(paramValue);
-    }
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/QueryTag.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/QueryTag.java
deleted file mode 100644
index 3bd1c9a..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/QueryTag.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.sql;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import javax.servlet.jsp.jstl.sql.Result;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.Resources;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/**
- * <p>Tag handler for &lt;Query&gt; in JSTL.
- *
- * @author Hans Bergsten
- * @author Justyna Horwat
- */
-
-public class QueryTag extends SqlTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(QueryTag.class);
-
-    /*
-     * The following properties take expression values, so the
-     * setter methods are implemented by the expression type
-     * specific subclasses.
-     */
-    protected int maxRows = -1;
-    protected boolean maxRowsSpecified;
-    protected int startRow;
-
-    /*
-     * Instance variables that are not for attributes
-     */
-    private Connection conn;
-
-    //*********************************************************************
-    // Constructor and initialization
-
-    public QueryTag() {
-    }
-
-    //*********************************************************************
-    // Accessor methods
-
-    /**
-     * The index of the first row returned can be
-     * specified using startRow.
-     */
-    public void setStartRow(int startRow) {
-        this.startRow = startRow;
-    }
-
-    /**
-     * Query result can be limited by specifying
-     * the maximum number of rows returned.
-     */
-    public void setMaxRows(int maxRows) {
-        this.maxRows = maxRows;
-        this.maxRowsSpecified = true;
-    }
-
-    //*********************************************************************
-    // Tag logic
-
-    /**
-     * <p>Execute the SQL statement, set either through the <code>sql</code>
-     * attribute or as the body, and save the result as a variable
-     * named by the <code>var</code> attribute in the scope specified
-     * by the <code>scope</code> attribute, as an object that implements
-     * the Result interface.
-     *
-     * <p>The connection used to execute the statement comes either
-     * from the <code>DataSource</code> specified by the
-     * <code>dataSource</code> attribute, provided by a parent action
-     * element, or is retrieved from a JSP scope  attribute
-     * named <code>javax.servlet.jstl.sql.dataSource</code>.
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        if (!maxRowsSpecified) {
-            Object obj = context.getVariable("org.apache.commons.jelly.sql.maxRows");
-            if (obj != null) {
-                if (obj instanceof Integer) {
-                    maxRows = ((Integer) obj).intValue();
-                }
-                else if (obj instanceof String) {
-                    try {
-                        maxRows = Integer.parseInt((String) obj);
-                    }
-                    catch (NumberFormatException nfe) {
-                        throw new JellyTagException(
-                            Resources.getMessage("SQL_MAXROWS_PARSE_ERROR", (String) obj),
-                            nfe);
-                    }
-                }
-                else {
-                    throw new JellyTagException(Resources.getMessage("SQL_MAXROWS_INVALID"));
-                }
-            }
-        }
-
-        Result result = null;
-        String sqlStatement = null;
-
-        log.debug( "About to lookup connection" );
-
-        ResultSet rs = null;
-        Statement statement = null;
-        try {
-            conn = getConnection();
-
-            /*
-             * Use the SQL statement specified by the sql attribute, if any,
-             * otherwise use the body as the statement.
-             */
-            if (sql != null) {
-                sqlStatement = sql;
-            }
-            else {
-                sqlStatement = getBodyText();
-            }
-            if (sqlStatement == null || sqlStatement.trim().length() == 0) {
-                throw new JellyTagException(Resources.getMessage("SQL_NO_STATEMENT"));
-            }
-            /*
-             * We shouldn't have a negative startRow or illegal maxrows
-             */
-            if ((startRow < 0) || (maxRows < -1)) {
-                throw new JellyTagException(Resources.getMessage("PARAM_BAD_VALUE"));
-            }
-
-            /*
-             * Note! We must not use the setMaxRows() method on the
-             * the statement to limit the number of rows, since the
-             * Result factory must be able to figure out the correct
-             * value for isLimitedByMaxRows(); there's no way to check
-             * if it was from the ResultSet.
-             */
-            if ( log.isDebugEnabled() ) {
-                log.debug( "About to execute query: " + sqlStatement );
-            }
-
-            if ( hasParameters() ) {
-                PreparedStatement ps = conn.prepareStatement(sqlStatement);
-                statement = ps;
-                setParameters(ps);
-                rs = ps.executeQuery();
-            }
-            else {
-                statement = conn.createStatement();
-                rs = statement.executeQuery(sqlStatement);
-            }
-
-            result = new ResultImpl(rs, startRow, maxRows);
-            context.setVariable(var, result);
-
-            // always close the result set first since it may be closed by
-            // JDBC 3 when closing statements
-
-            // lets nullify before we close in case we get exceptions
-            // while closing, we don't want to try to close again
-            ResultSet tempRs = rs;
-            rs = null;
-            tempRs.close();
-            Statement tempStatement = statement;
-            statement = null;
-            tempStatement.close();
-        }
-        catch (SQLException e) {
-            throw new JellyTagException(sqlStatement + ": " + e.getMessage(), e);
-        }
-        finally {
-            if (rs != null) {
-                try {
-                    rs.close();
-                }
-                catch (SQLException e) {
-                    log.error("Caught exception while closing result set: " + e, e);
-                }
-            }
-            if (statement != null) {
-                try {
-                    statement.close();
-                }
-                catch (SQLException e) {
-                    log.error("Caught exception while closing statement: " + e, e);
-                }
-            }
-            if (conn != null && !isPartOfTransaction) {
-                try {
-                    conn.close();
-                }
-                catch (SQLException e) {
-                    log.error("Caught exception while closing connection: " + e, e);
-                }
-                conn = null;
-            }
-            clearParameters();
-        }
-    }
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/ResultImpl.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/ResultImpl.java
deleted file mode 100644
index 503b7d4..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/ResultImpl.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.sql;
-
-import java.sql.*;
-import java.util.*;
-import javax.servlet.jsp.jstl.sql.Result;
-
-/**
- * <p>This class creates a cached version of a <tt>ResultSet</tt>.
- * It's represented as a <tt>Result</tt> implementation, capable of
- * returing an array of <tt>Row</tt> objects containing a <tt>Column</tt>
- * instance for each column in the row.</p>
- *
- * <p>Note -- this is a private copy for the RI to avoid making the
- * corresponding class in javax.servlet.* public.</p>
- *
- * @author Hans Bergsten
- * @author Justyna Horwat
- */
-
-public class ResultImpl implements Result {
-    private List rowMap;
-    private List rowByIndex;
-    private String[] columnNames;
-    private boolean isLimited;
-
-    /**
-     * This constructor reads the ResultSet and saves a cached
-     * copy.
-     *
-     * @param rs an open <tt>ResultSet</tt>, positioned before the first
-     * row
-     * @param startRow, beginning row to be cached
-     * @param maxRows, query maximum rows limit
-     * @exception if a database error occurs
-     */
-    public ResultImpl(ResultSet rs, int startRow, int maxRows)
-        throws SQLException {
-
-        rowMap = new ArrayList();
-        rowByIndex = new ArrayList();
-
-        ResultSetMetaData rsmd = rs.getMetaData();
-        int noOfColumns = rsmd.getColumnCount();
-
-        // Create the column name array
-        columnNames = new String[noOfColumns];
-        for (int i = 1; i <= noOfColumns; i++) {
-            columnNames[i-1] = rsmd.getColumnName(i);
-        }
-
-        // Throw away all rows upto startRow
-        for (int i = 0; i < startRow; i++) {
-            rs.next();
-        }
-
-        // Process the remaining rows upto maxRows
-        int processedRows = 0;
-        while (rs.next()) {
-            if ((maxRows != -1) && (processedRows == maxRows)) {
-                isLimited = true;
-                break;
-            }
-            Object[] columns = new Object[noOfColumns];
-            SortedMap columnMap =
-                new TreeMap(String.CASE_INSENSITIVE_ORDER);
-
-            // JDBC uses 1 as the lowest index!
-            for (int i = 1; i <= noOfColumns; i++) {
-                Object value =  rs.getObject(i);
-                if (rs.wasNull()) {
-                    value = null;
-                }
-                columns[i-1] = value;
-                columnMap.put(columnNames[i-1], value);
-            }
-            rowMap.add(columnMap);
-            rowByIndex.add(columns);
-            processedRows++;
-        }
-    }
-
-    /**
-     * This constructor is given a List of Maps where each Map represents a Row of data.
-     * This constructor is typically used to create a Mock Object representing a result set.
-     *
-     * @param listOfMaps is a list of Maps where a Map represents a Row keyed by the column name
-     */
-    public ResultImpl(List listOfMaps) {
-
-        rowMap = new ArrayList();
-        rowByIndex = new ArrayList();
-        isLimited = false;
-
-        // lets build up a Set of all the unique column names
-        HashSet keySet = new HashSet();
-        for (Iterator iter = listOfMaps.iterator(); iter.hasNext(); ) {
-            Map row = (Map) iter.next();
-            keySet.addAll( row.keySet() );
-        }
-
-        // Create the column name array
-        int noOfColumns = keySet.size();
-        columnNames = new String[noOfColumns];
-        int i = 0;
-        for (Iterator iter = keySet.iterator(); iter.hasNext(); i++ ) {
-            columnNames[i] = (String) iter.next();
-        }
-
-        // Now add each row to the result set
-        for (Iterator iter = listOfMaps.iterator(); iter.hasNext(); ) {
-            Map row = (Map) iter.next();
-
-            Object[] columns = new Object[noOfColumns];
-            SortedMap columnMap =
-                new TreeMap(String.CASE_INSENSITIVE_ORDER);
-
-            for (i = 0; i < noOfColumns; i++) {
-                String columnName = columnNames[i];
-                Object value = row.get(columnName);
-                columns[i] = value;
-                columnMap.put(columnName, value);
-            }
-            rowMap.add(columnMap);
-            rowByIndex.add(columns);
-        }
-    }
-
-    /**
-     * Returns an array of SortedMap objects. The SortedMap
-     * object key is the ColumnName and the value is the ColumnValue.
-     * SortedMap was created using the CASE_INSENSITIVE_ORDER
-     * Comparator so the key is the case insensitive representation
-     * of the ColumnName.
-     *
-     * @return an array of Map, or null if there are no rows
-     */
-    public SortedMap[] getRows() {
-        if (rowMap == null) {
-            return null;
-        }
-
-        //should just be able to return SortedMap[] object
-        return (SortedMap []) rowMap.toArray(new SortedMap[0]);
-    }
-
-
-    /**
-     * Returns an array of Object[] objects. The first index
-     * designates the Row, the second the Column. The array
-     * stores the value at the specified row and column.
-     *
-     * @return an array of Object[], or null if there are no rows
-     */
-    public Object[][] getRowsByIndex() {
-        if (rowByIndex == null) {
-            return null;
-        }
-
-        //should just be able to return Object[][] object
-        return (Object [][])rowByIndex.toArray(new Object[0][0]);
-    }
-
-    /**
-     * Returns an array of String objects. The array represents
-     * the names of the columns arranged in the same order as in
-     * the getRowsByIndex() method.
-     *
-     * @return an array of String[]
-     */
-    public String[] getColumnNames() {
-        return columnNames;
-    }
-
-    /**
-     * Returns the number of rows in the cached ResultSet
-     *
-     * @return the number of cached rows, or -1 if the Result could
-     *    not be initialized due to SQLExceptions
-     */
-    public int getRowCount() {
-        if (rowMap == null) {
-            return -1;
-        }
-        return rowMap.size();
-    }
-
-    /**
-     * Returns true of the query was limited by a maximum row setting
-     *
-     * @return true if the query was limited by a MaxRows attribute
-     */
-    public boolean isLimitedByMaxRows() {
-        return isLimited;
-    }
-
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/ResultSetTag.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/ResultSetTag.java
deleted file mode 100644
index 284d204..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/ResultSetTag.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.sql;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * This Tag creates a result set object based on its body content via child row tags.
- * This tag is useful for unit testing with Mock Tags to simulate the results returned by databases.
- *
- */
-public class ResultSetTag extends TagSupport {
-
-    private List rows;
-    private String var;
-
-    /**
-     * Adds the given row to the list of rows
-     */
-    public void addRow(Map row) {
-        rows.add(row);
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (var == null) {
-            throw new MissingAttributeException( "var" );
-        }
-        rows = new ArrayList();
-        invokeBody(output);
-
-        // now lets create a new Result implementation
-        ResultImpl results = new ResultImpl( rows );
-        context.setVariable(var, results);
-        rows = null;
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * Sets the variable to export the result set to.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/RowTag.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/RowTag.java
deleted file mode 100644
index 81f18e0..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/RowTag.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.sql;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MapTagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Adds a new row to a parent &lt;resultSet&gt; Tag.
- * This tag is useful for unit testing with Mock Tags to simulate the results returned by databases.
- *
- */
-public class RowTag extends MapTagSupport {
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        ResultSetTag tag = (ResultSetTag) findAncestorWithClass( ResultSetTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException( "This tag must be nested with in a <resultSet> tag" );
-        }
-        tag.addRow( getAttributes() );
-    }
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/SetDataSourceTag.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/SetDataSourceTag.java
deleted file mode 100644
index 4b47cf4..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/SetDataSourceTag.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.sql;
-
-import javax.sql.DataSource;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.Resources;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * <p>Tag handler for &lt;SetDataSource&gt; in JSTL, used to create
- * a simple DataSource for prototyping.</p>
- *
- * @author Hans Bergsten
- * @author Justyna Horwat
- */
-public class SetDataSourceTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(SetDataSourceTag.class);
-
-    protected Object dataSource;
-    protected boolean dataSourceSpecified;
-    protected String jdbcURL;
-    protected String driverClassName;
-    protected String userName;
-    protected String password;
-
-    private String scope = "page";
-    private String var;
-
-    //*********************************************************************
-    // Constructor and initialization
-
-    public SetDataSourceTag() {
-    }
-
-    //*********************************************************************
-    // Accessor methods
-
-    /**
-     * Sets the scope of the variable to hold the
-     * result.
-     *
-     */
-    public void setScope(String scope) {
-        this.scope = scope;
-    }
-
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    public void setDataSource(Object dataSource) {
-        this.dataSource = dataSource;
-        this.dataSourceSpecified = true;
-    }
-
-    public void setDriver(String driverClassName) {
-        this.driverClassName = driverClassName;
-    }
-
-    public void setUrl(String jdbcURL) {
-        this.jdbcURL = jdbcURL;
-    }
-
-    public void setUser(String userName) {
-        this.userName = userName;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    //*********************************************************************
-    // Tag logic
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-        DataSource ds = null;
-
-        if (dataSource != null) {
-            ds = DataSourceUtil.getDataSource(dataSource, context);
-        }
-        else {
-            if (dataSourceSpecified) {
-                throw new JellyTagException(Resources.getMessage("SQL_DATASOURCE_NULL"));
-            }
-
-            DataSourceWrapper dsw = new DataSourceWrapper();
-            try {
-                // set driver class iff provided by the tag
-                if (driverClassName != null) {
-                    dsw.setDriverClassName(driverClassName);
-                }
-            }
-            catch (Exception e) {
-                log.error( "Could not load driver class: " + e, e );
-                throw new JellyTagException(
-                    Resources.getMessage("DRIVER_INVALID_CLASS", e.getMessage()));
-            }
-            dsw.setJdbcURL(jdbcURL);
-            dsw.setUserName(userName);
-            dsw.setPassword(password);
-            ds = (DataSource) dsw;
-        }
-
-        if (var != null) {
-            context.setVariable(var, ds);
-        }
-        else {
-            context.setVariable("org.apache.commons.jelly.sql.DataSource", ds);
-        }
-    }
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/SqlTagLibrary.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/SqlTagLibrary.java
deleted file mode 100644
index ac2f93a..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/SqlTagLibrary.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.sql;
-
-import org.apache.commons.jelly.tags.core.CoreTagLibrary;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-
-public class SqlTagLibrary extends CoreTagLibrary {
-
-    public SqlTagLibrary() {
-        registerTag("driver", DriverTag.class);
-        registerTag("param", ParamTag.class);
-        registerTag("query", QueryTag.class);
-        registerTag("setDataSource", SetDataSourceTag.class);
-        registerTag("transaction", TransactionTag.class);
-        registerTag("update", UpdateTag.class);
-
-        // extension tags for Mock Tags support
-        registerTag("resultSet", ResultSetTag.class);
-        registerTag("row", RowTag.class);
-    }
-
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/SqlTagSupport.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/SqlTagSupport.java
deleted file mode 100644
index 818f06a..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/SqlTagSupport.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.sql;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.jsp.jstl.sql.SQLExecutionTag;
-import javax.sql.DataSource;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.tags.Resources;
-
-/**
- * <p>Abstract base class for any SQL related tag in JSTL.
- *
- * @author Hans Bergsten
- * @author Justyna Horwat
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- */
-
-public abstract class SqlTagSupport extends TagSupport implements SQLExecutionTag {
-
-    protected String var;
-    protected String scope = "page";
-
-    /*
-     * The following properties take expression values, so the
-     * setter methods are implemented by the expression type
-     * specific subclasses.
-     */
-    protected Object rawDataSource;
-    protected boolean dataSourceSpecified;
-    protected String sql;
-
-    /*
-     * Instance variables that are not for attributes
-     */
-    private List parameters;
-    protected boolean isPartOfTransaction;
-
-    //*********************************************************************
-    // Constructor and initialization
-
-    public SqlTagSupport() {
-		super.setEscapeText(false);
-    }
-
-    //*********************************************************************
-    // Accessor methods
-
-    /**
-     * Sets the name of the variable to hold the
-     * result.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Sets the scope of the variable to hold the
-     * result.
-     */
-    public void setScope(String scopeName) {
-        this.scope = scopeName;
-    }
-
-    /**
-     * Sets the SQL DataSource. DataSource can be
-     * a String or a DataSource object.
-     */
-    public void setDataSource(Object dataSource) {
-        this.rawDataSource = dataSource;
-        this.dataSourceSpecified = true;
-    }
-
-    /**
-     * Sets the SQL statement to use for the
-     * query. The statement may contain parameter markers
-     * (question marks, ?). If so, the parameter values must
-     * be set using nested value elements.
-     */
-    public void setSql(String sql) {
-        this.sql = sql;
-    }
-
-
-    //*********************************************************************
-    // Public utility methods
-
-    /**
-     * Called by nested parameter elements to add PreparedStatement
-     * parameter values.
-     */
-    public void addSQLParameter(Object o) {
-        if (parameters == null) {
-            parameters = new ArrayList();
-        }
-        parameters.add(o);
-    }
-
-    //*********************************************************************
-    // Protected utility methods
-
-    /**
-     * @return true if there are SQL parameters
-     */
-    protected boolean hasParameters() {
-        return parameters != null && parameters.size() > 0;
-    }
-
-    protected void clearParameters() {
-        parameters = null;
-    }
-
-    protected Connection getConnection() throws JellyTagException, SQLException {
-        // Fix: Add all other mechanisms
-        Connection conn = null;
-        isPartOfTransaction = false;
-
-        TransactionTag parent =
-            (TransactionTag) findAncestorWithClass(TransactionTag.class);
-        if (parent != null) {
-            if (dataSourceSpecified) {
-                throw new JellyTagException(Resources.getMessage("ERROR_NESTED_DATASOURCE"));
-            }
-            conn = parent.getSharedConnection();
-            isPartOfTransaction = true;
-        }
-        else {
-            if ((rawDataSource == null) && dataSourceSpecified) {
-                throw new JellyTagException(Resources.getMessage("SQL_DATASOURCE_NULL"));
-            }
-            DataSource dataSource = DataSourceUtil.getDataSource(rawDataSource, context);
-            try {
-                conn = dataSource.getConnection();
-            }
-            catch (Exception ex) {
-                throw new JellyTagException(
-                    Resources.getMessage("DATASOURCE_INVALID", ex.getMessage()));
-            }
-        }
-
-        return conn;
-    }
-
-    protected void setParameters(PreparedStatement ps)
-        throws SQLException {
-        if (parameters != null) {
-            for (int i = 0; i < parameters.size(); i++) {
-                // The first parameter has index 1
-                ps.setObject(i + 1, parameters.get(i));
-            }
-        }
-    }
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/TransactionTag.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/TransactionTag.java
deleted file mode 100644
index eb589ae..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/TransactionTag.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.sql;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-
-import javax.sql.DataSource;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.Resources;
-
-/**
- * <p>Tag handler for &lt;Transaction&gt; in JSTL.
- *
- * @author Hans Bergsten
- */
-
-public class TransactionTag extends TagSupport {
-
-    //*********************************************************************
-    // Private constants
-
-    private static final String TRANSACTION_READ_COMMITTED = "read_committed";
-    private static final String TRANSACTION_READ_UNCOMMITTED = "read_uncommitted";
-    private static final String TRANSACTION_REPEATABLE_READ = "repeatable_read";
-    private static final String TRANSACTION_SERIALIZABLE = "serializable";
-
-    //*********************************************************************
-    // Protected state
-
-    protected Object rawDataSource;
-    protected boolean dataSourceSpecified;
-
-    //*********************************************************************
-    // Private state
-
-    private Connection conn;
-    private int isolation = Connection.TRANSACTION_NONE;
-    private int origIsolation;
-
-    //*********************************************************************
-    // Constructor and initialization
-
-    public TransactionTag() {
-    }
-
-    /**
-     * Sets the SQL DataSource. DataSource can be
-     * a String or a DataSource object.
-     */
-    public void setDataSource(Object dataSource) {
-        this.rawDataSource = dataSource;
-        this.dataSourceSpecified = true;
-    }
-
-
-    //*********************************************************************
-    // Tag logic
-
-    /**
-     * Prepares for execution by setting the initial state, such as
-     * getting the <code>Connection</code> and preparing it for
-     * the transaction.
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        if ((rawDataSource == null) && dataSourceSpecified) {
-            throw new JellyTagException(Resources.getMessage("SQL_DATASOURCE_NULL"));
-        }
-
-        DataSource dataSource = DataSourceUtil.getDataSource(rawDataSource, context);
-
-        try {
-            conn = dataSource.getConnection();
-            origIsolation = conn.getTransactionIsolation();
-            if (origIsolation == Connection.TRANSACTION_NONE) {
-                throw new JellyTagException(Resources.getMessage("TRANSACTION_NO_SUPPORT"));
-            }
-            if ((isolation != Connection.TRANSACTION_NONE)
-                && (isolation != origIsolation)) {
-                conn.setTransactionIsolation(isolation);
-            }
-            conn.setAutoCommit(false);
-        }
-        catch (SQLException e) {
-            throw new JellyTagException(
-                Resources.getMessage("ERROR_GET_CONNECTION", e.getMessage()));
-        }
-
-        boolean finished = false;
-        try {
-            invokeBody(output);
-            finished = true;
-        }
-        catch (Exception e) {
-            if (conn != null) {
-                try {
-                    conn.rollback();
-                }
-                catch (SQLException s) {
-                    // Ignore to not hide orignal exception
-                }
-                doFinally();
-            }
-            throw new JellyTagException(e);
-        }
-
-        // lets commit
-        try {
-            conn.commit();
-        }
-        catch (SQLException e) {
-            throw new JellyTagException(
-                Resources.getMessage("TRANSACTION_COMMIT_ERROR", e.getMessage()));
-        }
-        finally {
-            doFinally();
-        }
-    }
-
-    //*********************************************************************
-    // Public utility methods
-
-    /**
-     * Sets the transaction isolation level.
-     */
-    public void setIsolation(String iso) throws JellyTagException {
-
-        if (TRANSACTION_READ_COMMITTED.equals(iso)) {
-            isolation = Connection.TRANSACTION_READ_COMMITTED;
-        }
-        else if (TRANSACTION_READ_UNCOMMITTED.equals(iso)) {
-            isolation = Connection.TRANSACTION_READ_UNCOMMITTED;
-        }
-        else if (TRANSACTION_REPEATABLE_READ.equals(iso)) {
-            isolation = Connection.TRANSACTION_REPEATABLE_READ;
-        }
-        else if (TRANSACTION_SERIALIZABLE.equals(iso)) {
-            isolation = Connection.TRANSACTION_SERIALIZABLE;
-        }
-        else {
-            throw new JellyTagException(Resources.getMessage("TRANSACTION_INVALID_ISOLATION"));
-        }
-    }
-
-    /**
-     * Called by nested parameter elements to get a reference to
-     * the Connection.
-     */
-    public Connection getSharedConnection() {
-        return conn;
-    }
-
-    //*********************************************************************
-    // Implementation methods methods
-
-    /**
-     * Restores the <code>Connection</code> to its initial state and
-     * closes it.
-     */
-    protected void doFinally() {
-        if (conn != null) {
-            try {
-                if ((isolation != Connection.TRANSACTION_NONE)
-                    && (isolation != origIsolation)) {
-                    conn.setTransactionIsolation(origIsolation);
-                }
-                conn.setAutoCommit(true);
-                conn.close();
-            }
-            catch (SQLException e) {
-                // Not much we can do
-            }
-        }
-        conn = null;
-    }
-
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/UpdateTag.java b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/UpdateTag.java
deleted file mode 100644
index 2d2bdce..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/UpdateTag.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.sql;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.Resources;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * <p>Tag handler for &lt;Update&gt; in JSTL.
- *
- * @author Hans Bergsten
- * @author Justyna Horwat
- */
-
-public class UpdateTag extends SqlTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(UpdateTag.class);
-
-    /*
-     * Instance variables that are not for attributes
-     */
-    private Connection conn;
-
-    //*********************************************************************
-    // Constructor and initialization
-
-    public UpdateTag() {
-    }
-
-    //*********************************************************************
-    // Tag logic
-
-    /**
-     * <p>Execute the SQL statement, set either through the <code>sql</code>
-     * attribute or as the body, and save the result as a variable
-     * named by the <code>var</code> attribute in the scope specified
-     * by the <code>scope</code> attribute, as an object that implements
-     * the Result interface.
-     *
-     * <p>The connection used to execute the statement comes either
-     * from the <code>DataSource</code> specified by the
-     * <code>dataSource</code> attribute, provided by a parent action
-     * element, or is retrieved from a JSP scope  attribute
-     * named <code>javax.servlet.jsp.jstl.sql.dataSource</code>.
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        try {
-            conn = getConnection();
-        }
-        catch (SQLException e) {
-            throw new JellyTagException(sql + ": " + e.getMessage(), e);
-        }
-
-        /*
-         * Use the SQL statement specified by the sql attribute, if any,
-         * otherwise use the body as the statement.
-         */
-        String sqlStatement = null;
-        if (sql != null) {
-            sqlStatement = sql;
-        }
-        else {
-            sqlStatement = getBodyText();
-        }
-        if (sqlStatement == null || sqlStatement.trim().length() == 0) {
-            throw new JellyTagException(Resources.getMessage("SQL_NO_STATEMENT"));
-        }
-
-        Statement statement = null;
-        int result = 0;
-        try {
-            if ( hasParameters() ) {
-                PreparedStatement ps = conn.prepareStatement(sqlStatement);
-                statement = ps;
-                setParameters(ps);
-                result = ps.executeUpdate();
-            }
-            else {
-                statement = conn.createStatement();
-                result = statement.executeUpdate(sqlStatement);
-            }
-            if (var != null) {
-                context.setVariable(var, new Integer(result));
-            }
-
-            // lets nullify before we close in case we get exceptions
-            // while closing, we don't want to try to close again
-            Statement tempStatement = statement;
-            statement = null;
-            tempStatement.close();
-        }
-        catch (SQLException e) {
-            throw new JellyTagException(sqlStatement + ": " + e.getMessage(), e);
-        }
-        finally {
-            if (statement != null) {
-                try {
-                    statement.close();
-                }
-                catch (SQLException e) {
-                    log.error("Caught exception while closing statement: " + e, e);
-                }
-            }
-            if (conn != null && !isPartOfTransaction) {
-                try {
-                    conn.close();
-                }
-                catch (SQLException e) {
-                    log.error("Caught exception while closing connection: " + e, e);
-                }
-            }
-            clearParameters();
-        }
-    }
-}
diff --git a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/package.html b/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/package.html
deleted file mode 100644
index 7cc6e24..0000000
--- a/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
-  <p>The SQL Tags from the JSTL
-  </p>
-  
-  <p>There are some examples of these tags in action 
-  <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/">here</a>
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/TestJUnit.java b/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/TestJUnit.java
deleted file mode 100644
index f3a9319..0000000
--- a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/TestJUnit.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.sql;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class TestJUnit extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJUnit.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/example.jelly b/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/example.jelly
deleted file mode 100644
index 036a466..0000000
--- a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/example.jelly
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core" xmlns:sql="jelly:sql">
-
-  <sql:setDataSource 
-    url="${databaseUrl}" 
-    driver="${databaseDriver}" 
-    user="${databaseUser}"
-    password="${databasePassword}"/>
-
-  <sql:query var="results">
-      select * from ${databaseTable}
-  </sql:query>
-
-  <dataSet>
-
-    <j:forEach items="${results.rowsByIndex}" var="row">
-      <row>
-        <j:forEach var="columnName" items="${results.columnNames}" indexVar="i">
-          <field column="${columnName}">${row[i]}</field>                                
-        </j:forEach>
-      </row>
-    </j:forEach>                  
-
-  </dataSet>
-
-</j:jelly>
-
-
diff --git a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/example2.jelly b/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/example2.jelly
deleted file mode 100644
index 8b569d7..0000000
--- a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/example2.jelly
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core" xmlns:sql="jelly:sql">
-
-  <sql:setDataSource 
-      var="db"
-    url="${databaseUrl}" 
-    driver="${databaseDriver}" 
-    user="${databaseUser}"
-    password="${databasePassword}"/>
-
-  <sql:query var="results" dataSource="${db}">
-      select * from ${databaseTable}
-  </sql:query>
-
-  <dataSet>
-
-    <j:forEach var="columnName" items="${results.columnNames}" indexVar="i">
-      <column>${columnName}</column>                                
-    </j:forEach>
-
-    <j:forEach items="${results.rowsByIndex}" var="row">
-      <row>
-        <j:forEach var="field" items="${row}">
-          <field>${field}</field>                                
-        </j:forEach>
-      </row>
-    </j:forEach>                  
-  </dataSet>
-
-</j:jelly>
-
-
diff --git a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/example3.jelly b/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/example3.jelly
deleted file mode 100644
index f14358d..0000000
--- a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/example3.jelly
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-

-<j:jelly xmlns:j="jelly:core" xmlns:sql="jelly:sql" xmlns:log="jelly:log">

-

-  <sql:setDataSource 

-    url="${databaseUrl}" 

-    driver="${databaseDriver}" 

-    user="${databaseUser}"

-    password="${databasePassword}"/>

-

-  <j:set var="databaseTable" value="dummy"/>

-

-

-  <log:info>Dropping and recreating the table ${databaseTable}...</log:info>

-  

-  <j:catch>

-    <!-- ignore any exceptions -->

-    <sql:update>

-      drop table ${databaseTable}

-    </sql:update>

-  </j:catch>

-      

-  <sql:update>

-      create table ${databaseTable} (

-        id integer,

-        name varchar(255)

-      )

-  </sql:update>

-

-

-  <log:info>Inserting some data...</log:info>

-  

-  <j:forEach begin="1" end="20" var="i">

-    <sql:update>

-      insert into ${databaseTable} (id, name) values (?, ?)

-      <sql:param value="${i}"/>

-      <sql:param value="Foo_${i}"/>

-    </sql:update>

-  

-  </j:forEach>

-      

-  <log:info>Now performing a query...</log:info>

-  

-  <sql:query var="results">

-      select * from ${databaseTable}

-  </sql:query>

-

-  <dataSet>

-

-    <!-- we'll turn off whitespace trimming for the loop -->

-    <j:forEach trim="false" items="${results.rowsByIndex}" var="row">

-      <row>

-        <j:forEach var="columnName" items="${results.columnNames}" indexVar="i">

-          <field column="${columnName}">${row[i]}</field>                                

-        </j:forEach>

-      </row>

-    </j:forEach>                  

-

-  </dataSet>

-

-</j:jelly>

-

-

diff --git a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/suite.jelly b/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/suite.jelly
deleted file mode 100644
index a8e1dc2..0000000
--- a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/suite.jelly
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite xmlns:j="jelly:core" xmlns:test="jelly:junit" xmlns:sql="jelly:sql">

-

-    <test:case name="testResultSet">

-    

-      <sql:resultSet var="results">

-        <sql:row id="abc" name="James"/>

-        <sql:row id="def" name="Joe"/>

-      </sql:resultSet>

-    

-        <test:assert test="${results != null}">created a results object</test:assert>        

-        

-        <test:assert test="${results.rowCount == 2}">contains 2 rows</test:assert>

-

-        <test:assertEquals expected="abc" actual="${results.rows[0].id}"/>

-        <test:assertEquals expected="def" actual="${results.rows[1].id}"/>

-        

-        <test:assertEquals expected="James" actual="${results.rows[0].name}"/>

-        <test:assertEquals expected="Joe" actual="${results.rows[1].name}"/>

-        

-    </test:case>

-

-</test:suite>

diff --git a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/testSql.jelly b/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/testSql.jelly
deleted file mode 100644
index f65e47c..0000000
--- a/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/testSql.jelly
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:sql="jelly:sql">
-
-  <sql:setDataSource 
-      var="db"
-    url="${databaseUrl}" 
-    driver="${databaseDriver}" 
-    user="${databaseUser}"
-    password="${databasePassword}"/>
-
-  <sql:query var="results" dataSource="${db}">
-      select * from ${databaseTable}
-  </sql:query>
-
-  <dataSet>
-    <size>${results.rowCount}</size>
-  </dataSet>
-
-</j:jelly>
-
-
diff --git a/jelly-tags/sql/xdocs/changes.xml b/jelly-tags/sql/xdocs/changes.xml
deleted file mode 100644
index 7e44081..0000000
--- a/jelly-tags/sql/xdocs/changes.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-12">
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/sql/xdocs/index.xml b/jelly-tags/sql/xdocs/index.xml
deleted file mode 100644
index e93be1c..0000000
--- a/jelly-tags/sql/xdocs/index.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>SQL Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>The SQL Tags from the JSTL</p>
-  
-      <p>
-        There are some examples of these tags in action 
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/sql/src/test/org/apache/commons/jelly/tags/sql/">here</a>
-      </p>
-      <p>See the <a href="tags.html">tags</a> for more information.</p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/sql/xdocs/navigation.xml b/jelly-tags/sql/xdocs/navigation.xml
deleted file mode 100644
index ab2598a..0000000
--- a/jelly-tags/sql/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="SQL Tag Library">
-
-  <title>SQL Tag Library</title>
-  
-  <body>
-    <menu name="SQL Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/swing/.cvsignore b/jelly-tags/swing/.cvsignore
deleted file mode 100644
index d0b1766..0000000
--- a/jelly-tags/swing/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-target
-maven.log
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/swing/build.xml b/jelly-tags/swing/build.xml
deleted file mode 100644
index bf0106f..0000000
--- a/jelly-tags/swing/build.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2302-->
-<project default="jar" name="commons-jelly-tags-swing" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-swing-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="JellySwing 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.swing.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-define-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-define-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-interaction-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-interaction-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-log-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-log-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/swing/maven.xml b/jelly-tags/swing/maven.xml
deleted file mode 100644
index 720be58..0000000
--- a/jelly-tags/swing/maven.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="jar:jar" xmlns:j="jelly:core">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile, test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-
-  <goal name="demo:swing" prereqs="create-classpath"
-    description="Runs a sample Swing demo, creating a Swing UI from Jelly script">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/swing/example.jelly"/>
-    </java>
-  </goal>
-
-
-    <!-- move this into a Maven plugin -->
-  <goal name="jelly:runner" prereqs="create-classpath"
-    description="Runs the Jelly Runner which is a JellySwing script to run other Jelly scripts)">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <sysproperty key="http.proxyHost" value="${maven.proxy.host}"/>
-      <sysproperty key="http.proxyPort" value="${maven.proxy.port}"/>
-     <arg value="src/test/org/apache/commons/jelly/swing/run.jelly"/>
-    </java>
-  </goal>
-
-  <goal name="jelly:runner2" prereqs="create-classpath"
-    description="Runs the Jelly Runner which is a JellySwing script to run other Jelly scripts)">
-    <j:include uri="file:///${user.dir}/src/test/org/apache/commons/jelly/swing/run.jelly"/>
-    <i:ask question="Hit Enter to terminate" answer="dummy" xmlns:i="jelly:interaction"/>
-  </goal>
-
-  <goal name="jelly:wizard" prereqs="create-classpath"
-    description="Runs the Jelly Runner which is a JellySwing script to run other Jelly scripts)">
-    <j:include uri="file:///${user.dir}/src/test/org/apache/commons/jelly/swing/wizard.jelly"/>
-    <i:ask question="Hit Enter to terminate" answer="dummy" xmlns:i="jelly:interaction"/>
-  </goal>
-
-
-    <!-- a simple example program to demonstrate the use of <tableModel> -->
-  <goal name="jelly:showvars" prereqs="create-classpath"
-    description="Displays the current variables in the Maven project">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <sysproperty key="http.proxyHost" value="${maven.proxy.host}"/>
-      <sysproperty key="http.proxyPort" value="${maven.proxy.port}"/>
-      <arg value="src/test/org/apache/commons/jelly/swing/showVariables.jelly"/>
-    </java>
-  </goal>
-
-  
-  <goal name="trash"> 
-    <echo>${pom.id.substring(28)}</echo>
-  </goal>
-
-</project>
diff --git a/jelly-tags/swing/project.properties b/jelly-tags/swing/project.properties
deleted file mode 100644
index 0421c34..0000000
--- a/jelly-tags/swing/project.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
-maven.junit.sysproperties=java.awt.headless
-java.awt.headless=true
diff --git a/jelly-tags/swing/project.xml b/jelly-tags/swing/project.xml
deleted file mode 100644
index 58bff98..0000000
--- a/jelly-tags/swing/project.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-swing</id>
-  <name>JellySwing</name>
-  <currentVersion>1.1-SNAPSHOT</currentVersion>
-
-  <package>org.apache.commons.jelly.tags.swing</package>
-
-  <description>
-      This is a Jelly interface for configuring Swing applications.
-  </description>
-  <shortDescription>Commons Jelly Swing Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-SWING-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-    <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-      <version>2.0</version>
-    </dependency>
-
-    <!-- START for test -->
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-define</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/define/</url>
-      <properties>
-        <classloader>root.maven</classloader>
-      </properties>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-interaction</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/interaction/</url>
-      <properties>
-        <classloader>root.maven</classloader>
-      </properties>
-    </dependency>
-      
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <properties>
-        <classloader>root.maven</classloader>
-      </properties>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-log</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/log/</url>
-      <properties>
-        <classloader>root.maven</classloader>
-      </properties>
-    </dependency>
-
-    <!-- END for test -->
-    
-    <!-- START for demos -->
-  
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-      
-    <!-- END for demos -->
-    
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ActionTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ActionTag.java
deleted file mode 100644
index 9d2717e..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ActionTag.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.event.ActionEvent;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Creates a Swing Action which on invocation will execute the body of this tag.
- * The Action is then output as a variable for reuse if the 'var' attribute is specified
- * otherwise the action is added to the parent JellySwing widget.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class ActionTag extends UseBeanTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ActionTag.class);
-
-    public ActionTag() {
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the Action object for this tag
-     */
-    public Action getAction() {
-        return (Action) getBean();
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-
-    /**
-     * An existing Action could be specified via the 'action' attribute or an action class
-     * may be specified via the 'class' attribute, otherwise a default Action class is created.
-     */
-    protected Class convertToClass(Object classObject) throws MissingAttributeException, ClassNotFoundException {
-        if (classObject == null) {
-            return null;
-        }
-        else {
-            return super.convertToClass(classObject);
-        }
-    }
-
-    /**
-     * An existing Action could be specified via the 'action' attribute or an action class
-     * may be specified via the 'class' attribute, otherwise a default Action class is created.
-     */
-    protected Object newInstance(Class theClass, Map attributes, final XMLOutput output) throws JellyTagException {
-        Action action = (Action) attributes.remove( "action" );
-        if ( action == null ) {
-            if (theClass != null ) {
-
-                try {
-                    return theClass.newInstance();
-                } catch (InstantiationException e) {
-                    throw new JellyTagException(e);
-                } catch (IllegalAccessException e) {
-                    throw new JellyTagException(e);
-                }
-
-            }
-            else {
-                action = new AbstractAction() {
-                    public void actionPerformed(ActionEvent event) {
-                        context.setVariable( "event", event );
-                        try {
-                            ActionTag.super.invokeBody(output);
-                        }
-                        catch (Exception e) {
-                            log.error( "Caught: " + e, e );
-                        }
-                    }
-                };
-            }
-        }
-        return action;
-    }
-	
-	public void invokeBody(XMLOutput output) {
-		// do nothing
-	}
-
-
-    /**
-     * Either defines a variable or adds the current component to the parent
-     */
-    protected void processBean(String var, Object bean) throws JellyTagException {
-        if (var != null) {
-            context.setVariable(var, bean);
-        }
-        else {
-            ComponentTag tag = (ComponentTag) findAncestorWithClass( ComponentTag.class );
-            if ( tag != null ) {
-                tag.setAction((Action) bean);
-            }
-            else {
-                throw new JellyTagException( "Either the 'var' attribute must be specified to export this Action or this tag must be nested within a JellySwing widget tag" );
-            }
-        }
-    }
-
-
-    /**
-     * Perform the strange setting of Action properties using its custom API
-     */
-    protected void setBeanProperties(Object bean, Map attributes) throws JellyTagException {
-        Action action = getAction();
-
-        String enabled = "enabled";
-        if (attributes.containsKey(enabled)) {
-            try {
-                BeanUtils.copyProperty(action, enabled, attributes.get(enabled));
-            } catch (IllegalAccessException e) {
-                throw new JellyTagException("Failed to set the enabled property.", e);
-            } catch (InvocationTargetException e) {
-                throw new JellyTagException("Failed to set the enabled property.", e);
-            }
-
-            attributes.remove(enabled);
-        }
-
-        for ( Iterator iter = attributes.entrySet().iterator(); iter.hasNext(); ) {
-            Map.Entry entry = (Map.Entry) iter.next();
-            String name = (String) entry.getKey();
-
-            // typically standard Action names start with upper case, so lets upper case it
-            name = capitalize(name);
-            Object value = entry.getValue();
-
-            action.putValue( name, value );
-        }
-    }
-
-
-    protected String capitalize(String text) {
-        char ch = text.charAt(0);
-        if ( Character.isUpperCase( ch ) ) {
-            return text;
-        }
-        StringBuffer buffer = new StringBuffer(text.length());
-        buffer.append( Character.toUpperCase( ch ) );
-        buffer.append( text.substring(1) );
-        return buffer.toString();
-    }
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BeanFactory.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BeanFactory.java
deleted file mode 100644
index 68d5221..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BeanFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-/**
- * A default Factory implementation that creates new instances from a bean class
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class BeanFactory implements Factory {
-
-    private Class beanClass;
-
-    public BeanFactory(Class beanClass) {
-        this.beanClass = beanClass;
-    }
-
-    /**
-     * Create a new component instance
-     */
-    public Object newInstance() throws InstantiationException {
-        try {
-          return beanClass.newInstance();
-        } catch (IllegalAccessException e) {
-            throw new InstantiationException(e.toString());
-        }
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BorderAlignTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BorderAlignTag.java
deleted file mode 100644
index 2a1c9dc..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BorderAlignTag.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Represents a layout of a child component within its parent &lt;borderLayout&gt; layout.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class BorderAlignTag extends TagSupport implements ContainerTag {
-
-    private String align;
-
-    // ContainerTag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Adds a child component to this parent
-     */
-    public void addChild(Component component, Object constraints) throws JellyTagException {
-        BorderLayoutTag tag = (BorderLayoutTag) findAncestorWithClass( BorderLayoutTag.class );
-        if (tag == null) {
-            throw new JellyTagException( "this tag must be nested within a <borderLayout> tag" );
-        }
-        tag.addLayoutComponent(component, getConstraints());
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        invokeBody(output);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the align.
-     * @return String
-     */
-    public String getAlign() {
-        return align;
-    }
-
-    /**
-     * Sets the alignment of the child component which is a case insensitive value
-     * of {NORTH, SOUTH, EAST, WEST, CENTER} which defaults to CENTER
-     */
-    public void setAlign(String align) {
-        this.align = align;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    protected Object getConstraints() {
-        if ("north".equalsIgnoreCase(align)) {
-            return BorderLayout.NORTH;
-        }
-        else if ("south".equalsIgnoreCase(align)) {
-            return BorderLayout.SOUTH;
-        }
-        else if ("east".equalsIgnoreCase(align)) {
-            return BorderLayout.EAST;
-        }
-        else if ("west".equalsIgnoreCase(align)) {
-            return BorderLayout.WEST;
-        }
-        else {
-            // default to CENTER
-            return BorderLayout.CENTER;
-        }
-    }
-}
-
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BorderLayoutTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BorderLayoutTag.java
deleted file mode 100644
index de3c707..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BorderLayoutTag.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.BorderLayout;
-import java.awt.LayoutManager;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A Layout tag which uses nested &lt;borderAlign&gt; tags to implement a BorderLayout
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class BorderLayoutTag extends LayoutTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(LayoutTagSupport.class);
-
-    private int hgap;
-    private int vgap;
-
-    public BorderLayoutTag() {
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the hgap.
-     * @return int
-     */
-    public int getHgap() {
-        return hgap;
-    }
-
-    /**
-     * Returns the vgap.
-     * @return int
-     */
-    public int getVgap() {
-        return vgap;
-    }
-
-    /**
-     * Sets the horizontal gap in pixels.
-     */
-    public void setHgap(int hgap) {
-        this.hgap = hgap;
-    }
-
-    /**
-     * Sets the vertical gap in pixels
-     */
-    public void setVgap(int vgap) {
-        this.vgap = vgap;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Creates a BorderLayout
-     */
-    protected LayoutManager createLayoutManager() {
-        return new BorderLayout(hgap, vgap);
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BorderTagSupport.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BorderTagSupport.java
deleted file mode 100644
index 870020d..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/BorderTagSupport.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import javax.swing.border.Border;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * An abstract base class used for concrete border tags which create new Border implementations
- * and sets then on parent widgets and optionally export them as variables .
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public abstract class BorderTagSupport extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(BorderTagSupport.class);
-
-    private String var;
-
-    public BorderTagSupport() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-
-        Border border = createBorder();
-
-        // allow some nested tags to set properties
-        invokeBody(output);
-
-        if (var != null) {
-            context.setVariable(var, border);
-        }
-        ComponentTag tag = (ComponentTag) findAncestorWithClass( ComponentTag.class );
-        if ( tag != null ) {
-            tag.setBorder(border);
-        }
-        else {
-            if (var == null) {
-                throw new JellyTagException( "Either the 'var' attribute must be specified to export this Border or this tag must be nested within a JellySwing widget tag" );
-            }
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-
-    /**
-     * Sets the name of the variable to use to expose the new Border object.
-     * If this attribute is not set then the parent widget tag will have its
-     * border property set.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new Border instance.
-     */
-    protected abstract Border createBorder();
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ButtonGroupTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ButtonGroupTag.java
deleted file mode 100644
index b8f39bb..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ButtonGroupTag.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.Component;
-import java.util.Map;
-
-import javax.swing.AbstractButton;
-import javax.swing.ButtonGroup;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-/** Implements a ButtonGroup. This tag acts like a Swing component
- * except that adding a component other than an AbstractButton, will be passed
- * through to the parent tag. This is meant to make the
- * buttonGroup easier to use like this:
- * <pre>
- * &lt;panel&gt;
- *  &lt;buttonGroup&gt;
- *      &lt;panel&gt;
- *          &lt;radioButton/&gt;
- *      &lt;/panel&gt;
- *      &lt;panel&gt;
- *          &lt;radioButton/&gt;
- *      &lt;/panel&gt;
- *  &lt;/buttonGroup&gt;
- * &lt;/panel&gt;
- * </pre>
- *
- * <p> Note that the following construct will silently fail, and shame on s/he who even tried it:
- * <pre>
-  * &lt;panel&gt;
- *  &lt;buttonGroup&gt;
- *      &lt;font .../&gt;
- *      &lt;panel&gt;
- *          &lt;radioButton/&gt;
- *      &lt;/panel&gt;
- *      &lt;panel&gt;
- *          &lt;radioButton/&gt;
- *      &lt;/panel&gt;
- *  &lt;/buttonGroup&gt;
- * &lt;/panel&gt;
- * </pre>
- * </p>
- *
- * @author Hans Gilde
- *
- */
-public class ButtonGroupTag extends ComponentTag {
-
-    /**If the child is an AbstractButton, add it to the button group. Otherwise,
-     * pass through to the parent component tag.
-     * @throws JellyTagException
-     * @see org.apache.commons.jelly.tags.swing.ContainerTag#addChild(java.awt.Component, java.lang.Object)
-     */
-    public void addChild(Component component, Object constraints) throws JellyTagException {
-        if (component instanceof AbstractButton) {
-            getButtonGroup().add((AbstractButton) component);
-        } else {
-            if ( component != null ) {
-                ContainerTag parentTag = (ContainerTag) findAncestorWithClass( ContainerTag.class );
-                if ( parentTag != null ) {
-                    parentTag.addChild(component, getConstraint());
-                }
-                else {
-                    throw new JellyTagException( "This buttonGroup tag must be nested within a Swing component tag." );
-                }
-            }
-        }
-    }
-
-    /**Creates a new buttonGroup.
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
-     */
-    protected Object newInstance(Class theClass, Map attributes,
-            XMLOutput output) throws JellyTagException {
-        return new ButtonGroup();
-    }
-
-    protected ButtonGroup getButtonGroup() {
-        return (ButtonGroup) getBean();
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ComponentTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ComponentTag.java
deleted file mode 100644
index cb94d31..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ComponentTag.java
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.LayoutManager;
-import java.awt.Point;
-import java.awt.Window;
-import java.awt.event.FocusListener;
-import java.awt.event.KeyListener;
-import java.awt.event.WindowListener;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Map;
-
-import javax.swing.Action;
-import javax.swing.JFrame;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JScrollPane;
-import javax.swing.JSplitPane;
-import javax.swing.RootPaneContainer;
-import javax.swing.border.Border;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.jelly.tags.swing.converters.DebugGraphicsConverter;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This tag creates a Swing component and adds it to its parent tag, optionally declaring this
- * component as a variable if the <i>var</i> attribute is specified.</p>
- *
- * <p> This tag clears the reference to it's bean after doTag runs.
- * This means that child tags can access the component (bean) normally
- * during execution but should not hold a reference to this
- * tag after their doTag completes.
- * </p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class ComponentTag extends UseBeanTag implements ContainerTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ComponentTag.class);
-    
-    /** This is a converter that might normally be used through the 
-     * BeanUtils product. However, it only applies to one Component
-     * property and not to all ints, so it's not registered with BeanUtils.
-     */
-    private static final DebugGraphicsConverter debugGraphicsConverter = new DebugGraphicsConverter();
-    
-    /** the factory of widgets */
-    private Factory factory;
-
-    public ComponentTag() {
-    }
-
-    public ComponentTag(Factory factory) {
-        this.factory = factory;
-    }
-
-    public String toString() {
-		Component comp = getComponent();
-        String componentName = (comp!=null) ? comp.getName() : null;
-        if (comp!=null && (componentName == null || componentName.length() == 0))
-            componentName = getComponent().toString();
-        return "ComponentTag with bean " + componentName;
-    }
-
-    /**
-     * Sets the Action of this component
-     */
-    public void setAction(Action action) throws JellyTagException {
-        Component component = getComponent();
-        if ( component != null ) {
-            // lets just try set the 'action' property
-            try {
-                BeanUtils.setProperty( component, "action", action );
-            } catch (IllegalAccessException e) {
-                throw new JellyTagException(e);
-            } catch (InvocationTargetException e) {
-                throw new JellyTagException(e);
-            }
-        }
-    }
-
-    /**
-     * Sets the Font of this component
-     */
-    public void setFont(Font font) throws JellyTagException {
-        Component component = getComponent();
-        if ( component != null ) {
-            // lets just try set the 'font' property
-            try {
-                BeanUtils.setProperty( component, "font", font );
-            }
-            catch (IllegalAccessException e) {
-                throw new JellyTagException(e);
-            }
-            catch (InvocationTargetException e) {
-                throw new JellyTagException(e);
-            }
-        }
-    }
-
-    /**
-     * Sets the Border of this component
-     */
-    public void setBorder(Border border) throws JellyTagException {
-        Component component = getComponent();
-        if ( component != null ) {
-            try {
-                // lets just try set the 'border' property
-                BeanUtils.setProperty( component, "border", border );
-            }
-            catch (IllegalAccessException e) {
-                throw new JellyTagException(e);
-            }
-            catch (InvocationTargetException e) {
-                throw new JellyTagException(e);
-            }
-        }
-    }
-
-    /**
-     * Sets the LayoutManager of this component
-     */
-    public void setLayout(LayoutManager layout) throws JellyTagException {
-        Component component = getComponent();
-        if ( component != null ) {
-            if ( component instanceof RootPaneContainer ) {
-                RootPaneContainer rpc = (RootPaneContainer) component;
-                component = rpc.getContentPane();
-            }
-
-            try {
-                // lets just try set the 'layout' property
-                BeanUtils.setProperty( component, "layout", layout );
-            }
-            catch (IllegalAccessException e) {
-                throw new JellyTagException(e);
-            }
-            catch (InvocationTargetException e) {
-                throw new JellyTagException(e);
-            }
-        }
-    }
-
-    /**
-     * Adds a WindowListener to this component
-     */
-    public void addWindowListener(WindowListener listener) throws JellyTagException {
-        Component component = getComponent();
-        if ( component instanceof Window ) {
-            Window window = (Window) component;
-            window.addWindowListener(listener);
-        }
-    }
-
-    /**
-     * Adds a FocusListener to this component
-     */
-    public void addFocusListener(FocusListener listener) throws JellyTagException {
-        Component component = getComponent();
-        component.addFocusListener(listener);
-    }
-
-    /**
-     * Adds a KeyListener to this component
-     */
-    public void addKeyListener(KeyListener listener) throws JellyTagException {
-        Component component = getComponent();
-        component.addKeyListener(listener);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the visible component, if there is one.
-     */
-    public Component getComponent() {
-        Object bean = getBean();
-        if ( bean instanceof Component ) {
-            return (Component) bean;
-        }
-        return null;
-    }
-
-
-    // ContainerTag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Adds a child component to this parent
-     */
-    public void addChild(Component component, Object constraints) throws JellyTagException {
-        Object parent = getBean();
-        if ( parent instanceof JFrame && component instanceof JMenuBar ) {
-            JFrame frame = (JFrame) parent;
-            frame.setJMenuBar( (JMenuBar) component );
-        }
-        else if ( parent instanceof RootPaneContainer ) {
-            RootPaneContainer rpc = (RootPaneContainer) parent;
-            if (constraints != null) {
-                rpc.getContentPane().add( component, constraints );
-            }
-            else {
-                rpc.getContentPane().add( component);
-            }
-        }
-        else if ( parent instanceof JScrollPane ) {
-            JScrollPane scrollPane = (JScrollPane) parent;
-            scrollPane.setViewportView( component );
-        }
-        else if ( parent instanceof JSplitPane) {
-            JSplitPane splitPane = (JSplitPane) parent;
-            if ( splitPane.getOrientation() == JSplitPane.HORIZONTAL_SPLIT ) {
-                if ( splitPane.getTopComponent() == null ) {
-                    splitPane.setTopComponent( component );
-                }
-                else {
-                    splitPane.setBottomComponent( component );
-                }
-            }
-            else {
-                if ( splitPane.getLeftComponent() == null ) {
-                    splitPane.setLeftComponent( component );
-                }
-                else {
-                    splitPane.setRightComponent( component );
-                }
-            }
-        }
-        else if ( parent instanceof JMenuBar && component instanceof JMenu ) {
-            JMenuBar menuBar = (JMenuBar) parent;
-            menuBar.add( (JMenu) component );
-        }
-        else if ( parent instanceof Container ) {
-            Container container = (Container) parent;
-            if (constraints != null) {
-                container.add( component, constraints );
-            }
-            else {
-                container.add( component );
-            }
-        }
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * A class may be specified otherwise the Factory will be used.
-     */
-    protected Class convertToClass(Object classObject) throws MissingAttributeException, ClassNotFoundException {
-        if (classObject == null) {
-            return null;
-        }
-        else {
-            return super.convertToClass(classObject);
-        }
-    }
-
-    /**
-     * A class may be specified otherwise the Factory will be used.
-     */
-    protected Object newInstance(Class theClass, Map attributes, XMLOutput output) throws JellyTagException {
-        try {
-            if (theClass != null ) {
-                return theClass.newInstance();
-            } else {
-                return factory.newInstance();
-            }
-        } catch (IllegalAccessException e) {
-            throw new JellyTagException(e);
-        } catch (InstantiationException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-
-    /**
-     * Either defines a variable or adds the current component to the parent
-     */
-    protected void processBean(String var, Object bean) throws JellyTagException {
-        if (var != null) {
-            context.setVariable(var, bean);
-        }
-        Component component = getComponent();
-        if ( component != null ) {
-            ContainerTag parentTag = (ContainerTag) findAncestorWithClass( ContainerTag.class );
-            if ( parentTag != null ) {
-                parentTag.addChild(component, getConstraint());
-            }
-            else {
-                if (var == null) {
-                    throw new JellyTagException( "The 'var' attribute must be specified or this tag must be nested inside a JellySwing container tag like a widget or a layout" );
-                }
-            }
-        }
-    }
-
-    /**
-     * Handles wierd properties that don't quite match the Java Beans contract
-     */
-    protected void setBeanProperties(Object bean, Map attributes) throws JellyTagException {
-            
-            Component component = getComponent();
-            if (component != null) {
-                if (attributes.containsKey("location")) {
-                    Object value = attributes.get("location");
-                    Point p = null;
-                    if (value instanceof Point) {
-                        p = (Point) value;
-                    }
-                    else if (value != null) {
-                        p =
-                            (Point) ConvertUtils.convert(
-                                value.toString(),
-                                Point.class);
-                    }
-                    component.setLocation(p);
-                    addIgnoreProperty("location");
-                }
-
-                if (attributes.containsKey("size")) {
-                    Object value = attributes.get("size");
-                    Dimension d = null;
-                    if (value instanceof Dimension) {
-                        d = (Dimension) value;
-                    }
-                    else if (value != null) {
-                        d =
-                            (Dimension) ConvertUtils.convert(
-                                value.toString(),
-                                Dimension.class);
-                    }
-                    component.setSize(d);
-                    addIgnoreProperty("size");
-                }
-                
-                if (attributes.containsKey("debugGraphicsOptions")) {
-                    try {
-                        Object o = debugGraphicsConverter.convert(attributes.get("debugGraphicsOptions"));
-                        attributes.put("debugGraphicsOptions", o);
-                    } catch (IllegalArgumentException e) {
-                        throw new JellyTagException(e);
-                    }
-                }
-                
-                if (attributes.containsKey("debugGraphics")) {
-                    try {
-                        Object o = debugGraphicsConverter.convert(attributes.get("debugGraphics"));
-                        attributes.put("debugGraphicsOptions", o);
-                    } catch (IllegalArgumentException e) {
-                        throw new JellyTagException(e);
-                    }
-                    
-                    addIgnoreProperty("debugGraphics");
-                }
-                
-             super.setBeanProperties(bean, attributes);
-        }
-    }
-
-    protected Object getConstraint() {
-        return null;
-    }
-
-    /**Overrides the default UseBean functionality to clear the bean after the
-     * tag runs. This prevents us from keeping references to heavy Swing objects
-     * around for longer than they are needed.
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        super.doTag(output);
-        clearBean();
-    }
-
-    /** Sets the bean to null, to prevent it from
-     * sticking around in the event that this tag instance is
-     * cached. This method is called at the end of doTag.
-     *
-     */
-    protected void clearBean() {
-        setBean(null);
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ConstraintTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ConstraintTag.java
deleted file mode 100644
index c60215d..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ConstraintTag.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-* Copyright 2002-2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.commons.jelly.tags.swing;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.jelly.DynaBeanTagSupport;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.xml.sax.Attributes;
-
-/** This class represents a layout-manager constraints as passed in
-    * the second argument of {@link Container#add(Component,Object)}.
-    *    <p>
-    *    In essence, it looks really like nothing else than a bean-class...
-    *    with {@link #getConstraintObject}.
-    *    Probably a shorter java-source is do-able.
-    *    <p>
-    *    TODO: this class should probably be extended with special treatment for dimensios
-    *    using the converter package.
-    */
-public class ConstraintTag extends DynaBeanTagSupport {
-
-/*    TODO: make a gridbagconstraintTag class which supports an attribute "parent"
-                        (or... startWith) which is another gridbagconstraintTag whose gridbagconstraint
-                        is cloned then attributes are set
-                        This tag should also support the attributes such as fill=BOTH
-                        and anchor=NORTHEAST...
-                        Wooops... need to define setters ?? let's see if BeanUtils does it on public vars
-                        And... have an insets?? A child ?
-    */
-
-    protected Factory factory;
-    protected String var = null;
-    protected Object bean = null;
-
-        public static class HereFactory extends BeanFactory implements TagFactory {
-            public HereFactory(Class c) { super(c); }
-            public Tag createTag(String name, Attributes attributes) {
-                return new ConstraintTag ( this );
-                // still scratching my head about "this" usage...
-            }
-        } // class HereFactory
-        public static class ConstantFactory implements TagFactory, Factory {
-            public ConstantFactory(Object c) { this.constant = c;}
-            private Object constant;
-            public Object newInstance() { return constant; }
-            public Tag createTag(String name, Attributes attributes) throws JellyException {
-                return new ConstraintTag ( this );
-            }
-        } // class ConstatnStringFactory
-
-        // we could be able to make factories that create their tags in parametrized
-        // subclasses of the tag depending on the name and attributes
-        // it would useful, for example, to make a cardLayout's <card name="">
-
-
-    public ConstraintTag (Factory factory) {
-        this.factory = factory;
-    }
-
-    protected void createBean ( Factory factory ) throws InstantiationException {
-        bean = factory.newInstance();
-    }
-
-    // --------------------------------------------- ATTRIBUTES
-
-    public void beforeSetAttributes (  ) throws JellyTagException {
-        try {
-            createBean(factory);
-        } catch (InstantiationException e) {
-            throw new JellyTagException(e.toString());
-        }
-    }
-
-
-    public void setAttribute ( String name, Object value ) throws JellyTagException {
-        // no real need for DynaBeans or ?
-        if ( "var".equals(name) ) {
-            var = value.toString();
-        } else {
-
-            try {
-              BeanUtils.setProperty( bean, name, value );
-            } catch (IllegalAccessException e) {
-                throw new JellyTagException(e.toString());
-            } catch (InvocationTargetException e) {
-                throw new JellyTagException(e.toString());
-            }
-
-        }
-    }
-// --------------------------------------------------
-    /** Children invocation... just nothing...
-        */
-    public void doTag ( XMLOutput output ) throws JellyTagException {
-        if ( var != null ) context.setVariable ( var, getBean() );
-        invokeBody ( output );
-        // nothing else to do... the getConstraintObject method should have been called.
-    }
-
-    // ----------------------------------------------
-    public Object getBean() {
-        return bean;
-    }
-
-    /** Returns the attached constraint object.
-        */
-    public Object getConstraintObject() {
-        return getBean();
-    }
-} // class ConstraintTag
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ContainerTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ContainerTag.java
deleted file mode 100644
index c42c835..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ContainerTag.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import org.apache.commons.jelly.JellyTagException;
-
-import java.awt.Component;
-
-/**
- * An interface which represents a Tag which is capable of containing AWT Components.
- * So tags such as ContainerTag and LayoutTagSupport implement this interface as they can have
- * nested child component tags.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public interface ContainerTag {
-
-    /**
-     * Adds a child component to this container with optional constraints.
-     * If the constraints are null they are ignored
-     */
-    public void addChild(Component component, Object constraints) throws JellyTagException;
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/DialogTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/DialogTag.java
deleted file mode 100644
index 5a0235e..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/DialogTag.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dialog;
-import java.awt.Frame;
-import java.util.Map;
-import javax.swing.JDialog;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Creates a Swing Dialog.  A JDialog needs to have it's owner set in the constructor,
- * which is why this class is needed instead of just using a BeanFactory.
- *
- * @author Dave Pekarek Krohn
- * @version $Revision: 1.7 $
- */
-public class DialogTag extends UseBeanTag implements ContainerTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(DialogTag.class);
-
-    public DialogTag() {
-        super(JDialog.class);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Creates a JDialog.  The constructor used depends on the value of the owner attribute.
-     */
-    protected Object newInstance(Class theClass, Map attributes, XMLOutput output)
-    throws JellyTagException {
-        Object owner = attributes.remove( "owner" );
-        if (owner instanceof Frame) {
-            return new JDialog((Frame) owner);
-        } else if (owner instanceof Dialog) {
-            return new JDialog((Dialog) owner);
-        } else {
-            return new JDialog();
-        }
-    }
-
-    // ContainerTag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Adds a component to the dialog.
-     */
-    public void addChild(Component component, Object constraints) {
-        Container contentPane = ((JDialog) getBean()).getContentPane();
-        if (constraints != null) {
-            contentPane.add( component, constraints );
-        } else {
-            contentPane.add( component );
-        }
-    }
-}
-
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/EmptyBorderTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/EmptyBorderTag.java
deleted file mode 100644
index 3790e77..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/EmptyBorderTag.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import javax.swing.BorderFactory;
-import javax.swing.border.Border;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Creates an empty border.
- * The border will either be exported as a variable defined by the 'var' attribute
- * or will be set on the parent widget's border property
- *
- * @author <a href="mailto:robert@bull-enterprises.com">Robert McIntosh</a>
- * @version $Revision: 1.3 $
- */
-public class EmptyBorderTag extends BorderTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(EmptyBorderTag.class);
-
-    private int left   = -1;
-    private int right  = -1;
-    private int top    = -1;
-    private int bottom = -1;
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( left == -1) {
-            throw new MissingAttributeException("left");
-        }
-        if ( right == -1) {
-            throw new MissingAttributeException("right");
-        }
-        if ( top == -1) {
-            throw new MissingAttributeException("top");
-        }
-        if ( bottom == -1) {
-            throw new MissingAttributeException("bottom");
-        }
-        super.doTag(output);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * Sets the left inset
-     * @param left
-     */
-    public void setLeft( int left ) {
-        this.left = left;
-    }
-
-    /**
-     * Sets the right inset
-     * @param right
-     */
-    public void setRight( int right ) {
-        this.right = right;
-    }
-
-    /**
-     * Sets the top inset
-     * @param top
-     */
-    public void setTop( int top ) {
-        this.top = top;
-    }
-
-    /**
-     * Sets the bottom inset
-     * @param bottom
-     */
-    public void setBottom( int bottom ) {
-        this.bottom = bottom;
-    }
-
-    /**
-     * Factory method to create a new EmptyBorder instance.
-     */
-    protected Border createBorder() {
-        return BorderFactory.createEmptyBorder( top, left, bottom, right);
-    }
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/EtchedBorderTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/EtchedBorderTag.java
deleted file mode 100644
index 158a5da..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/EtchedBorderTag.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.Color;
-import javax.swing.BorderFactory;
-import javax.swing.border.Border;
-import javax.swing.border.EtchedBorder;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Creates an etched border.
- * The border will either be exported as a variable defined by the 'var' attribute
- * or will be set on the parent widget's border property
- *
- * @author <a href="mailto:robert@bull-enterprises.com">Robert McIntosh</a>
- * @version $Revision: 1.2 $
- */
-public class EtchedBorderTag extends BorderTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(EtchedBorderTag.class);
-
-    private int     etchType  = -1;
-    private Color   highlight = null;
-    private Color   shadow    = null;
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if( highlight != null && shadow == null ) {
-            throw new MissingAttributeException("shadow must be supplied when highlight is supplied");
-        }
-        if( shadow != null && highlight == null) {
-            throw new MissingAttributeException("highlight must be supplied when shadow is supplied");
-        }
-        if( etchType != EtchedBorder.LOWERED || etchType != EtchedBorder.RAISED ) {
-            if( log.isDebugEnabled() ) log.debug( "etchType set to [" + etchType + "], which is invalid. Reseting to -1" );
-        }
-        super.doTag(output);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * Sets the etch type. Must be either EtchedBorder.LOWERED or EtchedBorder.RAISED
-     * @param type
-     */
-    public void setEtchType( int type ) {
-        etchType = type;
-    }
-
-    /**
-     * Sets the highlight color
-     * @param highlight
-     */
-    public void setHighlight( Color highlight ) {
-        this.highlight = highlight;
-    }
-
-    /**
-     * Sets the shadow color
-     * @param shadow
-     */
-    public void setTop( Color shadow ) {
-        this.shadow = shadow;
-    }
-
-    /**
-     * Factory method to create a new EtchedBorder instance.
-     */
-    protected Border createBorder() {
-        if( etchType == -1 && shadow == null && highlight == null) {
-            return BorderFactory.createEtchedBorder();
-        }
-        else if ( highlight != null && shadow != null && etchType > -1 ) {
-            return BorderFactory.createEtchedBorder( etchType, highlight, shadow );
-        }
-        else {
-            return BorderFactory.createEtchedBorder( highlight, shadow );
-        }
-
-    }
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/Factory.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/Factory.java
deleted file mode 100644
index b8e7b36..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/Factory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-
-/**
- * An interface to represent a factory of beans
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public interface Factory {
-
-    /**
-     * Create a new component instance
-     */
-    Object newInstance() throws InstantiationException;
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/FocusListenerTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/FocusListenerTag.java
deleted file mode 100644
index 5b5367c..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/FocusListenerTag.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
-* Copyright 2002-2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class FocusListenerTag extends TagSupport
-{
-  protected static final Log log = LogFactory.getLog(FocusListenerTag.class);
-
-  protected String var;
-  protected Script gained;
-  protected Script lost;
-
-  /**
-   * 
-   */
-  public FocusListenerTag()
-  {
-    super();
-  }
-
-  /**
-  * @param var
-  */
-  public void setVar(String var)
-  {
-    this.var = var;
-  }
-
-  /**
-   * @param gained
-   */
-  public void setGained(Script gained)
-  {
-    this.gained = gained;
-  }
-
-  /**
-   * @param lost
-   */
-  public void setLost(Script lost)
-  {
-    this.lost = lost;
-  }
-
-  public void doTag(final XMLOutput output) throws JellyTagException
-  {
-    // now lets add this action to its parent if we have one
-    ComponentTag tag = (ComponentTag)findAncestorWithClass(ComponentTag.class);
-    if (tag != null)
-    {
-      FocusListener listener = new FocusListener()
-      {
-        public void focusGained(FocusEvent e)
-        {
-          invokeScript(output, e, gained);
-        }
-
-        public void focusLost(FocusEvent e)
-        {
-          invokeScript(output, e, lost);
-        }
-      };
-      tag.addFocusListener(listener);
-    }
-  }
-
-  protected void invokeScript(XMLOutput output, FocusEvent event, Script script)
-  {
-    if (var != null)
-    {
-      // define a variable of the event
-      context.setVariable(var, event);
-    }
-
-    try
-    {
-      if (script != null)
-      {
-        script.run(context, output);
-      }
-      else
-      {
-        // invoke the body
-        invokeBody(output);
-      }
-    }
-    catch (Exception e)
-    {
-      log.error("Caught exception processing window event: " + event, e);
-    }
-  }
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/FontTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/FontTag.java
deleted file mode 100644
index fe5e9d8..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/FontTag.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.Font;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MapTagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Creates an Font and attaches it to the parent component or exports the font as
- * a reusable variable that can be attached to multiple widgets.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class FontTag extends MapTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(FontTag.class);
-
-    /** the current font instance */
-    private Font font;
-
-    public FontTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-/*
- * maybe do some type conversions or name mapping code...
- *
-    public void setAttribute(String name, Object value) {
-        if (name.equals("size")) {
-            super.setAttribute(name, ConvertUtils.convert(Integer.class, value));
-        }
-        else {
-            super.setAttribute(name, value);
-        }
-    }
-*/
-
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        Map attributes = getAttributes();
-        String var = (String) attributes.remove("var");
-
-        font = createFont(attributes);
-
-        if (var != null) {
-            context.setVariable(var, font);
-        }
-        else {
-            // now lets add this font to its parent if we have one
-            ComponentTag tag = (ComponentTag) findAncestorWithClass( ComponentTag.class );
-            if ( tag != null ) {
-                tag.setFont(font);
-            }
-            else {
-                throw new JellyTagException( "this tag must be nested within a JellySwing widget tag or the 'var' attribute must be specified" );
-            }
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the Font object for this tag
-     */
-    public Font getFont() {
-        return font;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new Font based on the given properties
-     */
-    protected Font createFont(Map map) {
-        log.info( "Creating font from properties: " + map );
-        Font font = new Font(map);
-        //Font font = Font.getFont(map);
-        log.info( "Created font: " + font );
-        return font;
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/GbcTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/GbcTag.java
deleted file mode 100644
index 2f9a866..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/GbcTag.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.Component;
-import java.awt.GridBagConstraints;
-import java.awt.Insets;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.jelly.tags.swing.impl.GridBagConstraintBean;
-import org.apache.commons.lang.StringUtils;
-
-/**
- * This class represents a {@link GridBagConstraints} constraints as passed in
- * the second argument of {@link Container#add(Component,Object)}.
- * It supports inheritence between such tags in the following fashion:
- * <ul>
- *     <li>either using a <code>basedOn</code> attribute which is
- *         supposed to provide a reference to another {@link GbcTag}.</li>
- *     <li>either using a parent {@link GbcTag}.</li>
- * </ul>
- * The first version takes precedence.
- * A Grid-bag-constraint inherits from another simply by setting other attributes
- * as is done in {@link GridBagConstraintBean#setBasedOn}.
- * <p>
- * In essence, it looks really like nothing else than a bean-class...
- * with {@link #getConstraints}.
- * Probably a shorter java-source is do-able.
- * <p>
- * TODO: this class should probably be extended with special treatment for dimensions
- * using the converter package.
- *
- * @author <a href="mailto:paul@activemath.org">Paul Libbrecht</a>
- * @version $Revision: $
- */
-public class GbcTag extends UseBeanTag implements ContainerTag {
-
-    public GridBagConstraints getConstraints() {
-        return (GridBagConstraints) getBean();
-    }
-
-
-    // ContainerTag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Adds a child component to this parent
-     * @param component the child to add
-     * @param constraints the constraints to use
-     * @TODO constraints looks like it's ignored
-     */
-    public void addChild(Component component, Object constraints) throws JellyTagException {
-        GridBagLayoutTag tag = (GridBagLayoutTag) findAncestorWithClass( GridBagLayoutTag.class );
-        if (tag == null) {
-            throw new JellyTagException( "this tag must be nested within a <gridBagLayout> tag" );
-        }
-        tag.addLayoutComponent(component, getConstraints());
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * A class may be specified otherwise the Factory will be used.
-     * @param classObject the object to be converted
-     */
-    protected Class convertToClass(Object classObject)
-    throws MissingAttributeException, ClassNotFoundException {
-        if (classObject == null) {
-            return null;
-        }
-        else {
-            return super.convertToClass(classObject);
-        }
-    }
-
-    /**
-     * A class may be specified otherwise the Factory will be used.
-     */
-    protected Object newInstance(Class theClass, Map attributes, XMLOutput output) throws JellyTagException {
-        if (theClass != null ) {
-            try {
-                return theClass.newInstance();
-            } catch (IllegalAccessException e) {
-                throw new JellyTagException(e);
-            } catch (InstantiationException e) {
-                throw new JellyTagException(e);
-            }
-        }
-        else {
-            return new GridBagConstraintBean();
-        }
-    }
-
-    protected void setBeanProperties(Object bean, Map attributes)
-        throws JellyTagException {
-
-        Insets ins = null;
-        Object insetString = attributes.get("insets");
-        if (insetString instanceof String) {
-            attributes.remove("insets");
-
-
-            String[] parts = StringUtils.split((String) insetString, ",");
-
-            if (parts.length != 4) {
-                throw new JellyTagException(
-                    "insets must be specified"
-                        + "as four comma - separated integers.");
-            }
-
-            ins =
-                new Insets(
-                    Integer.parseInt(parts[0].trim()),
-                    Integer.parseInt(parts[1].trim()),
-                    Integer.parseInt(parts[2].trim()),
-                    Integer.parseInt(parts[3].trim()));
-        }
-
-        super.setBeanProperties(bean, attributes);
-
-        // set basedOn info of the bean if we have a parent gbc tag
-        // in the context of the closest gridbaglayout tag
-
-        if (bean instanceof GridBagConstraintBean) {
-            GridBagConstraintBean gbc = (GridBagConstraintBean) bean;
-
-            if (ins != null) {
-                gbc.setInsets(ins);
-            }
-
-            GridBagLayoutTag parentLayoutTag =
-                (GridBagLayoutTag) (findAncestorWithClass(GridBagLayoutTag
-                    .class));
-            if (parentLayoutTag != null) {
-                GbcTag parentGbcTag =
-                    (GbcTag) (findAncestorWithClass(getParent(),
-                        GbcTag.class,
-                        parentLayoutTag));
-                if (parentGbcTag != null) {
-                    GridBagConstraints parentGbc =
-                        parentGbcTag.getConstraints();
-
-                    if (parentGbc != null
-                        && parentGbc instanceof GridBagConstraintBean) {
-                        gbc.setBasedOn((GridBagConstraintBean) parentGbc);
-                        if (insetString == null) {
-                            gbc.setInsets(parentGbc.insets);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    public static Tag findAncestorWithClass(
-        Tag from,
-        Class tagClass,
-        Tag parent) {
-        while (from != null && from != parent) {
-            if (tagClass.isInstance(from)) {
-                return from;
-            }
-            from = from.getParent();
-        }
-        return null;
-    }
-}
-
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/GridBagLayoutTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/GridBagLayoutTag.java
deleted file mode 100644
index ce478ab..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/GridBagLayoutTag.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.GridBagLayout;
-import java.awt.LayoutManager;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A Layout tag which uses nested &lt;gbc&gt; tags to implement a GridBagLayout
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class GridBagLayoutTag extends LayoutTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(LayoutTagSupport.class);
-
-    public GridBagLayoutTag() {
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Creates a GridBagLayout
-     */
-    protected LayoutManager createLayoutManager() {
-        return new GridBagLayout();
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/KeyListenerTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/KeyListenerTag.java
deleted file mode 100644
index 0aa08e8..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/KeyListenerTag.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-* Copyright 2002-2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class KeyListenerTag extends TagSupport
-{
-  protected static final Log log = LogFactory.getLog(KeyListenerTag.class);
-
-  protected String var;
-  protected Script pressed;
-  protected Script typed;
-  protected Script released;
-
-  public KeyListenerTag()
-  {
-    super();
-  }
-
-  public void setVar(String var)
-  {
-    this.var = var;
-  }
-
-  public void setPressed(Script pressed)
-  {
-    this.pressed = pressed;
-  }
-
-  public void setReleased(Script released)
-  {
-    this.released = released;
-  }
-
-  public void setTyped(Script typed)
-  {
-    this.typed = typed;
-  }
-
-  public void doTag(final XMLOutput output) throws JellyTagException
-  {
-    // now lets add this action to its parent if we have one
-    ComponentTag tag = (ComponentTag)findAncestorWithClass(ComponentTag.class);
-    if (tag != null)
-    {
-      KeyListener listener = new KeyListener()
-      {
-        public void keyTyped(KeyEvent e)
-        {
-          invokeScript(output, e, typed);
-        }
-
-        public void keyPressed(KeyEvent e)
-        {
-          invokeScript(output, e, pressed);
-        }
-
-        public void keyReleased(KeyEvent e)
-        {
-          invokeScript(output, e, released);
-        }
-      };
-      tag.addKeyListener(listener);
-    }
-  }
-
-  protected void invokeScript(XMLOutput output, KeyEvent event, Script script)
-  {
-    if (var != null)
-    {
-      // define a variable of the event
-      context.setVariable(var, event);
-    }
-
-    try
-    {
-      if (script != null)
-      {
-        script.run(context, output);
-      }
-      else
-      {
-        // invoke the body
-        invokeBody(output);
-      }
-    }
-    catch (Exception e)
-    {
-      log.error("Caught exception processing window event: " + event, e);
-    }
-  }
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/LayoutTagSupport.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/LayoutTagSupport.java
deleted file mode 100644
index a58a409..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/LayoutTagSupport.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.Component;
-import java.awt.LayoutManager;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * An abstract base class used for concrete layout tags which create new LayoutManager implementations
- * and either export them as variables or set them on parent widgets.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public abstract class LayoutTagSupport extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(LayoutTagSupport.class);
-
-    private String var;
-
-    public LayoutTagSupport() {
-    }
-
-    /**
-     * Adds the given layout component to the container with the specified constraints
-     */
-    public void addLayoutComponent(Component component, Object constraints) throws JellyTagException {
-        getComponentTag().addChild(component, constraints);
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-
-        LayoutManager layout = createLayoutManager();
-
-        if (var != null) {
-            context.setVariable(var, layout);
-        }
-
-        getComponentTag().setLayout(layout);
-
-        // allow some nested tags to set properties
-        invokeBody(output);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-
-    /**
-     * Sets the name of the variable to use to expose the new LayoutManager object.
-     * If this attribute is not set then the parent widget tag will have its
-     * layout property set.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the parent component tag or throw an exception
-     */
-    protected ComponentTag getComponentTag() throws JellyTagException {
-        ComponentTag tag = (ComponentTag) findAncestorWithClass( ComponentTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException( "This tag must be nested within a JellySwing widget tag" );
-        }
-        return tag;
-    }
-
-    /**
-     * Factory method to create a new LayoutManager instance.
-     */
-    protected abstract LayoutManager createLayoutManager();
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/SwingTagLibrary.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/SwingTagLibrary.java
deleted file mode 100644
index 3cb587a..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/SwingTagLibrary.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.Dimension;
-import java.awt.Point;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.swing.*;
-
-import org.apache.commons.beanutils.ConvertUtils;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.impl.TagScript;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.jelly.tags.swing.converters.DimensionConverter;
-import org.apache.commons.jelly.tags.swing.converters.PointConverter;
-import org.apache.commons.jelly.tags.swing.converters.ColorConverter;
-import org.apache.commons.jelly.tags.swing.converters.DebugGraphicsConverter;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.xml.sax.Attributes;
-
-/**
- * A Jelly custom tag library that allows Ant tasks to be called from inside Jelly.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- * @version $Revision: 1.6 $
- */
-public class SwingTagLibrary extends TagLibrary {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(SwingTagLibrary.class);
-
-    /** A map of element name to bean class objects */
-    private Map factoryMap;
-
-    static {
-
-        // ### we should create Converters from Strings to various Swing types such as
-        // ### Icon, KeyStroke etc.
-        ConvertUtils.register( new DimensionConverter(), Dimension.class );
-        ConvertUtils.register( new PointConverter(), Point.class );
-        ConvertUtils.register( new ColorConverter(), java.awt.Color.class );
-    }
-
-    public SwingTagLibrary() {
-        registerTag( "action", ActionTag.class );
-        registerTag( "buttonGroup", ButtonGroupTag.class );
-        registerTag( "component", ComponentTag.class );
-        registerTag( "font", FontTag.class );
-        registerTag( "windowListener", WindowListenerTag.class );
-        registerTag( "focusListener", FocusListenerTag.class );
-        registerTag( "keyListener", KeyListenerTag.class );
-
-        // the model tags
-        registerTag( "tableModel", TableModelTag.class );
-        registerTag( "tableModelColumn", TableModelColumnTag.class );
-
-        // the border tags...
-        registerTag( "etchedBorder", EtchedBorderTag.class );
-        registerTag( "emptyBorder", EmptyBorderTag.class );
-        registerTag( "titledBorder", TitledBorderTag.class );
-        // @todo the other kinds of borders, empty, bevelled, compound etc
-
-        // the layout tags...
-
-        // HTML style table, tr, td layouts
-        registerTag( "tableLayout", TableLayoutTag.class );
-        registerTag( "tr", TrTag.class );
-        registerTag( "td", TdTag.class );
-
-        // GridBagLayout
-        registerTag( "gridBagLayout", GridBagLayoutTag.class );
-        registerTag( "gbc", GbcTag.class );
-
-        // BorderLayout
-        registerTag( "borderLayout", BorderLayoutTag.class );
-        registerTag( "borderAlign", BorderAlignTag.class );
-
-        // Dialog
-        registerTag( "dialog", DialogTag.class );
-    }
-
-    /** Creates a new script to execute the given tag name and attributes */
-    public TagScript createTagScript(String name, Attributes attributes) throws JellyException {
-        TagScript answer = super.createTagScript(name, attributes);
-        if ( answer == null ) {
-            final Factory factory = getFactory( name );
-            if ( factory != null ) {
-                return new TagScript(
-                    new TagFactory() {
-                        public Tag createTag(String name, Attributes attributes) throws JellyException {
-                            if ( factory instanceof TagFactory ) {
-                                return ((TagFactory) factory).createTag(name, attributes);
-                            }
-                            else {
-                                return new ComponentTag(factory);
-                            }
-                        }
-                    }
-                );
-            }
-        }
-        return answer;
-    }
-
-    /**
-     * @return the Factory of the Swing component for the given element name
-     */
-    public Factory getFactory(String elementName) {
-        return (Factory) getFactoryMap().get(elementName);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Strategy method allowing derived classes to change the registration behaviour
-     */
-    protected void registerFactories() {
-        registerBeanFactory( "button", JButton.class );
-        registerBeanFactory( "checkBox", JCheckBox.class );
-        registerBeanFactory( "checkBoxMenuItem", JCheckBoxMenuItem.class );
-        registerBeanFactory( "comboBox", JComboBox.class );
-        // how to add content there ?
-        // Have a ComboBoxModel (just one should have a Table or Tree Model objects) ?
-        // can the element control it's children ?
-        // but children should also be able to be any component (as Swing comps. are all container)
-        registerBeanFactory( "desktopPane", JDesktopPane.class );
-        registerBeanFactory( "editorPane", JEditorPane.class );
-        registerBeanFactory( "fileChooser", JFileChooser.class );
-        registerBeanFactory( "frame", JFrame.class );
-        registerBeanFactory( "internalFrame", JInternalFrame.class );
-        registerBeanFactory( "label", JLabel.class );
-        registerBeanFactory( "list", JList.class );
-        registerBeanFactory( "menu", JMenu.class );
-        registerBeanFactory( "menuBar", JMenuBar.class );
-        registerBeanFactory( "menuItem", JMenuItem.class );
-        registerBeanFactory( "panel", JPanel.class );
-        registerBeanFactory( "passwordField", JPasswordField.class );
-        registerBeanFactory( "popupMenu", JPopupMenu.class );
-        registerBeanFactory( "progressBar", JProgressBar.class );
-        registerBeanFactory( "radioButton", JRadioButton.class );
-        registerBeanFactory( "radioButtonMenuItem", JRadioButtonMenuItem.class );
-        registerBeanFactory( "optionPane", JOptionPane.class );
-        registerBeanFactory( "scrollPane", JScrollPane.class );
-        registerBeanFactory( "separator", JSeparator.class );
-
-        registerFactory(
-            "splitPane",
-            new Factory() {
-                public Object newInstance() {
-                    JSplitPane answer = new JSplitPane();
-                    answer.setLeftComponent(null);
-                    answer.setRightComponent(null);
-                    answer.setTopComponent(null);
-                    answer.setBottomComponent(null);
-                    return answer;
-                }
-            }
-        );
-
-        // Box related layout components
-        registerFactory(
-            "hbox",
-            new Factory() {
-                public Object newInstance() {
-                    return Box.createHorizontalBox();
-                }
-            }
-        );
-        registerFactory(
-            "vbox",
-            new Factory() {
-                public Object newInstance() {
-                    return Box.createVerticalBox();
-                }
-            }
-        );
-
-        registerBeanFactory( "tabbedPane", JTabbedPane.class );
-        registerBeanFactory( "table", JTable.class );
-        registerBeanFactory( "textArea", JTextArea.class );
-        registerBeanFactory( "textField", JTextField.class );
-        registerBeanFactory( "toggleButton", JToggleButton.class );
-        registerBeanFactory( "tree", JTree.class );
-        registerBeanFactory( "toolBar", JToolBar.class );
-    }
-
-    /**
-     * Register a widget factory for the given element name
-     */
-    protected void registerFactory(String name, Factory factory) {
-        getFactoryMap().put(name, factory);
-    }
-
-    /**
-     * Register a bean factory for the given element name and class
-     */
-    protected void registerBeanFactory(String name, Class beanClass) {
-        registerFactory(name, new BeanFactory(beanClass));
-    }
-
-    protected Map getFactoryMap() {
-        if ( factoryMap == null ) {
-            factoryMap = new HashMap();
-            registerFactories();
-        }
-        return factoryMap;
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TableLayoutTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TableLayoutTag.java
deleted file mode 100644
index a3cc1b6..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TableLayoutTag.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.GridBagLayout;
-import java.awt.LayoutManager;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.swing.impl.Cell;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A Layout tag which mimicks the table, tr and td tags of HTML.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class TableLayoutTag extends LayoutTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(LayoutTagSupport.class);
-
-    private int rowCount;
-
-    public TableLayoutTag() {
-    }
-
-    /**
-     * Adds a new cell to the current grid
-     */
-    public void addCell(Cell cell) throws JellyTagException {
-        // find the parent container and add the component with the grid bag constraints
-        addLayoutComponent(cell.getComponent(), cell.getConstraints());
-    }
-
-    /**
-     * Creates a new row index for child <tr> tags
-     */
-    public int nextRowIndex() {
-        return rowCount++;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        rowCount = 0;
-        super.doTag(output);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-
-    /**
-     * Creates a GridBagLayout
-     */
-    protected LayoutManager createLayoutManager() {
-        return new GridBagLayout();
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TableModelColumnTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TableModelColumnTag.java
deleted file mode 100644
index d77ab15..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TableModelColumnTag.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.jelly.tags.swing.model.ExpressionTableColumn;
-
-/**
- * Creates a default TableColumnModel.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class TableModelColumnTag extends UseBeanTag {
-
-    public ExpressionTableColumn getColumn() {
-        return (ExpressionTableColumn) getBean();
-    }
-
-    public Class getAttributeType(String name) throws JellyTagException {
-        if (name.equals("value")) {
-            return Expression.class;
-        }
-        return super.getAttributeType(name);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected void processBean(String var, Object bean) throws JellyTagException {
-        super.processBean(var, bean);
-
-        TableModelTag tag = (TableModelTag) findAncestorWithClass( TableModelTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException( "This tag must be nested within a <tableModel> tag" );
-        }
-        tag.getTableModel().addColumn( getColumn() );
-    }
-
-    protected Class getDefaultClass() {
-        return ExpressionTableColumn.class;
-    }
-}
-
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TableModelTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TableModelTag.java
deleted file mode 100644
index 2fc169e..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TableModelTag.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import javax.swing.JTable;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.jelly.tags.swing.model.ExpressionTableModel;
-
-/**
- * Creates a default TableModel using nested tableColumn tags.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class TableModelTag extends UseBeanTag {
-
-    public ExpressionTableModel getTableModel() {
-        return (ExpressionTableModel) getBean();
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected void processBean(String var, Object bean) throws JellyTagException {
-        super.processBean(var, bean);
-
-        ComponentTag tag = (ComponentTag) findAncestorWithClass( ComponentTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException( "This tag must be nested within a JellySwing <table> tag" );
-        }
-        ExpressionTableModel model = getTableModel();
-        model.setContext(context);
-
-        Object component = tag.getComponent();
-        if (component instanceof JTable) {
-            JTable table = (JTable) component;
-            table.setModel(model);
-        }
-        else {
-            throw new JellyTagException( "This tag must be nested within a JellySwing <table> tag" );
-        }
-    }
-
-    protected Class getDefaultClass() {
-        return ExpressionTableModel.class;
-    }
-}
-
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TdTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TdTag.java
deleted file mode 100644
index abd3901..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TdTag.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.Component;
-import java.awt.GridBagConstraints;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Represents a tabular cell inside a &lt;tl&gt; tag inside a &lt;tableLayout&gt;
- * tag which mimicks the &lt;td&gt; HTML tag.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class TdTag extends TagSupport implements ContainerTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TdTag.class);
-
-    private String align;
-    private String valign;
-    private int colspan = 1;
-    private int rowspan = 1;
-    private boolean colfill = false;
-    private boolean rowfill = false;
-
-    public TdTag() {
-    }
-
-    // ContainerTag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Adds a child component to this parent
-     */
-    public void addChild(Component component, Object constraints) throws JellyTagException {
-        // add my child component to the layout manager
-        TrTag tag = (TrTag) findAncestorWithClass( TrTag.class );
-        if (tag == null) {
-            throw new JellyTagException( "this tag must be nested within a <tr> tag" );
-        }
-        tag.addCell(component, createConstraints());
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        invokeBody(output);
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the horizontal alignment to a case insensitive value of {LEFT, CENTER, RIGHT}
-     */
-    public void setAlign(String align) {
-        this.align = align;
-    }
-
-    /**
-     * Sets the vertical alignment to a case insensitive value of {TOP, MIDDLE, BOTTOM}
-     */
-    public void setValign(String valign) {
-        this.valign = valign;
-    }
-
-
-    /**
-     * Sets the number of columns that this cell should span. The default value is 1
-     */
-    public void setColspan(int colspan) {
-        this.colspan = colspan;
-    }
-
-    /**
-     * Sets the number of rows that this cell should span. The default value is 1
-     */
-    public void setRowspan(int rowspan) {
-        this.rowspan = rowspan;
-    }
-
-    /**
-     * Returns the colfill.
-     * @return boolean
-     */
-    public boolean isColfill() {
-        return colfill;
-    }
-
-    /**
-     * Returns the rowfill.
-     * @return boolean
-     */
-    public boolean isRowfill() {
-        return rowfill;
-    }
-
-    /**
-     * Sets whether or not this column should allow its component to stretch to fill the space available
-     */
-    public void setColfill(boolean colfill) {
-        this.colfill = colfill;
-    }
-
-    /**
-     * Sets whether or not this row should allow its component to stretch to fill the space available
-     */
-    public void setRowfill(boolean rowfill) {
-        this.rowfill = rowfill;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new constraints object
-     */
-    protected GridBagConstraints createConstraints() {
-        GridBagConstraints answer = new GridBagConstraints();
-        answer.anchor = getAnchor();
-        if (colspan < 1) {
-            colspan = 1;
-        }
-        if (rowspan < 1) {
-            rowspan = 1;
-        }
-        if (isColfill())  {
-            answer.fill = isRowfill()
-                ? GridBagConstraints.BOTH
-                : GridBagConstraints.HORIZONTAL;
-        }
-        else {
-            answer.fill = isRowfill()
-                ? GridBagConstraints.VERTICAL
-                : GridBagConstraints.NONE;
-        }
-        answer.weightx = 0.2;
-        answer.weighty = 0;
-        answer.gridwidth = colspan;
-        answer.gridheight = rowspan;
-        return answer;
-    }
-
-    /**
-     * @return the GridBagConstraints enumeration for achor
-     */
-    protected int getAnchor() {
-        boolean isTop = "top".equalsIgnoreCase(valign);
-        boolean isBottom = "bottom".equalsIgnoreCase(valign);
-
-        if ("center".equalsIgnoreCase(align)) {
-            if (isTop) {
-                return GridBagConstraints.NORTH;
-            }
-            else if (isBottom) {
-                return GridBagConstraints.SOUTH;
-            }
-            else {
-                return GridBagConstraints.CENTER;
-            }
-        }
-        else if ("right".equalsIgnoreCase(align)) {
-            if (isTop) {
-                return GridBagConstraints.NORTHEAST;
-            }
-            else if (isBottom) {
-                return GridBagConstraints.SOUTHEAST;
-            }
-            else {
-                return GridBagConstraints.EAST;
-            }
-        }
-        else {
-            // defaults to left
-            if (isTop) {
-                return GridBagConstraints.NORTHWEST;
-            }
-            else if (isBottom) {
-                return GridBagConstraints.SOUTHWEST;
-            }
-            else {
-                return GridBagConstraints.WEST;
-            }
-        }
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TitledBorderTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TitledBorderTag.java
deleted file mode 100644
index 42f6657..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TitledBorderTag.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.Color;
-import java.awt.Font;
-
-import javax.swing.BorderFactory;
-import javax.swing.border.Border;
-import javax.swing.border.TitledBorder;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Creates a titled border.
- * The border will either be exported as a variable defined by the 'var' attribute
- * or will be set on the parent widget's border property
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class TitledBorderTag extends BorderTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TitledBorderTag.class);
-
-    private String title;
-    private String titleJustification;
-    private String titlePosition;
-    private Border border;
-    private Font font;
-    private Color color;
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( title == null) {
-            throw new MissingAttributeException("title");
-        }
-        super.doTag(output);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the color of the title for this border. Can be set via a nested <color> tag.
-     */
-    public void setColor(Color color) {
-        this.color = color;
-    }
-
-    /**
-     * Sets the Font to be used by the title. Can be set via a nested <font> tag.
-     */
-    public void setFont(Font font) {
-        this.font = font;
-    }
-
-    /**
-     * Sets the title text for this border.
-     */
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    /**
-     * Sets the justification of the title. The String is case insensitive.
-     * Possible values are {LEFT, CENTER, RIGHT, LEADING, TRAILING}
-     */
-    public void setTitleJustification(String titleJustification) {
-        this.titleJustification = titleJustification;
-    }
-
-    /**
-     * Sets the position of the title. The String is case insensitive.
-     * Possible values are {ABOVE_TOP, TOP, BELOW_TOP, ABOVE_BOTTOM, BOTTOM, BELOW_BOTTOM}
-     */
-    public void setTitlePosition(String titlePosition) {
-        this.titlePosition = titlePosition;
-    }
-
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new Border instance.
-     */
-    protected Border createBorder() {
-        if (border != null) {
-            if (titleJustification != null && titlePosition != null) {
-                int justification = asTitleJustification(titleJustification);
-                int position = asTitlePosition(titlePosition);
-
-                if (font != null) {
-                    if (color != null) {
-                        return BorderFactory.createTitledBorder(border, title, justification, position, font, color);
-                    }
-                    else {
-                        return BorderFactory.createTitledBorder(border, title, justification, position, font);
-                    }
-                }
-                return BorderFactory.createTitledBorder(border, title, justification, position);
-            }
-            return BorderFactory.createTitledBorder(border, title);
-        }
-        return BorderFactory.createTitledBorder(title);
-    }
-
-    /**
-     * @return the enumeration for the title justification
-     */
-    protected int asTitleJustification(String text) {
-        if (text.equalsIgnoreCase("LEFT")) {
-            return TitledBorder.LEFT;
-        }
-        else if (text.equalsIgnoreCase("CENTER")) {
-            return TitledBorder.CENTER;
-        }
-        else if (text.equalsIgnoreCase("RIGHT")) {
-            return TitledBorder.RIGHT;
-        }
-        else if (text.equalsIgnoreCase("LEADING")) {
-            return TitledBorder.LEADING;
-        }
-        else if (text.equalsIgnoreCase("TRAILING")) {
-            return TitledBorder.TRAILING;
-        }
-        else {
-            return TitledBorder.DEFAULT_JUSTIFICATION;
-        }
-    }
-
-    /**
-     * @return the enumeration for the title position
-     */
-    protected int asTitlePosition(String text) {
-        if (text.equalsIgnoreCase("ABOVE_TOP")) {
-            return TitledBorder.ABOVE_TOP;
-        }
-        else if (text.equalsIgnoreCase("TOP")) {
-            return TitledBorder.TOP;
-        }
-        else if (text.equalsIgnoreCase("BELOW_TOP")) {
-            return TitledBorder.BELOW_TOP;
-        }
-        else if (text.equalsIgnoreCase("ABOVE_BOTTOM")) {
-            return TitledBorder.ABOVE_BOTTOM;
-        }
-        else if (text.equalsIgnoreCase("BOTTOM")) {
-            return TitledBorder.BOTTOM;
-        }
-        else if (text.equalsIgnoreCase("BELOW_BOTTOM")) {
-            return TitledBorder.BELOW_BOTTOM;
-        }
-        else {
-            return TitledBorder.DEFAULT_POSITION;
-        }
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TrTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TrTag.java
deleted file mode 100644
index 2ad80bc..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/TrTag.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.Component;
-import java.awt.GridBagConstraints;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.swing.impl.Cell;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Represents a tabular row inside a &lt;tableLayout&gt; tag which mimicks the
- * &lt;tr&gt; HTML tag.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class TrTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TrTag.class);
-
-    private TableLayoutTag tableLayoutTag;
-    private List cells = new ArrayList();
-    private int rowIndex;
-
-    public TrTag() {
-    }
-
-    /**
-     * Adds a new cell to this row
-     */
-    public void addCell(Component component, GridBagConstraints constraints) throws JellyTagException {
-        constraints.gridx = cells.size();
-        cells.add(new Cell(constraints, component));
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        tableLayoutTag = (TableLayoutTag) findAncestorWithClass( TableLayoutTag.class );
-        if (tableLayoutTag == null) {
-            throw new JellyTagException( "this tag must be nested within a <tableLayout> tag" );
-        }
-        rowIndex = tableLayoutTag.nextRowIndex();
-        cells.clear();
-
-        invokeBody(output);
-
-        // now iterate through the rows and add each one to the layout...
-        for (Iterator iter = cells.iterator(); iter.hasNext(); ) {
-            Cell cell = (Cell) iter.next();
-            GridBagConstraints c = cell.getConstraints();
-
-            // are we the last cell in the row
-            if ( iter.hasNext() ) {
-                // not last in row
-                c.gridwidth = GridBagConstraints.RELATIVE;
-            }
-            else {
-                // end of row
-                c.gridwidth = GridBagConstraints.REMAINDER;
-            }
-            c.gridy = rowIndex;
-
-            // now lets add the cell to the table
-            tableLayoutTag.addCell(cell);
-        }
-        cells.clear();
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the row index of this row
-     */
-    public int getRowIndex() {
-        return rowIndex;
-    }
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/WindowListenerTag.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/WindowListenerTag.java
deleted file mode 100644
index 4f0a413..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/WindowListenerTag.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing;
-
-import java.awt.event.WindowEvent;
-import java.awt.event.WindowListener;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Creates a WindowListener which is attached to its parent window control which will invoke
- * named Jelly scripts as window events are fired, or will invoke its body if there is no script
- * specified for the named event type.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class WindowListenerTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(WindowListenerTag.class);
-
-    private String var;
-    private Script activated;
-    private Script closed;
-    private Script closing;
-    private Script deactivated;
-    private Script deiconified;
-    private Script iconified;
-    private Script opened;
-
-    public WindowListenerTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-
-        // now lets add this action to its parent if we have one
-        ComponentTag tag = (ComponentTag) findAncestorWithClass( ComponentTag.class );
-        if ( tag != null ) {
-            WindowListener listener = new WindowListener() {
-                public void windowActivated(WindowEvent e) {
-                    invokeScript( output, e, activated );
-                }
-
-                public void windowClosed(WindowEvent e) {
-                    invokeScript( output, e, closed );
-                }
-
-                public void windowClosing(WindowEvent e) {
-                    invokeScript( output, e, closing );
-                }
-
-                public void windowDeactivated(WindowEvent e) {
-                    invokeScript( output, e, deactivated );
-                }
-
-                public void windowDeiconified(WindowEvent e) {
-                    invokeScript( output, e, deiconified );
-                }
-
-                public void windowIconified(WindowEvent e) {
-                    invokeScript( output, e, iconified );
-                }
-
-                public void windowOpened(WindowEvent e) {
-                    invokeScript( output, e, opened );
-                }
-            };
-            tag.addWindowListener(listener);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-
-    /**
-     * Sets the name of the variable to use to expose the Event object
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Sets the Script to be executed when the window is activated.
-     */
-    public void setActivated(Script activated) {
-        this.activated = activated;
-    }
-
-    /**
-     * Sets the Script to be executed when the window is closed.
-     */
-    public void setClosed(Script closed) {
-        this.closed = closed;
-    }
-
-    /**
-     * Sets the Script to be executed when the window is closing.
-     */
-    public void setClosing(Script closing) {
-        this.closing = closing;
-    }
-
-    /**
-     * Sets the Script to be executed when the window is deactivated.
-     */
-    public void setDeactivated(Script deactivated) {
-        this.deactivated = deactivated;
-    }
-
-    /**
-     * Sets the Script to be executed when the window is deiconified.
-     */
-    public void setDeiconified(Script deiconified) {
-        this.deiconified = deiconified;
-    }
-
-    /**
-     * Sets the Script to be executed when the window is iconified.
-     */
-    public void setIconified(Script iconified) {
-        this.iconified = iconified;
-    }
-
-    /**
-     * Sets the Script to be executed when the window is opened.
-     */
-    public void setOpened(Script opened) {
-        this.opened = opened;
-    }
-
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected void invokeScript(XMLOutput output, WindowEvent event, Script script) {
-        if ( var != null ) {
-            // define a variable of the event
-            context.setVariable(var, event);
-        }
-
-        try {
-            if ( script != null ) {
-                script.run(context, output );
-            }
-            else {
-                // invoke the body
-                invokeBody(output);
-            }
-        }
-        catch (Exception e) {
-            log.error( "Caught exception processing window event: " + event, e );
-        }
-    }
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/ColorConverter.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/ColorConverter.java
deleted file mode 100644
index 15d8fb2..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/ColorConverter.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing.converters;
-
-import java.awt.Color;
-import java.awt.SystemColor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-
-import org.apache.commons.beanutils.Converter;
-
-/**
- * A Converter that turns Strings in the form "#uuuuuu" (as RGB triple)
- * or the name of one of the {@link Color}-constants of the class
- * {@link Color} or {@link SystemColor}.
- *    <p>
- *    TODO: provide support of ARGB colors as well.<br>
- * Future: provide support for color-spaces, indexed colors...
- *        (in particular theme-based colors)
- *
- * @author <a href="mailto:paul@activemath.org">Paul Libbrecht</a>
- * @version $Revision: $
- */
-public class ColorConverter implements Converter {
-
-    private static String usageText =
-        "A color is encoded as a java.awt.Color name or a #xxxxxx triple of hex-bytes.";
-
-    public Object convert(Class type, Object value) {
-        if (value != null) {
-            String s = value.toString();
-            if (s.length() <= 1) {
-                throw new IllegalArgumentException(usageText);
-            }
-            if (s.charAt(0) == '#') {
-                if (s.length() != 7) {
-                    throw new IllegalArgumentException(usageText);
-                }
-                int colorValue = 0;
-                try {
-                    colorValue = Integer.parseInt(s.substring(1), 16);
-                    return new Color(colorValue);
-                }
-                catch (NumberFormatException ex) {
-                    throw new IllegalArgumentException(
-                        "Can't parse \""
-                            + s
-                            + "\" as an hexadecimal number: "
-                            + ex);
-                }
-            }
-            else {
-                // a color name
-                try {
-                    // could it be this is already somewhere: get the value of  a static final by string
-                    Field f = SystemColor.class.getField(s);
-                    if (f == null
-                        || !Modifier.isStatic(f.getModifiers())
-                        || !Modifier.isFinal(f.getModifiers())
-                        || !Modifier.isPublic(f.getModifiers())
-                        || !Color.class.isAssignableFrom(f.getType())) {
-
-                        throw new IllegalArgumentException(usageText);
-                    }
-                    return (Color) f.get(SystemColor.class);
-                }
-                catch (Exception ex) {
-                    throw new IllegalArgumentException(
-                        "Can't parse \"" + s + "\" as a color-name: " + ex);
-                }
-            }
-        }
-        return null;
-    }
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/DebugGraphicsConverter.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/DebugGraphicsConverter.java
deleted file mode 100644
index 509c3dc..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/DebugGraphicsConverter.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing.converters;
-
-import javax.swing.DebugGraphics;
-import java.util.StringTokenizer;
-
-import org.apache.commons.beanutils.Converter;
-import org.apache.commons.beanutils.ConvertUtils;
-
-/**
- * A Converter that turns Strings in one of the constants of
- *    {@link DebugGraphics} to their appropriate integer constant.
- *
- * @author <a href="mailto:paul@activemath.org">Paul Libbrecht</a>
- * @version $Revision: $
- */
-public class DebugGraphicsConverter implements Converter {
-
-    private static String usageText =
-        "DebugGraphics options are set as a \"|\" separated list of words using one of the constants of DebugGraphics: log, flash, or buffered.";
-
-    public static void register() {
-        ConvertUtils.register(
-            new DebugGraphicsConverter(),
-            java.lang.Integer.class);
-    }
-
-    /** Part of the Converter interface.
-     * @see org.apache.commons.beanutils.Converter#convert(java.lang.Class, java.lang.Object)
-     */
-    public Object convert(Class type, Object value) {
-        return convert(value);
-    }
-    
-    /** This is not part of the converter interface, it's for use by
-     * classes that don't use DebugGraphicsConverter through BeanUtils.
-     * @param from
-     * @return
-     */
-    public Object convert(Object value) {
-        if (value != null) {
-            int result = 0;
-            StringTokenizer stok =
-                new StringTokenizer(value.toString(), ", \t|", false);
-            while (stok.hasMoreTokens()) {
-                String tok = stok.nextToken();
-                result = result | recognizeOption(tok);
-            }
-            return new Integer(result);
-        }
-        return null;
-    }
-
-    protected int recognizeOption(String value) {
-        value = value.toString().toLowerCase();
-
-        if ("log".equals(value) || "log_option".equals(value)) {
-            return DebugGraphics.LOG_OPTION;
-        }
-        else if ("flash".equals(value) || "flash_option".equals(value)) {
-                return DebugGraphics.FLASH_OPTION;
-        }
-        else if ("buffered".equals(value) || "buffered_option".equals(value)) {
-            return DebugGraphics.BUFFERED_OPTION;
-        }
-        else {
-            throw new IllegalArgumentException(usageText);
-        }
-    }
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/DimensionConverter.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/DimensionConverter.java
deleted file mode 100644
index 49f01bc..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/DimensionConverter.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing.converters;
-
-import java.awt.Dimension;
-import java.util.StringTokenizer;
-
-import org.apache.commons.beanutils.Converter;
-
-/**
- * A Converter that turns Strings in the form "width, height" into Dimension objects
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class DimensionConverter implements Converter {
-
-    public Object convert(Class type, Object value) {
-        if ( value != null ) {
-            String text = value.toString();
-            StringTokenizer dimensionEnum = new StringTokenizer( text, "," );
-            int width = 0;
-            int height = 0;
-            if ( dimensionEnum.hasMoreTokens() ) {
-                width = parseNumber( dimensionEnum.nextToken() );
-            }
-            if ( dimensionEnum.hasMoreTokens() ) {
-                height = parseNumber( dimensionEnum.nextToken() );
-            }
-
-            // now lets parse the dimension...
-            return new Dimension( width, height );
-        }
-        return null;
-    }
-
-    protected int parseNumber(String text) {
-        text = text.trim();
-        return Integer.parseInt(text);
-    }
-
-}
\ No newline at end of file
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/PointConverter.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/PointConverter.java
deleted file mode 100644
index 28571c0..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/converters/PointConverter.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing.converters;
-
-import java.awt.Point;
-import java.util.StringTokenizer;
-
-import org.apache.commons.beanutils.Converter;
-
-/**
- * A Converter that turns Strings in the form "x, y" into Point objects
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class PointConverter implements Converter {
-
-    public Object convert(Class type, Object value) {
-        if ( value != null ) {
-            String text = value.toString();
-            StringTokenizer pointEnum = new StringTokenizer( text, "," );
-            int x = 0;
-            int y = 0;
-            if ( pointEnum.hasMoreTokens() ) {
-                x = parseNumber( pointEnum.nextToken() );
-            }
-            if ( pointEnum.hasMoreTokens() ) {
-                y = parseNumber( pointEnum.nextToken() );
-            }
-
-            // now lets parse the Point...
-            return new Point( x, y );
-        }
-        return null;
-    }
-
-    protected int parseNumber(String text) {
-        text = text.trim();
-        return Integer.parseInt(text);
-    }
-
-}
\ No newline at end of file
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/impl/Cell.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/impl/Cell.java
deleted file mode 100644
index 45d7121..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/impl/Cell.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing.impl;
-
-import java.awt.Component;
-import java.awt.GridBagConstraints;
-
-/**
- * A simple class to represent the information for a single cell in a table
- * when using the GridBagLayout
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class Cell {
-    private GridBagConstraints constraints;
-    private Component component;
-
-    public Cell() {
-    }
-
-    public Cell(GridBagConstraints constraints, Component component) {
-        this.constraints = constraints;
-        this.component = component;
-    }
-
-    /**
-     * Returns the component.
-     * @return Component
-     */
-    public Component getComponent() {
-        return component;
-    }
-
-    /**
-     * Returns the constraints.
-     * @return GridBagConstraints
-     */
-    public GridBagConstraints getConstraints() {
-        return constraints;
-    }
-
-    /**
-     * Sets the component.
-     * @param component The component to set
-     */
-    public void setComponent(Component component) {
-        this.component = component;
-    }
-
-    /**
-     * Sets the constraints.
-     * @param constraints The constraints to set
-     */
-    public void setConstraints(GridBagConstraints constraints) {
-        this.constraints = constraints;
-    }
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/impl/GridBagConstraintBean.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/impl/GridBagConstraintBean.java
deleted file mode 100644
index 3025302..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/impl/GridBagConstraintBean.java
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing.impl;
-
-import java.awt.GridBagConstraints;
-import java.awt.Insets;
-import java.lang.reflect.Field;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This class is a simple "bean-wrapper" for the {@link GridBagConstraints} class
- * which also tracks wether values are set allowing inheritance
- *    (using {@link setBasedOn}.
- *
- * @author <a href="mailto:paul@activemath.org">Paul Libbrecht</a>
- * @version $Revision: $
- */
-public class GridBagConstraintBean extends GridBagConstraints {
-
-    private boolean gridxSet = false;
-    private boolean gridySet = false;
-    private boolean gridwidthSet = false;
-    private boolean gridheightSet = false;
-    private boolean weightxSet = false;
-    private boolean weightySet = false;
-    private boolean ipadxSet = false;
-    private boolean ipadySet = false;
-    private boolean anchorSet = false;
-    private boolean fillSet = false;
-
-    /** Logging output */
-    private static final Log LOG = LogFactory.getLog(GridBagConstraintBean.class);
-
-    /** error message */
-    private static final String ILLEGAL_ANCHOR_MSG = "Anchor must be one of  the GridBagLayout constants for the current Java version.";
-
-    public GridBagConstraintBean() {
-    }
-
-    public int getGridx() {
-        return gridx;
-    }
-    public void setGridx(int gridx) {
-        this.gridx = gridx;
-        this.gridxSet = true;
-    }
-
-    public int getGridy() {
-        return gridy;
-    }
-    public void setGridy(int gridy) {
-        this.gridy = gridy;
-        this.gridySet = true;
-    }
-
-    public int getGridwidth() {
-        return gridwidth;
-    }
-    public void setGridwidth(int gridwidth) {
-        this.gridwidth = gridwidth;
-        this.gridwidthSet = true;
-    }
-
-    public int getGridheight() {
-        return gridheight;
-    }
-    public void setGridheight(int gridheight) {
-        this.gridheight = gridheight;
-        this.gridheightSet = true;
-    }
-
-    public double getWeightx() {
-        return weightx;
-    }
-    public void setWeightx(double weightx) {
-        this.weightx = weightx;
-        this.weightxSet = true;
-    }
-
-    public double getWeighty() {
-        return weighty;
-    }
-    public void setWeighty(double weighty) {
-        this.weighty = weighty;
-        this.weightySet = true;
-    }
-
-    public int getIpadx() {
-        return ipadx;
-    }
-    public void setIpadx(int ipadx) {
-        this.ipadx = ipadx;
-        this.ipadxSet = true;
-    }
-
-    public int getIpady() {
-        return ipady;
-    }
-    public void setIpady(int ipady) {
-        this.ipady = ipady;
-        this.ipadySet = true;
-    }
-
-    // TODO: provide better. insetstop, insetsbottom ??
-    public Insets getInsets() {
-        return insets;
-    }
-    public void setInsets(Insets insets) {
-        this.insets = insets;
-    }
-
-    /** Returns the lower-case variant of the constant-name
-        *    corresponding to the stored {@link #anchor} attribute.
-        *
-        *    @see    #anchor
-        */
-    public String getAnchor() {
-        switch (this.anchor) {
-            case CENTER :
-                return "center";
-            case NORTH :
-                return "north";
-            case NORTHEAST :
-                return "northeast";
-            case EAST :
-                return "east";
-            case SOUTHEAST :
-                return "southeast";
-            case SOUTH :
-                return "south";
-            case SOUTHWEST :
-                return "southwest";
-            case WEST :
-                return "west";
-            case NORTHWEST :
-                return "northwest";
-        }
-
-        if (this.anchor == getByReflection("LINE_START"))
-            return "line_start";
-        else if (this.anchor == getByReflection("LINE_END"))
-            return "line_end";
-        else if (this.anchor == getByReflection("PAGE_START"))
-            return "page_start";
-        else if (this.anchor == getByReflection("PAGE_END"))
-            return "page_end";
-        else if (this.anchor == getByReflection("FIRST_LINE_START"))
-            return "first_line_start";
-        else if (this.anchor == getByReflection("FIRST_LINE_END"))
-            return "first_line_end";
-        else if (this.anchor == getByReflection("LAST_LINE_START"))
-            return "last_line_start";
-        else if (this.anchor ==  getByReflection("LAST_LINE_END"))
-            return "last_line_end";
-
-        throw new IllegalArgumentException(ILLEGAL_ANCHOR_MSG);
-    }
-
-    /** Accepts one of the strings with the same name as the constants
-        * and sets the {@link #anchor} value accordingly.
-        *    The accepted strings are case-insensitive.
-        *
-        *    @see #anchor
-        */
-    public void setAnchor(String anchorString) {
-        String lcAnchorString = anchorString.toLowerCase();
-        if (lcAnchorString.equals("center"))
-            this.anchor = CENTER;
-        else if (lcAnchorString.equals("north"))
-            this.anchor = NORTH;
-        else if (lcAnchorString.equals("northeast"))
-            this.anchor = NORTHEAST;
-        else if (lcAnchorString.equals("east"))
-            this.anchor = EAST;
-        else if (lcAnchorString.equals("southeast"))
-            this.anchor = SOUTHEAST;
-        else if (lcAnchorString.equals("south"))
-            this.anchor = SOUTH;
-        else if (lcAnchorString.equals("southwest"))
-            this.anchor = SOUTHWEST;
-        else if (lcAnchorString.equals("west"))
-            this.anchor = WEST;
-        else if (lcAnchorString.equals("northwest"))
-            this.anchor = NORTHWEST;
-        else if (lcAnchorString.equals("page_start"))
-            this.anchor = getByReflection("PAGE_START");
-        else if (lcAnchorString.equals("page_end"))
-            this.anchor = getByReflection("PAGE_END");
-        else if (lcAnchorString.equals("line_start"))
-            this.anchor = getByReflection("LINE_START");
-        else if (lcAnchorString.equals("line_end"))
-            this.anchor = getByReflection("LINE_END");
-        else if (lcAnchorString.equals("first_line_start"))
-            this.anchor = getByReflection("FIRST_LINE_START");
-        else if (lcAnchorString.equals("first_line_end"))
-            this.anchor = getByReflection("FIRST_LINE_END");
-        else if (lcAnchorString.equals("last_line_end"))
-            this.anchor = getByReflection("LAST_LINE_END");
-        else if (lcAnchorString.equals("last_line_start"))
-            this.anchor = getByReflection("LAST_LINE_START");
-        else
-            throw new IllegalArgumentException("Anchor must be the name of one of  the GridBagLayoutConstants (case doesn't matter): center, north, northeast, east, southeast, south, southwest, west, or northwest.");
-        this.anchorSet = true;
-    }
-
-    /** Returns the lower-case variant of the constant-name
-        *    corresponding to the stored {@link #fill} attribute.
-        *
-        *    @see    #fill
-        */
-    public String getFill() {
-        switch (fill) {
-            case NONE :
-                return "none";
-            case HORIZONTAL :
-                return "horizontal";
-            case VERTICAL :
-                return "vertical";
-            case BOTH :
-                return "both";
-            default :
-                throw new IllegalArgumentException("Fill must be the name of one of  the GridBagLayoutConstants: NONE, HORIZONTAL, VERTICAL, BOTH.");
-        }
-    }
-    /** Accepts one of the strings with the same name as the constants
-        * and sets the {@link #fill} value accordingly.
-        *    The accepted strings are case-insensitive.
-        *
-        *    @see #fill
-        */
-    public void setFill(String fillString) {
-        String lcFillString = fillString.toLowerCase();
-        if (lcFillString.equals("none"))
-            this.fill = NONE;
-        else if (lcFillString.equals("horizontal"))
-            this.fill = HORIZONTAL;
-        else if (lcFillString.equals("vertical"))
-            this.fill = VERTICAL;
-        else if (lcFillString.equals("both"))
-            this.fill = BOTH;
-        else
-            throw new IllegalArgumentException("Fill must be the name of one of  the GridBagLayoutConstants (case does not matter): NONE, HORIZONTAL, VERTICAL, BOTH.");
-        this.fillSet = true;
-    }
-
-    /** Reads the values in the given grid-bag-constraint-bean that are set and sets
-        * them in this object if they have not been set yet.
-        */
-    public void setBasedOn(GridBagConstraintBean from) {
-        if (!gridxSet && from.gridxSet) {
-            gridx = from.gridx;
-            this.gridxSet = true;
-        }
-        if (!gridySet && from.gridySet) {
-            gridy = from.gridy;
-            this.gridySet = true;
-        }
-        if (!gridwidthSet && from.gridwidthSet) {
-            gridwidth = from.gridwidth;
-            this.gridwidthSet = true;
-        }
-        if (!gridheightSet && from.gridheightSet) {
-            gridheight = from.gridheight;
-            this.gridheightSet = true;
-        }
-        if (!weightxSet && from.weightxSet) {
-            weightx = from.weightx;
-            this.weightxSet = true;
-        }
-        if (!weightySet && from.weightySet) {
-            weighty = from.weighty;
-            this.weightySet = true;
-        }
-        if (!ipadxSet && from.ipadxSet) {
-            ipadx = from.ipadx;
-            this.ipadxSet = true;
-        }
-        if (!ipadySet && from.ipadySet) {
-            ipady = from.ipady;
-            this.ipadySet = true;
-        }
-        if (!fillSet && from.fillSet) {
-            fill = from.fill;
-            this.fillSet = true;
-        }
-        if (!anchorSet && from.anchorSet) {
-            anchor = from.anchor;
-            this.anchorSet = true;
-        }
-    }
-
-    public String toString() {
-        return "GridBagConstraintBean["
-            + "gridx="
-            + gridx
-            + ", gridy="
-            + gridy
-            + ", gridwidth="
-            + gridwidth
-            + ", gridheight="
-            + gridheight
-            + ", weightx="
-            + weightx
-            + ", weighty="
-            + weighty
-            + ", ipadx="
-            + ipadx
-            + ", ipady="
-            + ipady
-            + ", anchor="
-            + getAnchor()
-            + ", fill="
-            + getFill()
-            + ", insets="
-            + insets
-            + "]";
-    }
-
-    private int getByReflection(String field) {
-        try {
-            Field f = getClass().getField(field);
-            Integer rv = (Integer) f.get(this);
-            return rv.intValue();
-        } catch (SecurityException e) {
-            LOG.debug(e);
-            throw new IllegalArgumentException(ILLEGAL_ANCHOR_MSG);
-        } catch (NoSuchFieldException e) {
-            LOG.debug(e);
-            throw new IllegalArgumentException(ILLEGAL_ANCHOR_MSG);
-        } catch (IllegalArgumentException e) {
-            LOG.debug(e);
-            throw new IllegalArgumentException(ILLEGAL_ANCHOR_MSG);
-        } catch (IllegalAccessException e) {
-            LOG.debug(e);
-            throw new IllegalArgumentException(ILLEGAL_ANCHOR_MSG);
-        }
-    }
-
-} // class GridBagConstraintsBean
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/impl/package.html b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/impl/package.html
deleted file mode 100644
index 81abceb..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/impl/package.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
-  <p>
-  	Implementation classes for the JellySwing library
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/model/ExpressionTableColumn.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/model/ExpressionTableColumn.java
deleted file mode 100644
index 33638aa..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/model/ExpressionTableColumn.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing.model;
-
-import javax.swing.table.TableColumn;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.expression.Expression;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Represents a column in an ExpressionTable
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class ExpressionTableColumn extends TableColumn {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog( ExpressionTableColumn.class );
-
-    private Expression value;
-    private Class type = Object.class;
-
-    public ExpressionTableColumn() {
-    }
-
-    public String toString() {
-        return super.toString() + "[value:" + value + "]";
-    }
-
-    /**
-     * Evaluates the value of a cell
-     */
-    public Object evaluateValue(ExpressionTableModel model, Object row, int rowIndex, int columnIndex) {
-        if (value == null) {
-            return null;
-        }
-        // lets put the values in the context
-        JellyContext context = model.getContext();
-        context.setVariable("rows", model.getRows());
-        context.setVariable("columns", model.getColumnList());
-        context.setVariable("row", row);
-        context.setVariable("rowIndex", new Integer(rowIndex));
-        context.setVariable("columnIndex", new Integer(columnIndex));
-
-        // now lets invoke the expression
-        try {
-            return value.evaluateRecurse(context);
-        }
-        catch (RuntimeException e) {
-            log.warn( "Caught exception: " + e + " evaluating: " + value, e );
-            throw e;
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the column type.
-     * @return Class
-     */
-    public Class getType() {
-        return type;
-    }
-
-    /**
-     * Returns the expression used to extract the value.
-     * @return Expression
-     */
-    public Expression getValue() {
-        return value;
-    }
-
-    /**
-     * Sets the expression used to extract the value.
-     * @param type The type to set
-     */
-    public void setType(Class type) {
-        this.type = type;
-    }
-
-    /**
-     * Sets the value.
-     * @param value The value to set
-     */
-    public void setValue(Expression value) {
-        this.value = value;
-    }
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/model/ExpressionTableModel.java b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/model/ExpressionTableModel.java
deleted file mode 100644
index 62d67e4..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/model/ExpressionTableModel.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swing.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.table.AbstractTableModel;
-import javax.swing.table.DefaultTableColumnModel;
-import javax.swing.table.TableColumnModel;
-
-import org.apache.commons.jelly.JellyContext;
-
-/**
- * A Swing TableModel that uses a List of rows with pluggable Expressions
- * to evaluate the value of the cells
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class ExpressionTableModel extends AbstractTableModel {
-
-    private JellyContext context;
-    private List rows = new ArrayList();
-    private MyTableColumnModel columnModel = new MyTableColumnModel();
-
-    public ExpressionTableModel() {
-    }
-
-    /**
-     * Returns the column definitions.
-     * @return List
-     */
-    public List getColumnList() {
-        return columnModel.getColumnList();
-    }
-
-    /**
-     * @return the TableColumnModel
-     */
-    public TableColumnModel getColumnModel() {
-        return columnModel;
-    }
-
-    /**
-     * Adds a new column definition to the table
-     */
-    public void addColumn(ExpressionTableColumn column) {
-        columnModel.addColumn(column);
-    }
-
-    /**
-     * Removes a column definition from the table
-     */
-    public void removeColumn(ExpressionTableColumn column) {
-        columnModel.removeColumn(column);
-    }
-
-
-    // TableModel interface
-    //-------------------------------------------------------------------------
-    public int getRowCount() {
-        return rows.size();
-    }
-
-    public int getColumnCount() {
-        return columnModel.getColumnCount();
-    }
-
-    public String getColumnName(int columnIndex) {
-        String answer = null;
-        if (columnIndex < 0 || columnIndex >= columnModel.getColumnCount()) {
-            return answer;
-        }
-        Object value = columnModel.getColumn(columnIndex).getHeaderValue();
-        if (value != null) {
-            return value.toString();
-        }
-        return answer;
-    }
-
-    public Object getValueAt(int rowIndex, int columnIndex) {
-        Object answer = null;
-        if (rowIndex < 0 || rowIndex >= rows.size()) {
-            return answer;
-        }
-        if (columnIndex < 0 || columnIndex >= columnModel.getColumnCount()) {
-            return answer;
-        }
-        Object row = rows.get(rowIndex);;
-        ExpressionTableColumn column = (ExpressionTableColumn) columnModel.getColumn(columnIndex);
-        if (row == null || column == null) {
-            return answer;
-        }
-        return column.evaluateValue(this, row, rowIndex, columnIndex);
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-
-    /**
-     * Returns the list of rows.
-     * @return List
-     */
-    public List getRows() {
-        return rows;
-    }
-
-    /**
-     * Sets the list of rows.
-     * @param rows The rows to set
-     */
-    public void setRows(List rows) {
-        this.rows = rows;
-    }
-
-    /**
-     * Returns the context.
-     * @return JellyContext
-     */
-    public JellyContext getContext() {
-        return context;
-    }
-
-    /**
-     * Sets the context.
-     * @param context The context to set
-     */
-    public void setContext(JellyContext context) {
-        this.context = context;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected static class MyTableColumnModel extends DefaultTableColumnModel {
-        public List getColumnList() {
-            return tableColumns;
-        }
-    };
-
-
-}
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/model/package.html b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/model/package.html
deleted file mode 100644
index 7102c82..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/model/package.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
-  <p>
-  	Swing model implementations that can be used with JellySwing
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/package.html b/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/package.html
deleted file mode 100644
index 4fde992..0000000
--- a/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/package.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
-  <p>
-  	The JellySwing Library which is a Jelly Library for creating Rich User Interfaces 
-  	using Swing via XML markup (a Jelly script)
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/core/BaseJellyTest.java b/jelly-tags/swing/src/test/org/apache/commons/jelly/core/BaseJellyTest.java
deleted file mode 100644
index 3e318a6..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/core/BaseJellyTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import java.net.URL;
-
-import junit.framework.TestCase;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * @author Rodney Waldhoff
- * @version $Revision: 1.2 $ $Date: 2004/09/09 12:16:59 $
- */
-public abstract class BaseJellyTest extends TestCase {
-
-    public BaseJellyTest(String name) {
-        super(name);
-    }
-
-    public void setUp() throws Exception {
-        super.setUp();
-        jelly = new Jelly();
-        context = new JellyContext();
-        xmlOutput = XMLOutput.createDummyXMLOutput();
-    }
-
-    protected void setUpScript(String scriptname) throws Exception {
-        URL url = this.getClass().getResource(scriptname);
-        if(null == url) {
-            throw new Exception(
-                "Could not find Jelly script: " + scriptname
-                + " in package of class: " + getClass().getName()
-            );
-        }
-        jelly.setUrl(url);
-
-        String exturl = url.toExternalForm();
-        int lastSlash = exturl.lastIndexOf("/");
-        String extBase = exturl.substring(0,lastSlash+1);
-        URL baseurl = new URL(extBase);
-        context.setCurrentURL(baseurl);
-    }
-
-    protected Jelly getJelly() {
-        return jelly;
-    }
-
-    protected JellyContext getJellyContext() {
-        return context;
-    }
-
-    protected XMLOutput getXMLOutput() {
-        return xmlOutput;
-    }
-
-    private Jelly jelly = null;
-    private JellyContext context = null;
-    private XMLOutput xmlOutput = null;
-
-}
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/HomepageBuilder.java b/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/HomepageBuilder.java
deleted file mode 100644
index ecd3f36..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/HomepageBuilder.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.demos;
-
-import java.awt.BorderLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.Vector;
-
-import javax.swing.BorderFactory;
-import javax.swing.BoxLayout;
-import javax.swing.DefaultListModel;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JEditorPane;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A sample Swing program that demonstrates the use of Jelly as a templating mechanism
- *
- * @author Otto von Wachter
- */
-public class HomepageBuilder extends JPanel {
-
-    JTextField nameField;
-    JTextField urlField;
-    JTextField addField;
-    JTextField colorField;
-    JComboBox templateList;
-    JList interestList;
-    DefaultListModel listModel;
-
-
-    public HomepageBuilder() {
-
-        System.out.println("Starting Homepage Builder");
-
-        JPanel leftPanel = new JPanel();
-        leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
-
-        leftPanel.add(new JLabel("Name:"));
-
-        nameField= new JTextField("James Bond");
-        leftPanel.add(nameField);
-
-        leftPanel.add(new JLabel("Favorite Color:"));
-
-        colorField = new JTextField("#007007");
-        leftPanel.add(colorField);
-
-        leftPanel.add(new JLabel("Picture URL:"));
-
-        urlField = new JTextField("http://www.ianfleming.org/007news/images3/c2002_pierce1.jpg");
-        leftPanel.add(urlField);
-
-        leftPanel.add(new JLabel("Choose template:"));
-
-        templateList = new JComboBox(new String[] {"template1.jelly","template2.jelly"});
-        leftPanel.add(templateList);
-
-//        JPanel rightPanel = new JPanel();
-//        rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
-
-        leftPanel.add(new JLabel("Add a Hobby:"));
-
-        addField = new JTextField();
-        leftPanel.add(addField);
-
-        JButton addButton = new JButton("Add >>>");
-        addButton.addActionListener(new ActionListener() {
-            public void actionPerformed(ActionEvent e) {
-                listModel.addElement(addField.getText());
-            }
-        });
-        leftPanel.add(addButton);
-
-        listModel = new DefaultListModel();
-        listModel.addElement("Killing bad guys");
-        listModel.addElement("Wrecking cars");
-        listModel.addElement("Eating jelly");
-        interestList = new JList(listModel);
-
-
-        JButton submit = new JButton("Build and preview your page!");
-        submit.addActionListener(new ActionListener() {
-            public void actionPerformed(ActionEvent e) {
-                buildPage(templateList.getSelectedItem().toString(),new JellyContext());
-                showPage();
-            }
-        });
-
-        // Layout the demo
-        setLayout(new BorderLayout());
-        add(submit, BorderLayout.SOUTH);
-        add(leftPanel, BorderLayout.WEST);
-        add(new JScrollPane(interestList), BorderLayout.EAST);
-        setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
-    }
-
-    public void buildPage(String template, JellyContext ctx) {
-
-//        try {
-//
-//        Embedded embedded = new Embedded();
-//        embedded.setOutputStream(new FileOutputStream("out.html"));
-//        //embedded.setVariable("some-var","some-object");
-//
-//        embedded.setScript("file:///anoncvs/jakarta-commons-sandbox/jelly/sample.jelly");
-//        //or one can do.
-//        //embedded.setScript(scriptAsInputStream);
-//
-//        boolean bStatus=embedded.execute();
-//        if(!bStatus) //if error
-//        {
-//        System.out.println(embedded.getErrorMsg());
-//        }
-//
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-
-
-        try {
-
-            OutputStream output = new FileOutputStream("demopage.html");
-
-            JellyContext context = new JellyContext();
-            context.setVariable("name",nameField.getText());
-            context.setVariable("background",colorField.getText());
-            context.setVariable("url",urlField.getText());
-
-            Vector v = new Vector();
-            Enumeration items = listModel.elements();
-            while (items.hasMoreElements()) {
-                v.add(items.nextElement());
-            }
-            context.setVariable("hobbies", v);
-
-            XMLOutput xmlOutput = XMLOutput.createXMLOutput(output);
-            context.runScript( resolveURL("src/test/org/apache/commons/jelly/demos/"+template), xmlOutput );
-            xmlOutput.flush();
-            System.out.println("Finished merging template");
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-    }
-
-    void showPage() {
-
-        //open new window
-        JFrame frame = new JFrame("Your Homepage");
-
-        //add html pane
-        try {
-
-          URL url = resolveURL("demopage.html");
-          JEditorPane htmlPane = new JEditorPane(url);
-          htmlPane.setEditable(false);
-          frame.setContentPane(new JScrollPane(htmlPane));
-
-        } catch(Exception ioe) {
-          System.err.println("Error displaying page");
-        }
-
-        frame.pack();
-        frame.setSize(500,500);
-        frame.setVisible(true);
-
-    }
-
-     /***
-      * @return the URL for the relative file name or absolute URL
-      */
-    protected URL resolveURL(String name) throws MalformedURLException {
-         File file = new File(name);
-         if (file.exists()) {
-             return file.toURL();
-         }
-         return new URL(name);
-     }
-
-
-    public static void main(String s[]) {
-        JFrame frame = new JFrame("Homepage Builder");
-
-        frame.addWindowListener(new WindowAdapter() {
-            public void windowClosing(WindowEvent e) {System.exit(0);}
-        });
-
-        frame.setContentPane(new HomepageBuilder());
-        frame.pack();
-        frame.setVisible(true);
-    }
-}
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/homepageBuilder.jelly b/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/homepageBuilder.jelly
deleted file mode 100644
index 51f3972..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/homepageBuilder.jelly
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core" 
-    xmlns="jelly:swing" >
-
-    <!-- create the generate page action -->
-
-    <action var="createPageAction" name="Build and preview your page!">
-        <j:set var="name" value="${nameField.text}"/>
-        <j:set var="background" value="${colorField.text}"/>
-        <j:set var="url" value="${pictureField.text}"/>
-        <j:set var="hobbies" value="${hobbyModel.toArray()}"/>
-        <j:set var="template" value="${templateField.getSelectedItem().toString()}"/>
-        
-        name = ${name}
-        background = ${background}
-        url = ${url}
-        hobbies = ${hobbies}
-        template = ${template}
-        
-        <j:file name="demopage.html" outputMode="html">
-            <j:include uri="${template}"/>
-        </j:file>
-
-        <frame var="showPageFrame" size="500,600" location="200,200" title="Your Homepage">
-            <scrollPane>
-                <editorPane page="${context.getResource('/demopage.html').toString()}" editable="false"/>
-            </scrollPane>
-        </frame>
-        ${showPageFrame.show()}
-    </action>
-
-
-    <!-- create the Frame -->
-    
-  <frame var="frame" title="Homepage Builder" location="100,100" size="800,400">
-        <panel>
-
-<!-- uncomment this when we've implemented emptyBorder
-    
-            <emptyBorder top="20" left="20" bottom="20" right="20" />            
--->        
-            <borderLayout>                      
-                <borderAlign align="west">
-                  <vbox>
-                      <label text="Name:"/>
-                      <textField var="nameField" text="James Bond"/>
-            
-                      <label text="Favourite Color:"/>
-                      <textField var="colorField" text="#007007"/>
-                      
-                      <label text="Picture URL::"/>
-                      <textField var="pictureField" text="http://www.ianfleming.org/007news/images3/c2002_pierce1.jpg"/>
-                      
-                      <label text="Choose template::"/>
-                      <comboBox var="templateField"/>
-                      ${templateField.addItem('template1.jelly')}
-                      ${templateField.addItem('template2.jelly')}
-                      
-                      <label text="Add a Hobby:"/>
-                      <textField var="hobbyField"/>
-                      
-                      <button>
-                          <action name="Add >>>">
-                              ${hobbyModel.addElement(hobbyField.text)}
-                            </action>
-                      </button>
-                  </vbox>
-                </borderAlign>
-                
-                <borderAlign align="east">      
-                  <scrollPane>
-                      <j:useBean class="javax.swing.DefaultListModel" var="hobbyModel"/>
-                        <list model="${hobbyModel}"/>
-                        ${hobbyModel.addElement('Killing bad guys')}
-                        ${hobbyModel.addElement('Wrecking cars')}
-                        ${hobbyModel.addElement('Eating jelly')}
-                  </scrollPane>
-                </borderAlign>
-                
-                <borderAlign align="south">      
-                  <button action="${createPageAction}"/>
-                </borderAlign>
-            </borderLayout>
-        </panel>
-    </frame>
-
-    ${frame.show()}
-
-</j:jelly>
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/template1.jelly b/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/template1.jelly
deleted file mode 100644
index 2c08781..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/template1.jelly
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly trim="false" xmlns:j="jelly:core">
-
-  <html>
-  
-      <head>
-    <title>${name}'s Page</title>
-    </head>
-    
-    <body bgcolor="${background}" text="#FFFFFF">
-
-    <h1>${name}'s Homepage</h1>
-    
-    <img src="${url}"/>
-    
-    <h2>My Hobbies</h2>
-    
-    <ul>
-    
-    <j:forEach items="${hobbies}" var="i">
-        <li>${i}</li>
-    </j:forEach>
-    
-    </ul>
-    
-    </body>
-
-  </html>
-  
-</j:jelly>
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/template2.jelly b/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/template2.jelly
deleted file mode 100644
index 6212d99..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/template2.jelly
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly trim="false" xmlns:j="jelly:core">
-
-  <html>
-  
-      <head>
-    <title>${name}'s Page</title>
-    </head>
-    
-    <body bgcolor="${background}" text="#FFFF00">
-    
-    <table>
-    <tr>
-    <td>
-    <img src="${url}"/>
-    </td>
-
-    <td>
-    <h1>Welcome to my Homepage!</h1>
-        
-    <p>
-    Hi, I'm ${name}.  These are my hobbies:
-    </p>
-        
-    <ol>
-    
-    <j:forEach items="${hobbies}" var="i">
-        <li>${i}</li>
-    </j:forEach>
-    
-    </ol>
-    </td>
-    </tr>
-    </table>
-    
-    </body>
-
-  </html>
-  
-</j:jelly>
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/MyTableModel.java b/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/MyTableModel.java
deleted file mode 100644
index ceb3c30..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/MyTableModel.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.swing;
-
-import javax.swing.table.AbstractTableModel;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A sample table model
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class MyTableModel extends AbstractTableModel {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(MyTableModel.class);
-
-    public MyTableModel() {
-    }
-
-
-    final String[] columnNames = {
-        "First Name",
-        "Last Name",
-        "Sport",
-        "# of Years",
-        "Vegetarian"
-    };
-    final Object[][] data = {
-        {"Mary", "Campione",
-         "Snowboarding", new Integer(5), new Boolean(false)},
-        {"Alison", "Huml",
-         "Rowing", new Integer(3), new Boolean(true)},
-        {"Kathy", "Walrath",
-         "Chasing toddlers", new Integer(2), new Boolean(false)},
-        {"Mark", "Andrews",
-         "Speed reading", new Integer(20), new Boolean(true)},
-        {"Angela", "Lih",
-         "Teaching high school", new Integer(4), new Boolean(false)}
-        };
-
-    public int getColumnCount() {
-        return columnNames.length;
-    }
-
-    public int getRowCount() {
-        return data.length;
-    }
-
-    public String getColumnName(int col) {
-        return columnNames[col];
-    }
-
-    public Object getValueAt(int row, int col) {
-        return data[row][col];
-    }
-
-    /*
-     * JTable uses this method to determine the default renderer/
-     * editor for each cell.  If we didn't implement this method,
-     * then the last column would contain text ("true"/"false"),
-     * rather than a check box.
-     */
-    public Class getColumnClass(int c) {
-        return getValueAt(0, c).getClass();
-    }
-
-    /*
-     * Don't need to implement this method unless your table's
-     * editable.
-     */
-    public boolean isCellEditable(int row, int col) {
-        //Note that the data/cell address is constant,
-        //no matter where the cell appears onscreen.
-        if (col < 2) {
-            return false;
-        } else {
-            return true;
-        }
-    }
-
-    /*
-     * Don't need to implement this method unless your table's
-     * data can change.
-     */
-    public void setValueAt(Object value, int row, int col) {
-        if (log.isDebugEnabled()) {
-            log.debug("Setting value at " + row + "," + col
-                               + " to " + value
-                               + " (an instance of "
-                               + value.getClass() + ")");
-        }
-
-        if (data[0][col] instanceof Integer
-                && !(value instanceof Integer)) {
-            //With JFC/Swing 1.1 and JDK 1.2, we need to create
-            //an Integer from the value; otherwise, the column
-            //switches to contain Strings.  Starting with v 1.3,
-            //the table automatically converts value to an Integer,
-            //so you only need the code in the 'else' part of this
-            //'if' block.
-            //XXX: See TableEditDemo.java for a better solution!!!
-            try {
-                data[row][col] = new Integer(value.toString());
-                fireTableCellUpdated(row, col);
-            } catch (NumberFormatException e) {
-                log.error( "The \"" + getColumnName(col)
-                    + "\" column accepts only integer values.");
-            }
-        } else {
-            data[row][col] = value;
-            fireTableCellUpdated(row, col);
-        }
-    }
-
-
-}
\ No newline at end of file
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/TestConverters.java b/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/TestConverters.java
deleted file mode 100644
index 6d38610..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/TestConverters.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.swing;
-
-import java.awt.Dimension;
-import java.awt.Point;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.beanutils.ConvertUtils;
-
-import org.apache.commons.jelly.tags.swing.SwingTagLibrary;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Tests the Swing converters
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class TestConverters extends TestCase {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TestConverters.class);
-
-    /** Delta used to compare doubles */
-    double delta = 0.0000001;
-
-    // force the Swing converters to be loaded
-    SwingTagLibrary dummy = new SwingTagLibrary();
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestConverters.class);
-    }
-
-    public TestConverters(String testName) {
-        super(testName);
-    }
-
-
-    public void testDimensions() throws Exception {
-        assertDimension("100, 200", new Dimension(100, 200));
-        assertDimension("100", new Dimension(100, 0));
-        assertDimension(" 100  ,  200  ", new Dimension(100, 200));
-        assertDimension(" 0  ,  200  ", new Dimension(0, 200));
-    }
-
-    public void testPoints() throws Exception {
-        assertPoint("100, 200", new Point(100, 200));
-        assertPoint("100", new Point(100, 0));
-        assertPoint(" 100  ,  200  ", new Point(100, 200));
-        assertPoint(" 0  ,  200  ", new Point(0, 200));
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    protected void assertPoint(String expression, Point expected) throws Exception {
-        Object answer = ConvertUtils.convert(expression, Point.class );
-
-        assertTrue( "Returned type: "+  answer.getClass() + " is-a Point", answer instanceof Point );
-
-        Point value = (Point) answer;
-
-        assertEquals( "x", expected.getX(), value.getX(), delta );
-        assertEquals( "y", expected.getY(), value.getY(), delta );
-
-        assertEquals( expected, value );
-    }
-
-    protected void assertDimension(String expression, Dimension expected) throws Exception {
-        Object answer = ConvertUtils.convert(expression, Dimension.class );
-
-        assertTrue( "Returned type: "+  answer.getClass() + " is-a Dimension", answer instanceof Dimension );
-
-        Dimension value = (Dimension) answer;
-
-        assertEquals( "width", expected.getWidth(), value.getWidth(), delta );
-        assertEquals( "height", expected.getHeight(), value.getHeight(), delta );
-
-        assertEquals( expected, value );
-    }
-}
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/TestSwingTags.java b/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/TestSwingTags.java
deleted file mode 100644
index 63a1734..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/TestSwingTags.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.swing;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.Point;
-import java.io.UnsupportedEncodingException;
-
-import javax.swing.ButtonGroup;
-import javax.swing.DebugGraphics;
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JPanel;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-/** Tests many swing tags for basic functionality.
- * @author Hans Gilde
- *
- */
-public class TestSwingTags extends BaseJellyTest {
-
-    /**
-     * @param name
-     */
-    public TestSwingTags(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestSwingTags.class);
-    }
-
-    /** Tests some basic Swing tag functions like creating components
-     * , adding them to the parent container and setting bean values.
-     * @throws Exception
-     */
-    public void testBasicComponentFunctions() throws Exception {
-        if (!isAWTAvailable()) return;
-        runSwingScript("test.simple");
-        JellyContext context = getJellyContext();
-        JFrame frame = (JFrame) context.getVariable("frame");
-        assertEquals(new Dimension(100,100), frame.getSize());
-        assertEquals(new Point(200,200), frame.getLocation());
-        JPanel panel = (JPanel) componentByName(frame.getContentPane(), "panel");
-        JButton button = (JButton) componentByName(panel, "button");
-        assertNotNull(button);
-        assertEquals(new Color(0x11,0x22,0x33), button.getBackground());
-        assertEquals(new Color(0x44,0x55,0x66), button.getForeground());
-        assertEquals(DebugGraphics.FLASH_OPTION|DebugGraphics.LOG_OPTION, panel.getDebugGraphicsOptions());
-        assertEquals(DebugGraphics.BUFFERED_OPTION, button.getDebugGraphicsOptions());
-    }
-
-    /** Tests the GridbagLayout tags, making sure that the constraints are
-     * set properly including inheritance and basedOn.
-     * @throws Exception
-     */
-    public void testGridBagBasic() throws Exception {
-        if (!isAWTAvailable()) return;
-        runSwingScript("test.gbc");
-        JellyContext context = getJellyContext();
-        JFrame frame = (JFrame) context.getVariable("frame");
-        JButton button = (JButton) componentByName(frame.getContentPane(), "button");
-        JButton button2 = (JButton) componentByName(frame.getContentPane(), "button2");
-        GridBagLayout layout = (GridBagLayout) frame.getContentPane().getLayout();
-        GridBagConstraints constraints = layout.getConstraints(button);
-
-        // this is failing
-        assertEquals(GridBagConstraints.NORTH,constraints.anchor);
-        assertEquals(GridBagConstraints.VERTICAL, constraints.fill);
-        assertEquals(3, constraints.gridheight);
-        assertEquals(2, constraints.gridwidth);
-        assertEquals(4, constraints.gridx);
-        assertEquals(5, constraints.gridy);
-        assertEquals(7, constraints.ipadx);
-        assertEquals(8, constraints.ipady);
-        assertEquals(0.3, constraints.weightx, 0);
-        assertEquals(new Insets(1,2,3,4), constraints.insets);
-        assertEquals(0.6, constraints.weighty, 0);
-
-        GridBagConstraints constraints2 = layout.getConstraints(button2);
-        assertEquals(1, constraints2.gridx);
-        assertEquals(2, constraints2.gridy);
-        assertEquals(2, constraints2.ipadx);
-        assertEquals(9, constraints2.ipady);
-        assertEquals(new Insets(3,4,5,6), constraints2.insets);
-    }
-
-    public void testGridBag14() throws Exception {
-        if (!isAWTAvailable()) return;
-        if (System.getProperty("java.version").startsWith("1.4")) {
-            runSwingScript("test.gbc14");
-            JellyContext context = getJellyContext();
-            JFrame frame = (JFrame) context.getVariable("frame");
-            JButton button = (JButton) componentByName(frame.getContentPane(), "button");
-            GridBagLayout layout = (GridBagLayout) frame.getContentPane().getLayout();
-            GridBagConstraints constraints = layout.getConstraints(button);
-            //note that 21 is the JDK 1.4 value of GridBagConstraint.LINE_START
-            assertEquals(21,constraints.anchor);
-        }
-    }
-
-    public void testGridBagFail(){
-        if (!isAWTAvailable()) return;
-        try {
-            runSwingScript("test.gbcBad");
-        } catch (Exception e) {
-            //success
-            return;
-        }
-        fail("Should have thrown an exception for a bad GBC anchor");
-    }
-
-    public void testButtonGroup() throws Exception {
-        if (!isAWTAvailable()) return;
-        runSwingScript("test.buttonGroup");
-        JellyContext context = getJellyContext();
-        ButtonGroup bg = (ButtonGroup) context.getVariable("bg");
-        assertEquals(3, bg.getButtonCount());
-        assertNotNull(bg.getSelection());
-    }
-
-    public void testInvalidBeanProperty() throws Exception {
-        if (!isAWTAvailable()) return;
-        try {
-            runSwingScript("test.invalidProperty");
-        } catch (Exception e) {
-            //success
-            return;
-        }
-        fail("Should have thrown an exception due to an invalid bean property.");
-    }
-
-    protected void runSwingScript(String testName) throws Exception {
-        setUpScript("swingTags.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().getVariables().clear();
-        getJellyContext().setVariable(testName,Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-    }
-
-    /** Searches a container for a component with a given name. Searches only
-     * the immediate container, not child containers.
-     * @param container the Container to search in
-     * @param name the name to look for
-     * @return the first component with the given name
-     * @throws Exception if the name isn't found
-     */
-    protected static Component componentByName(Container container, String name) throws Exception{
-        Component[] components = container.getComponents();
-
-        for (int i=0;i<components.length;i++) {
-            Component component = components[i];
-            if (component.getName().equals(name)) {
-                return component;
-            }
-        }
-
-        throw new Exception("Component " + name + " not found in container " + container);
-    }
-
-    /**
-     * @return true if we are running with AWT present
-     */
-    private boolean isAWTAvailable() {
-        return !Boolean.getBoolean("java.awt.headless");
-    }
-    /* (non-Javadoc)
-     * @see org.apache.commons.jelly.core.BaseJellyTest#getXMLOutput()
-     */
-    protected XMLOutput getXMLOutput() {
-        try {
-            return XMLOutput.createXMLOutput(System.out);
-        } catch (UnsupportedEncodingException e) {
-            return null;
-        }
-    }
-}
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/about.jelly b/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/about.jelly
deleted file mode 100644
index 3e1b031..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/about.jelly
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core" 
-    xmlns="jelly:swing" 
-    xmlns:log="jelly:log">
-
-    <j:set var="text">
-This is an example of the kind of Rich User Interface you can create
-using JellySwing.
-
-The whole user interface can be specified using XML which can then be
-executed using Jelly.
-
-There is support for all the main Swing controls as well as custom controls.
-Configure your views using XML techniques such as XSLT or Jelly, then 
-plug in your own models or create new models dynamically using Jelly.        
-    </j:set>
-    
-    <optionPane var="optionPane" message="${text}"/>
-    
-    <j:set var="dialog" value="${optionPane.createDialog(frame, 'About JellySwing')}"/>
-    ${dialog.show()}
-    
-</j:jelly>
-
-
-
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/example.jelly b/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/example.jelly
deleted file mode 100644
index 4faf119..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/example.jelly
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core" 
-    xmlns="jelly:swing" 
-    xmlns:log="jelly:log"
-    xmlns:define="jelly:define">
-
-  <action var="fooAction" name="Foo" tooltip="some text">
-      <log:info>Just evaluated the foo action!</log:info>
-  </action>
-
-  <font var="bigfont" name="helvetica" family="helvetica" size="${20}"/>
-
-    <define:script var="onClosing">
-    <log:info>The frame is closing via event: ${event}</log:info>
-  </define:script>
-  
-  <frame title="This is a frame" var="frame" location="100,100" size="800,400">
-      <font family="helvetica" size="14"/>
-    <menuBar>
-      <menu text="File">
-        <menuItem>
-          <action name="New">
-              <log:info>clicked on the New menu item!</log:info>
-          </action>
-        </menuItem>
-        <menuItem>
-          <action name="Open">
-              <log:info>Popup a file dialog!</log:info>
-          </action>
-        </menuItem>
-        <menuItem text="Save" enabled="false" />
-        <separator/>
-        <menuItem text="Properties" font="${bigfont}"/>
-        <menuItem action="${fooAction}"/>
-      </menu>
-      <menu text="Demo">
-        <menuItem>
-          <action name="GridBagLayout demo">
-              <log:info>about to run the GridBagLayout demo...</log:info>
-              <j:include uri="gridBagDemo.jelly"/>
-          </action>
-        </menuItem>
-      </menu>
-      <menu text="Run">
-        <menuItem>
-          <action name="Run a Jelly script">
-              <log:info>about to open the Jelly script runner...</log:info>
-              <j:include uri="run.jelly"/>
-          </action>
-        </menuItem>
-      </menu>
-      <menu text="Help">
-        <menuItem>
-          <action name="About">
-              <log:info>about to display the about dialog...</log:info>
-              <j:include uri="about.jelly"/>
-          </action>
-        </menuItem>
-      </menu>
-    </menuBar>
-    
-        <splitPane>    
-      <panel>
-          <titledBorder title="Sample Border Title"/>
-          <tableLayout>
-              <tr>
-                  <td>
-                    <label text="Name"/>
-                        </td>                    
-                  <td>
-                    <textField text="James"/>
-                        </td>                    
-              </tr>
-              <tr>
-                  <td>
-                    <label text="Location"/>
-                        </td>                    
-                  <td>
-                    <textField text="London"/>
-                        </td>                    
-              </tr>
-              <tr>
-                  <td colspan="2" align="center">
-                      <panel>
-                        <button>
-                          <action name="OK">
-                              <log:info>Clicked on the OK button</log:info>
-                          </action>
-                        </button>
-                        <button action="${fooAction}"/>
-                            </panel>                        
-                        </td>                    
-            </tr>
-          </tableLayout>
-      </panel>
-      <scrollPane>
-          <!-- this tag can set properties on the bean model too -->
-        <j:useBean var="tableModel" class="org.apache.commons.jelly.swing.MyTableModel"/>
-        <table model="${tableModel}"/>
-      </scrollPane>
-    </splitPane>
-    
-    <windowListener var="event" closing="${onClosing}"/>
-  </frame>
-  
-  ${frame.show()}
-  
-</j:jelly>
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/gridBagDemo.jelly b/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/gridBagDemo.jelly
deleted file mode 100644
index 76e9da8..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/gridBagDemo.jelly
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core" 
-    xmlns="jelly:swing" 
-    xmlns:log="jelly:log"
-    xmlns:define="jelly:define"
-    xmlns:bsh="jelly:beanshell">
-
-        <!-- 
-            TODO:
-                - an insets tag (CVS ?)
-                - some Font support (CVS ?)
-                - incorporate CollapsablePanel
-                - dragable Label with subclass ItemTitleLabel
-                - CollapsablePanel implementing DropTarget (or approacher at least)
-                - adding relations
-                - DC pane (later with inheritance)
-                - Relations Pane with drop
-            -->
-  <define:script var="onClosing">
-    <log:info>The frame is closing via event: ${event}</log:info>
-  </define:script>
-  
-  <frame title="Metadata start of pane for a definition" var="frame" location="100,100" size="800,400">
-    
-      <panel name="metadata-panel">
-                <gridBagLayout>
-                    <gbc gridx="0" gridy="0" ipadx="20" fill="horizontal"> 
-                        <!-- prefer a title ?? dnd may be harder -->
-                        <panel name="head-panel">
-                        <label text="Definition: Definition of a metrics"/><!-- need fonts ! -->
-                        <!-- this should be a draggable label, being the source to drop a relation -->
-                        </panel>
-                    </gbc>
-                    <gbc gridx="0" gridy="1" fill="both">
-                        <!-- constraints variable definitions... for later use, in the children of the center element -->
-                            <gbc var="labelConstraints" 
-                                    weightx="0" weighty="0" 
-                                    ipadx="5" ipady="2" 
-                                    anchor="west"
-                                    fill="none"/>
-                            <gbc var="pop_up_constraints" basedOn="${labelConstraints}" 
-                                    weightx="1" 
-                                    fill="horizontal"
-                                    anchor="east" />
-                        <gridBagLayout>
-                                <gbc gridy="0">
-                                    <panel name="dc_metadata"><!-- should be a collapasble panel !! -->
-                                        <label text="... still todo..."/>
-                                    </panel>
-                                </gbc>
-                                <gbc gridy="1">
-                                    <panel name="pedagogical metadata"><!-- should be a collapasble panel !! --><gridBagLayout>
-
-                                        <gbc gridx="0" gridy="0" basedOn="${labelConstraints}"><label text="Difficulty:"/>
-                                            </gbc>
-                                            <gbc gridx="1" gridy="0" basedOn="${pop_up_constraints}">
-                                                <comboBox name="comboZero" var="comboZero"/>
-                                                ${comboZero.addItem("easy")}
-                                                ${comboZero.addItem("fair")}
-                                                ${comboZero.addItem("difficult")}
-                                                ${comboZero.setSelectedIndex(1)}$
-                                                </gbc>
-
-                                        <gbc gridx="0" gridy="1" basedOn="${labelConstraints}"><label text="Abstractness:"/>
-                                            </gbc>
-                                            <gbc gridx="1" gridy="1" basedOn="${pop_up_constraints}">
-                                                <comboBox name="c" var="c"/>
-                                                ${c.addItem("concrete")}
-                                                ${c.addItem("medium")}
-                                                ${c.addItem("abstract")}
-                                                ${c.setSelectedIndex(1)}$
-                                                </gbc>
-
-                                        <gbc gridx="2" gridy="0" basedOn="${labelConstraints}" gridheight="2"
-                                                ipadx="10"><panel name="blank"/></gbc>
-                                        <gbc gridx="3" gridy="0" basedOn="${labelConstraints}"><label text="Learning-context:"/>
-                                            </gbc>
-                                            <gbc gridx="4" gridy="0" basedOn="${pop_up_constraints}">
-                                                <comboBox name="c" var="c"/>
-                                                ${c.addItem("primary-education")}
-                                                ${c.addItem("secondary-education")}
-                                                ${c.addItem("higher-education")}
-                                                ${c.addItem("university-first-cycle")}
-                                                ${c.addItem("university-second-cycle")}
-                                                ${c.addItem("university-postgraduate")}
-                                                ${c.addItem("technical-school-first-cycle")}
-                                                ${c.addItem("technical-school-second-cycle")}
-                                                ${c.addItem("professional-formation")}
-                                                ${c.addItem("continuous-formation")}
-                                                </gbc>
-
-                                        <gbc gridx="3" gridy="1" basedOn="${labelConstraints}"><label text="Field:"/>
-                                            </gbc>
-                                            <gbc gridx="4" gridy="1" basedOn="${pop_up_constraints}">
-                                                <comboBox name="c" var="c"/>
-                                                ${c.addItem("mathematics")}
-                                                ${c.addItem("statistics")}
-                                                ${c.addItem("engineering")}
-                                                ${c.addItem("psychology")}
-                                                ${c.addItem("biology")}
-                                                ${c.addItem("chemistry")}
-                                                ${c.addItem("physics")}
-                                                ${c.addItem("computer-science")}
-                                                ${c.addItem("economy")}
-                                                ${c.addItem("historical")}
-                                                ${c.addItem("other")}
-                                                </gbc>
-
-                                            </gridBagLayout></panel>
-                                </gbc>
-                            </gridBagLayout>
-                        </gbc>
-                    <gbc gridx="0" gridy="2" fill="horizontal">
-                        <!-- would need a separator here." -->
-                        </gbc>
-                </gridBagLayout>
-      </panel>
-    
-    <windowListener var="event" closing="${onClosing}"/>
-  </frame>
-  ${frame.show()} 
-
-</j:jelly>
-
-
-
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/run.jelly b/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/run.jelly
deleted file mode 100644
index a757717..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/run.jelly
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core" 
-    xmlns="jelly:swing" 
-    xmlns:log="jelly:log">
-
-    <!-- default working directory to swing examples -->        
-    <j:if test="${empty working.dir}">
-        <j:set var="working.dir" value="src/test/org/apache/commons/jelly/swing"/>
-    </j:if>
-
-    <!-- action to choose a file -->
-    <action var="chooseFileAction" name="...">            
-        <fileChooser var="chooser" currentDirectory="${working.dir}"/>
-        
-        ${chooser.showDialog(frame, 'Choose Jelly file')}
-    
-        <j:set var="file" value="${chooser.selectedFile}"/>
-        <j:if test="${file != null}">
-            <j:set target="${scriptField}" property="text" value="${file.toURL().toString()}"/>
-        </j:if>
-    </action>
-
-
-    <!-- create the frame -->
-    <frame var="frame" size="400,150" location="200,200" title="Jelly Runner">
-        <panel>
-          <tableLayout>
-            <tr>
-                <td colfill="true">
-                        <panel>
-                            <borderLayout hgap="2" vgap="2">
-                                <borderAlign align="west">
-                                  <label text="Script to run:"/>
-                                </borderAlign>                            
-                                <borderAlign align="center">
-                                <textField var="scriptField"/>
-                                </borderAlign>                            
-                                <borderAlign align="east">
-                                <button action="${chooseFileAction}"/>
-                                </borderAlign>                            
-                            </borderLayout>
-                      </panel>
-                    </td>                    
-            </tr>
-            <tr>
-                <td align="center">
-                    <panel>
-                    <button>
-                      <action name="Run Script">
-                                    <log:info>about to run ${file}</log:info>    
-                                    <j:include uri="${scriptField.text}"/>
-                                </action>
-                    </button>
-                        </panel>                        
-                    </td>                    
-              </tr>
-        </tableLayout>
-    </panel>
-    </frame>
-
-    ${frame.setVisible(true)}
-
-</j:jelly>
-
-
-
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/showVariables.jelly b/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/showVariables.jelly
deleted file mode 100644
index db91877..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/showVariables.jelly
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core" 
-    xmlns="jelly:swing" 
-    xmlns:log="jelly:log">
-
-    <!-- lets create the model -->
-    <j:useList var="list" items="${context.getVariableNames()}"/>
-
-    <log:info>Created list ${list}</log:info>
-        
-    <!-- create the dialog -->
-    <dialog var="dialog" size="400,150" location="200,200" title="Variables">
-        <scrollPane>
-          <table>
-                <tableModel rows="${list}">
-                    <tableModelColumn headerValue="ID" value="${rowIndex}"/>
-                    <tableModelColumn headerValue="Name" value="${row}"/>
-                    <tableModelColumn headerValue="Value" value="${context.getVariable(row)}"/>
-                    <tableModelColumn headerValue="Type" value="${context.getVariable(row).getClass().getName()}"/>
-                </tableModel>
-        </table>
-    </scrollPane>
-    </dialog>
-
-    ${dialog.setVisible(true)}
-
-</j:jelly>
-
-
-
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/swingTags.jelly b/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/swingTags.jelly
deleted file mode 100644
index 3e6f957..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/swingTags.jelly
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0"?>
-<j:jelly 
-    xmlns:j="jelly:core" 
-    xmlns="jelly:swing">
-	
-    <!--for the basic component assembly-->
-    <j:if test="${test.simple}">
-        <frame name="frame" var="frame" size="100,100" location="200,200">
-            <panel name="panel" debugGraphics="log|flash">
-                <button name="button" background="#112233" foreground="#445566" debugGraphicsOptions="buffered"/>
-            </panel>
-        </frame>
-    </j:if>
-    
-    <!--for the GridBag test-->
-    <j:if test="${test.gbc}">
-        <frame name="frame" var="frame">
-            <gridBagLayout>
-                <gbc anchor="north" fill="vertical" gridheight="3" 
-                    gridwidth="2" gridx="4" gridy="5" insets="1,2,3,4"
-                    ipadx="7" ipady="8" weightx=".3" weighty=".6">
-                    
-                    <button name="button"/>
-                </gbc>
-                
-                <gbc gridx="1" gridy="2" insets="3,4,5,6"
-                    ipadx="8" ipady="9">
-                
-                    <gbc ipadx="2">
-                        <button name="button2" />
-                    </gbc>
-                </gbc>
-                
-            </gridBagLayout>
-        </frame>
-    </j:if>
-    
-    <!--for the GridBag 1.4 test-->
-    <j:if test="${test.gbc14}">
-        <frame name="frame" var="frame">
-            <gridBagLayout>
-                <gbc anchor="line_start">
-                    <button name="button"/>
-                </gbc>
-            </gridBagLayout>
-        </frame>
-    </j:if>
-    
-    <!--for the GridBag invalid anchor test-->
-    <j:if test="${test.gbcBad}">
-        <frame name="frame" var="frame">
-            <gridBagLayout>
-                <gbc anchor="foo">
-                    <button name="button"/>
-                </gbc>
-            </gridBagLayout>
-        </frame>
-    </j:if>
-
-    <!--for the ButtonGroup test-->
-    <j:if test="${test.buttonGroup}">
-        <frame name="frame" var="frame">
-            <buttonGroup var="bg">
-                <checkBox name="cb1"/>
-				<checkBox name="cb2" selected="true"/>
-				<checkBox name="cb3"/>
-            </buttonGroup>
-        </frame>
-    </j:if>
-    
-	<!--tries to set a bean property that doesn't exist-->
-    <j:if test="${test.invalidProperty}">
-        <frame name="frame" var="frame" size="100,100" location="200,200" foo="bar">
-            <panel name="panel">
-            </panel>
-        </frame>
-    </j:if>
-	
-</j:jelly>
diff --git a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/wizard.jelly b/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/wizard.jelly
deleted file mode 100644
index 3830954..0000000
--- a/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/wizard.jelly
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core" 
-    xmlns="jelly:swing" 
-    xmlns:log="jelly:log"
-    xmlns:w="jelly:werkz">
-
-    <w:useGoals var="goalMap"/>
-
-    <!-- action to choose a file -->
-    <action var="attainGoalAction" name="...">            
-    </action>
-
-
-    <!-- create the frame -->
-    <frame var="frame" size="400,150" location="200,200" title="Maven Wizard">
-    <menuBar>
-      <menu text="Run">
-                <j:forEach var="groupEntry" items="${goalMap.entrySet()}">            
-                    
-                    <menu text="${groupEntry.key}">
-                        <j:forEach var="goalEntry" items="${groupEntry.value.entrySet()}">            
-
-                            <!-- give each menu item its own scope then they have their own goal names -->
-                            <j:scope>
-                                <j:set var="goalName" value="${goalEntry.value.name}"/>
-                                
-                                <menuItem>
-                                    <action name="${goalEntry.key}">
-                                        <log:info>About to invoke the ${goalName} goal!</log:info>
-                                        <w:attainGoal name="${goalName}"/>
-                                    </action>
-                                </menuItem>
-                            </j:scope>
-                        </j:forEach>
-                    </menu>
-                </j:forEach>
-            </menu>
-    </menuBar>
-        <panel>
-    </panel>
-    </frame>
-
-    ${frame.setVisible(true)}
-
-</j:jelly>
-
-
-
diff --git a/jelly-tags/swing/xdocs/changes.xml b/jelly-tags/swing/xdocs/changes.xml
deleted file mode 100644
index c083c66..0000000
--- a/jelly-tags/swing/xdocs/changes.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.1-SNAPSHOT" date="in CVS">
-      <action dev="dion" type="fix" issue="JELLY-10" due-to="Hans Gilde">JellySwing should be strict on the attribute names it uses.</action>
-    </release>
-    
-    <release version="1.0" date="2004-09-12">
-      <action dev="dion" type="add" issue="JELLY-133" due-to="Hans Gilde">ComponentTag methods should throw JellyTagException.</action>
-      <action dev="dion" type="add" issue="JELLY-132" due-to="Hans Gilde">ButtonGroup tag is broken.</action>
-      <action dev="dion" type="add" issue="JELLY-114">Action tag ignores enabled property.</action>
-      <action dev="dion" type="add" issue="JELLY-131" due-to="Hans Gilde">Unit tests for swing tag lib.</action>
-      <action dev="dion" type="fix" issue="JELLY-128" due-to="Hans Gilde">Layout constraints don't work with RootPaneContainer classes.</action>
-      <action dev="dion" type="fix" issue="JELLY-129" due-to="Hans Gilde">Fix error message for bad nesting of Gbc and BorderAlign tags.</action>
-      <action dev="dion" type="fix" issue="JELLY-92" due-to="Robert McIntosh">Add EmptyBorder tag.</action>
-      <action dev="dion" type="fix" issue="JELLY-93" due-to="Robert McIntosh">Add EtchedBorder tag.</action>
-      <action dev="dion" type="fix">Ensure JDK 1.3 compatibility.</action>
-      <action dev="dion" type="fix" issue="JELLY-130" due-to="Hans Gilde">Handle JDK 1.4 GridbagConstraints using reflection</action>
-      <action dev="dion" type="fix" issue="JELLY-122" due-to="Hans Gilde">ComponentTag should clear it's bean reference after doTag</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/swing/xdocs/index.xml b/jelly-tags/swing/xdocs/index.xml
deleted file mode 100644
index e277924..0000000
--- a/jelly-tags/swing/xdocs/index.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>JellySwing</title>
-    <author email="jstrachan@apache.org">James Strachan</author>
-  </properties>
-
-  <body>
-    <section name="JellySwing"> 
-      <p>
-        JellySwing is a simple Jelly tag-library which can be used to create Swing user interfaces.
-        It allows XML documents (Jelly scripts) to be used to define the layout and rendering of Swing 
-        front ends which avoids lots of mundane Java coding, using markup to define the view 
-        of your front end and allowing you to bind to Java code for the business objects and models. 
-      </p>
-      <p>
-        This mechanism uses seperation of concerns and MVC ideas from web applications, allowing the rendering
-        of your Swing front end to be easily transformed (since its XML) into different styles while leaving your
-        model and business objects untouched. It also allows different views to be constructed independently of your models.
-      </p>
-      <p>
-        There is an example JellySwing script
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/example.jelly?rev=HEAD">here</a>
-      </p>
-      <p>
-        To try running the example type the following command then you should see a full Swing user interface 
-        appear with pull down menus, a splitter pane, a form, entry fields, buttons and a table.
-        (you should run this from within the <code>[jelly-home]/jelly-tags/swing</code>).
-      </p>
-      <source>maven demo:swing</source>
-      <p>
-        This example even shows that simple actions can be coded in Jelly script too! Though typically most
-        complex logic and models (such as TableModel, TreeModel) should be written in Java code.
-        Then Jelly script can be used to create the view and bind in the models.
-      </p>
-    </section>
-    
-    <section name="JellyRunner"> 
-      <p>
-        JellyRunner is a simple example Swing user interface written with JellySwing.
-        You can view the source to it
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/swing/run.jelly?rev=HEAD">here</a>
-      </p>
-      <p>
-        If you invoke it via the following command you will get a small Swing UI that allows you to
-        choose Jelly scripts to invoke, within the current JVM.
-      </p>
-      <source> maven jelly:runner</source>
-      <p>
-        This makes developing Jelly scripts and JellySwing scripts in particular, much more RAD-like.
-        You can keep JellyRunner open, edit a Jelly script and just hit the 'Run' button and the
-        script executes instantaneously, there's no waiting for a JVM to startup.
-      </p>
-    </section>
-    
-    <section name="Comparing JellySwing with Java code for Swing"> 
-      <p>
-        There's a simple demo written by Otto von Wachter which demonstrates how Jelly can be used
-        for templating HTML.
-      </p>
-      <p>
-        The demo was orignally written in
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/HomepageBuilder.java?rev=HEAD">Java code</a>
-         
-        to implement a simple Swing UI
-        As an experiment the same Swing user interface has been written 
-       <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/homepageBuilder.jelly?rev=HEAD">as a JellyScript</a>
-        as well.
-        While this is a fairly simple Swing UI and not a particularly great example of the power of JellySwing,
-        it does highlight the main difference between the two appraches.
-      </p>
-    </section>
-    
-  </body>
-</document>
-
diff --git a/jelly-tags/swing/xdocs/navigation.xml b/jelly-tags/swing/xdocs/navigation.xml
deleted file mode 100644
index 95b7463..0000000
--- a/jelly-tags/swing/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="JellySwing">
-
-  <title>Jelly Swing</title>
-  
-  <body>
-    <menu name="JellySwing">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/swt/.cvsignore b/jelly-tags/swt/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/swt/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/swt/build.xml b/jelly-tags/swt/build.xml
deleted file mode 100644
index feffc62..0000000
--- a/jelly-tags/swt/build.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-swt" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-swt-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-swt 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.swt.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/swt-win32-2.1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/swt/jars/swt-win32-2.1.0.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-log-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-log-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/swt/maven.xml b/jelly-tags/swt/maven.xml
deleted file mode 100644
index 2312770..0000000
--- a/jelly-tags/swt/maven.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-    <!-- demos -->
-  <goal name="demo" prereqs="create-classpath"
-        description="Runs a JellySWT demo">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/tags/swt/example.jelly"/>
-    </java>
-  </goal>
-
-</project>
diff --git a/jelly-tags/swt/project.properties b/jelly-tags/swt/project.properties
deleted file mode 100644
index 39c1b61..0000000
--- a/jelly-tags/swt/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/swt/project.xml b/jelly-tags/swt/project.xml
deleted file mode 100644
index fcd34d8..0000000
--- a/jelly-tags/swt/project.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-swt</id>
-  <name>commons-jelly-tags-swt</name>
-  <currentVersion>1.1-SNAPSHOT</currentVersion>
-  <package>org.apache.commons.jelly.tags.swt</package>
-  <description>This is a Jelly interface for SWT.</description>
-  <shortDescription>Commons Jelly SWT Tag Library</shortDescription>
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-SWT-1_0</tag>
-    </version>
-  </versions>
-  <dependencies>
-    <!-- START for compilation -->
-    <!-- swt taglib -->
-
-    <dependency>
-      <id>swt</id>
-      <!-- don't know how to support OS-dependent jars in Maven yet -->
-
-      <version>win32-2.1.0</version>
-      <properties>
-        <gump.project>eclipse</gump.project>
-        <gump.id>swt</gump.id>
-      </properties>
-    </dependency>
-    <!-- END for compilation -->
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-log</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <!-- END for running demos -->
-
-  </dependencies>
-</project>
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ColorTag.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ColorTag.java
deleted file mode 100644
index ff0a138..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ColorTag.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.swt.converters.ColorConverter;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Class to create a {@link Color} instance within Jelly SWT.
- *
- * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
- * @author Written with much help thanks to the ImageTag class
- * @version CVS $Id: ColorTag.java,v 1.2 2004/09/09 12:20:26 dion Exp $
- */
-public class ColorTag extends TagSupport {
-
-    /** RGB value */
-    private String rgb;
-
-    /** Variable name */
-    private String var;
-
-    /**
-     * Sets the RGB value for this {@link Color} instance
-     *
-     * @param rgb value (eg. #666666);
-     */
-    public void setRgb(final String rgb) {
-        this.rgb = rgb;
-    }
-
-    /**
-     * Obtain the RGB value for this {@link Color} instance
-     *
-     * @return the RGB value (eg. #666666)
-     */
-    public String getRgb() {
-        return this.rgb;
-    }
-
-    /**
-     * Sets the variable name
-     *
-     * @param var the variable name of this {@link Color} instance
-     */
-    public void setVar(final String var) {
-        this.var = var;
-    }
-
-    /**
-     * Obtain the variable name.
-     *
-     * @return the variable name of this {@link Color} instance
-     */
-    public String getVar() {
-        return this.var;
-    }
-
-    /**
-     * @return the parent widget which this widget will be added to.
-     */
-    public Widget getParentWidget() {
-        final WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
-        if (tag != null) {
-            return tag.getWidget();
-        }
-        return null;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Creates a {@link Color} instance as defined by the RGB attribute.
-     * Stores this {@link Color} instance in the Context so that it can be
-     * referenced in the Jelly script.
-     *
-     * @param output {@link XMLOutput} reference
-     * @throws JellyTagException if an error occurs
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        // invoke by body just in case some nested tag configures me
-        invokeBody(output);
-
-        final Widget parent = getParentWidget();
-
-        if (parent == null) {
-            throw new JellyTagException(
-                "This tag must be nested within a Widget or a Window"
-            );
-        }
-
-        if (var == null) {
-            throw new JellyTagException("This tag requires a context variable name");
-        }
-
-        final Color color =
-            new Color(
-                parent.getDisplay(),
-                ColorConverter.getInstance().parse(getRgb())
-            );
-
-        // store the Color in the context
-        context.setVariable(var, color);
-    }
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/DialogTag.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/DialogTag.java
deleted file mode 100644
index 4805f5c..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/DialogTag.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.eclipse.swt.widgets.Dialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * This tag creates an SWT dialog.
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- *
- */
-public class DialogTag extends WidgetTag {
-
-    /**
-     * @param widgetClass
-     * @param style
-     */
-    public DialogTag(Class widgetClass, int style) {
-        super(widgetClass, style);
-    }
-
-    /**
-     * @param widgetClass
-     */
-    public DialogTag(Class widgetClass) {
-        super(widgetClass);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new dialog
-     */
-    protected Object newInstance(Class theClass, Map attributes, XMLOutput output)
-        throws JellyTagException {
-        int style = getStyle(attributes);
-
-        // now lets call the constructor with the parent
-        Widget parent = getParentWidget();
-
-        boolean isParentShell = parent instanceof Shell;
-        if (parent == null || !isParentShell) {
-            throw new JellyTagException("This tag must be nested within a Shell");
-        }
-
-        Dialog dialog = (Dialog) createWidget(theClass, parent, style);
-
-        return dialog;
-    }
-
-}
\ No newline at end of file
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/FontTag.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/FontTag.java
deleted file mode 100644
index cc171e8..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/FontTag.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.swt.converters.ColorConverter;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Class to create a {@link Font} instance within Jelly SWT.
- *
- * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
- * @author Written with much help thanks to the ImageTag class
- * @version CVS $Id: FontTag.java,v 1.2 2004/09/09 12:20:26 dion Exp $
- */
-public class FontTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(FontTag.class);
-
-    /** Font type */
-    private String type;
-
-    /** Font size */
-    private int size;
-
-    /** Font style */
-    private String style;
-
-    /** Font variable name */
-    private String var;
-
-    /**
-     * Set the type of this {@link Font}
-     *
-     * @param type {@link Font} type name
-     */
-    public void setType(final String type) {
-        this.type = type;
-    }
-
-    /**
-     * Obtain the {@link Font} type name
-     *
-     * @return the {@link Font} type name
-     */
-    public String getType() {
-        return this.type;
-    }
-
-    /**
-     * Set the size of this {@link Font}
-     *
-     * @param size {@link Font} size
-     */
-    public void setSize(final int size) {
-        this.size = size;
-    }
-
-    /**
-     * Obtain the {@link Font} size
-     *
-     * @return the {@link Font} size
-     */
-    public int getSize() {
-        return this.size;
-    }
-
-    /**
-     * Set the style of this {@link Font} (eg. bold, normal, italics)
-     *
-     * @param style the style of this {@link Font}
-     */
-    public void setStyle(final String style) {
-        this.style = style;
-    }
-
-    /**
-     * Obtain the style of this {@link Font}
-     *
-     * @return the style of this {@link Font}
-     */
-    public String getStyle() {
-        return this.style;
-    }
-
-    /**
-     * Sets the variable name
-     *
-     * @param var the variable name of this {@link Font} instance
-     */
-    public void setVar(final String var) {
-        this.var = var;
-    }
-
-    /**
-     * Obtain the variable name.
-     *
-     * @return the variable name of this {@link Font} instance
-     */
-    public String getVar() {
-        return this.var;
-    }
-
-    /**
-     * @return the parent widget which will deliver us a {@link Device} reference
-     */
-    public Widget getParentWidget() {
-        final WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
-        if (tag != null) {
-            return tag.getWidget();
-        }
-        return null;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Creates a {@link Font} instance as defined by the type, size and style
-     * attributes, and stores this {@link Font} instance in the Context so that
-     * it can be referenced in the Jelly script.
-     *
-     * @param output {@link XMLOutput} reference
-     * @throws JellyTagException if an error occurs
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        // invoke by body just in case some nested tag configures me
-        invokeBody(output);
-
-        final Widget parent = getParentWidget();
-
-        if (parent == null) {
-            throw new JellyTagException(
-                "This tag must be nested within a Widget or a Window"
-            );
-        }
-
-        if (var == null) {
-            throw new JellyTagException("This tag requires a context variable name");
-        }
-
-        if (type == null) {
-            throw new JellyTagException("This tag requires a font type name");
-        }
-
-        if (size <= 0) {
-            throw new JellyTagException("This tag requires a font size greater than 0");
-        }
-
-        if (style == null) {
-            if (log.isDebugEnabled()) {
-                log.debug("No style set on font " + type + ", defaulting to normal");
-            }
-        }
-
-        final Font font =
-            new Font(
-                parent.getDisplay(),
-                type,
-                size,
-                style == null ? SWT.NORMAL : SwtHelper.parseStyle(SWT.class, style)
-            );
-
-        // store the Color in the context
-        context.setVariable(var, font);
-    }
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/GCTag.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/GCTag.java
deleted file mode 100644
index f330d31..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/GCTag.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.eclipse.swt.graphics.Drawable;
-import org.eclipse.swt.graphics.GC;
-
-/**
- * Class to create a {@link GC} instance within Jelly SWT.
- *
- * @author <a href="mailto:crafterm@apache.org">Marcus Crafter</a>
- * @version CVS $Id: GCTag.java,v 1.2 2004/09/09 12:20:26 dion Exp $
- */
-public class GCTag extends TagSupport {
-
-    /** Drawable name */
-    private Drawable drawable;
-
-    /** Variable name */
-    private String var;
-
-    /**
-     * Obtain the {@link Drawable} name for this {@link GC}.
-     *
-     * @return a {@link GC} {@link Drawable}
-     */
-    public Drawable getDrawable() {
-        return this.drawable;
-    }
-
-    /**
-     * Set the {@link Drawable} name for this {@link GC}.
-     *
-     * @param drawable a {@link GC} {@link Drawable}
-     */
-    public void setDrawable(final Drawable drawable) {
-        this.drawable = drawable;
-    }
-
-    /**
-     * Sets the variable name.
-     *
-     * @param var the variable name of this {@link GC} instance
-     */
-    public void setVar(final String var) {
-        this.var = var;
-    }
-
-    /**
-     * Obtain the variable name.
-     *
-     * @return the variable name of this {@link GC} instance
-     */
-    public String getVar() {
-        return this.var;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Creates a {@link GC} instance and stores it in the Context under a
-     * particular variable name. Note, {@link GC} objects can only be created on
-     * {@link Drawable} objects.
-     *
-     * @param output {@link XMLOutput} reference
-     * @throws JellyTagException if an error occurs
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        // invoke by body just in case some nested tag configures me
-        invokeBody(output);
-
-        final boolean nullDrawable = drawable == null;
-        final boolean drawableParent = drawable instanceof Drawable;
-
-        if (nullDrawable || !drawableParent) {
-            throw new JellyTagException(
-                "This tag must specify a Drawable attribute (ie. Image or Control)"
-            );
-        }
-
-        if (var == null) {
-            throw new JellyTagException("This tag requires a context variable name");
-        }
-
-        // store the GC in the context
-        context.setVariable(var, new GC(drawable));
-    }
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ImageTag.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ImageTag.java
deleted file mode 100644
index 3de36ca..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ImageTag.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import java.io.InputStream;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Decorations;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * This creates an image on the parent Widget.
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- * @version CVS ImageTag.java,v 1.5 2004/09/07 02:41:40 dion Exp
- */
-public class ImageTag extends TagSupport {
-
-    /** path to file */
-    private String src;
-
-    /** variable name, if specified */
-    private String var;
-
-    /** resource name, if specified */
-    private String resource;
-
-    /**
-     * Sets the resource
-     * @param resource image resource location
-     */
-    public void setResource(String resource) {
-       this.resource = resource;
-    }
-
-    /**
-     * Obtains the resource
-     * @return the image resource
-     */
-    public String getResource() {
-        return resource;
-    }
-
-    /**
-     * Sets the variable name
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Obtain the variable name.
-     * @return String the variable name
-     */
-    public String getVar() {
-      return this.var;
-    }
-
-    /**
-     * Sets the src.
-     * @param src The src to set
-     */
-    public void setSrc(String src) {
-        this.src = src;
-    }
-
-    /**
-     * Method getSrc.
-     * @return String
-     */
-    public String getSrc() {
-        return src;
-    }
-
-    /**
-     * @return the parent widget which this widget will be added to.
-     */
-    public Widget getParentWidget() {
-        WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
-        if (tag != null) {
-            return tag.getWidget();
-        }
-        return null;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        // invoke by body just in case some nested tag configures me
-        invokeBody(output);
-
-        Widget parent = getParentWidget();
-
-        if (parent == null) {
-            throw new JellyTagException("This tag must be nested within a Widget or a Window");
-        }
-
-        Image image = null;
-
-        if (getSrc() != null) {
-           image = loadLocalImage(parent.getDisplay());
-        } else if (getResource() != null) {
-           image = loadResourceImage(parent.getDisplay());
-        } else {
-            throw new JellyTagException("Either an image location or a resource must be specified");
-        }
-
-        setWidgetImage(parent, image);
-
-        // store the image as a context variable if specified
-        if (var != null) {
-            context.setVariable(var, image);
-        }
-    }
-
-    /**
-     * Creates an Image, loaded from the local disk
-     */
-    private Image loadLocalImage(Display display) {
-        return new Image(display, getSrc());
-    }
-
-    /**
-     * Creates an Image, loaded from a specified resource.
-     */
-    private Image loadResourceImage(Display display) {
-        ClassLoader loader = ClassLoaderUtils.getClassLoader(null, getContext().getUseContextClassLoader(), getClass());
-        InputStream stream = loader.getResourceAsStream(getResource());
-        return new Image(display, stream);
-    }
-
-    /**
-     * Add image to a widget
-     * @param parent
-     * @param image
-     * @throws JellyTagException
-     */
-    protected void setWidgetImage(Widget parent, Image image) throws JellyTagException {
-        if (parent instanceof Label) {
-            Label label = (Label) parent;
-            label.setImage(image);
-
-        } else if (parent instanceof Button) {
-            Button button = (Button) parent;
-            button.setImage(image);
-
-        } else if (parent instanceof Item) {
-            Item item = (Item) parent;
-            item.setImage(image);
-
-        } else if (parent instanceof Decorations) {
-            Decorations item = (Decorations) parent;
-            item.setImage(image);
-
-        } else {
-            throw new JellyTagException("This tag must be nested inside a <label>, <button>, <shell> or <item> tag");
-        }
-    }
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutDataTag.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutDataTag.java
deleted file mode 100644
index 4c24bfa..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutDataTag.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Creates a LayoutData object and sets it on the parent Widget.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public class LayoutDataTag extends LayoutTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(LayoutDataTag.class);
-
-    public LayoutDataTag(Class layoutDataClass) {
-        super(layoutDataClass);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Either defines a variable or adds the current component to the parent
-     */
-    protected void processBean(String var, Object bean)
-        throws JellyTagException {
-        super.processBean(var, bean);
-
-        Widget parent = getParentWidget();
-
-        if (parent instanceof Control) {
-            Control control = (Control) parent;
-            control.setLayoutData(getBean());
-        } else {
-            throw new JellyTagException("This tag must be nested within a control widget tag");
-        }
-    }
-
-    /**
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
-     */
-    protected Object newInstance(
-        Class theClass,
-        Map attributes,
-        XMLOutput output)
-        throws JellyTagException {
-
-        String text = (String) attributes.remove("style");
-        if (text != null) {
-            int style = SwtHelper.parseStyle(theClass, text);
-
-            // now lets try invoke a constructor
-            Class[] types = { int.class };
-
-            try {
-                Constructor constructor = theClass.getConstructor(types);
-                if (constructor != null) {
-                    Object[] values = { new Integer(style)};
-                    return constructor.newInstance(values);
-                }
-            } catch (NoSuchMethodException e) {
-                throw new JellyTagException(e);
-            } catch (InstantiationException e) {
-                throw new JellyTagException(e);
-            } catch (IllegalAccessException e) {
-                throw new JellyTagException(e);
-            } catch (InvocationTargetException e) {
-                throw new JellyTagException(e);
-            }
-        }
-        return super.newInstance(theClass, attributes, output);
-    }
-
-    /**
-     * @see org.apache.commons.jelly.tags.swt.LayoutTagSupport#convertValue(java.lang.Object, java.lang.String, java.lang.Object)
-     */
-    protected Object convertValue(Object bean, String name, Object value)
-        throws JellyTagException {
-
-        if (bean instanceof GridData) {
-            if (name.endsWith("Alignment") && value instanceof String) {
-                int style =
-                    SwtHelper.parseStyle(bean.getClass(), (String) value);
-                return new Integer(style);
-            }
-        }
-        return super.convertValue(bean, name, value);
-    }
-
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutTag.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutTag.java
deleted file mode 100644
index e979d54..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutTag.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Creates a new Layout implementations and adds it to the parent Widget.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public class LayoutTag extends LayoutTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(LayoutTag.class);
-
-    public LayoutTag(Class layoutClass) {
-        super(layoutClass);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the Layout if there is one otherwise null
-     */
-    public Layout getLayout() {
-        Object bean = getBean();
-        if (bean instanceof Layout) {
-            return (Layout) bean;
-        }
-        return null;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Either defines a variable or adds the current component to the parent
-     */
-    protected void processBean(String var, Object bean)
-        throws JellyTagException {
-        super.processBean(var, bean);
-
-        Widget parent = getParentWidget();
-
-        if (parent instanceof Composite) {
-            Composite composite = (Composite) parent;
-            composite.setLayout(getLayout());
-
-        } else {
-            throw new JellyTagException("This tag must be nested within a composite widget tag");
-        }
-    }
-
-    /**
-     * @see org.apache.commons.jelly.tags.swt.LayoutTagSupport#convertValue(java.lang.Object, java.lang.String, java.lang.Object)
-     */
-    protected Object convertValue(Object bean, String name, Object value)
-        throws JellyTagException {
-
-        if (bean instanceof FillLayout
-            && name.equals("type")
-            && value instanceof String) {
-            int style = SwtHelper.parseStyle(SWT.class, (String) value);
-            return new Integer(style);
-        }
-        return super.convertValue(bean, name, value);
-    }
-
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutTagSupport.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutTagSupport.java
deleted file mode 100644
index 9d53044..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutTagSupport.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * An abstract base class for Layout or LayoutData tags.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public abstract class LayoutTagSupport extends UseBeanTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(LayoutTagSupport.class);
-
-    private String var;
-
-    public LayoutTagSupport(Class layoutClass) {
-        super(layoutClass);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the parent widget which this widget will be added to.
-     */
-    public Widget getParentWidget() {
-        WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
-        if (tag != null) {
-            return tag.getWidget();
-        }
-        return null;
-    }
-
-    /**
-     * Sets the name of the variable to use to expose the new Layout object.
-     * If this attribute is not set then the parent widget tag will have its
-     * layout property set.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    /**
-     * Either defines a variable or adds the current component to the parent
-     */
-    protected void processBean(String var, Object bean) throws JellyTagException {
-        if (var != null) {
-            context.setVariable(var, bean);
-        }
-    }
-
-    /**
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#setBeanProperties(java.lang.Object, java.util.Map)
-     */
-    protected void setBeanProperties(Object bean, Map attributes) throws JellyTagException {
-
-        if (bean != null) {
-            Class theClass = bean.getClass();
-            for (Iterator iter = attributes.entrySet().iterator(); iter.hasNext();) {
-                Map.Entry entry = (Map.Entry) iter.next();
-                String name = (String) entry.getKey();
-                Object value = entry.getValue();
-
-                value = convertValue(bean, name, value);
-
-                try {
-                    // lets first see if there's a field available
-                    Field field = theClass.getField(name);
-                    if (field != null) {
-                        if (value instanceof String) {
-                            value = ConvertUtils.convert((String) value, field.getType());
-                        }
-                        field.set(bean, value);
-                    } else {
-                        BeanUtils.setProperty(bean, name, value);
-                    }
-                } catch (NoSuchFieldException e) {
-                    throw new JellyTagException(e);
-                } catch (IllegalAccessException e) {
-                    throw new JellyTagException(e);
-                } catch (InvocationTargetException e) {
-                    throw new JellyTagException(e);
-                }
-            }
-        }
-    }
-
-    /**
-     * Provides a strategy method that allows values to be converted,
-     * particularly to support integer enumerations and String representations.
-     *
-     * @param bean is the bean on which the property is to be set
-     * @param name is the name of the property
-     * @param value the value of the property
-     * @return the new value
-     */
-    protected Object convertValue(Object bean, String name, Object value)
-        throws JellyTagException {
-        return value;
-    }
-
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/MenuTag.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/MenuTag.java
deleted file mode 100644
index bb3fc08..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/MenuTag.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Decorations;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * This tag creates an SWT Menu
- * </p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public class MenuTag extends WidgetTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(MenuTag.class);
-
-    public MenuTag() {
-        super(Menu.class);
-    }
-
-    public MenuTag(int style) {
-        super(Menu.class, style);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Provides a strategy method to allow a new child widget to be attached to
-     * its parent
-     *
-     * @param parent is the parent widget which is never null
-     * @param widget is the new child widget to be attached to the parent
-     */
-    protected void attachWidgets(Object parent, Widget widget) {
-        Menu menu = (Menu) widget;
-        if (parent instanceof Decorations) {
-            Decorations shell = (Decorations) parent;
-            shell.setMenuBar(menu);
-        }
-        else if (parent instanceof Control) {
-            Control control = (Control) parent;
-            control.setMenu(menu);
-        }
-        else if (parent instanceof MenuItem) {
-            MenuItem menuItem = (MenuItem) parent;
-            menuItem.setMenu(menu);
-        }
-    }
-
-    /**
-     * @see org.apache.commons.jelly.tags.swt.WidgetTag#createWidget(java.lang.Class, org.eclipse.swt.widgets.Widget, int)
-     */
-    protected Object createWidget(Class theClass, Widget parent, int style)
-        throws JellyTagException {
-
-        if (parent instanceof Decorations) {
-            return super.createWidget(theClass, parent, style);
-        }
-        else {
-            if (parent instanceof Menu) {
-                return new Menu((Menu) parent);
-            }
-            else if (parent instanceof MenuItem) {
-                return new Menu((MenuItem) parent);
-            }
-            else if (parent instanceof Control) {
-                return new Menu((Control) parent);
-            }
-            else {
-                throw new JellyTagException("This tag must be nested inside a <shell>, <menu>, <menuItem> or control tag");
-            }
-        }
-    }
-
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/OnEventTag.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/OnEventTag.java
deleted file mode 100644
index a59c241..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/OnEventTag.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * A tag which implements a Listener to allow events to be processed by
- * Jelly scripts
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public class OnEventTag extends TagSupport implements Listener {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(OnEventTag.class);
-
-    private String var = "event";
-    private String type;
-    private XMLOutput output;
-
-    public OnEventTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (var == null) {
-            throw new MissingAttributeException("var");
-        }
-        if (type == null) {
-            throw new MissingAttributeException("type");
-        }
-
-        Widget widget = getParentWidget();
-        if (widget == null) {
-            throw new JellyTagException("This tag must be nested within a widget tag");
-        }
-
-
-        int eventType = getEventType(type);
-        if (eventType == 0) {
-            throw new JellyTagException("No event type specified, could not understand: " + type);
-        }
-
-        this.output = output;
-        widget.addListener(eventType, this);
-    }
-
-    // Listener interface
-    //-------------------------------------------------------------------------
-    /**
-     * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-     */
-    public void handleEvent(Event event) {
-        try {
-            context.setVariable(var, event);
-            invokeBody(output);
-        }
-        catch (Exception e) {
-            log.error("Caught exception: " + e + " while processing event: " + event, e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the parent widget which this widget will be added to.
-     */
-    public Widget getParentWidget() {
-        WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
-        if (tag != null) {
-            return tag.getWidget();
-        }
-        return null;
-    }
-
-    /**
-     * Sets the name of the variable to use to expose the event object when
-     * it is fired. If not specified this defaults to "event"
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Returns the type.
-     * @return String
-     */
-    public String getType() {
-        return type;
-    }
-
-    /**
-     * Sets the type of the event listener to listen for.
-     *
-     * @param type The type of the event to listen for
-     */
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Parses the given event type String and returns the SWT event type code
-     *
-     * @param type is the String event type
-     * @return the SWT integer event type
-     */
-    protected int getEventType(String type) throws JellyTagException {
-        return SwtHelper.parseStyle(SWT.class, type, false);
-    }
-
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/SwtHelper.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/SwtHelper.java
deleted file mode 100644
index 352996c..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/SwtHelper.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import java.lang.reflect.Field;
-import java.util.StringTokenizer;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A helper class for working with SWT.
- * </p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public class SwtHelper extends UseBeanTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(SwtHelper.class);
-
-
-    /**
-     * Parses the comma delimited String of style codes which are or'd
-     * together. The given class describes the integer static constants
-     *
-     * @param constantClass is the type to look for static fields
-     * @param text is a comma delimited text value such as "border, resize"
-     * @return the int code
-     */
-    public static int parseStyle(Class constantClass, String text) throws JellyTagException {
-        return parseStyle(constantClass, text, true);
-    }
-
-    /**
-     * Parses the comma delimited String of style codes which are or'd
-     * together. The given class describes the integer static constants
-     *
-     * @param constantClass is the type to look for static fields
-     * @param text is a comma delimited text value such as "border, resize"
-     * @param toUpperCase is whether the text should be converted to upper case
-     * before its compared against the reflection fields
-     *
-     * @return the int code
-     */
-    public static int parseStyle(Class constantClass, String text, boolean toUpperCase) throws JellyTagException{
-        int answer = 0;
-        if (text != null) {
-            if (toUpperCase) {
-                text = text.toUpperCase();
-            }
-            StringTokenizer items = new StringTokenizer(text, ",");
-            while (items.hasMoreTokens()) {
-                String token = items.nextToken().trim();
-                answer |= getStyleCode(constantClass, token);
-            }
-        }
-        return answer;
-    }
-
-    /**
-     * @return the code for the given word or zero if the word doesn't match a
-     * valid style
-     */
-    public static int getStyleCode(Class constantClass,String text) throws JellyTagException {
-        try {
-            Field field = constantClass.getField(text);
-            if (field == null) {
-                log.warn( "Unknown style code: " + text +" will be ignored");
-                return 0;
-            }
-            return field.getInt(null);
-        } catch (NoSuchFieldException e) {
-            throw new JellyTagException("The value: " + text + " is not understood", e);
-        } catch (IllegalAccessException e) {
-            throw new JellyTagException("The value: " + text + " is not understood", e);
-        }
-    }
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java
deleted file mode 100644
index 1365803..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.jelly.tags.swt.converters.ColorConverter;
-import org.apache.commons.jelly.tags.swt.converters.PointConverter;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.custom.TableTree;
-import org.eclipse.swt.custom.TableTreeItem;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.layout.RowData;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Caret;
-import org.eclipse.swt.widgets.ColorDialog;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Decorations;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.FontDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.MessageBox;
-import org.eclipse.swt.widgets.ProgressBar;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.swt.widgets.Scale;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Slider;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.swt.widgets.Tracker;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.xml.sax.Attributes;
-
-/**
- * A Jelly custom tag library that creates SWT user interfaces
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public class SwtTagLibrary extends TagLibrary {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(SwtTagLibrary.class);
-
-    static {
-        // register the various beanutils Converters from Strings to various SWT types
-        ConvertUtils.register( new PointConverter(), Point.class );
-        ConvertUtils.register( new ColorConverter(), Color.class );
-    }
-
-    public SwtTagLibrary() {
-        // widgets
-        registerWidgetTag( "button", Button.class, SWT.BORDER | SWT.PUSH | SWT.CENTER );
-        registerWidgetTag( "canvas", Canvas.class );
-        registerWidgetTag( "caret", Caret.class );
-        registerWidgetTag( "combo", Combo.class, SWT.DROP_DOWN );
-        registerWidgetTag( "composite", Composite.class );
-         registerWidgetTag( "scrolledComposite", ScrolledComposite.class, SWT.H_SCROLL | SWT.V_SCROLL);
-        registerWidgetTag( "coolBar", CoolBar.class, SWT.VERTICAL );
-        registerWidgetTag( "coolItem", CoolItem.class );
-        registerWidgetTag( "decorations", Decorations.class );
-        registerWidgetTag( "group", Group.class );
-        registerWidgetTag( "label", Label.class, SWT.HORIZONTAL | SWT.SHADOW_IN );
-        registerWidgetTag( "list", List.class );
-        registerMenuTag( "menu", SWT.DEFAULT );
-        registerMenuTag( "menuBar", SWT.BAR );
-        registerWidgetTag( "menuSeparator", MenuItem.class, SWT.SEPARATOR );
-        registerWidgetTag( "menuItem", MenuItem.class );
-        registerWidgetTag( "messageBox", MessageBox.class );
-        registerWidgetTag( "progressBar", ProgressBar.class, SWT.HORIZONTAL );
-        registerWidgetTag( "sash", Sash.class );
-        registerWidgetTag( "scale", Scale.class );
-        registerWidgetTag( "shell", Shell.class, SWT.BORDER | SWT.CLOSE | SWT.MIN | SWT.MAX | SWT.RESIZE | SWT.TITLE );
-        registerWidgetTag( "slider", Slider.class );
-        registerWidgetTag( "tabFolder", TabFolder.class );
-        registerWidgetTag( "tabItem", TabItem.class );
-        registerWidgetTag( "table", Table.class, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION );
-        registerWidgetTag( "tableColumn", TableColumn.class );
-        registerWidgetTag( "tableItem", TableItem.class );
-        registerWidgetTag( "text", Text.class );
-        registerWidgetTag( "toolBar", ToolBar.class, SWT.VERTICAL );
-        registerWidgetTag( "toolItem", ToolItem.class );
-        registerWidgetTag( "tracker", Tracker.class );
-        registerWidgetTag( "tree", Tree.class, SWT.MULTI );
-        registerWidgetTag( "treeItem", TreeItem.class );
-
-        // custom widgets
-        registerWidgetTag( "cTabFolder", CTabFolder.class );
-        registerWidgetTag( "cTabItem", CTabItem.class );
-        registerWidgetTag( "tableTree", TableTree.class );
-        registerWidgetTag( "tableTreeItem", TableTreeItem.class );
-
-        // layouts
-        registerLayoutTag("fillLayout", FillLayout.class);
-        registerLayoutTag("gridLayout", GridLayout.class);
-        registerLayoutTag("rowLayout", RowLayout.class);
-
-        // layout data objects
-        registerLayoutDataTag( "gridData", GridData.class );
-        registerLayoutDataTag( "rowData", RowData.class );
-
-        // dialogs
-        registerDialogTag( "colorDialog", ColorDialog.class );
-        registerDialogTag( "directoryDialog", DirectoryDialog.class );
-        registerDialogTag( "fileDialog", FileDialog.class );
-        registerDialogTag( "fontDialog", FontDialog.class );
-
-        // events
-        registerTag("onEvent", OnEventTag.class);
-
-        // other tags
-        registerTag("color", ColorTag.class);
-        registerTag("colour", FontTag.class);
-        registerTag("font", FontTag.class);
-        registerTag("gc", GCTag.class);
-        registerTag("image", ImageTag.class);
-
-    }
-
-    /**
-     * Register a layout tag for the given name
-     */
-    protected void registerLayoutTag(String name, final Class layoutClass) {
-        registerTagFactory(
-            name,
-            new TagFactory() {
-                /**
-                 * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-                 */
-                public Tag createTag(String name, Attributes attributes)
-                    throws JellyException {
-                    return new LayoutTag(layoutClass);
-                }
-            }
-        );
-    }
-
-    /**
-     * Register a layout data tag for the given name
-     */
-    protected void registerLayoutDataTag(String name, final Class layoutDataClass) {
-        registerTagFactory(
-            name,
-            new TagFactory() {
-                /**
-                 * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-                 */
-                public Tag createTag(String name, Attributes attributes)
-                    throws JellyException {
-                    return new LayoutDataTag(layoutDataClass);
-                }
-            }
-        );
-    }
-
-    /**
-     * Register a widget tag for the given name
-     */
-    protected void registerWidgetTag(String name, Class widgetClass) {
-        registerWidgetTag(name, widgetClass, SWT.NULL);
-    }
-
-    /**
-     * Register a widget tag for the given name
-     */
-    protected void registerWidgetTag(String name, final Class widgetClass, final int style) {
-        registerTagFactory(
-            name,
-            new TagFactory() {
-                /**
-                 * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-                 */
-                public Tag createTag(String name, Attributes attributes)
-                    throws JellyException {
-                    return new WidgetTag(widgetClass, style);
-                }
-            }
-        );
-    }
-
-    /**
-     * Register a registerDialogTag tag for the given name
-     */
-    protected void registerDialogTag(String name, Class widgetClass) {
-        registerDialogTag(name, widgetClass, SWT.NULL);
-    }
-
-    /**
-       * Register a dialog tag for the given name
-       */
-    protected void registerDialogTag(String name, final Class widgetClass, final int style) {
-          registerTagFactory(
-              name,
-              new TagFactory() {
-                  /**
-                   * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-                   */
-                  public Tag createTag(String name, Attributes attributes)
-                      throws JellyException {
-                      return new DialogTag(widgetClass, style);
-                  }
-              }
-          );
-      }
-
-    /**
-     * Register a menu tag for the given name and style
-     */
-    protected void registerMenuTag(String name, final int style) {
-        registerTagFactory(
-            name,
-            new TagFactory() {
-                /**
-                 * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
-                 */
-                public Tag createTag(String name, Attributes attributes)
-                    throws JellyException {
-                    return new MenuTag(style);
-                }
-            }
-        );
-    }
-
-
-
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/WidgetTag.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/WidgetTag.java
deleted file mode 100644
index 11a7827..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/WidgetTag.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-import org.apache.commons.jelly.tags.swt.converters.ColorConverter;
-import org.apache.commons.jelly.tags.swt.converters.PointConverter;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * This tag creates an SWT widget based on the parent tag, optionally declaring
- * this widget as a variable if the <i>var</i> attribute is specified.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- * @version 1.1
- */
-public class WidgetTag extends UseBeanTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(WidgetTag.class);
-
-    protected Widget parent;
-    private int style = SWT.NULL;
-
-    public WidgetTag(Class widgetClass) {
-        super(widgetClass);
-    }
-
-    public WidgetTag(Class widgetClass, int style) {
-        super(widgetClass);
-        this.style = style;
-    }
-
-    public String toString() {
-        return "WidgetTag[widget=" + getWidget() + "]";
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the visible widget, if there is one.
-     */
-    public Widget getWidget() {
-        Object bean = getBean();
-        if (bean instanceof Widget) {
-            return (Widget) bean;
-        }
-        return null;
-    }
-
-    /**
-     * @return the parent widget which this widget will be added to.
-     */
-    public Widget getParentWidget() {
-
-        if (parent == null) {
-            WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
-            if (tag != null) {
-                return tag.getWidget();
-            }
-        }
-
-        return parent;
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Map attributes = getAttributes();
-        Object parent = attributes.remove("parent");
-        if (parent != null) {
-            if (parent instanceof Widget) {
-                this.parent = (Widget) parent;
-            } else {
-                throw new JellyTagException(
-                    "The parent attribute is not a Widget, it is of type: "
-                        + parent.getClass().getName()
-                        + " value: "
-                        + parent);
-            }
-        }
-        super.doTag(output);
-        clearBean();
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new widget
-     */
-    protected Object newInstance(Class theClass, Map attributes, XMLOutput output)
-        throws JellyTagException {
-        int style = getStyle(attributes);
-
-        // now lets call the constructor with the parent
-        Widget parent = getParentWidget();
-
-        Widget widget = (Widget) createWidget(theClass, parent, style);
-        if (parent != null) {
-            attachWidgets(parent, widget);
-        }
-
-        return widget;
-    }
-
-    /*
-     * @see org.apache.commons.jelly.tags.core.UseBeanTag#setBeanProperties(java.lang.Object, java.util.Map)
-     */
-    protected void setBeanProperties(Object bean, Map attributes) throws JellyTagException {
-
-        if (bean instanceof Control) {
-            Control control = (Control) bean;
-
-            // Special handling of size property as the Control object breaks the
-            // JavaBean naming conventions by overloading the setSize() method
-            Object size = attributes.remove("size");
-            setSize(control, size);
-
-            // Special handling of color property as the Control object breaks the
-            // JavaBean naming conventions by overloading the setBackground() or setForeground() method
-            Object colorValue = attributes.remove("background");
-            Color background =
-                (colorValue instanceof Color)
-                    ? (Color) colorValue : getColor(control, colorValue);
-            control.setBackground(background);
-
-            colorValue = attributes.remove("foreground");
-            Color foreground =
-                (colorValue instanceof Color)
-                    ? (Color) colorValue : getColor(control, colorValue);
-            control.setForeground(foreground);
-        }
-
-        super.setBeanProperties(bean, attributes);
-    }
-
-    /**
-     * Get a color for the control
-     * @param control
-     * @param colorValue
-     */
-    protected Color getColor(Control control, Object colorValue) {
-        Color color = null;
-        if (colorValue != null) {
-            RGB rgb = null;
-            if (color instanceof Color) {
-                color = (Color) colorValue;
-            } else {
-                rgb = ColorConverter.getInstance().parse(colorValue.toString());
-                color = new Color(control.getDisplay(), rgb);
-            }
-        }
-        return color;
-    }
-
-    /**
-     * set the size of the control
-     * @param control
-     * @param size
-     */
-    protected void setSize(Control control, Object size) {
-        Point point = null;
-        if (size != null) {
-            if (size instanceof Point) {
-                point = (Point) size;
-            } else {
-                point = PointConverter.getInstance().parse(size.toString());
-            }
-            control.setSize(point);
-        }
-
-    }
-
-    /**
-     * Provides a strategy method to allow a new child widget to be attached to
-     * its parent
-     *
-     * @param parent is the parent widget which is never null
-     * @param widget is the new child widget to be attached to the parent
-     */
-    protected void attachWidgets(Object parent, Widget widget) throws JellyTagException {
-        // set the content that will be scrolled if the parent is a ScrolledComposite
-        if (parent instanceof ScrolledComposite && widget instanceof Control) {
-            ScrolledComposite scrolledComposite = (ScrolledComposite) parent;
-            scrolledComposite.setContent((Control) widget);
-        }
-    }
-
-    /**
-     * Factory method to create an instance of the given Widget class with
-     * the given parent and SWT style
-     *
-     * @param theClass is the type of widget to create
-     * @param parent is the parent widget
-     * @param style the SWT style code
-     * @return the new Widget
-     */
-    protected Object createWidget(Class theClass, Widget parent, int style)
-        throws JellyTagException {
-        if (theClass == null) {
-            throw new JellyTagException("No Class available to create the new widget");
-        }
-
-        try {
-            if (parent == null) {
-                // lets try call a constructor with a single style
-                Class[] types = { int.class };
-                Constructor constructor = theClass.getConstructor(types);
-                if (constructor != null) {
-                    Object[] arguments = { new Integer(style)};
-                    return constructor.newInstance(arguments);
-                }
-            } else {
-                // lets try to find the constructor with 2 arguments with the 2nd argument being an int
-                Constructor[] constructors = theClass.getConstructors();
-                if (constructors != null) {
-                    for (int i = 0, size = constructors.length; i < size; i++) {
-                        Constructor constructor = constructors[i];
-                        Class[] types = constructor.getParameterTypes();
-                        if (types.length == 2 && types[1].isAssignableFrom(int.class)) {
-                            if (types[0].isAssignableFrom(parent.getClass())) {
-                                Object[] arguments = { parent, new Integer(style)};
-                                return constructor.newInstance(arguments);
-                            }
-                        }
-                    }
-                }
-            }
-            return theClass.newInstance();
-        } catch (NoSuchMethodException e) {
-            throw new JellyTagException(e);
-        } catch (InstantiationException e) {
-            throw new JellyTagException(e);
-        } catch (IllegalAccessException e) {
-            throw new JellyTagException(e);
-        } catch (InvocationTargetException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    /**
-     * Creates the SWT style code for the current attributes
-     * @return the SWT style code
-     */
-    protected int getStyle(Map attributes) throws JellyTagException {
-        String text = (String) attributes.remove("style");
-        if (text != null) {
-            return SwtHelper.parseStyle(SWT.class, text);
-        }
-        return style;
-    }
-    
-    /** Sets the bean to null, to prevent it from
-     * sticking around in the event that this tag instance is
-     * cached. This method is called at the end of doTag.
-     *
-     */
-    protected void clearBean() {
-        setBean(null);
-    }
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/converters/ColorConverter.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/converters/ColorConverter.java
deleted file mode 100644
index 695e876..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/converters/ColorConverter.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt.converters;
-
-import java.util.StringTokenizer;
-
-import org.apache.commons.beanutils.Converter;
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * A Converter that converts Strings in the form "#uuuuuu" or "x,y,z" into a RGB object
- *
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- * @version $Revision: 1.5 $
- */
-public class ColorConverter implements Converter {
-
-    private static final ColorConverter instance = new ColorConverter();
-
-    private static String usageText =
-        "Color value should be in the form of '#xxxxxx' or 'x,y,z'";
-
-    public static ColorConverter getInstance() {
-        return instance;
-    }
-
-    /**
-     * Parsers a String in the form "x, y, z" into an SWT RGB class
-     * @param value
-     * @return RGB
-     */
-    protected RGB parseRGB(String value) {
-        StringTokenizer items = new StringTokenizer(value, ",");
-        int red = 0;
-        int green = 0;
-        int blue = 0;
-        if (items.hasMoreTokens()) {
-            red = parseNumber(items.nextToken());
-        }
-        if (items.hasMoreTokens()) {
-            green = parseNumber(items.nextToken());
-        }
-        if (items.hasMoreTokens()) {
-            blue = parseNumber(items.nextToken());
-        }
-        return new RGB(red, green, blue);
-    }
-
-    /**
-     * Parsers a String in the form "#xxxxxx" into an SWT RGB class
-     * @param value
-     * @return RGB
-     */
-    protected RGB parseHtml(String value) {
-        if (value.length() != 7) {
-            throw new IllegalArgumentException(usageText);
-        }
-        int colorValue = 0;
-        try {
-            colorValue = Integer.parseInt(value.substring(1), 16);
-            java.awt.Color swingColor = new java.awt.Color(colorValue);
-            return new RGB(
-                swingColor.getRed(),
-                swingColor.getGreen(),
-                swingColor.getBlue());
-        } catch (NumberFormatException ex) {
-            throw new IllegalArgumentException(
-                value + "is not a valid Html color\n " + ex);
-        }
-    }
-
-    /**
-     * Parse a String
-     */
-    public RGB parse(String value) {
-        if (value.length() <= 1) {
-            throw new IllegalArgumentException(usageText);
-        }
-
-        if (value.charAt(0) == '#') {
-            return parseHtml(value);
-        } else if (value.indexOf(',') != -1) {
-            return parseRGB(value);
-        } else {
-            throw new IllegalArgumentException(usageText);
-        }
-    }
-
-    // Converter interface
-    //-------------------------------------------------------------------------
-    public Object convert(Class type, Object value) {
-        Object answer = null;
-        if (value != null) {
-            String text = value.toString();
-            answer = parse(text);
-        }
-
-        System.out.println("Converting value: " + value + " into: " + answer);
-
-        return answer;
-    }
-
-    protected int parseNumber(String text) {
-        text = text.trim();
-        return Integer.parseInt(text.trim());
-    }
-}
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/converters/PointConverter.java b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/converters/PointConverter.java
deleted file mode 100644
index 0b519f9..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/converters/PointConverter.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.swt.converters;
-
-import java.util.StringTokenizer;
-
-import org.apache.commons.beanutils.Converter;
-
-import org.eclipse.swt.graphics.Point;
-
-/**
- * A Converter that turns Strings in the form "x, y" into Point objects
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class PointConverter implements Converter {
-
-    private static final PointConverter instance = new PointConverter();
-
-    public static PointConverter getInstance() {
-        return instance;
-    }
-
-    /**
-     * Parsers a String in the form "x, y" into an SWT Point class
-     * @param text
-     * @return Point
-     */
-    public Point parse(String text) {
-        StringTokenizer items = new StringTokenizer( text, "," );
-        int x = 0;
-        int y = 0;
-        if ( items.hasMoreTokens() ) {
-            x = parseNumber( items.nextToken() );
-        }
-        if ( items.hasMoreTokens() ) {
-            y = parseNumber( items.nextToken() );
-        }
-        return new Point( x, y );
-    }
-
-    // Converter interface
-    //-------------------------------------------------------------------------
-    public Object convert(Class type, Object value) {
-        Object answer = null;
-        if ( value != null ) {
-            String text = value.toString();
-            answer = parse(text);
-        }
-
-        System.out.println("Converting value: " + value + " into: " + answer);
-
-        return answer;
-    }
-
-    protected int parseNumber(String text) {
-        text = text.trim();
-        return Integer.parseInt(text.trim());
-    }
-
-}
\ No newline at end of file
diff --git a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/package.html b/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/package.html
deleted file mode 100644
index 41dd1a0..0000000
--- a/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/package.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
-  <p>
-  	The JellySWT Library is a Jelly Library for creating Rich User Interfaces 
-  	using SWT via XML markup (a Jelly script)
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/example.jelly b/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/example.jelly
deleted file mode 100644
index cb0764f..0000000
--- a/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/example.jelly
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns="jelly:swt" xmlns:log="jelly:log">

-

-  <shell text="This is a shell" var="shell" size="600,300" style="border, close, min, max, resize, title">

-        <menu style="bar">

-            <menuItem text="File" style="cascade">

-                <menu>

-                    <menuItem text="New">

-                        <onEvent type="Selection">

-                            <log:info>Selected New option with event ${event}</log:info>

-                        </onEvent>

-                    </menuItem>

-                        

-                    <menuItem text="Open"/>

-                    <menuItem style="separator"/>

-                    <menuItem text="Save"/>

-                </menu>

-            </menuItem>

-            <menuItem text="Help" style="cascade">

-                <menu>

-                    <menuItem text="About"/>

-                </menu>

-            </menuItem>

-        </menu>      

-

-      <gridLayout/>

-

-        <group text="Some form">

-            <gridData style="fill_horizontal"/>

-

-            <gridLayout numColumns="2"/>

-            <label text="Hello" style="horizontal, shadow_in"/>

-            <text var="textField" text="1234" editable="true">

-                <gridData style="fill_horizontal"/>

-            </text>

-        </group>

-

-        <table 

-            headerVisible="true"

-            linesVisible="true"

-            toolTipText="This is a table!" 

-            style="multi, border, full_selection">

-            

-            <gridData style="fill_both"/>

-            

-            <tableColumn text="Name" width="100" />

-            <tableColumn text="Age" width="40" />

-            

-            <!-- we'd normally use some Java bean model to implement the next bit -->

-            <tableItem var="row"/>

-            ${row.setText(0, 'James')}

-            ${row.setText(1, '33')}

-            <tableItem var="row"/>

-            ${row.setText(0, 'Bob')}

-            ${row.setText(1, '30')}

-        </table>

-

-      <toolBar style="vertical">

-          <toolItem text="Click Me" toolTipText="I am a ToolBar Item that you can click">

-              <onEvent type="Selection">

-                  <log:info>Clicked button with event ${event} and text field contains ${textField.text}</log:info>

-              </onEvent>

-            </toolItem>

-          <toolItem text="Tree" toolTipText="Starts the Tree demo">

-              <onEvent type="Selection">

-                  <j:include uri="tree.jelly"/>

-              </onEvent>

-            </toolItem>

-          <toolItem text="TableTree" toolTipText="Starts the TableTree demo">

-              <onEvent type="Selection">

-                  <j:include uri="tableTree.jelly"/>

-              </onEvent>

-            </toolItem>

-          <toolItem text="Parent Demo" toolTipText="Starts the Parent Demo that shows how to start a component given a parent widget">

-              <onEvent type="Selection">

-                  <j:include uri="parentDemo.jelly"/>

-              </onEvent>

-            </toolItem>

-          <toolItem text="Style Defaulting Demo" toolTipText="Shows how default styles can be used, rather than always specifying the styles">

-              <onEvent type="Selection">

-                  <j:include uri="styleDefaultDemo.jelly"/>

-              </onEvent>

-            </toolItem>

-      </toolBar>

-  </shell>

-

-    <!-- we could abstract the following away as a tag -->

-    

-<!--

-    ${shell.pack()}

--->    

-    ${shell.open()}

-    

-    <j:set var="display" value="${shell.display}"/>

-    

-    <j:while test="${!shell.isDisposed()}">

-        <j:if test="${!display.readAndDispatch()}">

-            <j:set var="foo" value="${display.sleep()}"/>

-        </j:if>

-    </j:while>

-    ${display.dispose()}

-</j:jelly>

diff --git a/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/parentDemo.jelly b/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/parentDemo.jelly
deleted file mode 100644
index 864ace0..0000000
--- a/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/parentDemo.jelly
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns="jelly:swt" xmlns:log="jelly:log">

-

-  <shell text="Parent Demo" var="subShell" style="border, close, min, max, resize, title">

-      

-      <gridLayout/>

-

-  </shell>

-

-    <!-- 

-        || This demo shows how we can create a brand new widget which is added to a 

-        || given parent control (in this case the shell).

-        || This widget can be defined as a variable using the var="foo" attribute just

-        || like any other widget.

-        -->

-    <tree parent="${subShell}" toolTipText="This is a tree!" style="multi">

-        

-        <gridData style="fill_both"/>

-        

-        <!-- we'd normally use some Java bean model to implement the next bit -->

-        <treeItem text="A">

-            <treeItem text="A/A"/>

-            <treeItem text="A/B"/>

-            <treeItem text="A/C"/>

-        </treeItem>

-        <treeItem text="B">

-            <treeItem text="B/A"/>

-            <treeItem text="B/B"/>

-            <treeItem text="B/C"/>

-        </treeItem>

-                        

-        <menu style="pop_up">

-            <menuItem text="do something!">

-                <onEvent type="Selection">

-                    <log:info>Clicked on ${event}</log:info>

-                </onEvent>

-            </menuItem>

-        </menu>                            

-    </tree>

-    

-    ${subShell.pack()}

-    ${subShell.open()}

-    

-</j:jelly>

diff --git a/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/styleDefaultDemo.jelly b/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/styleDefaultDemo.jelly
deleted file mode 100644
index 00ef876..0000000
--- a/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/styleDefaultDemo.jelly
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns="jelly:swt" xmlns:log="jelly:log">

-    

-    <!--

-        || A demo which shows some default styles being used rather than explicitly 

-        || specifying them for each widget

-        -->

-

-  <shell text="This is a shell" var="subShell">

-        <menuBar>

-            <menuItem text="File" style="cascade">

-                <menu>

-                    <menuItem text="New">

-                        <onEvent type="Selection">

-                            <log:info>Selected New option with event ${event}</log:info>

-                        </onEvent>

-                    </menuItem>

-                        

-                    <menuItem text="Open"/>

-                    <menuSeparator/>

-                    <menuItem text="Save"/>

-                </menu>

-            </menuItem>

-            <menuItem text="Help" style="cascade">

-                <menu>

-                    <menuItem text="About"/>

-                </menu>

-            </menuItem>

-        </menuBar>      

-

-      <gridLayout/>

-

-        <group text="Some form">

-            <gridData style="fill_horizontal"/>

-

-            <gridLayout numColumns="2"/>

-            <label text="Hello"/>

-            <text var="textField" text="1234" editable="true">

-                <gridData style="fill_horizontal"/>

-            </text>

-        </group>

-

-        <table 

-            headerVisible="true"

-            linesVisible="true"

-            toolTipText="This is a table!">

-            

-            <gridData style="fill_both"/>

-            

-            <tableColumn text="Name" width="100" toolTipText="This is the name column"/>

-            <tableColumn text="Age" width="40" toolTipText="This is the age column"/>

-            

-            <!-- we'd normally use some Java bean model to implement the next bit -->

-            <tableItem var="row"/>

-            ${row.setText(0, 'James')}

-            ${row.setText(1, '33')}

-            <tableItem var="row"/>

-            ${row.setText(0, 'Bob')}

-            ${row.setText(1, '30')}

-        </table>

-

-      <toolBar>

-          <toolItem text="Click Me" toolTipText="I am a ToolBar Item that you can click">

-              <onEvent type="Selection">

-                  <log:info>Clicked button with event ${event} and text field contains ${textField.text}</log:info>

-              </onEvent>

-            </toolItem>

-      </toolBar>

-  </shell>

-

-    <!-- we could abstract the following away as a tag -->

-    

-    ${subShell.pack()}

-    ${subShell.open()}

-</j:jelly>

diff --git a/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/tableTree.jelly b/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/tableTree.jelly
deleted file mode 100644
index e8bdf2e..0000000
--- a/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/tableTree.jelly
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns="jelly:swt" xmlns:log="jelly:log">

-

-  <shell text="TableTree Demo" var="subShell" style="border, close, min, max, resize, title">

-      

-      <gridLayout/>

-

-        <tableTree toolTipText="This is a table tree!" style="multi, full_selection">

-            

-            <gridData style="fill_both"/>

-            

-            <!-- we'd normally use some Java bean model to implement the next bit -->

-            <tableTreeItem var="row">

-                    ${row.setText('A')}

-                    ${row.setText(0, 'James')}

-                    ${row.setText(1, '33')}

-                <tableTreeItem>

-                    ${row.setText('B')}

-                    ${row.setText(0, 'Child')}

-                    ${row.setText(1, '2')}

-                </tableTreeItem>

-                

-                <tableTreeItem>

-                    ${row.setText(0, 'Child-nosettext')}

-                    ${row.setText(1, '2')}

-                </tableTreeItem>

-                

-                <tableTreeItem var="row">

-                    ${row.setText('C')}

-                    ${row.setText(0, 'Bob')}

-                    ${row.setText(1, '30')}

-

-                    <tableTreeItem var="row">

-                        ${row.setText('C')}

-                    </tableTreeItem>

-

-                </tableTreeItem>

-            </tableTreeItem>

-                            

-        </tableTree>

-  </shell>

-

-    ${subShell.open()}

-</j:jelly>

diff --git a/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/tree.jelly b/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/tree.jelly
deleted file mode 100644
index 9ca6291..0000000
--- a/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/tree.jelly
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns="jelly:swt" xmlns:log="jelly:log">

-

-  <shell text="Tree Demo" var="subShell" size="500,500" style="border, close, min, max, resize, title">

-      

-      <gridLayout/>

-

-        <tree toolTipText="This is a tree!" style="multi">

-            

-            <gridData style="fill_both"/>

-            

-            <!-- we'd normally use some Java bean model to implement the next bit -->

-            <treeItem text="A">

-                <treeItem text="A/A"/>

-                <treeItem text="A/B"/>

-                <treeItem text="A/C"/>

-            </treeItem>

-            <treeItem text="B">

-                <treeItem text="B/A"/>

-                <treeItem text="B/B"/>

-                <treeItem text="B/C"/>

-            </treeItem>

-                            

-            <menu style="pop_up">

-                <menuItem text="do something!">

-                    <onEvent type="Selection">

-                        <log:info>Clicked on ${event}</log:info>

-                    </onEvent>

-                </menuItem>

-            </menu>                            

-        </tree>

-  </shell>

-

-<!--

-    ${subShell.pack()}

--->    

-    ${subShell.open()}

-</j:jelly>

diff --git a/jelly-tags/swt/xdocs/changes.xml b/jelly-tags/swt/xdocs/changes.xml
deleted file mode 100644
index 3d563ac..0000000
--- a/jelly-tags/swt/xdocs/changes.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.1-SNAPSHOT" date="in CVS">
-      <action dev="dion" type="fix" issue="JELLY-141" due-to="Hans Gilde">WidgetTag should null-out its bean after running</action>
-    </release>
-    <release version="1.0" date="2004-09-13">
-      <action dev="dion" type="fix" issue="JELLY-123" due-to="Marcus Crafter">var and resource support for images</action>
-      <action dev="dion" type="fix" issue="JELLY-42" due-to="Christiaan ten Klooster">add cTabFolder + cTabItem widgets</action>
-      <action dev="dion" type="fix" issue="JELLY-48" due-to="Christiaan ten Klooster">dialog tag</action>
-      <action dev="dion" type="fix" issue="JELLY-126" due-to="Marcus Crafter">Support for SWT GC objects</action>
-      <action dev="dion" type="fix" issue="JELLY-125" due-to="Marcus Crafter">Support for SWT Font objects</action>
-      <action dev="dion" type="fix" issue="JELLY-124" due-to="Marcus Crafter">Support for SWT Color objects</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/swt/xdocs/index.xml b/jelly-tags/swt/xdocs/index.xml
deleted file mode 100644
index 9defd21..0000000
--- a/jelly-tags/swt/xdocs/index.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>SWT Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        The JellySWT Library is a Jelly Library for creating Rich User Interfaces 
-        using SWT via XML markup (a Jelly script).
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/swt/xdocs/navigation.xml b/jelly-tags/swt/xdocs/navigation.xml
deleted file mode 100644
index ace09e6..0000000
--- a/jelly-tags/swt/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="SWT Tag Library">
-
-  <title>SWT Tag Library</title>
-  
-  <body>
-    <menu name="SWT Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/tag-checkstyle.xml b/jelly-tags/tag-checkstyle.xml
deleted file mode 100644
index b7e1df4..0000000
--- a/jelly-tags/tag-checkstyle.xml
+++ /dev/null
@@ -1,344 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<!DOCTYPE module PUBLIC
-    "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
-    "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
-
-<!--
-
-  Checkstyle configuration that checks the sun coding conventions from:
-
-    - the Java Language Specification at
-      http://java.sun.com/docs/books/jls/second_edition/html/index.html
-
-    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
-
-    - the Javadoc guidelines at
-      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
-
-    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
-
-    - some best practices
-
-  Checkstyle is very configurable. Be sure to read the documentation at
-  http://checkstyle.sf.net (or in your downloaded distribution).
-
-  Most Checks are configurable, be sure to consult the documentation.
-
-  To completely disable a check, just comment it out or delete it from the file.
-
-  Finally, it is worth reading the documentation.
-
--->
-
-<module name="Checker">
-    <!-- set default severity -->
-    <property name="severity" value="warning"/>
-
-    <!-- Checks that a package.html file exists for each package.     -->
-    <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->
-    <module name="PackageHtml"/>
-
-    <!-- Checks whether files end with a new line.                        -->
-    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
-    <module name="NewlineAtEndOfFile"/>
-
-    <!-- Checks that property files contain the same keys.         -->
-    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
-    <module name="Translation"/>
-
-    <!-- Checks for duplicate code                           -->
-    <!-- See http://checkstyle.sf.net/config_duplicates.html -->
-    <module name="StrictDuplicateCode">
-      <property name="min" value="19"/>
-    </module>
-
-    <module name="TreeWalker">
-
-        <property name="cacheFile" value="${checkstyle.cache.file}"/>
-
-        <!-- Checks for Javadoc comments.                     -->
-        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
-        <module name="JavadocMethod"/>
-        <module name="JavadocType"/>
-        <module name="JavadocVariable"/>
-        <module name="JavadocStyle">
-            <property name="checkEmptyJavadoc" value="true"/>
-        </module>
-
-
-        <!-- Checks for Naming Conventions.                  -->
-        <!-- See http://checkstyle.sf.net/config_naming.html -->
-        <module name="ConstantName">
-          <property name="format" value="^(log)|[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
-          <property name="severity" value="error"/>
-        </module>
-        <module name="LocalVariableName">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="MemberName">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="MethodName">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="PackageName">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="ParameterName">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="StaticVariableName">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="TypeName">
-            <property name="severity" value="error"/>
-        </module>
-
-        <!-- Checks for Headers                              -->
-        <!-- See http://checkstyle.sf.net/config_header.html -->
-        <module name="Header">
-            <!-- The follow property value demonstrates the ability     -->
-            <!-- to have access to ANT properties. In this case it uses -->
-            <!-- the ${basedir} property to allow Checkstyle to be run  -->
-            <!-- from any directory within a project. See property      -->
-            <!-- expansion,                                             -->
-            <!-- http://checkstyle.sf.net/config.html#properties        -->
-            <!-- <property                                              -->
-            <!--     name="headerFile"                                  -->
-            <!--     value="${basedir}/java.header"/>                   -->
-            <property name="headerFile" value="${checkstyle.header.file}"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <!-- Following interprets the header file as regular expressions. -->
-        <!-- <module name="RegexpHeader"/>                                -->
-
-
-        <!-- Checks for imports                              -->
-        <!-- See http://checkstyle.sf.net/config_import.html -->
-        <module name="AvoidStarImport">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="IllegalImport">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="RedundantImport">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="UnusedImports">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="ImportOrder">
-            <property name="groups" value="java,javax,junit,org,com"/>
-            <property name="ordered" value="false"/>
-            <property name="separated" value="true"/>
-            <property name="caseSensitive" value="true"/>
-        </module>
-
-
-        <!-- Checks for Size Violations.                    -->
-        <!-- See http://checkstyle.sf.net/config_sizes.html -->
-        <module name="FileLength"/>
-        <module name="LineLength">
-          <property name="max" value="100"/>
-        </module>
-        <module name="MethodLength"/>
-        <module name="ParameterNumber"/>
-
-
-        <!-- Checks for whitespace                               -->
-        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-        <module name="EmptyForIteratorPad"/>
-        <module name="NoWhitespaceAfter"/>
-        <module name="NoWhitespaceBefore"/>
-        <module name="OperatorWrap"/>
-        <module name="ParenPad"/>
-        <module name="TypecastParenPad"/>
-        <module name="TabCharacter"/>
-        <module name="WhitespaceAfter"/>
-        <module name="WhitespaceAround"/>
-
-
-        <!-- Modifier Checks                                    -->
-        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
-        <module name="ModifierOrder"/>
-        <module name="RedundantModifier"/>
-
-
-        <!-- Checks for blocks. You know, those {}'s         -->
-        <!-- See http://checkstyle.sf.net/config_blocks.html -->
-        <module name="AvoidNestedBlocks"/>
-        <module name="EmptyBlock"/>
-        <module name="LeftCurly">
-          <property name="option" value="eol"/>
-        </module>
-        
-        <module name="NeedBraces"/>
-        <module name="RightCurly"/>
-
-
-        <!-- Checks for common coding problems               -->
-        <!-- See http://checkstyle.sf.net/config_coding.html -->
-        <module name="AvoidInlineConditionals"/>
-        <module name="CovariantEquals">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="DeclarationOrder">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="DefaultComesLast">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="DoubleCheckedLocking">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="DeclarationOrder">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="DefaultComesLast">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="DoubleCheckedLocking">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="FallThrough"/>
-        <module name="HiddenField">
-            <property name="severity" value="error"/>
-            <property name="tokens" value="VARIABLE_DEF"/>
-        </module>
-        <module name="IllegalCatch">
-            <property name="severity" value="error"/>
-            <property name="illegalClassNames" value="java.lang.Throwable,java.lang.RuntimeException"/>
-        </module>
-        <module name="IllegalInstantiation">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="IllegalTokenText">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="IllegalType">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="InnerAssignment">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="JUnitTestCase">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="MagicNumber"/>
-        <module name="MissingSwitchDefault">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="MultipleVariableDeclarations">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="NestedIfDepth">
-            <property name="max" value="4"/>
-        </module>
-        <module name="NestedTryDepth">
-            <property name="max" value="3"/>
-        </module>
-        <module name="PackageDeclaration">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="ParameterAssignment">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="RedundantThrows"/>
-        <module name="SimplifyBooleanExpression">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="SimplifyBooleanReturn">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="StringLiteralEquality">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="SuperFinalize">
-            <property name="severity" value="error"/>
-        </module>
-
-        <!-- Checks for class design                         -->
-        <!-- See http://checkstyle.sf.net/config_design.html -->
-        <!-- module name="DesignForExtension"/-->
-        <module name="FinalClass"/>
-        <module name="HideUtilityClassConstructor"/>
-        <module name="InterfaceIsType"/>
-        <module name="VisibilityModifier"/>
-
-        <!-- Checks code metrics                              -->
-        <!-- See http://checkstyle.sf.net/config_metrics.html -->
-        <module name="BooleanExpressionComplexity">
-            <property name="severity" value="info"/>
-            <property name="max" value="3"/>
-        </module>
-        <module name="ClassDataAbstractionCoupling">
-            <property name="severity" value="info"/>
-            <property name="max" value="10"/>
-        </module>        
-        <module name="ClassFanOutComplexity">
-            <property name="severity" value="info"/>
-            <property name="max" value="20"/>
-        </module>
-        <module name="CyclomaticComplexity">
-            <property name="severity" value="info"/>
-            <property name="max" value="10"/>
-        </module>
-        <module name="NPathComplexity">
-            <property name="severity" value="info"/>
-            <property name="max" value="200"/>
-        </module>
-
-        <!-- Miscellaneous other checks.                   -->
-        <!-- See http://checkstyle.sf.net/config_misc.html -->
-        <module name="ArrayTypeStyle"/>
-        <!-- module name="FinalParameters"/-->
-        <!-- module name="GenericIllegalRegexp">
-            <property name="format" value="\s+$"/>
-            <property name="message" value="Line has trailing spaces."/>
-        </module-->
-        <module name="GenericIllegalRegexp">
-            <property name="format" value="generated comment|auto-generated|template for this generated file|template for this generated type"/>
-            <property name="ignoreCase" value="true"/>
-            <property name="message" value="Generated Comment Found. Please enter a real one."/>
-            <property name="severity" value="error"/>
-        </module>
-        <module name="Indentation"/>
-        <module name="TodoComment"/>
-        <module name="UncommentedMain"/>
-        <module name="UpperEll"/>
-
-        <!-- Checks for usage                               -->
-        <!-- See http://checkstyle.sf.net/config_usage.html -->
-        <module name="usage.OneMethodPrivateField">
-            <property name="ignoreFormat" value="Temp$"/>
-        </module>
-        <module name="usage.UnusedLocalVariable">
-            <property name="severity" value="error"/>
-        </module>
-        <module name="usage.UnusedPrivateField">
-            <property name="ignoreFormat" value="LOG"/>
-            <property name="severity" value="error"/>
-        </module>
-
-    </module>
-
-</module>
diff --git a/jelly-tags/tag-navigation.xml b/jelly-tags/tag-navigation.xml
deleted file mode 100644
index 3d99bdb..0000000
--- a/jelly-tags/tag-navigation.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="@pom.name@">
-
-  <title>@pom.name@</title>
-  <organizationLogo href="http://jakarta.apache.org/images/jakarta-logo.gif">Jakarta</organizationLogo>
-  
-  <body><!-- note, all links will be relativized at HTML production... -->
-        <links><item name="Jelly" href="http://jakarta.apache.org/commons/jelly"/></links>
-    <menu name="@pom.name@">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
-
diff --git a/jelly-tags/tag-project.xml b/jelly-tags/tag-project.xml
deleted file mode 100644
index 18b154f..0000000
--- a/jelly-tags/tag-project.xml
+++ /dev/null
@@ -1,345 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>../parent-project.xml</extend>
-  <pomVersion>3</pomVersion>
-  <groupId>commons-jelly</groupId>
-  <currentVersion>1.0-SNAPSHOT</currentVersion>
-  
-  <organization>
-    <name>Apache Software Foundation</name>
-    <url>http://jakarta.apache.org/</url>
-    <logo>http://jakarta.apache.org/images/jakarta-logo.gif</logo>
-  </organization>
-  <inceptionYear>2002</inceptionYear>
-  <package>org.apache.commons.jelly.tags.ant</package>
-  <logo>/images/logo.gif</logo>
-  <!-- Gump integration -->
-  <gumpRepositoryId>jakarta</gumpRepositoryId>
-
-  <description>
-      This is a Jelly tag.
-  </description>
-  <shortDescription>Commons Jelly Tag Library</shortDescription>
-  
-  <url>http://jakarta.apache.org/commons/jelly/libs/${pom.id.substring(33)}/index.html</url>
-  <issueTrackingUrl>http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10012</issueTrackingUrl>
-  
-  <siteAddress>jakarta.apache.org</siteAddress>
-  <siteDirectory>/www/jakarta.apache.org/commons/jelly/libs/${pom.id.substring(33)}/</siteDirectory>
-  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/jelly/jelly-tags/${pom.id.substring(33)}/</distributionDirectory>
-  
-  <repository>
-    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/jelly/jelly-tags/${pom.id.substring(33)}</connection>
-    <developerConnection>scm:cvs:ext:${maven.username}@cvs.apache.org:/home/cvs:jakarta-commons/jelly/jelly-tags/${pom.id.substring(33)}</developerConnection>
-    <url>http://cvs.apache.org/viewcvs/jakarta-commons/jelly/jelly-tags/${pom.id.substring(33)}/</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>
-  
-  <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>Robert Burrell Donkin</name>
-      <id>rdonkin</id>
-      <email>rdonkin@apache.org</email>
-    </developer>
-  </developers>
-
-  <contributors>
-    <contributor>
-      <name>Martin van dem Bemt</name>
-      <email>mvdb@mvdb.com</email>
-    </contributor>
-    <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></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>Paul Libbrecht</name>
-      <email>paul@activemath.org</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></organization>
-      <roles>
-          <role>Developer</role>
-      </roles>
-    </contributor>    
-    <contributor>
-      <name>J. Matthew Pryor</name>
-      <email>matthew_pryor@versata.com</email>
-      <organization></organization>
-      <roles>
-          <role>Developer</role>
-      </roles>
-    </contributor>        
-    <contributor>
-      <name>Knut Wannheden</name>
-      <email></email>
-      <organization></organization>
-      <roles>
-          <role>Developer</role>
-      </roles>
-    </contributor>        
-    <contributor>
-      <name>Kelvin Tan</name>
-      <email></email>
-      <organization></organization>
-      <roles>
-          <role>Developer</role>
-      </roles>
-    </contributor>        
-    <contributor>
-      <name>Todd Jonker</name>
-      <email></email>
-      <organization></organization>
-      <roles>
-          <role>Developer</role>
-      </roles>
-    </contributor>            
-  </contributors>
-    
-  <dependencies>
- 
-    
-    <dependency>
-      <id>xml-apis</id>
-      <version>1.0.b2</version>
-    </dependency>
-    
-    <dependency>
-      <id>commons-beanutils</id>
-      <version>1.6</version>
-    </dependency>
-    
-    <dependency>
-      <id>commons-collections</id>
-      <version>2.1</version>
-    </dependency>
-    
-    <dependency>
-      <id>commons-jexl</id>
-      <version>1.0</version>
-    </dependency>
-    
-    <dependency>
-      <id>commons-jelly</id>
-      <version>SNAPSHOT</version>
-    </dependency>
-    
-    <dependency>
-      <id>commons-logging</id>
-      <version>1.0.3</version>
-    </dependency>
-    
-    <dependency>
-      <id>dom4j</id>
-      <version>1.5</version>
-    </dependency>
-
-    <dependency>
-      <id>jaxen</id>
-      <version>1.1-beta-2</version>
-    </dependency>
-
-    <dependency>
-      <id>xerces</id>
-      <version>2.2.1</version>
-      <properties>
-        <gump.project>xml-xerces</gump.project>
-      </properties>
-    </dependency>
-  </dependencies>
-  
-  <build>
-    <nagEmailAddress>commons-dev@jakarta.apache.org</nagEmailAddress>
-    <sourceDirectory>src/java</sourceDirectory>
-    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
-
-    <!-- Unit test classes -->
-    <unitTest>
-      <includes>
-        <include>**/Test*.java</include>
-      </includes>
-      <resources>
-          <resource>
-              <directory>src/test</directory>
-              <includes>
-                  <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>
-
-    <!-- Resources that are packaged up inside the JAR file -->
-    <resources>        
-        <resource>        
-            <directory>src/java</directory>
-            <includes>
-                <include>**/*.properties</include>
-            </includes>
-        </resource>
-    </resources>
-  
-  </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-jellydoc-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>
diff --git a/jelly-tags/threads/.cvsignore b/jelly-tags/threads/.cvsignore
deleted file mode 100644
index 36ceb76..0000000
--- a/jelly-tags/threads/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-maven.log
-target
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/threads/build.xml b/jelly-tags/threads/build.xml
deleted file mode 100644
index 88cfd9e..0000000
--- a/jelly-tags/threads/build.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2302-->
-<project default="jar" name="commons-jelly-tags-threads" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-threads-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-threads 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.threads.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/threads/maven.xml b/jelly-tags/threads/maven.xml
deleted file mode 100644
index ebeea1c..0000000
--- a/jelly-tags/threads/maven.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/threads/project.properties b/jelly-tags/threads/project.properties
deleted file mode 100644
index 39c1b61..0000000
--- a/jelly-tags/threads/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/threads/project.xml b/jelly-tags/threads/project.xml
deleted file mode 100644
index c023423..0000000
--- a/jelly-tags/threads/project.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-threads</id>
-  <name>commons-jelly-tags-threads</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.threads</package>
-
-  <description>
-        A library for processing Jelly scripts using multiple threads.
-  </description>
-  <shortDescription>Commons Jelly Threads Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-THREADS-1_0</tag>
-    </version>
-  </versions>
-  
-  <dependencies>
-
-    <!-- START for test -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/libs/junit/</url>
-    </dependency>
-
-    <!-- END for test -->
-
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/GroupTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/GroupTag.java
deleted file mode 100644
index a48b274..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/GroupTag.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Represents a group of threads. This is not the same as Java's thread groups.
- * All of the threads in a thread group are started at the same time, not as they
- * are defined. Use this in conjunction with other tags like join to manipulate
- * a group of threads.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class GroupTag extends TagSupport {
-    /** Variable to place the thread group into */
-    private String var = null;
-    /** The thread list */
-    private List threads = new ArrayList();
-
-    /** Child threads will add themselves and will then all be started together */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        invokeBody(output);
-
-        // store the group in a jelly variable
-        if (var != null) {
-            context.setVariable(var, threads);
-        }
-
-        // start the threads
-        for (int i = 0; i < threads.size(); i++) {
-            Thread thread = (Thread) threads.get(i);
-            thread.start();
-        }
-    }
-
-    /** Add a thread to the thread group list */
-    public void addThread(Thread thread) {
-        threads.add(thread);
-    }
-
-    /** Get the list of threads in this thread group */
-    public List getThreads() {
-        return threads;
-    }
-
-    /** Set the variable name to store the thread group in */
-    public void setVar(String var) {
-        this.var = var;
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/InterruptTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/InterruptTag.java
deleted file mode 100644
index dcfce2d..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/InterruptTag.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.XMLOutput;
-
-import java.util.List;
-
-/**
- * Interrupts a thread or thread group.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class InterruptTag extends UseThreadTag {
-    /** Interrupt one thread */
-    protected void useThread(Thread thread, XMLOutput output) {
-        thread.interrupt();
-    }
-
-    /** Interrupt all of the threads in a group */
-    protected void useThreadGroup(List threadGroup, XMLOutput output) {
-        for (int i = 0; i < threadGroup.size(); i++) {
-            ((Thread) threadGroup.get(i)).interrupt();
-        }
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/JellyThread.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/JellyThread.java
deleted file mode 100644
index d9f9264..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/JellyThread.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Adds some functionality to the jdk thread class.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class JellyThread extends Thread {
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ThreadTag.class);
-
-    /** While this thread is still running it owns this mutex */
-    private Mutex runningMutex = new Mutex();
-    /** The Runnable target */
-    private Runnable target = null;
-
-    /** Tracks the status of this thread */
-    RunnableStatus status = new RunnableStatus();
-
-    public JellyThread() {
-        // aquire my still running lock immediately
-        while (true) {
-            try {
-                runningMutex.acquire();
-                break;
-            } catch (InterruptedException e) {
-            }
-        }
-    }
-
-    /**
-     * Set the Runnable target that will be run
-     */
-    public void setTarget(Runnable target) {
-        this.target = target;
-    }
-
-    /**
-     * Run the thread
-     */
-    public void run() {
-        log.debug("Starting thread \"" + getName() + "\"");
-
-        // run the runnable item
-        try {
-
-            log.debug("Thread \"" + getName() + "\" running");
-            target.run();
-
-            // as long as there were no runtime exceptions set SUCCESS
-            status.set(RunnableStatus.SUCCESS);
-
-        } catch(RequirementException e) {
-
-            status.set(RunnableStatus.AVOIDED);
-            log.warn("Thread \"" + getName() + "\" avoided, " + e.getMessage());
-
-        } catch(TimeoutException e) {
-
-            status.set(RunnableStatus.AVOIDED);
-            log.warn("Thread \"" + getName() + "\" avoided, " + e.getMessage());
-
-        } catch (Exception e) {
-
-            // runtime exceptions will cause a status of FAILURE
-            status.set(RunnableStatus.FAILURE, e);
-            log.error("Thread \"" + getName() + "\" failure, " + e.getMessage());
-            log.debug(e);
-
-        }
-
-        // release the i'm still running mutex
-        runningMutex.release();
-
-        log.debug("Thread \"" + getName() + "\" finished");
-    }
-
-    /**
-     * Call this method from a different thread to wait until this thread is done. This
-     * is used by the {@link WaitForTag} class.
-     */
-    public void waitUntilDone(long howLong) throws TimeoutException {
-        if (Thread.currentThread() == this) {
-            throw new RuntimeException("This method should be called from a different thread than itself");
-        }
-
-        // wait until the calling thread can aquire the lock
-        while (true) {
-            try {
-                if (howLong == -1) {
-                    runningMutex.acquire();
-                    break;
-                } else if (!runningMutex.attempt(howLong)) {
-                    throw new TimeoutException("max wait time exceeded");
-                }
-            } catch (InterruptedException e) {
-            }
-        }
-
-        // release the lock, just needed it to get started
-        runningMutex.release();
-    }
-
-    /** Get the status of this thread */
-    public RunnableStatus getStatus() {
-        return status;
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/JoinTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/JoinTag.java
deleted file mode 100644
index 9291c60..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/JoinTag.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.XMLOutput;
-
-import java.util.List;
-
-/**
- * A thread join waits until a thread or threadGroup is complete.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class JoinTag extends UseThreadTag {
-    /** how long to wait */
-    private long timeout = -1;
-
-    /** Perform the thread join */
-    protected void useThread(Thread thread, XMLOutput output) throws InterruptedException {
-        joinThread(thread);
-    }
-
-    /** Join all of the threads in a thread group */
-    protected void useThreadGroup(List threadGroup, XMLOutput output) throws InterruptedException {
-        for (int i = 0; i < threadGroup.size(); i++) {
-            joinThread((Thread) threadGroup.get(i));
-        }
-    }
-
-    /** Join a thread */
-    private void joinThread(Thread thread) throws InterruptedException {
-        if (timeout > 0) {
-            thread.join(timeout);
-        } else {
-            thread.join();
-        }
-    }
-
-    /**
-     * How long should the join wait. If <= 0 the join waits until the
-     * thread is dead.
-     * @param timeout in millis
-     */
-    public void setTimeout(long timeout) {
-        this.timeout = timeout;
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/Mutex.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/Mutex.java
deleted file mode 100644
index ff3bc02..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/Mutex.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright 2002-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
-  File: Mutex.java
-
-  Originally written by Doug Lea and released into the public domain.
-  This may be used for any purposes whatsoever without acknowledgment.
-  Thanks for the assistance and support of Sun Microsystems Labs,
-  and everyone contributing, testing, and using this code.
-
-  History:
-  Date       Who                What
-  11Jun1998  dl               Create public version
-*/
-
-package org.apache.commons.jelly.tags.threads;
-
-/**
- * A simple non-reentrant mutual exclusion lock.
- * The lock is free upon construction. Each acquire gets the
- * lock, and each release frees it. Releasing a lock that
- * is already free has no effect.
- * <p>
- * This implementation makes no attempt to provide any fairness
- * or ordering guarantees. If you need them, consider using one of
- * the Semaphore implementations as a locking mechanism.
- * <p>
- * <b>Sample usage</b><br>
- * <p>
- * Mutex can be useful in constructions that cannot be
- * expressed using java synchronized blocks because the
- * acquire/release pairs do not occur in the same method or
- * code block. For example, you can use them for hand-over-hand
- * locking across the nodes of a linked list. This allows
- * extremely fine-grained locking,  and so increases
- * potential concurrency, at the cost of additional complexity and
- * overhead that would normally make this worthwhile only in cases of
- * extreme contention.
- * <pre>
- * class Node {
- *   Object item;
- *   Node next;
- *   Mutex lock = new Mutex(); // each node keeps its own lock
- *
- *   Node(Object x, Node n) { item = x; next = n; }
- * }
- *
- * class List {
- *    protected Node head; // pointer to first node of list
- *
- *    // Use plain java synchronization to protect head field.
- *    //  (We could instead use a Mutex here too but there is no
- *    //  reason to do so.)
- *    protected synchronized Node getHead() { return head; }
- *
- *    boolean search(Object x) throws InterruptedException {
- *      Node p = getHead();
- *      if (p == null) return false;
- *
- *      //  (This could be made more compact, but for clarity of illustration,
- *      //  all of the cases that can arise are handled separately.)
- *
- *      p.lock.acquire();              // Prime loop by acquiring first lock.
- *                                     //    (If the acquire fails due to
- *                                     //    interrupt, the method will throw
- *                                     //    InterruptedException now,
- *                                     //    so there is no need for any
- *                                     //    further cleanup.)
- *      for (;;) {
- *        if (x.equals(p.item)) {
- *          p.lock.release();          // release current before return
- *          return true;
- *        }
- *        else {
- *          Node nextp = p.next;
- *          if (nextp == null) {
- *            p.lock.release();       // release final lock that was held
- *            return false;
- *          }
- *          else {
- *            try {
- *              nextp.lock.acquire(); // get next lock before releasing current
- *            }
- *            catch (InterruptedException ex) {
- *              p.lock.release();    // also release current if acquire fails
- *              throw ex;
- *            }
- *            p.lock.release();      // release old lock now that new one held
- *            p = nextp;
- *          }
- *        }
- *      }
- *    }
- *
- *    synchronized void add(Object x) { // simple prepend
- *      // The use of `synchronized'  here protects only head field.
- *      // The method does not need to wait out other traversers
- *      // who have already made it past head.
- *
- *      head = new Node(x, head);
- *    }
- *
- *    // ...  other similar traversal and update methods ...
- * }
- * </pre>
- * <p>[<a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html"> Introduction to this package. </a>]
- *
- * --------------------------------------------------------------------------------------------
- * This Mutex is used to add the still running lock to the JellyThread tag.
- **/
-
-public class Mutex {
-
-    /** The lock status **/
-    protected boolean inuse_ = false;
-
-    public void acquire() throws InterruptedException {
-        if (Thread.interrupted()) throw new InterruptedException();
-        synchronized (this) {
-            try {
-                while (inuse_) wait();
-                inuse_ = true;
-            } catch (InterruptedException ex) {
-                notify();
-                throw ex;
-            }
-        }
-    }
-
-    public synchronized void release() {
-        inuse_ = false;
-        notify();
-    }
-
-
-    public boolean attempt(long msecs) throws InterruptedException {
-        if (Thread.interrupted()) throw new InterruptedException();
-        synchronized (this) {
-            if (!inuse_) {
-                inuse_ = true;
-                return true;
-            } else if (msecs <= 0)
-                return false;
-            else {
-                long waitTime = msecs;
-                long start = System.currentTimeMillis();
-                try {
-                    for (; ;) {
-                        wait(waitTime);
-                        if (!inuse_) {
-                            inuse_ = true;
-                            return true;
-                        } else {
-                            waitTime = msecs - (System.currentTimeMillis() - start);
-                            if (waitTime <= 0)
-                                return false;
-                        }
-                    }
-                } catch (InterruptedException ex) {
-                    notify();
-                    throw ex;
-                }
-            }
-        }
-    }
-
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/MutexTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/MutexTag.java
deleted file mode 100644
index 92deb12..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/MutexTag.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Creates a mutex object and stores it in a variable
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class MutexTag extends TagSupport {
-    /** The variable name of the mutex */
-    private String var = null;
-
-    /** Create and set the mutex */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if (var == null) {
-            throw new JellyTagException("mutexes require a var attribute");
-        }
-
-        context.setVariable(var, this);
-    }
-
-    /**
-     * Sets the variable name to export
-     * @param var The variable name
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/NotifyTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/NotifyTag.java
deleted file mode 100644
index 3105de3..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/NotifyTag.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * This calls mutex.notify() or mutex.notifyAll() on the mutex passed
- * in via the "mutex" attribute.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class NotifyTag extends UseMutexTag {
-    /** True means mutex.notifyAll() will be called */
-    private boolean notifyAll = false;
-
-    /** Perform the notify */
-    public void useMutex(Object mutex, XMLOutput output) {
-        if (notifyAll) {
-            mutex.notifyAll();
-        } else {
-            mutex.notify();
-        }
-    }
-
-    /**
-     * If set to true the notify will notify all waiting threads
-     */
-    public void setNotifyAll(boolean notifyAll) {
-        this.notifyAll = notifyAll;
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/RequirementException.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/RequirementException.java
deleted file mode 100644
index 7e9c8bf..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/RequirementException.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-/**
- * Thrown by the {@link WaitForTag} when a requirement is not met.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class RequirementException extends RuntimeException {
-    public RequirementException(String message) {
-        super(message);
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/RunnableStatus.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/RunnableStatus.java
deleted file mode 100644
index c63eea0..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/RunnableStatus.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-/**
- * Represents the status of {@link JellyThread}.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class RunnableStatus {
-    public static final int NONE = 0;
-    public static final int SUCCESS = 1;
-    public static final int FAILURE = 2;
-    public static final int AVOIDED = 3;
-    public static final int TIMED_OUT = 4;
-    public static final int KILLED = 5;
-
-    private int status = NONE;
-
-    /** On a status change to FAILURE an exception can be set */
-    private Exception exception = null;
-
-    public RunnableStatus() {
-
-    }
-
-    public RunnableStatus(int status) {
-        set(status);
-    }
-
-    public synchronized void set(int status) {
-        set(status, null);
-    }
-
-    public synchronized void set(int status, Exception e) {
-        // this check is important since I may call setStatus(BLAH) again
-        // to trigger the callback
-        if (this.status != status) {
-            this.status = status;
-
-            // store the exception if one was set
-            if (e != null)
-                this.exception = e;
-        }
-    }
-
-    public synchronized int get() {
-        return status;
-    }
-
-    public synchronized boolean isSuccess() {
-        return (status == SUCCESS);
-    }
-
-    public synchronized boolean isFailure() {
-        return (status == FAILURE);
-    }
-
-    public synchronized boolean isAvoided() {
-        return (status == AVOIDED);
-    }
-
-    public synchronized boolean isTimedOut() {
-        return (status == TIMED_OUT);
-    }
-
-    public synchronized boolean isKilled() {
-        return (status == KILLED);
-    }
-
-    public synchronized Exception getException() {
-        return exception;
-    }
-
-    public synchronized boolean equals(RunnableStatus status) {
-        return status.get() == this.status;
-    }
-
-    public synchronized boolean equals(int status) {
-        return this.status == status;
-    }
-
-    /**
-     * Used to get the status code from a string representation. Mainly used for
-     * xml parsing.
-     * @param status The status string rep.
-     * @return The status enum value
-     */
-    public static int getStatusCode(String status) {
-        if (status.equalsIgnoreCase("SUCCESS")) {
-            return SUCCESS;
-        } else if (status.equalsIgnoreCase("FAILURE")) {
-            return FAILURE;
-        } else if (status.equalsIgnoreCase("TIMED_OUT")) {
-            return TIMED_OUT;
-        } else if (status.equalsIgnoreCase("AVOIDED")) {
-            return AVOIDED;
-        } else if (status.equalsIgnoreCase("KILLED")) {
-            return KILLED;
-        } else {
-            throw new IllegalArgumentException(status + " is invalid status");
-        }
-    }
-
-    /**
-     * The reverse of getStatusCode
-     */
-    public static String getStatusString(int status) {
-        if (status == SUCCESS) {
-            return "SUCCESS";
-        } else if (status == FAILURE) {
-            return "FAILURE";
-        } else if (status == TIMED_OUT) {
-            return "TIMED_OUT";
-        } else if (status == AVOIDED) {
-            return "AVOIDED";
-        } else if (status == KILLED) {
-            return "KILLED";
-        } else {
-            throw new IllegalArgumentException(status + " is invalid status");
-        }
-    }
-
-    public static boolean isValidStatus(int status) {
-        if (status == SUCCESS) {
-            return true;
-        } else if (status == FAILURE) {
-            return true;
-        } else if (status == TIMED_OUT) {
-            return true;
-        } else if (status == AVOIDED) {
-            return true;
-        } else if (status == KILLED) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    public String toString() {
-        return getStatusString(status);
-    }
-}
\ No newline at end of file
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/SleepTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/SleepTag.java
deleted file mode 100644
index 28775c7..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/SleepTag.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Puts the current thread to sleep for some amount of time.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class SleepTag extends TagSupport {
-    /** How long to sleep for */
-    private long howLong = 0;
-
-    /** Put the thread to sleep */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        try {
-            Thread.sleep(howLong);
-        }
-        catch (InterruptedException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    /**
-     * How long to put the thread to sleep for
-     * @param howLong in millis
-     */
-    public void setFor(long howLong) {
-        this.howLong = howLong;
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/SynchronizeTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/SynchronizeTag.java
deleted file mode 100644
index c66fd96..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/SynchronizeTag.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Synchronize a block inside of a thread using the passed in mutex. The
- * mutex object passed in does not have to have been created using the
- * mutex tag, it can be any object at all.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class SynchronizeTag extends UseMutexTag {
-    /** Synchronize on the mutex */
-    protected void useMutex(Object mutex, XMLOutput output) throws JellyTagException {
-        synchronized (mutex) {
-            invokeBody(output);
-        }
-    }
-}
-
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/ThreadTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/ThreadTag.java
deleted file mode 100644
index b10118c..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/ThreadTag.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.NestedRuntimeException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-
-/**
- * A tag that spawns the contained script in a separate thread.  A thread
- * can wait on another thread or another thread group to finish before starting.
- *
- * @author <a href="mailto:vinayc@apache.org">Vinay Chandran</a>
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-public class ThreadTag extends TagSupport {
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ThreadTag.class);
-
-    /** The current thread number. Used for default thread naming */
-    private static int threadNumber = 0;
-
-    /** Variable to place the thread into */
-    private String var = null;
-    /** Thread Name */
-    private String name = null;
-    /** Thread priority, defaults to Thread.NORM_PRIORITY */
-    private int priority = Thread.NORM_PRIORITY;
-    /** Set if the thread should be a daemon or not */
-    private boolean daemon = false;
-    /** the destination of output */
-    private XMLOutput xmlOutput;
-    /** Should we close the underlying output */
-    private boolean closeOutput;
-    /** Should a new context be created */
-    private boolean newContext = false;
-    /** Keep a reference to the thread */
-    private JellyThread thread = new JellyThread();
-
-    public ThreadTag() {
-        super();
-    }
-
-    public ThreadTag(boolean shouldTrim) {
-        super(shouldTrim);
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        if (xmlOutput == null) {
-            // lets default to system.out
-            try {
-                xmlOutput = XMLOutput.createXMLOutput(System.out);
-            }
-            catch (UnsupportedEncodingException e) {
-                throw new JellyTagException(e);
-            }
-        }
-
-        // lets create a child context
-        final JellyContext useThisContext = newContext ? context.newJellyContext() : context;
-
-        // set the target to run
-        thread.setTarget(new Runnable() {
-            public void run() {
-                try {
-                    getBody().run(useThisContext, xmlOutput);
-                    if (closeOutput) {
-                        xmlOutput.close();
-                    }
-                    else {
-                        xmlOutput.flush();
-                    }
-                }
-                catch (JellyTagException e) {
-                    // jelly wraps the exceptions thrown
-                    Throwable subException = e.getCause();
-                    if (subException != null) {
-                        if (subException instanceof TimeoutException) {
-                            throw (TimeoutException)subException;
-                        } else if (subException instanceof RequirementException) {
-                            throw (RequirementException)subException;
-                        }
-                    }
-
-                    log.error(e);
-
-                    // wrap the exception with a RuntimeException
-                    throw new NestedRuntimeException(e);
-                }
-                catch (Exception e) {
-                    log.error(e);
-
-                    // wrap the exception with a RuntimeException
-                    if (e instanceof RuntimeException) {
-                        throw (RuntimeException) e;
-                    }
-                    else {
-                        throw new NestedRuntimeException(e);
-                    }
-                }
-            }
-        });
-
-        // set the threads priority
-        thread.setPriority(priority);
-
-        // set the threads name
-        if (name != null) {
-            thread.setName(name);
-        } else {
-            thread.setName("Jelly Thread #" + (threadNumber++));
-        }
-
-        // set whether this thread is a daemon thread
-        thread.setDaemon(daemon);
-
-        // save the thread in a context variable
-        if (var != null) {
-            context.setVariable(var, thread);
-        }
-
-        // check if this tag is nested inside a group tag. if so
-        // add this thread to the thread group but do not start it.
-        // all threads in a thread group should start together.
-        GroupTag gt = (GroupTag) findAncestorWithClass(GroupTag.class);
-        if (gt != null) {
-            gt.addThread(thread);
-        } else {
-            // start the thread
-            thread.start();
-        }
-    }
-
-    /**
-     * Sets the variable name to export, optional
-     * @param var The variable name
-     */
-    public void setVar(String var) {
-        this.var = var;
-        if (name == null) {
-            name = var;
-        }
-    }
-
-    /**
-     * Sets the name of the thread.
-     * @param name The name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Set the threads priority. Defaults to Thread.NORM_PRIORITY
-     */
-    public void setPriority(int priority) {
-        this.priority = priority;
-    }
-
-    /**
-     * Sets the thread to be a daemon thread if true
-     */
-    public void setDaemon(boolean daemon) {
-        this.daemon = daemon;
-    }
-
-    /**
-     * Sets the destination of output
-     */
-    public void setXmlOutput(XMLOutput xmlOutput) {
-        this.closeOutput = false;
-        this.xmlOutput = xmlOutput;
-    }
-
-    /**
-     * Set the file which is generated from the output
-     * @param name The output file name
-     */
-    public void setFile(String name) throws IOException {
-        this.closeOutput = true;
-        setXmlOutput(XMLOutput.createXMLOutput(new FileOutputStream(name)));
-    }
-
-    /**
-     * Should a new context be created for this thread?
-     */
-    public void setNewContext(boolean newContext) {
-        this.newContext = newContext;
-    }
-
-    /**
-     * Get the thread instance
-     * @return The thread
-     */
-    public Thread getThread() {
-        return thread;
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/ThreadsTagLibrary.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/ThreadsTagLibrary.java
deleted file mode 100644
index 6f1ab85..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/ThreadsTagLibrary.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/**
- * Thread related tags
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class ThreadsTagLibrary extends TagLibrary {
-    public ThreadsTagLibrary() {
-        registerTag("thread", ThreadTag.class);
-        registerTag("interrupt", InterruptTag.class);
-        registerTag("join", JoinTag.class);
-        registerTag("mutex", MutexTag.class);
-        registerTag("notify", NotifyTag.class);
-        registerTag("sleep", SleepTag.class);
-        registerTag("wait", WaitTag.class);
-        registerTag("synchronize", SynchronizeTag.class);
-        registerTag("waitFor", WaitForTag.class);
-        registerTag("waitfor", WaitForTag.class);
-        registerTag("group", GroupTag.class);
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/TimeoutException.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/TimeoutException.java
deleted file mode 100644
index 8bb7be6..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/TimeoutException.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.threads;
-
-/**
- * Can be thrown when the {@link WaitForTag} tries to wait for another
- * thread to finish.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class TimeoutException extends RuntimeException {
-    public TimeoutException(String message) {
-        super(message);
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/UseMutexTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/UseMutexTag.java
deleted file mode 100644
index 0f076b4..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/UseMutexTag.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Base class for tags that will "use" mutexes.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public abstract class UseMutexTag extends TagSupport {
-    /** The mutex to use in some way. */
-    private Object mutex = null;
-
-    /** Calls useMutex after checking to make sure that <i>setMutex</i> was called */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        // either use the set thread or search for a parent thread to use
-        if (mutex == null) {
-            throw new JellyTagException("no mutex set");
-        }
-
-        useMutex(mutex, output);
-    }
-
-    /** Implement this method to do something with the mutex */
-    protected abstract void useMutex(Object mutex, XMLOutput output) throws JellyTagException;
-
-    /** Get the mutex */
-    public Object getMutex() {
-        return mutex;
-    }
-
-    /** Set the mutex. Any object can be used as a mutex. */
-    public void setMutex(Object mutex) {
-        this.mutex = mutex;
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/UseThreadTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/UseThreadTag.java
deleted file mode 100644
index ab473b7..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/UseThreadTag.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import java.util.List;
-
-/**
- * Base class for tags that will "use" threads.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public abstract class UseThreadTag extends TagSupport {
-    /** The thread to use in some way. */
-    private Thread thread = null;
-    /** Threads can be grouped and acted on as a set */
-    private List threadGroup = null;
-    /** If true doTag will search for a parent thread to use if setThread was not called */
-    private boolean searchForParent = true;
-
-    /**
-     * The default behavior is to either use the set thread or to
-     * search for a parent thread to use.
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        try {
-            // either use the set thread or search for a parent thread to use
-            if (thread != null) {
-                useThread(thread, output);
-            } else if (threadGroup != null) {
-                useThreadGroup(threadGroup, output);
-            } else {
-                // check if this tag is nested inside a thread. if so
-                // use the parent thread.
-                if (searchForParent) {
-                    // first look for parent threads
-                    ThreadTag tt = (ThreadTag) findAncestorWithClass(ThreadTag.class);
-
-                    if (tt != null) {
-                        useThread(tt.getThread(), output);
-                    } else {
-                        // then look for parent thread groups
-                        GroupTag gt = (GroupTag) findAncestorWithClass(GroupTag.class);
-                        if (gt != null) {
-                            useThreadGroup(gt.getThreads(), output);
-                        } else {
-                            throw new JellyTagException("no thread or thread group found");
-                        }
-                    }
-                } else {
-                    throw new JellyTagException("no thread or thread group found");
-                }
-            }
-        }
-        catch (InterruptedException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    /** Implement this method to do something with the thread */
-    protected abstract void useThread(Thread thread, XMLOutput output) throws InterruptedException ;
-
-    /** Implement this method to do something with the threadGroup */
-    protected abstract void useThreadGroup(List threadGroup, XMLOutput output) throws InterruptedException ;
-
-    /**
-     * Set the thread to use in some way.
-     */
-    public void setThread(Thread thread) {
-        this.thread = thread;
-    }
-
-    /**
-     * Get a reference to the thread to use
-     */
-    public Thread getThread() {
-        return thread;
-    }
-
-    /**
-     * Set the thread group to "use".
-     * @param threadGroup The threadGroup created with the <i>group</i> tag.
-     */
-    public void setThreadGroup(List threadGroup) {
-        this.threadGroup = threadGroup;
-    }
-
-    /**
-     * Get the thread group
-     */
-    public List getThreadGroup() {
-        return threadGroup;
-    }
-
-    /**
-     * If true the tag will search for a parent thread tag to "use" if
-     * no thread was set via <i>setThread</i>. This is <i>true</i> by default.
-     */
-    public void setSearchForParentThread(boolean searchForParent) {
-        this.searchForParent = searchForParent;
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/WaitForTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/WaitForTag.java
deleted file mode 100644
index 74e27a6..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/WaitForTag.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import java.util.List;
-
-/**
- * This tag creates a dependency on another thread. If onlyWait is set
- * a {@link TimeoutException} can be thrown. If status is set a {@link RequirementException}
- * can be thrown.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class WaitForTag extends TagSupport {
-    private int status = RunnableStatus.NONE;
-    private JellyThread thread = null;
-    private List group = null;
-    private long onlyWait = -1;
-
-    /**
-     * Wait for a specific status. "SUCCESS", "FAILURE", "TIMED_OUT", or "AVOIDED". If
-     * waiting on a thread group each thread in the group will have to have this status
-     * set.
-     */
-    public void setStatus(String status) {
-        this.status = RunnableStatus.getStatusCode(status);
-    }
-
-    /**
-     * Which thread will this tag check the status of
-     */
-    public void setThread(JellyThread thread) {
-        this.thread = thread;
-    }
-
-    /**
-     * Set the group of threads to wait on
-     */
-    public void setGroup(List group) {
-        this.group = group;
-    }
-
-    /**
-     * Set how long to wait for the thread to finish. If waiting for a group
-     * this will be the time to wait for each thread in the group to finish.
-     */
-    public void setOnlyWait(long onlyWait) {
-        this.onlyWait = onlyWait;
-    }
-
-    /**
-     * Check the requirements
-     * @throws TimeoutException If the call to waitUntilDone(onlyWait) times out
-     * @throws RequirementException If a threads status doesn't match the setStatus() value
-     */
-    public void doTag(XMLOutput output) throws TimeoutException, RequirementException, JellyTagException {
-        if (thread == null && group == null) {
-            throw new JellyTagException("This tag requires that you set the thread or group attribute");
-        }
-
-        // wait on the thread
-        if (thread != null) {
-            thread.waitUntilDone(onlyWait);
-            if (status != RunnableStatus.NONE) {
-                if (!thread.getStatus().equals(status)) {
-                    throw new RequirementException("Requirement on thread \"" + thread.getName() + "\" not met");
-                }
-            }
-        }
-
-        // wait on the threadgroup
-        if (group != null) {
-            for (int i = 0; i < group.size(); i++) {
-                JellyThread gthread = (JellyThread) group.get(i);
-                gthread.waitUntilDone(onlyWait);
-                if (status != RunnableStatus.NONE) {
-                    if (!gthread.getStatus().equals(status)) {
-                        throw new RequirementException("Requirement on thread \"" + gthread.getName() + "\" not met");
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/WaitTag.java b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/WaitTag.java
deleted file mode 100644
index 9f91848..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/WaitTag.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.threads;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * This calls mutex.wait() on the mutex passed in via the "mutex" attribute.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- */
-
-public class WaitTag extends UseMutexTag {
-    /** How long should the wait last. If <=0 it lasts until a notify. */
-    private long timeout = -1;
-
-    /** Start waiting */
-    public void useMutex(Object mutex, XMLOutput output) throws JellyTagException {
-        try {
-            if (timeout > 0) {
-                mutex.wait(timeout);
-            } else {
-                mutex.wait();
-            }
-        }
-        catch (InterruptedException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    /**
-     * Set how long the wait should last. If <= 0 the wait will last
-     * until a notify occurs.
-     * @param timeout in millis
-     */
-    public void setTimeout(long timeout) {
-        this.timeout = timeout;
-    }
-}
diff --git a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/package.html b/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/package.html
deleted file mode 100644
index 1dee4cb..0000000
--- a/jelly-tags/threads/src/java/org/apache/commons/jelly/tags/threads/package.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
-  <p>
-  	A library for processing Jelly scripts using multiple threads.
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/TestJelly.java b/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/TestJelly.java
deleted file mode 100644
index 93b9b74..0000000
--- a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.threads;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/basic.jelly b/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/basic.jelly
deleted file mode 100644
index ec5cabc..0000000
--- a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/basic.jelly
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-

-<!--

-Basic example. Should print the numbers in reverse.

--->

-

-<jelly xmlns="jelly:core" xmlns:threads="jelly:threads">

-

-    <threads:thread var="thread1">

-        <threads:sleep for="1000"/>

-        1

-    </threads:thread>

-

-    <threads:thread>

-        <threads:sleep for="500"/>

-        2

-    </threads:thread>

-

-    <threads:thread>

-        <threads:sleep for="100"/>

-        3

-    </threads:thread>

-

-    <threads:thread>

-        4

-    </threads:thread>

-

-<whitespace>

-[main]: waiting for threads to finish

-</whitespace>

-

-        <threads:join thread="${thread1}"/>

-

-<whitespace>

-[main]: threads are now done

-</whitespace>

-

-</jelly>
\ No newline at end of file
diff --git a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/group1.jelly b/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/group1.jelly
deleted file mode 100644
index 5d4ab82..0000000
--- a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/group1.jelly
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-

-<!--

-Basic thread group example.

--->

-

-<jelly xmlns="jelly:core" xmlns:threads="jelly:threads">

-

-    <threads:group var="group1">

-        <threads:thread>

-            <threads:sleep for="100"/>

-            1

-        </threads:thread>

-

-        <threads:thread>

-            <threads:sleep for="100"/>

-            2

-        </threads:thread>

-    </threads:group>

-

-    <threads:thread>

-        <!-- wait for both thread 1 and 2 to complete -->

-        <threads:waitFor group="${group1}"/>

-        3

-    </threads:thread>

-

-</jelly>
\ No newline at end of file
diff --git a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/suite.jelly b/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/suite.jelly
deleted file mode 100644
index fb3521c..0000000
--- a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/suite.jelly
+++ /dev/null
@@ -1,243 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite xmlns="jelly:core" xmlns:test="jelly:junit" xmlns:threads="jelly:threads">

-    <test:case name="testBasic">

-        <set var="result" value=""/>

-

-        <threads:thread var="thread1">

-            <threads:sleep for="700"/>

-            <set var="result" value="${result}1"/>

-            <test:assertEquals expected="4321" actual="${result}"/>

-        </threads:thread>

-

-        <threads:thread>

-            <threads:sleep for="400"/>

-            <set var="result" value="${result}2"/>

-        </threads:thread>

-

-        <threads:thread>

-            <threads:sleep for="100"/>

-            <set var="result" value="${result}3"/>

-        </threads:thread>

-

-        <threads:thread>

-            <set var="result" value="${result}4"/>

-        </threads:thread>

-    </test:case>

-

-    <test:case name="testSync">

-        <set var="result" value=""/>

-        <threads:mutex var="mutex"/>

-

-        <threads:thread var="thread1">

-            <threads:synchronize mutex="${mutex}">

-                <set var="cnt1" value="0"/>

-                <while test="${cnt1 != 5}">

-                    <set var="result" value="${result}${cnt1}"/>

-                    <set var="cnt1" value="${cnt1 + 1}"/>

-                    <threads:interrupt/>

-                </while>

-            </threads:synchronize>

-        </threads:thread>

-

-        <threads:thread var="thread2">

-            <!-- let the other thread start -->

-            <threads:sleep for="100"/>

-            <threads:synchronize mutex="${mutex}">

-                <set var="cnt2" value="5"/>

-                <while test="${cnt2 != 10}">

-                    <set var="result" value="${result}${cnt2}"/>

-                    <set var="cnt2" value="${cnt2 + 1}"/>

-                    <threads:interrupt/>

-                </while>

-            </threads:synchronize>

-        </threads:thread>

-

-        <threads:join thread="${thread1}"/>

-        <threads:join thread="${thread2}"/>

-        <test:assertEquals expected="0123456789" actual="${result}"/>

-    </test:case>

-

-    <test:case name="testWaitNotify">

-        <set var="result" value=""/>

-        <threads:mutex var="mutex"/>

-

-        <threads:thread var="thread1">

-            <threads:synchronize mutex="${mutex}">

-                <set var="cnt1" value="0"/>

-                <while test="${cnt1 != 5}">

-                    <set var="result" value="${result}${cnt1}"/>

-                    <set var="cnt1" value="${cnt1 + 1}"/>

-                    <!-- let the other thread go -->

-                    <threads:notify mutex="${mutex}"/>

-                    <threads:wait mutex="${mutex}"/>

-                </while>

-                <!-- one last notify -->

-                <threads:notify mutex="${mutex}"/>

-            </threads:synchronize>

-        </threads:thread>

-

-        <threads:thread var="thread2">

-            <!-- let the other thread start -->

-            <threads:sleep for="100"/>

-            <threads:synchronize mutex="${mutex}">

-                <set var="cnt2" value="0"/>

-                <while test="${cnt2 != 5}">

-                    <set var="result" value="${result}${cnt2}"/>

-                    <set var="cnt2" value="${cnt2 + 1}"/>

-                    <!-- let the other thread go -->

-                    <threads:notify mutex="${mutex}"/>

-                    <threads:wait mutex="${mutex}"/>

-                </while>

-                <!-- one last notify -->

-                <threads:notify mutex="${mutex}"/>

-            </threads:synchronize>

-        </threads:thread>

-

-        <threads:join thread="${thread1}"/>

-        <threads:join thread="${thread2}"/>

-        <test:assertEquals expected="0011223344" actual="${result}"/>

-    </test:case>

-

-    <test:case name="testWaitFor">

-        <set var="result" value=""/>

-

-        <threads:thread var="thread1">

-            <set var="cnt1" value="0"/>

-            <while test="${cnt1 != 5}">

-                <set var="result" value="${result}${cnt1}"/>

-                <set var="cnt1" value="${cnt1 + 1}"/>

-                <!-- force an interrupt, shouldn't matter -->

-                <threads:interrupt/>

-            </while>

-        </threads:thread>

-

-        <threads:thread var="thread2">

-            <threads:waitfor thread="${thread1}"/>

-            <set var="cnt2" value="5"/>

-            <while test="${cnt2 != 10}">

-                <set var="result" value="${result}${cnt2}"/>

-                <set var="cnt2" value="${cnt2 + 1}"/>

-            </while>

-        </threads:thread>

-

-        <threads:join thread="${thread1}"/>

-        <threads:join thread="${thread2}"/>

-        <test:assertEquals expected="0123456789" actual="${result}"/>

-    </test:case>

-

-    <test:case name="testWaitForTimeout">

-        <set var="result" value=""/>

-

-        <threads:thread var="thread1">

-            <set var="cnt1" value="0"/>

-            <while test="${cnt1 != 5}">

-                <set var="result" value="${result}${cnt1}"/>

-                <set var="cnt1" value="${cnt1 + 1}"/>

-                <!-- force an interrupt, shouldn't matter -->

-                <threads:sleep for="500"/>

-            </while>

-        </threads:thread>

-

-        <threads:thread var="thread2">

-            <!-- this will fail since thread 1 is sleeping -->

-            <threads:waitfor thread="${thread1}" onlyWait="100"/>

-            <set var="cnt2" value="5"/>

-            <while test="${cnt2 != 10}">

-                <set var="result" value="${result}${cnt2}"/>

-                <set var="cnt2" value="${cnt2 + 1}"/>

-            </while>

-        </threads:thread>

-

-        <threads:thread var="thread3">

-            <threads:waitfor thread="${thread1}"/>

-            <!-- thread2 will have been avoided -->

-            <threads:waitfor thread="${thread2}" status="AVOIDED"/>

-            <set var="cnt2" value="10"/>

-            <while test="${cnt2 != 15}">

-                <set var="result" value="${result}${cnt2}"/>

-                <set var="cnt2" value="${cnt2 + 1}"/>

-            </while>

-        </threads:thread>

-

-        <threads:join thread="${thread1}"/>

-        <threads:join thread="${thread2}"/>

-        <threads:join thread="${thread3}"/>

-        <test:assertEquals expected="012341011121314" actual="${result}"/>

-    </test:case>

-

-    <test:case name="testWaitForFailure">

-        <set var="result" value=""/>

-

-        <threads:thread var="thread1">

-            THROW AN EXCEPTION

-            <new var="bogus" className="java.lang.System"/>

-        </threads:thread>

-

-        <threads:thread var="thread2">

-            <!-- this will fail since thread 1 is sleeping -->

-            <threads:waitfor thread="${thread1}" status="SUCCESS"/>

-            <set var="cnt2" value="5"/>

-            <while test="${cnt2 != 10}">

-                <set var="result" value="${result}${cnt2}"/>

-                <set var="cnt2" value="${cnt2 + 1}"/>

-            </while>

-        </threads:thread>

-

-        <threads:thread var="thread3">

-            <!-- this will fail since thread 1 is sleeping -->

-            <threads:waitfor thread="${thread1}" status="FAILURE"/>

-            <set var="cnt2" value="10"/>

-            <while test="${cnt2 != 15}">

-                <set var="result" value="${result}${cnt2}"/>

-                <set var="cnt2" value="${cnt2 + 1}"/>

-            </while>

-        </threads:thread>

-

-        <threads:join thread="${thread1}"/>

-        <threads:join thread="${thread2}"/>

-        <threads:join thread="${thread3}"/>

-        <test:assertEquals expected="1011121314" actual="${result}"/>

-    </test:case>

-

-    <test:case name="testThreadGroup">

-        <set var="result" value=""/>

-

-        <threads:group var="group1">

-            <threads:thread var="thread1">

-                <!-- let thread 3 try and go -->

-                <threads:sleep for="100"/>

-                <set var="result" value="${result}1"/>

-            </threads:thread>

-

-            <threads:thread>

-                <threads:waitFor thread="${thread1}"/>

-                <!-- let thread 3 try and go -->

-                <threads:sleep for="100"/>

-                <set var="result" value="${result}2"/>

-            </threads:thread>

-        </threads:group>

-

-        <threads:thread>

-            <!-- wait for the thread group to complete -->

-            <threads:waitFor group="${group1}"/>

-            <set var="result" value="${result}3"/>

-            <test:assertEquals expected="123" actual="${result}"/>

-        </threads:thread>

-    </test:case>

-    

-</test:suite>

diff --git a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/sync.jelly b/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/sync.jelly
deleted file mode 100644
index 3466e4d..0000000
--- a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/sync.jelly
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-

-<!--

-This example shows coordinating between 2 threads using

-mutexes and sleep. Thread 1 should execute after thread 2.

--->

-

-<jelly xmlns="jelly:core" xmlns:threads="jelly:threads">

-

-    <threads:mutex var="mutex"/>

-

-    <threads:thread var="thread1">

-        <!-- give the other thread a chance to get the mutex -->

-        <threads:sleep for="100"/>

-

-        <!-- get the mutex -->

-        <threads:synchronize mutex="${mutex}">

-

-            <whitespace>

-                [thread1]: finally I got it

-            </whitespace>

-

-        </threads:synchronize>

-    </threads:thread>

-

-    <threads:thread>

-        <!-- get the mutex -->

-        <threads:synchronize mutex="${mutex}">

-

-            <whitespace>

-                [thread2]: making the other thread wait for 2 secs

-            </whitespace>

-

-            <!-- make the other thread wait -->

-            <threads:sleep for="2000"/>

-        </threads:synchronize>

-    </threads:thread>

-

-    <whitespace>

-        [main]: waiting for threads to finish

-    </whitespace>

-

-    <threads:join thread="${thread1}"/>

-

-    <whitespace>

-        [main]: threads are now done

-    </whitespace>

-

-</jelly>
\ No newline at end of file
diff --git a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait1.jelly b/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait1.jelly
deleted file mode 100644
index c105f9d..0000000
--- a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait1.jelly
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-

-<!--

-This test shows coordinating between 2 threads using

-mutexes with wait/notify. Numbers between threads

-should increment together.

--->

-

-<jelly xmlns="jelly:core" xmlns:threads="jelly:threads">

-

-    <!-- get the mutex -->

-    <threads:mutex var="mutex"/>

-

-    <threads:thread var="thread1">

-        <set var="counter1" value="0"/>

-

-        <!-- get the mutex -->

-        <threads:synchronize mutex="${mutex}">

-            <!-- loop -->

-            <while test="${counter1 != 20}">

-

-<whitespace>

-counter1: ${counter1}

-</whitespace>

-

-                <set var="counter1" value="${counter1+1}"/>

-

-                <!-- let the other thread proceed -->

-                <threads:notify mutex="${mutex}"/>

-

-                <!-- wait for 1 iteration of the other thread -->

-                <threads:wait mutex="${mutex}"/>

-            </while>

-

-            <!-- let the other thread proceed -->

-            <threads:notify mutex="${mutex}"/>

-

-        </threads:synchronize>

-    </threads:thread>

-

-    <threads:thread var="thread2">

-        <set var="counter2" value="0"/>

-        <threads:sleep for="100"/>

-        <!-- get the mutex -->

-        <threads:synchronize mutex="${mutex}">

-            <!-- loop -->

-            <while test="${counter2 != 20}">

-

-<whitespace>

-counter2: ${counter2}

-</whitespace>

-

-                <set var="counter2" value="${counter2+1}"/>

-

-                <!-- let the other thread proceed -->

-                <threads:notify mutex="${mutex}"/>

-

-                <!-- wait for 1 iteration of the other thread -->

-                <threads:wait mutex="${mutex}"/>

-            </while>

-

-            <!-- let the other thread proceed -->

-            <threads:notify mutex="${mutex}"/>

-

-        </threads:synchronize>

-    </threads:thread>

-

-<whitespace>

-[main]: waiting for threads to finish

-</whitespace>

-

-    <threads:join thread="${thread1}"/>

-    <threads:join thread="${thread2}"/>

-

-<whitespace>

-[main]: threads are now done

-</whitespace>

-

-</jelly>
\ No newline at end of file
diff --git a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait2.jelly b/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait2.jelly
deleted file mode 100644
index cb4c9f3..0000000
--- a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait2.jelly
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-

-<!--

-This test shows coordinating between 2 threads using

-mutexes with wait/notify. Numbers between threads

-should increment together.

--->

-

-<jelly xmlns="jelly:core" xmlns:threads="jelly:threads">

-    <threads:thread var="thread1">

-

-        <whitespace>

-        thread1: going to sleep for 2 seconds

-        </whitespace>

-

-        <threads:sleep for="2000"/>

-    </threads:thread>

-

-    <threads:thread var="thread2">

-        <threads:waitfor thread="${thread1}"/>

-

-        <whitespace>

-        thread2: finished waiting for thread1, sleeping for 2 seconds

-        </whitespace>

-

-        <threads:sleep for="1000"/>

-    </threads:thread>

-

-    <threads:thread>

-        <threads:waitfor thread="${thread1}"/>

-

-        <whitespace>

-        thread3: finished waiting for thread1

-        </whitespace>

-

-    </threads:thread>

-

-    <threads:thread>

-        <threads:waitfor thread="${thread2}"/>

-

-        <whitespace>

-        thread4: finished waiting for thread2

-        </whitespace>

-

-    </threads:thread>

-</jelly>
\ No newline at end of file
diff --git a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait3.jelly b/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait3.jelly
deleted file mode 100644
index b944ca8..0000000
--- a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait3.jelly
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-

-<!--

-This test shows how the waitFor tag works.

--->

-

-<jelly xmlns="jelly:core" xmlns:threads="jelly:threads">

-    <threads:thread var="thread1">

-

-        <whitespace>

-        thread1: going to sleep for 2 seconds

-        </whitespace>

-

-        <threads:sleep for="2000"/>

-    </threads:thread>

-

-    <threads:thread var="thread2">

-        <whitespace>

-        thread2: waiting for thread1 for 1 second

-        </whitespace>

-

-        <!-- this thread will be marked as avoided -->

-        <threads:waitfor thread="${thread1}" onlyWait="1000"/>

-

-        <whitespace>

-        thread2: finished waiting for thread1

-        </whitespace>

-

-        <threads:sleep for="1000"/>

-    </threads:thread>

-

-    <threads:thread>

-        <!-- wait for thread2's avoided status -->

-        <threads:waitfor thread="${thread2}" status="AVOIDED"/>

-

-        <whitespace>

-        thread3: finished waiting for thread2 avoided status

-        </whitespace>

-

-    </threads:thread>

-

-    <threads:thread var="thread4">

-        <!-- wait for the thread2's success -->

-        <threads:waitfor thread="${thread2}" status="SUCCESS"/>

-

-        <whitespace>

-        thread4: finished waiting for thread2 success status

-        </whitespace>

-

-    </threads:thread>

-

-    <threads:thread>

-        <!-- wait for the thread2's success -->

-        <threads:waitfor thread="${thread4}" status="AVOIDED"/>

-

-        <whitespace>

-        thread6: finished waiting for thread4 avoided status

-        </whitespace>

-

-    </threads:thread>

-

- </jelly>
\ No newline at end of file
diff --git a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait4.jelly b/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait4.jelly
deleted file mode 100644
index 1bd0884..0000000
--- a/jelly-tags/threads/src/test/org/apache/commons/jelly/threads/wait4.jelly
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-

-<!--

-This test shows the waitFor tag waiting for multiple threads. 

--->

-

-<jelly xmlns="jelly:core" xmlns:threads="jelly:threads">

-    <threads:thread var="thread1">

-        <whitespace>

-        thread1: going to sleep for 1 second

-        </whitespace>

-        <threads:sleep for="1000"/>

-    </threads:thread>

-

-    <threads:thread var="thread2">

-        <whitespace>

-        thread2: going to sleep for 2 seconds

-        </whitespace>

-        <threads:sleep for="2000"/>

-    </threads:thread>

-

-    <!-- results in a FAILURE -->

-    <threads:thread var="thread3">

-            <new var="bogus" className="java.lang.System"/>

-    </threads:thread>

-

-    <!-- waits for thread 1 and 2 -->

-    <threads:thread>

-        <threads:waitfor thread="${thread1}" status="SUCCESS"/>

-        <threads:waitfor thread="${thread2}" status="SUCCESS"/>

-

-        <whitespace>

-        thread4: finished waiting for thread1 and thread2

-        </whitespace>

-    </threads:thread>

-

-    <!-- waits for thread 3 success -->

-    <threads:thread>

-        <threads:waitfor thread="${thread1}" status="SUCCESS"/>

-        <threads:waitfor thread="${thread2}" status="SUCCESS"/>

-        <threads:waitfor thread="${thread3}" status="SUCCESS"/>

-

-        <whitespace>

-        thread5: finished waiting for thread1 and thread2 and thread3 success

-        </whitespace>

-    </threads:thread>

-

-    <!-- waits for thread 3 failure -->

-    <threads:thread>

-        <threads:waitfor thread="${thread1}" status="SUCCESS"/>

-        <threads:waitfor thread="${thread2}" status="SUCCESS"/>

-        <threads:waitfor thread="${thread3}" status="FAILURE"/>

-

-        <whitespace>

-        thread6: finished waiting for thread1 and thread2 and thread3 failure

-        </whitespace>

-    </threads:thread>

-

- </jelly>
\ No newline at end of file
diff --git a/jelly-tags/threads/xdocs/changes.xml b/jelly-tags/threads/xdocs/changes.xml
deleted file mode 100644
index 7e44081..0000000
--- a/jelly-tags/threads/xdocs/changes.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-12">
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/threads/xdocs/index.xml b/jelly-tags/threads/xdocs/index.xml
deleted file mode 100644
index ea3cb5c..0000000
--- a/jelly-tags/threads/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Threads Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A library for processing Jelly scripts using multiple threads.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/threads/xdocs/navigation.xml b/jelly-tags/threads/xdocs/navigation.xml
deleted file mode 100644
index c5f08b6..0000000
--- a/jelly-tags/threads/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Threads Tag Library">
-
-  <title>Threads Tag Library</title>
-  
-  <body>
-    <menu name="Threads Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/util/.cvsignore b/jelly-tags/util/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/util/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/util/build.xml b/jelly-tags/util/build.xml
deleted file mode 100644
index 4dbfded..0000000
--- a/jelly-tags/util/build.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2300-->
-<project default="jar" name="commons-jelly-tags-util" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-util-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-util 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.util.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/util/maven.xml b/jelly-tags/util/maven.xml
deleted file mode 100644
index fd94279..0000000
--- a/jelly-tags/util/maven.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar" xmlns:j="jelly:core" xmlns:maven="jelly:maven" xmlns:util="jelly:util">
-
-  <!-- copies unit testing stuff -->
-  <postGoal name="test:compile">
-    <copy todir="${maven.test.dest}">
-      <fileset dir="src/test">
-        <include name="**/*.properties"/>
-        <include name="META-INF/services/*"/>
-        <include name="**/*.jelly"/>
-        <include name="**/*.xml"/>
-        <include name="**/*.html"/>
-        <include name="**/*.dtd"/>
-        <include name="**/*.rng"/>
-      </fileset>
-    </copy>
-  </postGoal>
-
-</project>
diff --git a/jelly-tags/util/project.properties b/jelly-tags/util/project.properties
deleted file mode 100644
index 39c1b61..0000000
--- a/jelly-tags/util/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/util/project.xml b/jelly-tags/util/project.xml
deleted file mode 100644
index f0baca3..0000000
--- a/jelly-tags/util/project.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-util</id>
-  <name>commons-jelly-tags-util</name>
-  <currentVersion>1.1.1</currentVersion>
-  <package>org.apache.commons.jelly.tags.util</package>
-  <description>This is a set of Jelly utility tags.</description>
-  <shortDescription>Commons Jelly Util Tag Library</shortDescription>
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_UTIL-1_0</tag>
-    </version>
-    <version>
-      <id>1.1</id>
-      <name>1.1</name>
-      <tag>COMMONS_JELLY-UTIL-1_1</tag>
-    </version>
-    <version>
-      <id>1.1.1</id>
-      <name>1.1.1</name>
-      <tag>COMMONS_JELLY_UTIL-1_1_1</tag>
-    </version>
-  </versions>
-  <dependencies>
-    <!-- START for compilation -->
-    <dependency>
-      <id>commons-lang</id>
-      <version>2.0</version>
-    </dependency>
-    <!-- END for compilation -->
-    <!-- START for test -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-    <!-- END for test -->
-
-  </dependencies>
-</project>
diff --git a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/AvailableTag.java b/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/AvailableTag.java
deleted file mode 100644
index 3266073..0000000
--- a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/AvailableTag.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.util;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag which evaluates its body if the given file is available.
- * The file can be specified via a File object or via a relative or absolute
- * URI from the current Jelly script.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class AvailableTag extends TagSupport {
-
-    private File file;
-    private String uri;
-
-    public AvailableTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        boolean available = false;
-
-        if (file != null) {
-            available = file.exists();
-        }
-        else if (uri != null) {
-            try {
-                URL url = context.getResource(uri);
-                String fileName = url.getFile();
-                InputStream is = url.openStream();
-                available = (is != null);
-                is.close();
-            } catch (MalformedURLException e) {
-                throw new JellyTagException(e);
-            } catch (IOException ioe) {
-                available = false;
-            }
-        }
-
-        if (available) {
-            invokeBody(output);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-
-    /**
-     * Returns the file.
-     * @return File
-     */
-    public File getFile() {
-        return file;
-    }
-
-    /**
-     * Returns the uri.
-     * @return String
-     */
-    public String getUri() {
-        return uri;
-    }
-
-    /**
-     * Sets the file to use to test whether it exists or not.
-     * @param file the file to test for
-     */
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    /**
-     * Sets the URI to use to test for availability.
-     * The URI can be a full file based URL or a relative URI
-     * or an absolute URI from the root context.
-     *
-     * @param uri the URI of the file to test
-     */
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
-
-}
diff --git a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/FileTag.java b/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/FileTag.java
deleted file mode 100644
index fe8ed8f..0000000
--- a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/FileTag.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.util;
-
-import java.io.File;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag which creates a {@link File} from a given name.
- *
- * @author <a href="mailto:dion@apache.org">dIon Gillard</a>
- * @version $Revision: 1.6 $
- */
-public class FileTag extends TagSupport {
-
-    /** The file to place into the context */
-    private String name;
-
-    /** The variable name to place the file into */
-    private String var;
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws MissingAttributeException, JellyTagException {
-        boolean available = false;
-
-        if (name == null) {
-            throw new MissingAttributeException("name must be specified");
-        }
-
-        if (var == null) {
-            throw new MissingAttributeException("var must be specified");
-        }
-
-        File newFile = new File(name);
-        getContext().setVariable(var, newFile);
-    }
-
-    /**
-     * Name of the file to be placed into the context
-     * @param name The fileName to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Name of the variable to contain the file
-     * @param var The var to set
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-}
diff --git a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/LoadTextTag.java b/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/LoadTextTag.java
deleted file mode 100644
index 35de69f..0000000
--- a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/LoadTextTag.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.util;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.io.Reader;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A tag which loads text from a file or URI into a Jelly variable.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class LoadTextTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(LoadTextTag.class);
-
-    private String var;
-    private File file;
-    private String uri;
-    private String encoding;
-
-    public LoadTextTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (var == null) {
-            throw new MissingAttributeException("var");
-        }
-        if (file == null && uri == null) {
-            throw new JellyTagException( "This tag must have a 'file' or 'uri' specified" );
-        }
-        
-        InputStream in = null;
-        if (file != null) {
-            if (! file.exists()) {
-                throw new JellyTagException( "The file: " + file + " does not exist" );
-            }
-
-            try {
-                in = new FileInputStream(file);
-            } catch (FileNotFoundException e) {
-                throw new JellyTagException("could not find the file",e);
-            }
-        }
-        else {
-            in = context.getResourceAsStream(uri);
-            if (in == null) {
-                throw new JellyTagException( "Could not find uri: " + uri );
-            }
-        }
-
-        Reader reader = null;
-        if (encoding != null) {
-            try {
-                reader = new InputStreamReader(in, encoding);
-            } catch (UnsupportedEncodingException e) {
-                throw new JellyTagException("unsupported encoding",e);
-            }
-        } else {
-            reader = new InputStreamReader(in);
-        }
-
-        String text = null;
-
-        try {
-            text = loadText(reader);
-        }
-        catch (IOException e) {
-            throw new JellyTagException(e);
-        }
-
-        context.setVariable(var, text);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of the variable which will be exported with the text value of the
-     * given file.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-    /**
-     * Returns the file.
-     * @return File
-     */
-    public File getFile() {
-        return file;
-    }
-
-    /**
-     * Returns the uri.
-     * @return String
-     */
-    public String getUri() {
-        return uri;
-    }
-
-    /**
-     * Returns the var.
-     * @return String
-     */
-    public String getVar() {
-        return var;
-    }
-
-    /**
-     * Sets the file to be parsed as text
-     */
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    /**
-     * Sets the encoding to use to read the file
-     */
-    public void setEncoding(String encoding) {
-        this.encoding = encoding;
-    }
-
-    /**
-     * Sets the uri to be parsed as text.
-     * This can be an absolute URL or a relative or absolute URI
-     * from this Jelly script or the root context.
-     */
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
-
-    /** Returns the encoding set.
-    * @return the encoding set with {@link #setEncoding(String)}
-      */
-    public String getEncoding() {
-        return encoding;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Loads all the text from the given Reader
-     */
-    protected String loadText(Reader reader) throws IOException {
-        StringBuffer buffer = new StringBuffer();
-
-        // @todo its probably more efficient to use a fixed char[] buffer instead
-        try {
-            BufferedReader bufferedReader = new BufferedReader(reader);
-            while (true) {
-                String line = bufferedReader.readLine();
-                if (line == null) {
-                    break;
-                }
-                else {
-                    buffer.append(line);
-                    buffer.append('\n');
-                }
-            }
-            return buffer.toString();
-        }
-        finally {
-            try {
-                reader.close();
-            }
-            catch (Exception e) {
-                log.error( "Caught exception closing Reader: " + e, e);
-            }
-        }
-    }
-}
diff --git a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/PropertiesTag.java b/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/PropertiesTag.java
deleted file mode 100644
index 356667f..0000000
--- a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/PropertiesTag.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.util;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.Properties;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag which loads a properties file from a given file name or URI
- * which are loaded into the current context.
- *
- * @author Jim Birchfield
- * @version $Revision: 1.7 $
- */
-public class PropertiesTag extends TagSupport {
-    private String file;
-    private String uri;
-    private String var;
-
-    public PropertiesTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        if (file == null && uri == null) {
-            throw new JellyTagException("This tag must define a 'file' or 'uri' attribute");
-        }
-        InputStream is = null;
-        if (file != null) {
-            File f = new File(file);
-            if (!f.exists()) {
-                throw new JellyTagException("file: " + file + " does not exist!");
-            }
-
-            try {
-                is = new FileInputStream(f);
-            } catch (FileNotFoundException e) {
-                throw new JellyTagException(e);
-            }
-        }
-        else {
-            is = context.getResourceAsStream(uri);
-            if (is == null) {
-                throw new JellyTagException( "Could not find: " + uri );
-            }
-        }
-        Properties props = new Properties();
-
-        try {
-            props.load(is);
-        } catch (IOException e) {
-            throw new JellyTagException("properties tag could not load from file",e);
-        }
-        finally {
-            if (is != null) {
-                try {
-                    is.close();
-                } catch (IOException ioe) {
-                    ;
-                }   
-            }
-        }           
-        
-        if (var != null) {
-            context.setVariable(var, props);
-        }
-        else {
-            Enumeration propsEnum = props.propertyNames();
-            while (propsEnum.hasMoreElements()) {
-                String key = (String) propsEnum.nextElement();
-                String value = props.getProperty(key);
-
-                // @todo we should parse the value in case its an Expression
-                context.setVariable(key, value);
-            }
-        }
-
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the file name to be used to load the properties file.
-     */
-    public void setFile(String file) {
-        this.file = file;
-    }
-
-    /**
-     * Sets the URI of the properties file to use. This can be a full URL or a relative URI
-     * or an absolute URI to the root context of this JellyContext.
-     */
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
-
-    /**
-     * If this is defined then a Properties object containing all the
-     * properties will be created and exported, otherwise the current variable
-     * scope will be set to the value of the properties.
-     *
-     * @param var The var to set
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-}
diff --git a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/ReplaceTag.java b/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/ReplaceTag.java
deleted file mode 100644
index 95d954d..0000000
--- a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/ReplaceTag.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.util;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.commons.lang.StringUtils;
-
-import org.xml.sax.SAXException;
-
-/**
- * A tag that replaces occurrences of a character or string in its body or
- * (or value) and places the result into the context
- *
- * @author dion
- */
-public class ReplaceTag extends TagSupport {
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ReplaceTag.class);
-
-    /** The variable name to export. */
-    private String var;
-
-    /** The expression to evaluate. */
-    private Expression value;
-
-    /** the old character to be replaced */
-    private String oldChar;
-
-    /** the new character that will replace the old */
-    private String newChar;
-
-    /** the old string to be replace */
-    private String oldString;
-
-    /** the new string that will replace the old */
-    private String newString;
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        // check required properties
-        if (oldChar != null) {
-            oldString = oldChar.substring(0,1);
-        }
-
-        if (newChar != null) {
-            newString = newChar.substring(0,1);
-        }
-
-        if (oldString == null) {
-            throw new MissingAttributeException("oldChar or oldString must be provided");
-        }
-
-        if (newString == null) {
-            throw new MissingAttributeException("newChar or newString must be provided");
-        }
-
-        // get either the value or the body of the tag
-        Object answer = null;
-        if ( value != null ) {
-            answer = value.evaluateAsString(context);
-        } else {
-            answer = getBodyText(false);
-        }
-
-        // set the result in the context, or output it
-        if (answer != null) {
-            String stringAnswer = StringUtils.replace(answer.toString(), oldString, newString);
-            if ( var != null ) {
-                context.setVariable(var, stringAnswer);
-            } else {
-                try {
-                    output.write(stringAnswer);
-                } catch (SAXException e) {
-                    throw new JellyTagException(e);
-                }
-            }
-        }
-    }
-
-    /**
-     * Returns the newChar used in replacing. Should only be a single
-     * character.
-     * @return String
-     */
-    public String getNewChar()
-    {
-        return newChar;
-    }
-
-    /**
-     * Returns the oldChar that will be replaced. Should only be a single
-     * character.
-     * @return String
-     */
-    public String getOldChar()
-    {
-        return oldChar;
-    }
-
-    /**
-     * Returns the newString that will be replaced.
-     * @return String
-     */
-    public String getNew()
-    {
-        return newString;
-    }
-
-    /**
-     * Returns the oldString that will be replaced.
-     * @return String
-     */
-    public String getOld()
-    {
-        return oldString;
-    }
-
-    /**
-     * Returns the value.
-     * @return Expression
-     */
-    public Expression getValue()
-    {
-        return value;
-    }
-
-    /**
-     * Returns the var.
-     * @return String
-     */
-    public String getVar()
-    {
-        return var;
-    }
-
-    /**
-     * Sets the newChar.
-     * @param newChar The newChar to set
-     */
-    public void setNewChar(String newChar)
-    {
-        this.newChar = newChar;
-    }
-
-    /**
-     * Sets the oldChar.
-     * @param oldChar The oldChar to set
-     */
-    public void setOldChar(String oldChar)
-    {
-        this.oldChar = oldChar;
-    }
-
-    /**
-     * Sets the newString.
-     * @param newString The newString to set
-     */
-    public void setNew(String newString)
-    {
-        this.newString = newString;
-    }
-
-    /**
-     * Sets the oldString.
-     * @param oldString The oldString to set
-     */
-    public void setOld(String oldString)
-    {
-        this.oldString = oldString;
-    }
-
-    /**
-     * Sets the value.
-     * @param value The value to set
-     */
-    public void setValue(Expression value)
-    {
-        this.value = value;
-    }
-
-    /**
-     * Sets the var.
-     * @param var The var to set
-     */
-    public void setVar(String var)
-    {
-        this.var = var;
-    }
-
-}
diff --git a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/SleepTag.java b/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/SleepTag.java
deleted file mode 100644
index e74054c..0000000
--- a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/SleepTag.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.util;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-/**
- * A tag which sleeps for a given amount of time.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class SleepTag extends TagSupport {
-    private long millis;
-
-    public SleepTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        if (millis > 0) {
-            try {
-                Thread.sleep(millis);
-            } catch (InterruptedException e) {
-                throw new JellyTagException(e);
-            }
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the amount of time that this thread should sleep for in milliseconds.
-     */
-    public void setMillis(long millis) {
-        this.millis = millis;
-    }
-
-}
diff --git a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/SortTag.java b/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/SortTag.java
deleted file mode 100644
index b2244ab..0000000
--- a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/SortTag.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.util;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.commons.beanutils.BeanComparator;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-public class SortTag extends TagSupport {
-
-    /** things to sort */
-    private List items;
-    
-    /** the variable to store the result in */
-    private String var;
-    
-    /** property of the beans to sort on, if any */
-    private String property;
-    
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        if (var == null)
-        {
-            throw new MissingAttributeException("var");
-        }
-        
-        if (items == null) {
-            throw new MissingAttributeException("items");
-        }
-        
-        List sorted = new ArrayList(items);
-        if (property == null) {
-            Collections.sort(sorted);
-        } else {
-            BeanComparator comparator = new BeanComparator(property);
-            Collections.sort(sorted, comparator);
-        }
-        context.setVariable(var, sorted);
-    }
-    
-    /**
-     * Set the items to be sorted
-     * @param newItems some collection
-     */
-    public void setItems(List newItems) {
-        items = newItems;
-    }
-    
-    /**
-     * The variable to hold the sorted collection.
-     * @param newVar the name of the variable.
-     */
-    public void setVar(String newVar) {
-        var = newVar;
-    }
-    
-    public void setProperty(String newProperty)
-    {
-        property = newProperty;
-    }
-}
\ No newline at end of file
diff --git a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/TokenizeTag.java b/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/TokenizeTag.java
deleted file mode 100644
index 7cbeb51..0000000
--- a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/TokenizeTag.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.util;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-public class TokenizeTag extends TagSupport
-{
-    private String var;
-    private String delim;
-
-    public TokenizeTag()
-    {
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    public void doTag(final XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( this.var == null )
-        {
-            throw new MissingAttributeException( "var" );
-        }
-
-        if ( this.delim == null )
-        {
-            throw new MissingAttributeException( "delim" );
-        }
-
-        StringTokenizer tokenizer = new StringTokenizer( getBodyText(),
-                                                         this.delim );
-
-        List tokens = new ArrayList();
-
-        while ( tokenizer.hasMoreTokens() )
-        {
-            tokens.add( tokenizer.nextToken() );
-        }
-
-        getContext().setVariable( this.var,
-                                  tokens );
-    }
-
-    /** The variable name to hold the list of tokens */
-    public void setVar(String var)
-    {
-        this.var = var;
-    }
-
-    /** the delimiter that separates the tokens */
-    public void setDelim(String delim)
-    {
-        this.delim = delim;
-    }
-
-}
diff --git a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/UtilTagLibrary.java b/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/UtilTagLibrary.java
deleted file mode 100644
index a018b18..0000000
--- a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/UtilTagLibrary.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.util;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/** Implements general utility tags.
- *
- *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- *  @version $Revision: 1.6 $
- */
-public class UtilTagLibrary extends TagLibrary {
-
-    public UtilTagLibrary() {
-        registerTag("available", AvailableTag.class);
-        registerTag("file", FileTag.class);
-        registerTag("loadText", LoadTextTag.class);
-        registerTag("properties", PropertiesTag.class);
-        registerTag("replace", ReplaceTag.class);
-        registerTag("sleep", SleepTag.class);
-        registerTag("sort", SortTag.class);
-        registerTag("tokenize", TokenizeTag.class);
-    }
-}
diff --git a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/package.html b/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/package.html
deleted file mode 100644
index 8109da1..0000000
--- a/jelly-tags/util/src/java/org/apache/commons/jelly/tags/util/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
-  <p>A number of utility tags such as for tokenizing Strings.
-  </p>
-  
-</body>
-</html>
diff --git a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/Customer.java b/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/Customer.java
deleted file mode 100644
index c359a22..0000000
--- a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/Customer.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.util;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * A sample bean that we can construct via Jelly tags
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.1 $
- */
-public class Customer {
-
-    private String name;
-    private String city;
-    private String location;
-
-
-    public Customer() {
-    }
-
-    public Customer(String name) {
-        setName(name);
-    }
-
-    public Customer(String name, String city) {
-        setName(name);
-        setCity(city);
-    }
-
-    public Customer(Customer cust) {
-        setName(cust.getName());
-        setCity(cust.getCity());
-        setLocation(cust.getLocation());
-    }
-
-    public String toString() {
-        return super.toString() + "[name=" + name + ";city=" + city + "]";
-    }
-
-    /**
-     * Returns the city.
-     * @return String
-     */
-    public String getCity() {
-        return city;
-    }
-
-    /**
-     * Returns the location.
-     * @return String
-     */
-    public String getLocation() {
-        return location;
-    }
-
-    /**
-     * Returns the name.
-     * @return String
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the city.
-     * @param city The city to set
-     */
-    public void setCity(String city) {
-        this.city = city;
-    }
-
-    /**
-     * Sets the location.
-     * @param location The location to set
-     */
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    /**
-     * Sets the name.
-     * @param name The name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-}
diff --git a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/TestJelly.java b/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/TestJelly.java
deleted file mode 100644
index 749b2b6..0000000
--- a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.util;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/deletable.properties b/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/deletable.properties
deleted file mode 100644
index 50331c7..0000000
--- a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/deletable.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-foo=ABC
-
-bar=XYZ
\ No newline at end of file
diff --git a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/dummy.xml b/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/dummy.xml
deleted file mode 100644
index d6ca005..0000000
--- a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/dummy.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<dummy>
-  <entry id="1">This is some sample XML</entry>
-  <entry id="2">And some more XML</entry>
-  <empty/>
-</dummy>  
\ No newline at end of file
diff --git a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/foo.properties b/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/foo.properties
deleted file mode 100644
index 50331c7..0000000
--- a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/foo.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-foo=ABC
-
-bar=XYZ
\ No newline at end of file
diff --git a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/suite.jelly b/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/suite.jelly
deleted file mode 100644
index 57e5aee..0000000
--- a/jelly-tags/util/src/test/org/apache/commons/jelly/tags/util/suite.jelly
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite 
-    xmlns:j="jelly:core" 
-    xmlns:util="jelly:util" 
-    xmlns:test="jelly:junit">
-
-  <test:case name="testTokenize">
-    
-        <util:tokenize var="tokens" delim=",">Test1,Test2,Test3,Test4</util:tokenize>
-
-        <j:set var="s" value="${size(tokens)}"/>        
-        <test:assert test="${s == 4}"/>
-        <test:assert test="${size(tokens) == 4}"/>
-
-<!--        
-        <j:set var="s" value="${tokens.size()}"/>        
-        <test:assert test="${s == 4}"/>
-        
-        <test:assert test="${tokens.size() == 4}"/>
--->
-
-            
-        <test:assertEquals expected="Test1" actual="${tokens[0]}"/>
-        <test:assertEquals expected="Test2" actual="${tokens[1]}"/>
-        <test:assertEquals expected="Test3" actual="${tokens[2]}"/>
-        <test:assertEquals expected="Test4" actual="${tokens[3]}"/>
-        
-        <test:assertEquals expected="Test4" actual="${tokens[s - 1]}"/>
-        <test:assertEquals expected="Test4" actual="${tokens[size(tokens) - 1]}"/>
-        
-<!--        
-        <test:assertEquals expected="Test4" actual="${tokens.get(size(tokens) - 1)}"/>
-        
-        
-        <test:assertEquals expected="Test4" actual="${tokens[tokens.size() - 1]}"/>
-        <test:assertEquals expected="Test4" actual="${tokens.get(tokens.size() - 1)}"/>
--->        
-        
-  </test:case>
-
-  <test:case name="testFileExists">
-
-      <!-- ensure that ${base.dir} is defined -->
-      <j:if test="${empty base.dir}">
-          <j:set var="base.dir" value="."/>
-      </j:if>
-        
-      <j:set var="flag" value="not found"/>
-
-      <util:available file="${base.dir}/project.xml">
-          <j:set var="flag" value="found"/>
-      </util:available>
-
-        
-      <test:assertEquals expected="found" actual="${flag}">
-          Should have found the file via the file $${base.dir}/project.xml with base.dir=${base.dir}
-      </test:assertEquals>
-        
-      <util:available file="${base.dir}/doesNotExist.xml">
-          <test:fail>The file ${base.dir}/doesNotExist.xml should not exist</test:fail>
-      </util:available>
-        
-  </test:case>
-    
-  <test:case name="testURIExists">
-
-      <j:set var="flag" value="not found"/>
-
-        <!-- use relative URIs-->
-        
-      <util:available uri="dummy.xml">
-          <j:set var="flag" value="found"/>
-      </util:available>
-        
-      <test:assertEquals expected="found" actual="${flag}">
-        Should have found the file via the URI dummy.xml
-      </test:assertEquals>
-        
-      <util:available uri="doesNotExist.xml">
-
-          <test:fail>The URI doesNotExist.xml should not exist!</test:fail>
-      </util:available>
-        
-  </test:case>
-  
-  <test:case name="testReplace">
-    
-    <util:replace oldChar="\" newChar="/" var="testString">A\B</util:replace>
-    <test:assertEquals expected="A/B" actual="${testString}">
-      Should have replaced a back slash with a forward one
-    </test:assertEquals>
-
-    
-    <j:set var="testString2"><util:replace oldChar="\" newChar="/">A\B</util:replace></j:set>
-    <test:assertEquals expected="A/B" actual="${testString2}">
-      Should have replaced a back slash with a forward one
-      and placed the result into output
-    </test:assertEquals>
-    
-    <util:replace oldChar="/" newChar="\" value="${testString}" var="testString3" />
-    <test:assertEquals expected="A\B" actual="${testString3}">
-      Should have replaced a slash with a back slash from a variable
-      and placed the result into a variable
-    </test:assertEquals>
-
-    <util:replace oldChar="ABC" newChar="123" value="CBABC" var="testString4" />
-
-    <test:assertEquals expected="CB1BC" actual="${testString4}">
-      Should have only substituted the 1 for the A, since the
-      old/newChar attributes were used.
-    </test:assertEquals>
-
-    <util:replace old="brown" new="black" value="The quick brown fox" var="testString6" />
-    <test:assertEquals expected="The quick black fox" actual="${testString6}">
-        Should have substituted the string "black" for "brown"
-    </test:assertEquals>
-
-  </test:case>
-
-  <test:case name="testProperties">
-      
-      <util:properties uri="foo.properties"/>
-      
-      <test:assertEquals expected="ABC" actual="${foo}"/>
-    
-  </test:case>
-    
-  <test:case name="testPropertiesVar">
-      
-      <util:properties uri="foo.properties" var="props"/>
-      
-      <test:assertEquals expected="ABC" actual="${props.foo}"/>
-    
-      Loaded properties value ${props}
-    
-  </test:case>
-
-  
-  <test:case name="testPropertiesAreNotLocked">
-      <j:set var="filename" value="${basedir}/target/test-classes/org/apache/commons/jelly/tags/util/deletable.properties"/>
-      
-      <util:properties file="${filename}"/>
-      
-      <j:new var="f" className="java.io.File">
-        <j:arg type="java.lang.String" value="${filename}"/>
-      </j:new>        
-      <j:mute>
-        ${f.delete()}
-      </j:mute>
-    
-      <test:assertEquals expected="${false}" actual="${f.exists()}" >The file ${name} should no longer exist</test:assertEquals>
-
-  </test:case>
-    
-
-  <test:case name="testFileTag">
-      <util:file name="${basedir}/src/test/org/apache/commons/jelly/tags/util/suite.jelly" 
-        var="suite" />
-      <test:assert test="${suite != null}" >The suite should exist</test:assert>
-  </test:case>
-  
-  <test:case name="testSortBasic">
-    <j:new var="testCollection" className="java.util.ArrayList"/>
-    <j:mute>
-
-    	${testCollection.add('Hello')}
-    	${testCollection.add('World')}
-    	${testCollection.add('Jelly')}
-    </j:mute>
-    <util:sort var="sorted" items="${testCollection}" />
-    <test:assertEquals expected="Hello" actual="${sorted[0]}"/>
-    <test:assertEquals expected="Jelly" actual="${sorted[1]}"/>
-    <test:assertEquals expected="World" actual="${sorted[2]}"/>
-  </test:case>
-  
-  <test:case name="testSortBean">
-    <j:new var="testCollection" className="java.util.ArrayList"/>
-
-    <j:useBean var="cust1" class="org.apache.commons.jelly.util.Customer" city="Sydney" location="Australia" name="Fred Nerk"/>
-    <j:useBean var="cust2" class="org.apache.commons.jelly.util.Customer" city="Melbourne" location="Australia" name="Joe Nerk"/>
-    <j:useBean var="cust3" class="org.apache.commons.jelly.util.Customer" city="San Francisco" location="U.S.A." name="Colette Cool"/>
-    <j:mute>
-    	${testCollection.add(cust1)}
-    	${testCollection.add(cust2)}
-    	${testCollection.add(cust3)}
-    </j:mute>
-    <!-- test sorting by the name property -->
-    <util:sort var="sortedByName" items="${testCollection}" property="name"/>
-    <test:assertEquals expected="Colette Cool" actual="${sortedByName[0].name}"/>
-
-    <test:assertEquals expected="Fred Nerk" actual="${sortedByName[1].name}"/>
-    <test:assertEquals expected="Joe Nerk" actual="${sortedByName[2].name}"/>
-
-    <!-- test sorting by the location property -->
-    <util:sort var="sortedByLocation" items="${testCollection}" property="location"/>
-    <test:assertEquals expected="Australia" actual="${sortedByLocation[0].location}"/>
-    <test:assertEquals expected="Australia" actual="${sortedByLocation[1].location}"/>
-    <test:assertEquals expected="U.S.A." actual="${sortedByLocation[2].location}"/>
-  
-  </test:case>
-
-    
-</test:suite>
diff --git a/jelly-tags/util/xdocs/changes.xml b/jelly-tags/util/xdocs/changes.xml
deleted file mode 100644
index f35915e..0000000
--- a/jelly-tags/util/xdocs/changes.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.1.1" date="2005-01-01">
-      <action dev="dion" type="fix" due-to="Stefan Bodewig">Handle null encoding in loadText tag</action>
-    </release>
-    <release version="1.1" date="2004-10-27">
-      <action dev="dion" type="add" issue="JELLY-157">Add util:sort to sort lists, including sorting by bean properties</action>
-      <action dev="dion" type="update" issue="JELLY-57" due-to="Bill Keese">support encoding parameter for util:loadText</action>
-    </release>
-    <release version="1.0" date="2004-09-10">
-      <action dev="dion" type="fix" issue="JELLY-77" due-to="Paul O&apos;Fallon">Update jelly:util replace tag to replace entire strings</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/util/xdocs/index.xml b/jelly-tags/util/xdocs/index.xml
deleted file mode 100644
index 003501f..0000000
--- a/jelly-tags/util/xdocs/index.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Utility Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A number of utility tags.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-    <section name="Tips">
-      <p>
-        If you would like to use the <code>tokenize</code> tag and tokenize on
-        whitespace, you may think you could use a delimiter of <code>\n or \t</code>
-        etc, but those character strings are specific to Java, not XML.
-      </p>
-      <p>
-        Randy Xu came up with a workaround, using XML unicode entities, e.g.
-        <code><![CDATA[&#xA, &#xD, &#x9, &x20]]></code> for line feed, carriage return,
-        tab and space respectively.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/util/xdocs/navigation.xml b/jelly-tags/util/xdocs/navigation.xml
deleted file mode 100644
index af6885c..0000000
--- a/jelly-tags/util/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Utility Tag Library">
-
-  <title>Utility Tag Library</title>
-  
-  <body>
-    <menu name="Utility Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/validate/.cvsignore b/jelly-tags/validate/.cvsignore
deleted file mode 100644
index 36ceb76..0000000
--- a/jelly-tags/validate/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-maven.log
-target
-velocity.log
-jcoverage.ser
diff --git a/jelly-tags/validate/build.xml b/jelly-tags/validate/build.xml
deleted file mode 100644
index 4bd056d..0000000
--- a/jelly-tags/validate/build.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2302-->
-<project default="jar" name="commons-jelly-tags-validate" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-validate-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-validate 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.validate.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/isorelax-20030807.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/msv/jars/isorelax-20030807.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/msv-20030807.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/msv/jars/msv-20030807.jar">
-    </get>
-    <get dest="${libdir}/xsdlib-20030807.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/msv/jars/xsdlib-20030807.jar">
-    </get>
-    <get dest="${libdir}/relaxngDatatype-20030807.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/msv/jars/relaxngDatatype-20030807.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-cli-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-cli/jars/commons-cli-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/validate/maven.xml b/jelly-tags/validate/maven.xml
deleted file mode 100644
index a2b20c9..0000000
--- a/jelly-tags/validate/maven.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-        <path id="test.classpath">
-            <pathelement path="${maven.build.dest}"/>
-            <pathelement path="target/classes"/>
-            <pathelement path="target/test-classes"/>
-            <path refid="maven.dependency.classpath"/>
-        </path>
-  </goal>
-
-    <!-- demos -->
-  <goal name="demo:rng" prereqs="create-classpath"
-    description="Runs a validation demo, with RelaxNG">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/tags/validate/validateRNG.jelly"/>
-    </java>
-  </goal>
-
-  <goal name="demo:dtd" prereqs="create-classpath"
-    description="Runs a validation demo, with DTD">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/tags/validate/validateDTD.jelly"/>
-    </java>
-  </goal>
-
-</project>
diff --git a/jelly-tags/validate/project.properties b/jelly-tags/validate/project.properties
deleted file mode 100644
index 39c1b61..0000000
--- a/jelly-tags/validate/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/validate/project.xml b/jelly-tags/validate/project.xml
deleted file mode 100644
index 727888e..0000000
--- a/jelly-tags/validate/project.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-validate</id>
-  <name>commons-jelly-tags-validate</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.validate</package>
-  <description>This is a Jelly interface for XML validation.</description>
-  <shortDescription>Commons Jelly Validate Tag Library</shortDescription>
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-VALIDATE-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-    <!-- START for compilation -->
-    <dependency>
-      <groupId>msv</groupId>
-      <artifactId>isorelax</artifactId>
-      <version>20030807</version>
-      <properties>
-        <gump.project>iso-relax</gump.project>
-      </properties>
-    </dependency>
-    <dependency>
-      <id>junit</id>
-      <version>3.8.1</version>
-    </dependency>
-    <dependency>
-      <id>msv</id>
-      <version>20030807</version>
-    </dependency>
-    <!-- END for compilation -->
-    <!-- runtime dependencies -->
-
-    <dependency>
-      <groupId>msv</groupId>
-      <artifactId>xsdlib</artifactId>
-      <version>20030807</version>
-    </dependency>
-    <dependency>
-      <groupId>msv</groupId>
-      <artifactId>relaxngDatatype</artifactId>
-      <version>20030807</version>
-      <properties>
-        <gump.project>relaxng</gump.project>
-      </properties>
-    </dependency>
-    <!-- END runtime -->
-    <!-- START for test -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/libs/junit/</url>
-    </dependency>
-    <!-- END for test -->
-    <!-- START for running demos -->
-
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-    <!-- END for running demos -->
-
-  </dependencies>
-</project>
diff --git a/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/AssertValidTag.java b/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/AssertValidTag.java
deleted file mode 100644
index c0e65ab..0000000
--- a/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/AssertValidTag.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.validate;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.junit.JellyAssertionFailedError;
-
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * This tag performs an assertion that the tags body contains XML
- * which matches a givem schema validation. This tag is used with
- * JellyUnit to implement an assertion.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class AssertValidTag extends ValidateTag {
-
-    private StringBuffer buffer = new StringBuffer();
-
-
-/*
-    public AssertValidTag() {
-        setErrorHandler(
-            new ErrorHandler() {
-                public void error(SAXParseException exception) throws SAXException {
-                    outputException(output, "error", exception);
-                }
-
-                public void fatalError(SAXParseException exception) throws SAXException {
-                    outputException(output, "fatalError", exception);
-                }
-
-                public void warning(SAXParseException exception) throws SAXException {
-                    outputException(output, "warning", exception);
-                }
-            }
-        );
-    }
-*/
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        buffer.setLength(0);
-        super.doTag(output);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Processes whether or not the document is valid.
-     * Derived classes can overload this method to do different things, such
-     * as to throw assertion exceptions etc.
-     */
-    protected void handleValid(boolean valid) {
-        super.handleValid(valid);
-
-        if ( ! valid ) {
-            String message = buffer.toString();
-            throw new JellyAssertionFailedError( "The XML is not valid according to the schema: " + message );
-        }
-    }
-
-    /**
-     * Outputs the given validation exception as XML to the output
-     */
-    protected void outputException(XMLOutput output, String name, SAXParseException e) throws SAXException {
-        buffer.append( name );
-        buffer.append( " : line: " );
-        buffer.append( e.getLineNumber() );
-        buffer.append( " column: " );
-        buffer.append( e.getColumnNumber() );
-        buffer.append( " message: " );
-        buffer.append( e.getMessage() );
-        buffer.append( '\n' );
-    }
-
-}
diff --git a/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/ValidateTag.java b/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/ValidateTag.java
deleted file mode 100644
index d22ca6c..0000000
--- a/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/ValidateTag.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.validate;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.iso_relax.verifier.Verifier;
-import org.iso_relax.verifier.VerifierFilter;
-import org.iso_relax.verifier.VerifierHandler;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * This tag validates its body using a schema Verifier which can
- * validate against DTDs, XML Schema, RelaxNG, Relax or TREX.
- * Any JARV compliant Verifier could be used.
- * The error messages are output as XML events so that they can be styled by the parent tag.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class ValidateTag extends TagSupport {
-
-    /** The verifier that this tag will use */
-    private Verifier verifier;
-
-    /** The SAX ErrorHandler */
-    private ErrorHandler errorHandler;
-
-    /** The boolean flag for whether the XML is valid */
-    private String var;
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( verifier == null ) {
-            throw new MissingAttributeException("verifier");
-        }
-        boolean valid = false;
-
-        // evaluate the body using the current Verifier
-        if ( errorHandler != null ) {
-
-            try {
-                // we are redirecting errors to another handler
-                // so just filter the body
-                VerifierFilter filter = verifier.getVerifierFilter();
-
-                // now install the current output in the filter chain...
-                // ####
-
-                ContentHandler handler = filter.getContentHandler();
-                handler.startDocument();
-                invokeBody( new XMLOutput( handler ) );
-                handler.endDocument();
-                valid = filter.isValid();
-            }
-            catch (SAXException e) {
-                throw new JellyTagException(e);
-            }
-        }
-        else {
-            // outputting the errors to the current output
-            verifier.setErrorHandler(
-                new ErrorHandler() {
-                    public void error(SAXParseException exception) throws SAXException {
-                        outputException(output, "error", exception);
-                    }
-
-                    public void fatalError(SAXParseException exception) throws SAXException {
-                        outputException(output, "fatalError", exception);
-                    }
-
-                    public void warning(SAXParseException exception) throws SAXException {
-                        outputException(output, "warning", exception);
-                    }
-                }
-            );
-
-            try {
-                VerifierHandler handler = verifier.getVerifierHandler();
-                handler.startDocument();
-                invokeBody( new XMLOutput( handler ) );
-                handler.endDocument();
-                valid = handler.isValid();
-            }
-            catch (SAXException e) {
-                throw new JellyTagException(e);
-            }
-        }
-        handleValid(valid);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the schema Verifier that this tag will use to verify its body
-     *
-     * @jelly:required
-     */
-    public void setVerifier(Verifier verifier) {
-        this.verifier = verifier;
-    }
-
-    /**
-     * @return the ErrorHandler used when validating
-     */
-    public ErrorHandler getErrorHandler() {
-        return errorHandler;
-    }
-
-    /**
-     * Sets the SAX ErrorHandler which is used to capture
-     * XML validation events.
-     * If an ErrorHandler is specified
-     * then this tag will output its body and redirect all error messages
-     * to the ErrorHandler.
-     * If no ErrorHandler is specified then this tag will just output the
-     * error messages as XML events
-     *
-     * @jelly:optional
-     */
-    public void setErrorHandler(ErrorHandler errorHandler) {
-        this.errorHandler = errorHandler;
-    }
-
-    /**
-     * Sets the name of the variable that will contain a boolean flag for whether or
-     * not the XML is valid.
-     *
-     * @jelly:optional
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Processes whether or not the document is valid.
-     * Derived classes can overload this method to do different things, such
-     * as to throw assertion exceptions etc.
-     */
-    protected void handleValid(boolean valid) {
-        if (var != null ) {
-            Boolean value = (valid) ? Boolean.TRUE : Boolean.FALSE;
-            context.setVariable(var, value);
-        }
-    }
-
-    /**
-     * Outputs the given validation exception as XML to the output
-     */
-    protected void outputException(XMLOutput output, String name, SAXParseException e) throws SAXException {
-        AttributesImpl attributes = new AttributesImpl();
-        String uri = "";
-        String type = "CDATA";
-        attributes.addAttribute( uri, "column", "column", type, Integer.toString( e.getColumnNumber() ) );
-        attributes.addAttribute( uri, "line", "line", type, Integer.toString( e.getLineNumber() ) );
-
-        String publicID = e.getPublicId();
-        if ( publicID != null && publicID.length() > 0 ) {
-            attributes.addAttribute( uri, "publicID", "publicID", type, publicID );
-        }
-        String systemID = e.getSystemId();
-        if ( systemID != null && systemID.length() > 0 ) {
-            attributes.addAttribute( uri, "systemID", "systemID", type, systemID );
-        }
-
-        output.startElement( uri, name, name, attributes );
-        output.write( e.getMessage() );
-        output.endElement( uri, name, name );
-    }
-
-
-}
diff --git a/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/ValidateTagLibrary.java b/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/ValidateTagLibrary.java
deleted file mode 100644
index 8ad79aa..0000000
--- a/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/ValidateTagLibrary.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.validate;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class ValidateTagLibrary extends TagLibrary {
-
-    public ValidateTagLibrary() {
-        registerTag("validate", ValidateTag.class);
-        registerTag("verifier", VerifierTag.class);
-        registerTag("assertValid", AssertValidTag.class);
-    }
-}
diff --git a/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/VerifierTag.java b/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/VerifierTag.java
deleted file mode 100644
index 7efdc8a..0000000
--- a/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/VerifierTag.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.validate;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.io.IOException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.iso_relax.verifier.Schema;
-import org.iso_relax.verifier.Verifier;
-import org.iso_relax.verifier.VerifierConfigurationException;
-import org.iso_relax.verifier.VerifierFactory;
-import org.xml.sax.SAXException;
-
-/**
- * This tag creates a new Verifier of a schema as a variable
- * so that it can be used by a &lt;validate&gt; tag.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.10 $
- */
-public class VerifierTag extends TagSupport {
-
-    /** the variable name to export the Verifier as */
-    private String var;
-
-    /** The URI to load the schema from */
-    private String uri;
-
-    /** The file to load the schema from */
-    private File file;
-
-    /** The system ID to use when parsing the schema */
-    private String systemId;
-
-    /** The factory used to create new schema verifier objects */
-    private VerifierFactory factory;
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( var == null ) {
-            throw new MissingAttributeException("var");
-        }
-
-        InputStream in = null;
-        if ( uri != null ) {
-            in = context.getResourceAsStream( uri );
-            if ( in == null ) {
-                throw new JellyTagException( "Could not find resource for uri: " + uri );
-            }
-        } else if (file != null) {
-            try {
-                in = new FileInputStream(file);
-            } catch (FileNotFoundException e) {
-                throw new JellyTagException(e);
-            }
-        } else {
-            String text = getBodyText();
-            in = new ByteArrayInputStream( text.getBytes() );
-        }
-
-        Verifier verifier = null;
-        try {
-            Schema schema = null;
-            if (systemId != null) {
-                schema = getFactory().compileSchema(in, systemId);
-            }
-            else if ( uri != null ) {
-                schema = getFactory().compileSchema(in, uri);
-            }
-            else{
-                schema = getFactory().compileSchema(in);
-            }
-
-            if ( schema == null ) {
-                throw new JellyTagException( "Could not create a valid schema" );
-            }
-
-            verifier = schema.newVerifier();
-        }
-        catch (VerifierConfigurationException e) {
-            throw new JellyTagException(e);
-        }
-        catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-        catch (IOException e) {
-            throw new JellyTagException(e);
-        }
-
-        context.setVariable(var, verifier);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of the variable that will be set to the new Verifier
-     *
-     * @jelly:required
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Sets the URI of the schema file to parse. If no URI and no file is
-     * specified then the body of this tag is used as the source of the schema
-     *
-     * @jelly:optional
-     */
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
-
-    /**
-     * Sets the {@link File} of the schema to parse. If no URI and no file is
-     * specified then the body of this tag is used as the source of the schema
-     *
-     * @jelly:optional
-     */
-    public void setFile(File aFile) {
-        file = aFile;
-    }
-
-    /**
-     * Sets the system ID used when parsing the schema
-     *
-     * @jelly:optional
-     */
-    public void setSystemId(String systemId) {
-        this.systemId = systemId;
-    }
-
-    /**
-     * Sets the factory used to create new schema verifier objects.
-     * If none is provided then the default MSV factory is used.
-     *
-     * @jelly:optional
-     */
-    public void setFactory(VerifierFactory factory) {
-        this.factory = factory;
-    }
-
-    public VerifierFactory getFactory() throws JellyTagException {
-        if ( factory == null ) {
-            try {
-                ClassLoader loader = ClassLoaderUtils.getClassLoader(null, true, getClass());
-                factory = (VerifierFactory)loader.loadClass(
-                    "com.sun.msv.verifier.jarv.TheFactoryImpl").newInstance();
-            } catch (ClassNotFoundException e) {
-                throw new JellyTagException(e);
-            } catch (InstantiationException e) {
-                throw new JellyTagException(e);
-            } catch (IllegalAccessException e) {
-                throw new JellyTagException(e);
-            }
-        }
-        return factory;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-
-}
diff --git a/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/package.html b/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/package.html
deleted file mode 100644
index 2423126..0000000
--- a/jelly-tags/validate/src/java/org/apache/commons/jelly/tags/validate/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
-  <p>A tag library for validating XML using various schema languages like DTD, XML Schema, 
-  Relax NG as well as Relax and TREX. This tag library uses the 
-  <a href="http://iso-relax.sourceforge.net/JARV/">JARV</a> API to perform the validation.
-  By default we use the 
-  <a href="http://wwws.sun.com/software/xml/developers/multischema/">MSV</a> 
-  library by Kohsuke Kawaguchi as the implementation of JARV.
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/TestJelly.java b/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/TestJelly.java
deleted file mode 100644
index 7231820..0000000
--- a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.validate;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/address.dtd b/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/address.dtd
deleted file mode 100644
index 566e25d..0000000
--- a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/address.dtd
+++ /dev/null
Binary files differ
diff --git a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/address.rng b/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/address.rng
deleted file mode 100644
index 4edfd16..0000000
--- a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/address.rng
+++ /dev/null
Binary files differ
diff --git a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/suite.jelly b/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/suite.jelly
deleted file mode 100644
index 6cd3a60..0000000
--- a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/suite.jelly
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite 

-    xmlns:j="jelly:core" 

-    xmlns:test="jelly:junit"

-    xmlns:v="jelly:validate">

-

-<!-- test RelaxNG --> 

-

-<test:case name="validateRelaxNG">

-

-<v:verifier uri="address.rng" var="addressSchema"/>

-

-<v:assertValid verifier="${addressSchema}">

-  <addressBook>

-    <card>

-      <name>John Smith</name>

-      <email>js@example.com</email>

-    </card>

-    <card>

-      <name>Fred Bloggs</name>

-      <email>fb@example.net</email>

-    </card>

-  </addressBook>

-</v:assertValid>

-  

-</test:case>

-

-

-<test:case name="invalidateRelaxNG">

-

-<v:verifier uri="address.rng" var="addressSchema"/>

-

-<j:catch var="exception">

-<v:assertValid var="flag" verifier="${addressSchema}">

-  <addressBook>

-    <card>

-      <email>js@example.com</email>

-    </card>

-    <card>

-      <name>Fred Bloggs</name>

-    </card>

-    <card>

-      <wrongname>Fred Bloggs</wrongname>

-    </card>

-    <card>

-    </card>

-  </addressBook>

-</v:assertValid>

-</j:catch>

-

-<test:assert test="${!flag}">The document should not be valid</test:assert>

-<test:assert test="${exception != null}">An exception should have been thrown</test:assert>

-The exception was ${exception.message}

-  

-</test:case>

-

-

-<!-- test DTDs --> 

-<test:case name="validateDTD">

-

-<v:verifier uri="address.dtd" var="addressSchema"/>

-

-<v:assertValid verifier="${addressSchema}">

-  <addressBook>

-    <card>

-      <name>John Smith</name>

-      <email>js@example.com</email>

-    </card>

-    <card>

-      <name>Fred Bloggs</name>

-      <email>fb@example.net</email>

-    </card>

-  </addressBook>

-</v:assertValid>

-  

-</test:case>

-

-

-<test:case name="invalidateDTD">

-

-<v:verifier uri="address.dtd" var="addressSchema"/>

-

-<j:catch var="exception">

-<v:assertValid var="flag" verifier="${addressSchema}">

-  <addressBook>

-    <card>

-      <email>js@example.com</email>

-    </card>

-    <card>

-      <name>Fred Bloggs</name>

-    </card>

-    <card>

-      <wrongname>Fred Bloggs</wrongname>

-    </card>

-    <card>

-    </card>

-  </addressBook>

-</v:assertValid>

-</j:catch>

-

-<test:assert test="${!flag}">The document should not be valid</test:assert>

-<test:assert test="${exception != null}">An exception should have been thrown</test:assert>

-The exception was ${exception.message}

-  

-</test:case>

-   

-</test:suite>

diff --git a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/validateDTD.jelly b/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/validateDTD.jelly
deleted file mode 100644
index 5df9945..0000000
--- a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/validateDTD.jelly
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:v="jelly:validate">
-
-Loading the verifier for a DTD
-
-<v:verifier uri="address.dtd" var="addressSchema"/>
-
-Attempting to validate a valid address ...
-
-<v:validate var="flag" verifier="${addressSchema}">
-  <addressBook>
-    <card>
-      <name>John Smith</name>
-      <email>js@example.com</email>
-    </card>
-    <card>
-      <name>Fred Bloggs</name>
-      <email>fb@example.net</email>
-    </card>
-  </addressBook>
-</v:validate>
-
-Validation returned: ${flag}
-
-Attempting to validate a wrong address
-
-<v:validate var="flag" verifier="${addressSchema}">
-  <addressBook>
-    <card>
-      <email>js@example.com</email>
-    </card>
-    <card>
-      <name>Fred Bloggs</name>
-    </card>
-    <card>
-      <wrongname>Fred Bloggs</wrongname>
-    </card>
-    <card>
-    </card>
-  </addressBook>
-</v:validate>
-
-Validation returned: ${flag}
-    
-</j:jelly>
diff --git a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/validateRNG.jelly b/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/validateRNG.jelly
deleted file mode 100644
index e97cf69..0000000
--- a/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/validateRNG.jelly
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:v="jelly:validate">
-
-Loading the verifier for Relax NG scheam
-
-<v:verifier uri="address.rng" var="addressSchema"/>
-
-Attempting to validate a valid address ...
-
-<v:validate var="flag" verifier="${addressSchema}">
-  <addressBook>
-    <card>
-      <name>John Smith</name>
-      <email>js@example.com</email>
-    </card>
-    <card>
-      <name>Fred Bloggs</name>
-      <email>fb@example.net</email>
-    </card>
-  </addressBook>
-</v:validate>
-
-Validation returned: ${flag}
-
-Attempting to validate a wrong address
-
-<v:validate var="flag" verifier="${addressSchema}">
-  <addressBook>
-    <card>
-      <email>js@example.com</email>
-    </card>
-    <card>
-      <name>Fred Bloggs</name>
-    </card>
-    <card>
-      <wrongname>Fred Bloggs</wrongname>
-    </card>
-    <card>
-    </card>
-  </addressBook>
-</v:validate>
-
-Validation returned: ${flag}
-    
-</j:jelly>
diff --git a/jelly-tags/validate/xdocs/changes.xml b/jelly-tags/validate/xdocs/changes.xml
deleted file mode 100644
index 3bdfaaa..0000000
--- a/jelly-tags/validate/xdocs/changes.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-13"></release>
-  </body>
-</document>
diff --git a/jelly-tags/validate/xdocs/index.xml b/jelly-tags/validate/xdocs/index.xml
deleted file mode 100644
index c0bb6f0..0000000
--- a/jelly-tags/validate/xdocs/index.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>XML Validation Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A tag library for validating XML using various schema languages like DTD, XML Schema, 
-        Relax NG as well as Relax and TREX. This tag library uses the 
-        <a href="http://iso-relax.sourceforge.net/JARV/">JARV</a> API to perform the validation.
-        By default we use the 
-        <a href="http://wwws.sun.com/software/xml/developers/multischema/">MSV</a> 
-        library by Kohsuke Kawaguchi as the implementation of JARV.
-      </p>
-      <p>
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/validate/xdocs/navigation.xml b/jelly-tags/validate/xdocs/navigation.xml
deleted file mode 100644
index 3ef69a4..0000000
--- a/jelly-tags/validate/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="XML Validation Tag Library">
-
-  <title>XML Validation Tag Library</title>
-  
-  <body>
-    <menu name="XML Validation Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/velocity/.cvsignore b/jelly-tags/velocity/.cvsignore
deleted file mode 100644
index f4d31f7..0000000
--- a/jelly-tags/velocity/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.log
-target
-velocity.log
diff --git a/jelly-tags/velocity/build.xml b/jelly-tags/velocity/build.xml
deleted file mode 100644
index 646c2f7..0000000
--- a/jelly-tags/velocity/build.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2302-->
-<project default="jar" name="commons-jelly-tags-velocity" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-velocity-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-velocity 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.velocity.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/velocity-1.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/velocity/jars/velocity-1.3.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/velocity/maven.xml b/jelly-tags/velocity/maven.xml
deleted file mode 100644
index e7c4ace..0000000
--- a/jelly-tags/velocity/maven.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/velocity/project.properties b/jelly-tags/velocity/project.properties
deleted file mode 100644
index 39c1b61..0000000
--- a/jelly-tags/velocity/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/velocity/project.xml b/jelly-tags/velocity/project.xml
deleted file mode 100644
index 028b830..0000000
--- a/jelly-tags/velocity/project.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-velocity</id>
-  <name>commons-jelly-tags-velocity</name>
-  <currentVersion>1.0</currentVersion>
-  
-  <package>org.apache.commons.jelly.tags.velocity</package>
-
-  <description>
-      This is a Jelly interface for Velocity.
-  </description>
-  <shortDescription>Commons Jelly Velocity Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_VELOCITY-1_0</tag>
-    </version>
-  </versions>
-
-  <dependencies>
-
-    <!-- START for compilation -->
-    <dependency>
-      <id>velocity</id>
-      <version>1.3</version>
-      <url>http://jakarta.apache.org/velocity/</url>
-      <properties>
-        <gump.project>jakarta-velocity</gump.project>
-      </properties>
-    </dependency>
-
-    <!-- END for compilation -->
-
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/JellyContextAdapter.java b/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/JellyContextAdapter.java
deleted file mode 100644
index bfa857e..0000000
--- a/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/JellyContextAdapter.java
+++ /dev/null
@@ -1,173 +0,0 @@
-package org.apache.commons.jelly.tags.velocity;
-
-/*
- * Copyright 2001,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.Set;
-import java.util.HashSet;
-import java.util.HashMap;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.velocity.context.Context;
-
-/**
- * Adapts a JellyContext for use as a Velocity Context.  This context
- * can be used in either read-only or read-write mode.  When used as a
- * read-only adapter, items <tt>put</tt> or <tt>remove</tt>ed from the
- * Velocity context are not permitted to propogate to the JellyContext,
- * which is the default behavior.  The adapter can also be used in a
- * read-write mode.  This permits changes made by Velocity to propogate
- * to the JellyContext.
- *
- * @author <a href="mailto:pete-apache-dev@kazmier.com">Pete Kazmier</a>
- * @version $Id: JellyContextAdapter.java,v 1.4 2004/09/09 12:23:16 dion Exp $
- */
-public class JellyContextAdapter implements Context
-{
-    /** Flag to indicate read-only or read-write mode */
-    private boolean readOnly = true;
-
-    /** The JellyContext being adapted */
-    private JellyContext jellyContext;
-
-    /** The store for Velocity in the event the adpater is read-only */
-    private HashMap privateContext = new HashMap();
-
-    /**
-     * Constructor.
-     *
-     * @param jellyContext The JellyContext to adapt
-     */
-    public JellyContextAdapter( JellyContext jellyContext )
-    {
-        this.jellyContext = jellyContext;
-    }
-
-    /**
-     * Sets the read-only flag for this adapter.  If the read-only flag
-     * is set, changes to the Velocity Context will not be propogated to
-     * the JellyContext.  Turning the read-only flag off enables changes
-     * to propogate.
-     *
-     * @param readOnly If this parameter is <tt>true</tt>, the adapter
-     * becomes read-only.  Setting the parameter to <tt>false</tt> the
-     * adapter becomes read-write.
-     */
-    public void setReadOnly(boolean readOnly)
-    {
-        this.readOnly = readOnly;
-    }
-
-    /**
-     * Tests if the adapter is read-only.
-     *
-     * @return <tt>true</tt> if the adpater is read-only; otherwise
-     * returns <tt>false</tt>.
-     */
-    public boolean isReadOnly()
-    {
-        return readOnly;
-    }
-
-    public boolean containsKey( Object key )
-    {
-        if ( key == null )
-        {
-            return false;
-        }
-
-        if ( readOnly && privateContext.containsKey( key ) )
-        {
-            return true;
-        }
-
-        return jellyContext.getVariable( key.toString() ) != null ? true : false;
-    }
-
-    public Object get( String key )
-    {
-        if ( key == null )
-        {
-            return null;
-        }
-
-        if ( readOnly && privateContext.containsKey( key ) )
-        {
-            return privateContext.get( key );
-        }
-
-        return jellyContext.getVariable( key );
-    }
-
-    public Object[] getKeys()
-    {
-        Set keys = jellyContext.getVariables().keySet();
-
-        if ( readOnly )
-        {
-            HashSet combinedKeys = new HashSet( keys );
-            combinedKeys.addAll( privateContext.keySet() );
-            keys = combinedKeys;
-        }
-
-        return keys.toArray();
-    }
-
-    public Object put( String key, Object value )
-    {
-        Object oldValue;
-
-        if ( key == null || value == null )
-        {
-            return null;
-        }
-
-        if ( readOnly )
-        {
-            oldValue = privateContext.put( key, value );
-        }
-        else
-        {
-            oldValue = jellyContext.getVariable( key );
-            jellyContext.setVariable( key, value );
-        }
-
-        return oldValue;
-    }
-
-    public Object remove( Object key )
-    {
-        Object oldValue;
-
-        if ( key == null )
-        {
-            return null;
-        }
-
-        if ( readOnly )
-        {
-            oldValue = privateContext.remove( key );
-        }
-        else
-        {
-            oldValue = jellyContext.getVariable( key.toString() );
-            jellyContext.removeVariable( key.toString() );
-        }
-
-        return oldValue;
-    }
-}
-
diff --git a/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/MergeTag.java b/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/MergeTag.java
deleted file mode 100644
index 1603ca5..0000000
--- a/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/MergeTag.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package org.apache.commons.jelly.tags.velocity;
-
-/*
- * Copyright 2001,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.apache.velocity.exception.MethodInvocationException;
-import org.apache.velocity.exception.ParseErrorException;
-import org.apache.velocity.exception.ResourceNotFoundException;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-
-/**
- * A tag that uses Velocity to render a specified template with the
- * JellyContext storing the results in either a variable in the
- * JellyContext or in a specified file.
- *
- * @author <a href="mailto:pete-apache-dev@kazmier.com">Pete Kazmier</a>
- * @version $Id: MergeTag.java,v 1.4 2004/09/09 12:23:16 dion Exp $
- */
-public class MergeTag extends VelocityTagSupport
-{
-    private static final String ENCODING = "ISO-8859-1";
-
-    private String var;
-    private String name;
-    private String basedir;
-    private String template;
-    private String inputEncoding;
-    private String outputEncoding;
-    private boolean readOnly = true;
-
-    // -- Tag interface -----------------------------------------------------
-
-    public void doTag( final XMLOutput output ) throws JellyTagException
-    {
-        if ( basedir == null || template == null )
-        {
-            throw new JellyTagException(
-                    "This tag must define 'basedir' and 'template'" );
-        }
-
-        if ( name != null )
-        {
-            try {
-                Writer writer = new OutputStreamWriter(
-                        new FileOutputStream( name ),
-                        outputEncoding == null ? ENCODING : outputEncoding );
-                mergeTemplate( writer );
-                writer.close();
-            }
-            catch (IOException e) {
-                throw new JellyTagException(e);
-            }
-        }
-        else if ( var != null )
-        {
-            StringWriter writer = new StringWriter();
-            mergeTemplate( writer );
-            context.setVariable( var, writer.toString() );
-        }
-        else
-        {
-            throw new JellyTagException(
-                    "This tag must define either 'name' or 'var'" );
-        }
-    }
-
-    // -- Properties --------------------------------------------------------
-
-    /**
-     * Sets the var used to store the results of the merge.
-     *
-     * @param var The var to set in the JellyContext with the results of
-     * the merge.
-     */
-    public void setVar( String var )
-    {
-        this.var = var;
-    }
-
-    /**
-     * Sets the file name for the merged output.
-     *
-     * @param name The name of the output file that is used to store the
-     * results of the merge.
-     */
-    public void setName( String name )
-    {
-        this.name = name;
-    }
-
-    /**
-     * Sets the base directory used for loading of templates by the
-     * Velocity file resource loader.
-     *
-     * @param basedir The directory where templates can be located by
-     * the Velocity file resource loader.
-     */
-    public void setBasedir( String basedir )
-    {
-        this.basedir = basedir;
-    }
-
-    /**
-     * Sets the filename of the template used to merge with the
-     * JellyContext.
-     *
-     * @param template The filename of the template to be merged.
-     */
-    public void setTemplate( String template )
-    {
-        this.template = template;
-    }
-
-    /**
-     * Sets the read-only flag for this adapter which prevents
-     * modifications in the Velocity context from propogating to the
-     * JellyContext.
-     *
-     * @param readOnly <tt>true</tt> prevents modifications from
-     * propogating (the default), or <tt>false</tt> which permits
-     * modifications.
-     */
-    public void setReadOnly( boolean readOnly )
-    {
-        this.readOnly = readOnly;
-    }
-
-    /**
-     * Sets the output encoding mode which defaults to ISO-8859-1 used
-     * when storing the results of a merge in a file.
-     *
-     * @param encoding  The file encoding to use when writing the
-     * output.
-     */
-    public void setOutputEncoding( String encoding )
-    {
-        this.outputEncoding = encoding;
-    }
-
-    /**
-     * Sets the input encoding used in the specified template which
-     * defaults to ISO-8859-1.
-     *
-     * @param encoding  The encoding used in the template.
-     */
-    public void setInputEncoding( String encoding )
-    {
-        this.inputEncoding = encoding;
-    }
-
-    // -- Implementation ----------------------------------------------------
-
-    /**
-     * Merges the Velocity template with the Jelly context.
-     *
-     * @param writer The output writer used to write the merged results.
-     * @throws Exception If an exception occurs during the merge.
-     */
-    private void mergeTemplate( Writer writer ) throws JellyTagException
-    {
-        JellyContextAdapter adapter = new JellyContextAdapter( getContext() );
-        adapter.setReadOnly( readOnly );
-
-        try {
-            getVelocityEngine( basedir ).mergeTemplate(
-                template,
-                inputEncoding == null ? ENCODING : inputEncoding,
-                adapter,
-                writer );
-        }
-        catch (ResourceNotFoundException e) {
-            throw new JellyTagException(e);
-        }
-        catch (ParseErrorException e) {
-            throw new JellyTagException(e);
-        }
-        catch (MethodInvocationException e) {
-            throw new JellyTagException(e);
-        }
-        catch (Exception e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
-
diff --git a/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/VelocityTagLibrary.java b/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/VelocityTagLibrary.java
deleted file mode 100644
index d9451a5..0000000
--- a/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/VelocityTagLibrary.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.apache.commons.jelly.tags.velocity;
-
-/*
- * Copyright 2001,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.commons.jelly.TagLibrary;
-
-/**
- * Describes the Taglib. This class could be generated by XDoclet
- *
- * @author <a href="mailto:pete-apache-dev@kazmier.com">Pete Kazmier</a>
- * @version $Id: VelocityTagLibrary.java,v 1.3 2004/09/09 12:23:16 dion Exp $
- */
-public class VelocityTagLibrary extends TagLibrary
-{
-    public VelocityTagLibrary()
-    {
-        registerTag( "merge", MergeTag.class );
-    }
-}
diff --git a/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/VelocityTagSupport.java b/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/VelocityTagSupport.java
deleted file mode 100644
index 56a3e19..0000000
--- a/jelly-tags/velocity/src/java/org/apache/commons/jelly/tags/velocity/VelocityTagSupport.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.apache.commons.jelly.tags.velocity;
-
-/*
- * Copyright 2001,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.velocity.app.VelocityEngine;
-
-/**
- * Support methods for the Velocity tag library.  Currently this is only
- * used to get an instance of the VelocityEngine.  For each unique base
- * directory specified, a new VelocityEngine instance is stored in the
- * context (as the author hasn't figured out how to change the resource
- * loader of an already init'd VelocityEngine).
- *
- * @author <a href="mailto:pete-apache-dev@kazmier.com">Pete Kazmier</a>
- * @version $Id: VelocityTagSupport.java,v 1.4 2004/09/09 12:23:16 dion Exp $
- */
-public abstract class VelocityTagSupport extends TagSupport
-{
-    /** The VelocityEngine variable name in the JellyContext.  */
-    public static final String VELOCITY_ENGINE_VAR_NAME =
-            "org.apache.maven.jelly.tags.velocity.VelocityEngine";
-
-    /**
-     * Gets or creates a VelocityEngine if one doesn't already exist for
-     * the specified base directory.
-     *
-     * @return A VelocityEngine with a file resource loader configured
-     * for the specified base directory.
-     */
-    public VelocityEngine getVelocityEngine( String basedir ) throws JellyTagException
-    {
-        VelocityEngine ve = ( VelocityEngine ) getContext().getVariable(
-                keyName( basedir ) );
-
-        if ( ve == null )
-        {
-            ve = new VelocityEngine();
-            ve.setProperty( VelocityEngine.RUNTIME_LOG_LOGSYSTEM, this );
-            ve.setProperty( VelocityEngine.FILE_RESOURCE_LOADER_PATH, basedir );
-
-            try {
-                ve.init();
-            }
-            catch (Exception e) {
-                throw new JellyTagException(e);
-            }
-
-            getContext().setVariable( keyName( basedir ), ve );
-        }
-
-        return ve;
-    }
-
-    /**
-     * Constructs the name of the key used to reference the
-     * VelocityEngine for the specified base directory.
-     *
-     * @param basedir The base directory used by the VelocityEngine
-     * @return The key used to reference the VelocityEngine that has
-     * been initialized with the specified base directory.
-     */
-    private String keyName( String basedir )
-    {
-        return new StringBuffer()
-            .append( VELOCITY_ENGINE_VAR_NAME )
-            .append( '.' )
-            .append( basedir )
-            .toString();
-    }
-}
diff --git a/jelly-tags/velocity/src/test/org/apache/commons/jelly/tags/velocity/JellyContextAdapterTest.java b/jelly-tags/velocity/src/test/org/apache/commons/jelly/tags/velocity/JellyContextAdapterTest.java
deleted file mode 100644
index cbb9eb0..0000000
--- a/jelly-tags/velocity/src/test/org/apache/commons/jelly/tags/velocity/JellyContextAdapterTest.java
+++ /dev/null
@@ -1,295 +0,0 @@
-package org.apache.commons.jelly.tags.velocity;
-
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.Set;
-import java.util.HashSet;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.collections.CollectionUtils;
-
-/**
- * Unit test for <code>JellyContextAdapter</code>.
- *
- * @author <a href="mailto:pete-apache-dev@kazmier.com">Pete Kazmier</a>
- * @version $Id: JellyContextAdapterTest.java,v 1.3 2004/09/09 12:23:17 dion Exp $
- */
-public class JellyContextAdapterTest extends TestCase
-{
-    JellyContext jellyContext;
-    JellyContextAdapter adapter;
-
-    /**
-     * Create the test case
-     *
-     * @param testName name of the test case
-     */
-    public JellyContextAdapterTest( String testName )
-    {
-        super( testName );
-    }
-
-    /**
-     * @return the suite of tests being tested
-     */
-    public static Test suite()
-    {
-        return new TestSuite( JellyContextAdapterTest.class );
-    }
-
-    public void setUp()
-    {
-        jellyContext = new JellyContext();
-        adapter = new JellyContextAdapter( jellyContext );
-    }
-
-    /**
-     * Test the behavior of null keys.
-     */
-    public void testNullKey()
-    {
-        adapter.setReadOnly( false );
-        adapter.put( null, new Object() );
-
-        assertTrue( adapter.get( null ) == null );
-    }
-
-    /**
-     * Test the behavior of null values.
-     */
-    public void testNullValue()
-    {
-        adapter.setReadOnly( false );
-        adapter.put( "key", null );
-
-        assertTrue( adapter.get( "key" ) == null );
-    }
-
-    /**
-     * Test that items can be added and retrieved from a read-write
-     * adpater.  Also verify the key/value pair was actually inserted
-     * into the JellyContext.
-     */
-    public void testReadWritePut()
-    {
-        Object value = new Object();
-
-        adapter.setReadOnly( false );
-        adapter.put( "key", value );
-
-        assertTrue( "adapter: did not return the original value",
-                adapter.get( "key" ) == value );
-
-        assertTrue( "jellyContext: did not return the original value",
-                jellyContext.getVariable( "key" ) == value );
-    }
-
-    /**
-     * Test that items can be added and retrieved from a read-only
-     * adapter.  Also verify the key/value pair was not inserted into
-     * the JellyContext.
-     */
-    public void testReadOnlyPut()
-    {
-        Object value = new Object();
-
-        adapter.setReadOnly( true );
-        adapter.put( "key", value );
-
-        assertTrue( "adapter: did not return the original value",
-                adapter.get( "key" ) == value );
-
-        assertTrue( "jellyContext: must return null when adapter is readonly",
-                jellyContext.getVariable( "key" ) == null );
-    }
-
-    /**
-     * Test that items can be removed from a read-write context.  Also
-     * verify that the item is removed from the JellyContext.
-     */
-    public void testReadWriteRemove()
-    {
-        Object value = new Object();
-
-        adapter.setReadOnly( false );
-        adapter.put( "key", value );
-        Object oldValue = adapter.remove( "key" );
-
-        assertTrue( "Value returned from remove() is not the original",
-                value == oldValue );
-
-        assertTrue( "adapter: after removal of key, value should be null",
-                adapter.get( "key" ) == null );
-
-        assertTrue( "jellyContext: after removal of key, value should be null",
-                jellyContext.getVariable( "key" ) == null );
-
-        assertTrue( "Removal of non-existent key should return null",
-                adapter.remove( "non-existent key" ) == null );
-    }
-
-    /**
-     * Test that items can be removed from a read-only context.  Also
-     * verify that the JellyContext is not impacted by removal of keys.
-     */
-    public void testReadOnlyRemove()
-    {
-        Object value = new Object();
-
-        adapter.setReadOnly( true );
-        adapter.put( "key", value );
-
-        Object oldValue = adapter.remove( "key" );
-
-        assertTrue( "Value returned from remove() is not the original",
-                value == oldValue );
-
-        assertTrue( "adapter: after removal of key, value should be null",
-                adapter.get( "key" ) == null );
-
-        assertTrue( "jellyContext: value should not be affected.",
-                jellyContext.getVariable( "key" ) == null );
-
-        assertTrue( "Removal of non-existent key should return null",
-                adapter.remove( "non-existent key" ) == null );
-    }
-
-    /**
-     * Test that items can shadow or hide items in the JellyContext.
-     * Removal of a key in the private context will unveil the key in
-     * the JellyContext if it exists.
-     */
-    public void testReadOnlyShadowingRemove()
-    {
-        Object value1 = new Object();
-        Object value2 = new Object();
-
-        adapter.setReadOnly( true );
-        adapter.put( "key", value1 );
-        jellyContext.setVariable( "key", value2 );
-
-        assertTrue( "adapter: before removal of key, value should be 1",
-                adapter.get( "key" ) == value1 );
-
-        adapter.remove( "key" );
-
-        assertTrue( "adapter: after removal of key, value should be 2",
-                adapter.get( "key" ) == value2 );
-
-        assertTrue( "jellyContext: value should not be affected.",
-                jellyContext.getVariable( "key" ) == value2 );
-    }
-
-    /**
-     * Test the containsKey method in a read-write adapter.
-     */
-    public void testReadWriteContainsKey()
-    {
-        Object value1 = new Object();
-        Object value2 = new Object();
-
-        adapter.setReadOnly( false );
-        adapter.put( "key1", value1 );
-        jellyContext.setVariable( "key2", value2 );
-
-        assertTrue( "adapter: did not contain the key",
-                adapter.containsKey( "key1" ) );
-
-        assertTrue( "adapter: should contain the key",
-                adapter.containsKey( "key2" ) );
-
-        assertTrue( "jellyContext: did not contain the key",
-                jellyContext.getVariable( "key1" ) != null );
-    }
-
-    /**
-     * Test the containsKey method in a read-only adapter.
-     */
-    public void testReadOnlyContainsKey()
-    {
-        Object value1= new Object();
-        Object value2 = new Object();
-
-        adapter.setReadOnly( true );
-        adapter.put( "key1", value1 );
-        jellyContext.setVariable( "key2", value2 );
-
-        assertTrue( "adapter: did not contain the key",
-                adapter.containsKey( "key1" ) );
-
-        assertTrue( "adapter: should not contain the key",
-                adapter.containsKey( "key2" ) );
-
-        assertTrue( "jellyContext: should not contain the key",
-                jellyContext.getVariable( "key1" ) == null );
-    }
-
-    /**
-     * Test the getKeys method of a read-write adapter.
-     */
-    public void testReadWriteGetKeys()
-    {
-        Object value1 = new Object();
-        Object value2 = new Object();
-        Object value3 = new Object();
-
-        adapter.setReadOnly( false );
-        adapter.put( "key1", value1 );
-        adapter.put( "key2", value2 );
-        jellyContext.setVariable( "key3", value3 );
-
-        Set expectedKeys = new HashSet();
-        expectedKeys.add( "key1" );
-        expectedKeys.add( "key2" );
-        expectedKeys.add( "key3" );
-
-        Set actualKeys = new HashSet();
-        CollectionUtils.addAll(actualKeys, adapter.getKeys());
-
-        assertTrue( "adapter: does not contain the correct key set",
-                actualKeys.containsAll( expectedKeys ) );
-    }
-
-    /**
-     * Test the getKeys method of a read-only adapter.
-     */
-    public void testReadOnlyGetKeys()
-    {
-        Object value1 = new Object();
-        Object value2 = new Object();
-        Object value3 = new Object();
-
-        adapter.setReadOnly( true );
-        adapter.put( "key1", value1 );
-        adapter.put( "key2", value2 );
-        jellyContext.setVariable( "key3", value3 );
-
-        Set expectedKeys = new HashSet();
-        expectedKeys.add( "key1" );
-        expectedKeys.add( "key2" );
-
-        Set actualKeys = new HashSet();
-        CollectionUtils.addAll(actualKeys, adapter.getKeys());
-
-        assertTrue( "adapter: does not contain the correct key set",
-                actualKeys.containsAll( expectedKeys ) );
-    }
-}
diff --git a/jelly-tags/velocity/xdocs/changes.xml b/jelly-tags/velocity/xdocs/changes.xml
deleted file mode 100644
index 9f3e8e1..0000000
--- a/jelly-tags/velocity/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-10">
-      <action dev="dion" type="add">Initial Release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/velocity/xdocs/index.xml b/jelly-tags/velocity/xdocs/index.xml
deleted file mode 100644
index f19d112..0000000
--- a/jelly-tags/velocity/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>Velocity Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        A library for processing Velocity templates from within Jelly.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/velocity/xdocs/navigation.xml b/jelly-tags/velocity/xdocs/navigation.xml
deleted file mode 100644
index f75e966..0000000
--- a/jelly-tags/velocity/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="Velocity Tag Library">
-
-  <title>Velocity Tag Library</title>
-  
-  <body>
-    <menu name="Velocity Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/xml/.cvsignore b/jelly-tags/xml/.cvsignore
deleted file mode 100644
index bca2cda..0000000
--- a/jelly-tags/xml/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-target
-maven.log
-velocity.log
diff --git a/jelly-tags/xml/build.xml b/jelly-tags/xml/build.xml
deleted file mode 100644
index 0778ebc..0000000
--- a/jelly-tags/xml/build.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-xml" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-xml-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-xml 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.xml.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xalan-2.3.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xalan/jars/xalan-2.3.1.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/xml/maven.xml b/jelly-tags/xml/maven.xml
deleted file mode 100644
index e7c4ace..0000000
--- a/jelly-tags/xml/maven.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/xml/project.properties b/jelly-tags/xml/project.properties
deleted file mode 100644
index 39c1b61..0000000
--- a/jelly-tags/xml/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/xml/project.xml b/jelly-tags/xml/project.xml
deleted file mode 100644
index cfc28f6..0000000
--- a/jelly-tags/xml/project.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-xml</id>
-  <name>commons-jelly-tags-xml</name>
-  <currentVersion>1.1-SNAPSHOT</currentVersion>
-
-  <package>org.apache.commons.jelly.tags.xml</package>
-
-  <description>
-       The Jelly XML Tag Library
-  </description>
-  <shortDescription>Commons Jelly XML Tag Library</shortDescription>
-  
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS_JELLY_XML-1_0</tag>
-    </version>
-  </versions>
-    
-  <dependencies>
-    <!-- run time / in testing-->
-    <dependency>
-      <id>xalan</id>
-      <version>2.3.1</version>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/libs/junit/</url>
-    </dependency>
-
-  </dependencies>
-  
-</project>
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/AttributeTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/AttributeTag.java
deleted file mode 100644
index 60fb50a..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/AttributeTag.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/** Adds an XML attribute to the parent element tag like
-  * the <code>&lt;xsl:attribute&gt;</code> tag.
-  *
-  * @author James Strachan
-  * @version $Revision: 1.6 $
-  */
-public class AttributeTag extends TagSupport {
-
-    /** the name of the attribute. */
-    private String name;
-
-
-    public AttributeTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        ElementTag tag = (ElementTag) findAncestorWithClass( ElementTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException( "<attribute> tag must be enclosed inside an <element> tag" );
-        }
-        tag.setAttributeValue( getName(), getBodyText( false ) );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the name of the attribute.
-     */
-    public String getName() {
-        return name;
-    }
-    /**
-     * Sets the name of the attribute
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/CommentTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/CommentTag.java
deleted file mode 100644
index 43c091f..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/CommentTag.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-
-import org.xml.sax.SAXException;
-
-/**
- * A tag which outputs a comment to the underlying XMLOutput based on the
- * contents of its body.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class CommentTag extends XPathTagSupport {
-
-    private String text;
-
-    public CommentTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        String text = getText();
-        if (text == null) {
-            text = getBodyText(false);
-        }
-        char[] ch = text.toCharArray();
-        try {
-            output.comment(ch, 0, ch.length);
-        } catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * Returns the text.
-     * @return String
-     */
-    public String getText() {
-        return text;
-    }
-
-    /**
-     * Sets the comment text. If no text is specified then the body of the tag
-     * is used instead.
-     *
-     * @param text The comment text to use
-     */
-    public void setText(String text) {
-        this.text = text;
-    }
-
-}
\ No newline at end of file
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/CopyOfTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/CopyOfTag.java
deleted file mode 100644
index 44de612..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/CopyOfTag.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-import org.dom4j.Node;
-import org.dom4j.io.SAXWriter;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.xml.sax.SAXException;
-
-/** A tag which performs a copy-of operation like the XSLT tag
-  *
-  * @author James Strachan
-  */
-public class CopyOfTag extends XPathTagSupport {
-
-    /** The XPath expression to evaluate. */
-    private XPath select;
-
-    /** Should we output lexical XML data like comments
-     * or entity names?
-     */
-    private boolean lexical;
-
-    public CopyOfTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        Object xpathContext = getXPathContext();
-
-        if (select == null) {
-            throw new MissingAttributeException( "select" );
-        }
-
-        SAXWriter saxWriter;
-
-        if (lexical) {
-            saxWriter = new SAXWriter(output, output);
-        } else {
-            saxWriter = new SAXWriter(output);
-        }
-
-        Object obj;
-        try {
-            obj = select.evaluate(xpathContext);
-        } catch (JaxenException e) {
-            throw new JellyTagException("Failed to evaluate XPath expression", e);
-        }
-
-        try {
-            if (obj instanceof List) {
-                List nodes = (List) obj;
-                for (Iterator iter = nodes.iterator(); iter.hasNext(); ) {
-                    Object object = iter.next();
-                    if ( object instanceof Node ) {
-                        saxWriter.write( (Node) object );
-                    }
-                    else if (object != null ) {
-                        saxWriter.write( object.toString() );
-                    }
-                }
-            } else if (obj instanceof Node) {
-                saxWriter.write( (Node) obj );
-            } else {
-                saxWriter.write( obj.toString() );
-            }
-        } catch (SAXException e) {
-            throw new JellyTagException("Failed to write XML output.", e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the XPath expression to evaluate. */
-    public void setSelect(XPath select) {
-        this.select = select;
-    }
-
-    public void setLexical(boolean lexical) {
-        this.lexical = lexical;
-    }
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/CopyTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/CopyTag.java
deleted file mode 100644
index 0c3db81..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/CopyTag.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-import org.dom4j.Element;
-import org.dom4j.io.SAXWriter;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.xml.sax.SAXException;
-
-/**
- * A tag which performs a copy operation like the XSLT tag,
- * performing a shallow copy of the element and its attributes but no content.
- *
- * @author James Strachan
- */
-public class CopyTag extends XPathTagSupport {
-
-    /** The XPath expression to evaluate. */
-    private XPath select;
-
-    /** Should we output lexical XML data like entity names?
-     */
-    private boolean lexical;
-
-    public CopyTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Object xpathContext = getXPathContext();
-
-        Object node = xpathContext;
-
-        try {
-            if (select != null) {
-                node = select.selectSingleNode(xpathContext);
-            }
-
-            if ( node instanceof Element ) {
-                Element element = (Element) node;
-
-                SAXWriter saxWriter;
-
-                if (lexical) {
-                    saxWriter = new SAXWriter(output, output);
-                } else {
-                    saxWriter = new SAXWriter(output);
-                }
-
-                saxWriter.writeOpen(element);
-                invokeBody(output);
-                saxWriter.writeClose(element);
-            }
-            else {
-                invokeBody(output);
-            }
-        }
-        catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-        catch (JaxenException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the XPath expression to evaluate. */
-    public void setSelect(XPath select) {
-        this.select = select;
-    }
-    public void setLexical(boolean lexical) {
-        this.lexical = lexical;
-    }
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/DoctypeTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/DoctypeTag.java
deleted file mode 100644
index 5532f00..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/DoctypeTag.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-
-import org.xml.sax.SAXException;
-
-/**
- * A tag which outputs a DOCTYPE declaration to the current XML output pipe.
- * Note that there should only be a single DOCTYPE declaration in any XML stream and
- * it should occur before any element content.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class DoctypeTag extends XPathTagSupport {
-
-    private String name;
-    private String publicId;
-    private String systemId;
-
-    public DoctypeTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (name == null) {
-            throw new MissingAttributeException( "name" );
-        }
-
-        try {
-            output.startDTD(name, publicId, systemId);
-            invokeBody(output);
-            output.endDTD();
-        } catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * Returns the name.
-     * @return String
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Returns the publicId.
-     * @return String
-     */
-    public String getPublicId() {
-        return publicId;
-    }
-
-    /**
-     * Returns the systemId.
-     * @return String
-     */
-    public String getSystemId() {
-        return systemId;
-    }
-
-    /**
-     * Sets the document type name of the DOCTYPE
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Sets the declared public identifier for DTD
-     */
-    public void setPublicId(String publicId) {
-        this.publicId = publicId;
-    }
-
-    /**
-     * Sets the declared system identifier for the DTD
-     */
-    public void setSystemId(String systemId) {
-        this.systemId = systemId;
-    }
-
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ElementTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ElementTag.java
deleted file mode 100644
index b78f6f7..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ElementTag.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/** A tag to produce an XML element which can contain other attributes
-  * or elements like the <code>&lt;xsl:element&gt;</code> tag.
-  *
-  * @author James Strachan
-  * @version $Revision: 1.5 $
-  */
-public class ElementTag extends TagSupport {
-
-    /** The namespace URI */
-    private String namespace;
-
-    /** The qualified name */
-    private String name;
-
-    /** The XML Attributes */
-    private AttributesImpl attributes = new AttributesImpl();
-
-    /** flag set if attributes are output */
-    private boolean outputAttributes;
-
-    public ElementTag() {
-    }
-
-    /**
-     * Sets the attribute of the given name to the specified value.
-     *
-     * @param name of the attribute
-     * @param value of the attribute
-     * @throws JellyException if the start element has already been output.
-     *   Attributes must be set on the outer element before any content
-     *   (child elements or text) is output
-     */
-    public void setAttributeValue( String name, String value ) throws JellyTagException {
-        if (outputAttributes) {
-            throw new JellyTagException(
-                "Cannot set the value of attribute: "
-                + name + " as we have already output the startElement() SAX event"
-            );
-        }
-
-        // ### we'll assume that all attributes are in no namespace!
-        // ### this is severely limiting!
-        // ### we should be namespace aware
-        int index = attributes.getIndex("", name);
-        if (index >= 0) {
-            attributes.removeAttribute(index);
-        }
-        // treat null values as no attribute
-        if (value != null) {
-            attributes.addAttribute("", name, name, "CDATA", value);
-        }
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        int idx = name.indexOf(':');
-        final String localName = (idx >= 0)
-            ? name.substring(idx + 1)
-            : name;
-
-        outputAttributes = false;
-
-        XMLOutput newOutput = new XMLOutput(output) {
-
-            // add an initialize hook to the core content-generating methods
-
-            public void startElement(
-                String uri,
-                String localName,
-                String qName,
-                Attributes atts)
-                throws SAXException {
-                initialize();
-                super.startElement(uri, localName, qName, atts);
-            }
-
-            public void endElement(String uri, String localName, String qName)
-                throws SAXException {
-                initialize();
-                super.endElement(uri, localName, qName);
-            }
-
-            public void characters(char ch[], int start, int length) throws SAXException {
-                initialize();
-                super.characters(ch, start, length);
-            }
-
-            public void ignorableWhitespace(char ch[], int start, int length)
-                throws SAXException {
-                initialize();
-                super.ignorableWhitespace(ch, start, length);
-            }
-            public void processingInstruction(String target, String data)
-                throws SAXException {
-                initialize();
-                super.processingInstruction(target, data);
-            }
-
-            /**
-             * Ensure that the outer start element is generated
-             * before any content is output
-             */
-            protected void initialize() throws SAXException {
-                if (!outputAttributes) {
-                    super.startElement(namespace, localName, name, attributes);
-                    outputAttributes = true;
-                }
-            }
-        };
-
-        invokeBody(newOutput);
-
-        try {
-            if (!outputAttributes) {
-                output.startElement(namespace, localName, name, attributes);
-                outputAttributes = true;
-            }
-
-            output.endElement(namespace, localName, name);
-            attributes.clear();
-        } catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the qualified name of the element
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the qualified name of the element
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * @return the namespace URI of the element
-     */
-    public String getURI() {
-        return namespace;
-    }
-
-    /**
-     * Sets the namespace URI of the element
-     */
-    public void setURI(String namespace) {
-        this.namespace = namespace;
-    }
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ExprTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ExprTag.java
deleted file mode 100644
index b590e52..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ExprTag.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.xml.sax.SAXException;
-
-/** A tag which performs a string XPath expression; similar to &lt;xsl:value-of&gt;
-  * in XSLT
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class ExprTag extends XPathTagSupport {
-
-    /** The XPath expression to evaluate. */
-    private XPath select;
-
-    public ExprTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        Object xpathContext = getXPathContext();
-
-        if (select == null) {
-            throw new MissingAttributeException( "select" );
-        }
-
-        try {
-            String text = select.stringValueOf(xpathContext);
-            if ( text != null ) {
-                output.write(text);
-            }
-        }
-        catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-        catch (JaxenException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the XPath expression to evaluate. */
-    public void setSelect(XPath select) {
-        this.select = select;
-    }
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ForEachTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ForEachTag.java
deleted file mode 100644
index 7b9fbe3..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ForEachTag.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Collections;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathComparator;
-import org.apache.commons.jelly.xpath.XPathSource;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-
-import org.jaxen.XPath;
-import org.jaxen.JaxenException;
-
-/** A tag which performs an iteration over the results of an XPath expression
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class ForEachTag extends XPathTagSupport implements XPathSource {
-
-    /** Holds the XPath selector. */
-    private XPath select;
-
-    /** Xpath comparator for sorting */
-    private XPathComparator xpCmp = null;
-
-    /** If specified then the current item iterated through will be defined
-      * as the given variable name. */
-    private String var;
-
-    /** The current iteration value */
-    private Object iterationValue;
-
-
-    public ForEachTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if (select != null) {
-            List nodes = null;
-            try {
-                nodes = select.selectNodes( getXPathContext() );
-            }
-            catch (JaxenException e) {
-                throw new JellyTagException(e);
-            }
-
-            // sort the list if xpCmp is set.
-            if (xpCmp != null && (xpCmp.getXpath() != null)) {
-                Collections.sort(nodes, xpCmp);
-            }
-
-            Iterator iter = nodes.iterator();
-            while (iter.hasNext()) {
-                iterationValue = iter.next();
-                if (var != null) {
-                    context.setVariable(var, iterationValue);
-                }
-                invokeBody(output);
-            }
-        }
-    }
-
-    // XPathSource interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the current XPath iteration value
-     *  so that any other XPath aware child tags to use
-     */
-    public Object getXPathSource() {
-        return iterationValue;
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the XPath selection expression
-      */
-    public void setSelect(XPath select) {
-        this.select = select;
-    }
-
-    /** Sets the variable name to export for the item being iterated over
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /** Sets the xpath expression to use to sort selected nodes.
-     */
-    public void setSort(XPath sortXPath) throws JaxenException {
-        if (xpCmp == null) xpCmp = new XPathComparator();
-        xpCmp.setXpath(sortXPath);
-    }
-
-    /**
-     * Set whether to sort ascending or descending.
-     */
-    public void setDescending(boolean descending) {
-        if (xpCmp == null) xpCmp = new XPathComparator();
-        xpCmp.setDescending(descending);
-    }
-
-    /*
-     * Override superclass so method can be access by IfTag
-     */
-    protected Object getXPathContext() {
-        return super.getXPathContext();
-    }
-
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/IfTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/IfTag.java
deleted file mode 100644
index b8a1461..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/IfTag.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-
-/**
- * Evaluates the XPath expression to be a boolean and only evaluates the body
- * if the expression is true.
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class IfTag extends XPathTagSupport {
-
-    /** The XPath expression to evaluate. */
-    private XPath select;
-
-    public IfTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (select == null) {
-            throw new MissingAttributeException( "select" );
-        }
-
-        Object xpathContext = getXPathContext();
-
-        try {
-            if ( select.booleanValueOf(xpathContext) ) {
-                invokeBody(output);
-            }
-        } catch (JaxenException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** Sets the XPath expression to evaluate. */
-    public void setSelect(XPath select) {
-        this.select = select;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected Object getXPathContext() {
-        ForEachTag tag = (ForEachTag) findAncestorWithClass( ForEachTag.class );
-        if ( tag != null ) {
-            return tag.getXPathContext();
-        }
-        return null;
-    }
-
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ParamTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ParamTag.java
deleted file mode 100644
index 592af9b..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ParamTag.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/** Sets a parameter in the parent transform tag
-  *
-  * @author Robert Leftwich
-  * @version $Revision: 1.5 $
-  */
-public class ParamTag extends TagSupport {
-
-    /** the name of the attribute. */
-    private String name;
-
-    /** the value of the attribute. */
-    private Object value;
-
-
-    public ParamTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        TransformTag tag = (TransformTag) this.findAncestorWithClass( TransformTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException( "<param> tag must be enclosed inside a <transform> tag" );
-        }
-        Object value = this.getValue();
-        if (value == null) {
-            value = getBodyText();
-        }
-
-        tag.setParameterValue( getName(), value );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the name of the attribute.
-     */
-    public String getName() {
-        return name;
-    }
-    /**
-     * Sets the name of the attribute
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * @return the value of the attribute.
-     */
-    public Object getValue() {
-        return value;
-    }
-    /**
-     * Sets the value of the attribute
-     */
-    public void setValue(Object value) {
-        this.value = value;
-    }
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ParseTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ParseTag.java
deleted file mode 100644
index 8c25dd3..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ParseTag.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.Document;
-import org.dom4j.io.SAXReader;
-
-/** A tag which parses some XML and defines a variable with the parsed Document.
-  * The XML can either be specified as its body or can be passed in via the
-  * xml property which can be a Reader, InputStream, URL or String URI.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.7 $
-  */
-public class ParseTag extends ParseTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ParseTag.class);
-
-    /** The xml to parse, either a String URI, a Reader or InputStream */
-    private Object xml;
-
-    // Optional properties not defined in JSTL
-    /** whether XML validation is enabled or disabled */
-    private boolean validate;
-
-    public ParseTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (getVar() == null) {
-            throw new MissingAttributeException("The var attribute cannot be null");
-        }
-
-        Document document = getXmlDocument(output);
-        context.setVariable(getVar(), document);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Gets the source of the XML which is either a String URI, Reader or InputStream */
-    public Object getXml() {
-        return this.xml;
-    }
-
-    /** Sets the source of the XML which is either a String URI, a File, Reader or InputStream */
-    public void setXml(Object xml) {
-        this.xml = xml;
-    }
-
-    /** @return whether XML validation is enabled or disabled */
-    public boolean getValidate() {
-        return validate;
-    }
-
-    /** Sets whether XML validation is enabled or disabled */
-    public void setValidate(boolean validate) {
-        this.validate = validate;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new SAXReader
-     */
-    protected SAXReader createSAXReader() {
-        return new SAXReader(validate);
-    }
-
-    protected Document getXmlDocument(XMLOutput output) throws JellyTagException {
-        Document document = null;
-        Object xmlObj = this.getXml();
-
-        if (xmlObj == null) {
-            String text = getText();
-            if (text != null) {
-                document = parseText(text);
-            }
-            else {
-                document = parseBody(output);
-            }
-        }
-        else {
-            document = parse(xmlObj);
-        }
-
-        return document;
-    }
-
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ParseTagSupport.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ParseTagSupport.java
deleted file mode 100644
index cda6057..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/ParseTagSupport.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.StringReader;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.io.SAXContentHandler;
-import org.dom4j.io.SAXReader;
-import org.xml.sax.SAXException;
-
-/**
- * An abstract base class for any tag which parsers its body as XML.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public abstract class ParseTagSupport extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ParseTagSupport.class);
-
-    /** The variable that will be generated for the document */
-    private String var;
-
-    /** The markup text to be parsed */
-    private String text;
-
-    /** The SAXReader used to parser the document */
-    private SAXReader saxReader;
-
-    public ParseTagSupport() {
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** The variable name that will be used for the Document variable created
-     */
-    public String getVar() {
-        return var;
-    }
-
-    /** Sets the variable name that will be used for the Document variable created
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Returns the text to be parsed
-     * @return String
-     */
-    public String getText() {
-        return text;
-    }
-
-    /**
-     * Sets the text to be parsed by this parser
-     * @param text The text to be parsed by this parser
-     */
-    public void setText(String text) {
-        this.text = text;
-    }
-
-
-    /** @return the SAXReader used for parsing, creating one lazily if need be  */
-    public SAXReader getSAXReader() throws SAXException {
-        if (saxReader == null) {
-            saxReader = createSAXReader();
-        }
-        return saxReader;
-    }
-
-    /** Sets the SAXReader used for parsing */
-    public void setSAXReader(SAXReader saxReader) {
-        this.saxReader = saxReader;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new SAXReader
-     */
-    protected abstract SAXReader createSAXReader() throws SAXException;
-
-
-    /**
-     * Parses the body of this tag and returns the parsed document
-     */
-    protected Document parseBody(XMLOutput output) throws JellyTagException {
-        SAXContentHandler handler = new SAXContentHandler();
-        XMLOutput newOutput = new XMLOutput(handler);
-
-        try {
-            handler.startDocument();
-            invokeBody( newOutput);
-            handler.endDocument();
-            return handler.getDocument();
-        } catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    /**
-     * Parses the give piece of text as being markup
-     */
-    protected Document parseText(String text) throws JellyTagException {
-        if ( log.isDebugEnabled() ) {
-            log.debug( "About to parse: " + text );
-        }
-
-        try {
-            return getSAXReader().read( new StringReader( text ) );
-        }
-        catch (DocumentException e) {
-            throw new JellyTagException(e);
-        }
-        catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    /**
-     * Parses the given source
-     */
-    protected Document parse(Object source) throws JellyTagException {
-        // #### we should allow parsing to output XML events to
-        // the output if no var is specified
-
-
-        try {
-            if (source instanceof String) {
-                String uri = (String) source;
-                source = context.getResource(uri);
-            }
-
-            if (source instanceof URL) {
-                return getSAXReader().read((URL) source);
-            }
-            else if (source instanceof File) {
-                return getSAXReader().read((File) source);
-            }
-            else if (source instanceof Reader) {
-                return getSAXReader().read((Reader) source);
-            }
-            else if (source instanceof InputStream) {
-                return getSAXReader().read((InputStream) source);
-            }
-            else {
-                throw new IllegalArgumentException(
-                    "Invalid source argument. Must be a String, Reader, InputStream or URL."
-                        + " Was type; "
-                        + source.getClass().getName()
-                        + " with value: "
-                        + source);
-            }
-        }
-        catch (DocumentException e) {
-            throw new JellyTagException(e);
-        }
-        catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-        catch (MalformedURLException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/SetTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/SetTag.java
deleted file mode 100644
index c331b35..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/SetTag.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.xpath.XPathComparator;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.dom4j.Node;
-
-import org.jaxen.XPath;
-import org.jaxen.JaxenException;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collections;
-
-/** A tag which defines a variable from an XPath expression.
-  * This function creates a variable of type {@link List} or {@link org.dom4j.Node}
-  * (for example {@link org.dom4j.Element} or {@link org.dom4j.Attribute}).
-  * Thus, the variable created from xml:set can be
-  * used from the other xml library functions.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.12 $
-  */
-public class SetTag extends XPathTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(SetTag.class);
-
-    /** The variable name to export. */
-    private String var;
-
-    /** The XPath expression to evaluate. */
-    private XPath select;
-
-    /** Xpath comparator for sorting */
-    private XPathComparator xpCmp = null;
-
-    private Boolean single = null;
-    
-    private Boolean asString = null;
-
-    public SetTag() {
-
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (var == null) {
-            throw new MissingAttributeException( "var" );
-        }
-        if (select == null) {
-            throw new MissingAttributeException( "select" );
-        }
-
-        Object xpathContext = getXPathContext();
-        Object value = null;
-        try {
-            if(single!=null && single.booleanValue()==true) {
-                value = select.selectSingleNode(xpathContext);
-            } else {
-                value = select.evaluate(xpathContext);
-            }
-        }
-        catch (JaxenException e) {
-            throw new JellyTagException(e);
-        }
-
-        if (value instanceof List) {
-            // sort the list if xpCmp is set.
-            if (xpCmp != null && (xpCmp.getXpath() != null)) {
-                Collections.sort((List)value, xpCmp);
-            }
-        }
-        if (single!=null) {
-            if (single.booleanValue()==true) {
-                if(value instanceof List) {
-                    List l = (List) value;
-                    if (l.size()==0)
-                        value=null;
-                    else
-                        value=l.get(0);
-                }
-                if(asString!=null && asString.booleanValue() && value instanceof Node)
-                    value = ((Node) value).getStringValue();
-            } else { // single == false
-                if(! (value instanceof List) ) {
-                    List l = null;
-                    if (value==null) {
-                        l = new ArrayList(0);
-                    } else {
-                        l = new ArrayList(1);
-                        l.add(value);
-                    }
-                    value = l;
-                }
-            }
-        }
-
-        //log.info( "Evaluated xpath: " + select + " as: " + value + " of type: " + value.getClass().getName() );
-
-        context.setVariable(var, value);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** Sets the variable name to define for this expression
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /** Sets the XPath expression to evaluate. */
-    public void setSelect(XPath select) {
-        this.select = select;
-    }
-
-    /** If set to true will only take the first element matching.
-        If set to false, guarantees that a list is returned.
-        It then guarantees that the result is of type
-        {@link org.dom4j.Node} thereby making sure that, for example,
-        when an element is selected, one can directly call such methods
-        as setAttribute.
-        */
-    public void setSingle(boolean single) {
-        this.single = new Boolean(single);
-    }
-    
-    /** If set to true, will ensure that the (XPath) text-value
-      * of the selected node is taken instead of the node
-      * itself.
-      * This ensures that, thereafter, string manipulations
-      * can be performed on the result.
-      * Setting this attribute to true will also set the single
-      * attribute to true.
-      */
-    public void setAsString(boolean asString) {
-        if(asString)
-            this.single = new Boolean(asString);
-        this.asString = new Boolean(asString);
-    }
-
-
-    /** Sets the xpath expression to use to sort selected nodes.
-     *  Ignored if single is true.
-     */
-    public void setSort(XPath sortXPath) throws JaxenException {
-        if (xpCmp == null) xpCmp = new XPathComparator();
-        xpCmp.setXpath(sortXPath);
-    }
-
-    /**
-     * Set whether to sort ascending or descending.
-     */
-    public void setDescending(boolean descending) {
-        if (xpCmp == null) xpCmp = new XPathComparator();
-        xpCmp.setDescending(descending);
-    }
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/SortTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/SortTag.java
deleted file mode 100644
index aabe621..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/SortTag.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.xpath.XPathComparator;
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-import org.jaxen.XPath;
-import org.jaxen.JaxenException;
-
-import java.util.List;
-import java.util.Collections;
-
-/** A tag that can sort a list of xml nodes via an xpath expression.
-  *
-  * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
-  * @version $Id: SortTag.java,v 1.5 2004/09/09 12:24:40 dion Exp $
-  */
-
-public class SortTag extends XPathTagSupport {
-
-    /** The list to sort */
-    private List list = null;
-
-    /** Xpath comparator for sorting */
-    private XPathComparator xpCmp = null;
-
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (xpCmp == null) {
-            throw new MissingAttributeException( "xpCmp" );
-        }
-        if (list == null) {
-            throw new MissingAttributeException( "list" );
-        }
-
-        Collections.sort(list, xpCmp);
-    }
-
-    /** Set the list to sort. */
-    public void setList(List list) {
-        this.list = list;
-    }
-
-    /** Sets the xpath expression to use to sort selected nodes.
-     */
-    public void setSort(XPath sortXPath) throws JaxenException {
-        if (xpCmp == null) xpCmp = new XPathComparator();
-        xpCmp.setXpath(sortXPath);
-    }
-
-    /**
-     * Set whether to sort ascending or descending.
-     */
-    public void setDescending(boolean descending) {
-        if (xpCmp == null) xpCmp = new XPathComparator();
-        xpCmp.setDescending(descending);
-    }
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/TransformTag.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/TransformTag.java
deleted file mode 100644
index 71d3908..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/TransformTag.java
+++ /dev/null
@@ -1,687 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.URIResolver;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.sax.SAXTransformerFactory;
-import javax.xml.transform.sax.TransformerHandler;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.ScriptBlock;
-import org.apache.commons.jelly.impl.StaticTagScript;
-import org.apache.commons.jelly.impl.TagScript;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.Document;
-import org.dom4j.io.DocumentResult;
-import org.dom4j.io.DocumentSource;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-/** A tag which parses some XML, applies an xslt transform to it
-  * and defines a variable with the transformed Document.
-  * The XML can either be specified as its body or can be passed in via the
-  * xml property which can be a Reader, InputStream, URL or String URI.
-  *
-  * The XSL can be passed in via the
-  * xslt property which can be a Reader, InputStream, URL or String URI.
-  *
-  * @author Robert Leftwich
-  * @version $Revision: 1.8 $
-  */
-public class TransformTag extends ParseTag {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TransformTag.class);
-
-    /** Propert name for lexical handler */
-    private static final String LEXICAL_HANDLER_PROPERTY =
-        "http://xml.org/sax/properties/lexical-handler";
-
-    /** The xslt to parse, either a String URI, a Reader or InputStream */
-    private Object xslt;
-
-    /** The xsl transformer factory */
-    private SAXTransformerFactory tf;
-
-    /** the transformer handler, doing the real work */
-    private TransformerHandler transformerHandler;
-
-    /**
-     * Constructor for TransformTag.
-     */
-    public TransformTag() {
-        super();
-        this.tf = (SAXTransformerFactory) TransformerFactory.newInstance();
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Process this tag instance
-     *
-     * @param output The pipeline for xml events
-     * @throws Exception - when required attributes are missing
-     */
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-
-        if (null == this.getXslt()) {
-            throw new MissingAttributeException("The xslt attribute cannot be null");
-        }
-
-        // set a resolver to locate uri
-        this.tf.setURIResolver(createURIResolver());
-
-        try {
-            this.transformerHandler =
-                this.tf.newTransformerHandler(this.getObjAsSAXSource(this.getXslt()));
-        }
-        catch (TransformerConfigurationException e) {
-            throw new JellyTagException(e);
-        }
-
-        // run any nested param tags
-        this.doNestedParamTag(output);
-
-        try {
-            // get a reader to provide SAX events to transformer
-            XMLReader xmlReader = this.createXMLReader();
-            xmlReader.setContentHandler(this.transformerHandler);
-            xmlReader.setProperty(LEXICAL_HANDLER_PROPERTY, this.transformerHandler);
-
-            // handle result differently, depending on if var is specified
-            String varName = this.getVar();
-            if (null == varName) {
-                // pass the result of the transform out as SAX events
-                this.transformerHandler.setResult(this.createSAXResult(output));
-                xmlReader.parse(this.getXMLInputSource());
-            }
-            else {
-                // pass the result of the transform out as a document
-                DocumentResult result = new DocumentResult();
-                this.transformerHandler.setResult(result);
-                xmlReader.parse(this.getXMLInputSource());
-
-                // output the result as a variable
-                Document transformedDoc = result.getDocument();
-                this.context.setVariable(varName, transformedDoc);
-            }
-        }
-        catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-        catch (IOException e) {
-            throw new JellyTagException(e);
-        }
-
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Gets the source of the XSL which is either a String URI, Reader or
-     * InputStream
-     *
-     * @returns xslt    The source of the xslt
-     */
-    public Object getXslt() {
-        return this.xslt;
-    }
-
-    /**
-     * Sets the source of the XSL which is either a String URI, Reader or
-     * InputStream
-     *
-     * @param xslt    The source of the xslt
-     */
-    public void setXslt(Object xslt) {
-        this.xslt = xslt;
-    }
-
-    public void setParameterValue(String name, Object value) {
-        this.transformerHandler.getTransformer().setParameter(name, value);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Creates a new URI Resolver so that URIs inside the XSLT document can be
-     * resolved using the JellyContext
-     *
-     * @return a URI Resolver for the JellyContext
-     */
-    protected URIResolver createURIResolver() {
-        return new URIResolver() {
-            public Source resolve(String href, String base)
-                throws TransformerException {
-
-                if (log.isDebugEnabled() ) {
-                    log.debug( "base: " + base + " href: " + href );
-                }
-
-                // pass if we don't have a systemId
-                if (null == href)
-                    return null;
-
-                // @todo
-                // #### this is a pretty simplistic implementation.
-                // #### we should really handle this better such that if
-                // #### base is specified as an absolute URL
-                // #### we trim the end off it and append href
-                return new StreamSource(context.getResourceAsStream(href));
-            }
-        };
-    }
-
-    /**
-     * Factory method to create a new SAXResult for the given
-     * XMLOutput so that the output of an XSLT transform will go
-     * directly into the XMLOutput that we are given.
-     *
-     * @param output The destination of the transform output
-     * @return A SAXResult for the transfrom output
-     */
-    protected Result createSAXResult(XMLOutput output) {
-        SAXResult result = new SAXResult(output);
-        result.setLexicalHandler(output);
-        return result;
-    }
-
-    /**
-     * Factory method to create a new XMLReader for this tag
-     * so that the input of the XSLT transform comes from
-     * either the xml var, the nested tag or the tag body.
-     *
-     * @return XMLReader for the transform input
-     * @throws SAXException
-     *             If the value of the "org.xml.sax.driver" system property
-     *             is null, or if the class cannot be loaded and instantiated.
-     */
-    protected XMLReader createXMLReader() throws SAXException {
-        XMLReader xmlReader = null;
-        Object xmlReaderSourceObj = this.getXml();
-        // if no xml source specified then get from body
-        // otherwise convert it to a SAX source
-        if (null == xmlReaderSourceObj) {
-            xmlReader = new TagBodyXMLReader(this);
-        }
-        else {
-            xmlReader = XMLReaderFactory.createXMLReader();
-        }
-
-        return xmlReader;
-    }
-
-    /**
-     * Helper method to get the appropriate xml input source
-     * so that the input of the XSLT transform comes from
-     * either the xml var, the nested tag or the tag body.
-     *
-     * @return InputSource for the transform input
-     */
-    protected InputSource getXMLInputSource() {
-        InputSource xmlInputSource = null;
-        Object xmlInputSourceObj = this.getXml();
-        // if no xml source specified then get from tag body
-        // otherwise convert it to an input source
-        if (null == xmlInputSourceObj) {
-            xmlInputSource = new TagBodyInputSource();
-        } else {
-            xmlInputSource = this.getInputSourceFromObj(xmlInputSourceObj);
-        }
-        return xmlInputSource;
-    }
-
-    /**
-     * Helper method to convert the specified object to a SAX source
-     *
-     * @return SAXSource from the source object or null
-     */
-    protected SAXSource getObjAsSAXSource(Object saxSourceObj) {
-        SAXSource saxSource = null;
-        if (null != saxSourceObj) {
-            if (saxSourceObj instanceof Document) {
-                saxSource =  new DocumentSource((Document) saxSourceObj);
-            } else {
-                InputSource xmlInputSource =
-                    this.getInputSourceFromObj(saxSourceObj);
-                saxSource = new SAXSource(xmlInputSource);
-            }
-        }
-
-        return saxSource;
-    }
-
-    /**
-     * Helper method to get an xml input source for the supplied object
-     *
-     * @return InputSource for the object or null
-     */
-    protected InputSource getInputSourceFromObj(Object sourceObj ) {
-        InputSource xmlInputSource = null;
-        if (sourceObj instanceof Document) {
-            SAXSource saxSource = new DocumentSource((Document) sourceObj);
-            xmlInputSource = saxSource.getInputSource();
-        } else {
-            if (sourceObj instanceof String) {
-                String uri = (String) sourceObj;
-                xmlInputSource = new InputSource(context.getResourceAsStream(uri));
-            }
-            else if (sourceObj instanceof Reader) {
-                xmlInputSource = new InputSource((Reader) sourceObj);
-            }
-            else if (sourceObj instanceof InputStream) {
-                xmlInputSource = new InputSource((InputStream) sourceObj);
-            }
-            else if (sourceObj instanceof URL) {
-                String uri = ((URL) sourceObj).toString();
-                xmlInputSource = new InputSource(context.getResourceAsStream(uri));
-            }
-            else if (sourceObj instanceof File) {
-                try {
-                    String uri = ((File) sourceObj).toURL().toString();
-                    xmlInputSource = new InputSource(context.getResourceAsStream(uri));
-                }
-                catch (MalformedURLException e) {
-                    throw new IllegalArgumentException(
-                        "This should never occur. We should always be able to convert a File to a URL" + e );
-                }
-            }
-            else {
-                throw new IllegalArgumentException(
-                    "Invalid source argument. Must be a String, Reader, InputStream or URL."
-                        + " Was type; "
-                        + sourceObj.getClass().getName()
-                        + " with value: "
-                        + sourceObj);
-            }
-        }
-
-        return xmlInputSource;
-    }
-
-    /**
-     * Helper method to run any nested param tags
-     *
-    * @param output The destination for any SAX output (not actually used)
-     */
-    private void doNestedParamTag(XMLOutput output) throws JellyTagException {
-        // find any nested param tags and run them
-        Script bodyScript = this.getBody();
-        
-        if (bodyScript instanceof ScriptBlock) {
-            ScriptBlock scriptBlock = (ScriptBlock) bodyScript;
-            List scriptList = scriptBlock.getScriptList();
-            for (Iterator iter = scriptList.iterator(); iter.hasNext(); ) {
-                Script script = (Script) iter.next();
-                if (script instanceof TagScript) {
-
-                    Tag tag = null;
-                    try {
-                        tag = ((TagScript) script).getTag(getContext());
-                    } catch (JellyException e) {
-                        throw new JellyTagException(e);
-                    }
-
-                    if (tag instanceof ParamTag) {
-                        script.run(context, output);
-                    }
-
-
-                }
-            }
-        }
-    }
-
-    
-    /** A helper class that converts a transform tag body to an XMLReader
-      * to hide the details of where the input for the transform is obtained
-      *
-      * @author <a href="mailto:robert@leftwich.info">Robert Leftwich</a>
-      * @version $Revision: 1.8 $
-      */
-    private class TagBodyXMLReader implements XMLReader {
-
-        /** The tag whose body is to be read. */
-        private Tag tag;
-
-        /** The destination for the sax events generated by the reader. */
-        private XMLOutput xmlOutput;
-
-        /** Storage for a DTDHandler if set by the user of the reader. */
-        private DTDHandler dtdHandler;
-
-        /** Storage for a ErrorHandler if set by the user of the reader. */
-        private ErrorHandler errorHandler;
-
-        /** Storage for a EntityResolver if set by the user of the reader. */
-        private EntityResolver entityResolver;
-
-        /**
-         * Construct an XMLReader for the specified Tag
-         *
-         * @param tag    The Tag to convert to an XMLReader
-         */
-        public TagBodyXMLReader(Tag tag)
-        {
-            this.tag = tag;
-            this.xmlOutput = new XMLOutput();
-        }
-
-        // Methods
-        //-------------------------------------------------------------------------
-
-        /**
-         * Parse an XML source.
-         *
-         * @param input  The source of the xml
-         * @throws SAXException -
-         *             Any SAX exception, possibly wrapping another exception.
-         * @throws IOException -
-         *             An IO exception from the parser, possibly from a byte
-                       stream or character stream supplied by the application.
-         */
-        public void parse(InputSource input)
-        throws IOException, SAXException
-        {
-            // safety check that we are being used correctly
-            if (input instanceof TagBodyInputSource) {
-                this.doInvokeBody();
-            } else {
-                throw new SAXException("Invalid input source");
-            }
-        }
-
-        /**
-         * Parse an XML source specified by a system id
-         *
-         * @param input  The system identifier (URI)
-         * @throws SAXException -
-         *             Any SAX exception, possibly wrapping another exception.
-         * @throws IOException -
-         *             An IO exception from the parser, possibly from a byte
-                       stream or character stream supplied by the application.
-         */
-        public void parse(String systemId)
-        throws IOException, SAXException
-        {
-            this.doInvokeBody();
-        }
-
-        // Helper methods
-        //-------------------------------------------------------------------------
-
-        /**
-         * Actually invoke the tag body to generate the SAX events
-         *
-         * @throws SAXException -
-         *             Any SAX exception, possibly wrapping another exception.
-         */
-        private void doInvokeBody() throws SAXException {
-            try {
-                if (this.shouldParseBody()) {
-                    XMLReader anXMLReader = XMLReaderFactory.createXMLReader();
-                    anXMLReader.setContentHandler(this.xmlOutput);
-                    anXMLReader.setProperty(LEXICAL_HANDLER_PROPERTY,this.xmlOutput);
-                    StringWriter writer = new StringWriter();
-                    this.tag.invokeBody(XMLOutput.createXMLOutput(writer));
-                    Reader reader = new StringReader(writer.toString());
-                    anXMLReader.parse(new InputSource(reader));
-                } else {
-                    this.tag.invokeBody(this.xmlOutput);
-                }
-            } catch (Exception ex) {
-                throw new SAXException(ex);
-            }
-        }
-
-        /**
-         * Helper method to determin if nested body needs to be parsed by (an
-         * xml parser, i.e. its only text) to generate SAX events or not
-         *
-         * @return True if tag body should be parsed or false if invoked only
-         * @throws JellyTagException
-         */
-        private boolean shouldParseBody() throws JellyTagException {
-            boolean result = false;
-            // check to see if we need to parse the body or just invoke it
-            Script bodyScript = this.tag.getBody();
-            
-            if (bodyScript instanceof ScriptBlock) {
-                ScriptBlock scriptBlock = (ScriptBlock) bodyScript;
-                List scriptList = scriptBlock.getScriptList();
-                for (Iterator iter = scriptList.iterator(); iter.hasNext(); ) {
-                    Script script = (Script) iter.next();
-                    if (script instanceof StaticTagScript) {
-                        result = true;
-                         break;
-                    }
-                }
-            }
-            return result;
-        }
-
-        // Properties
-        //-------------------------------------------------------------------------
-
-        /**
-         * Gets the SAX ContentHandler to feed SAX events into
-         *
-         * @return the SAX ContentHandler to use to feed SAX events into
-         */
-        public ContentHandler getContentHandler() {
-            return this.xmlOutput.getContentHandler();
-        }
-
-        /**
-         * Sets the SAX ContentHandler to feed SAX events into
-         *
-         * @param contentHandler is the ContentHandler to use.
-         *      This value cannot be null.
-         */
-        public void setContentHandler(ContentHandler contentHandler) {
-            this.xmlOutput.setContentHandler(contentHandler);
-            // often classes will implement LexicalHandler as well
-            if (contentHandler instanceof LexicalHandler) {
-                this.xmlOutput.setLexicalHandler((LexicalHandler) contentHandler);
-            }
-        }
-
-        /**
-         * Gets the DTD Handler to feed SAX events into
-         *
-         * @return the DTD Handler to use to feed SAX events into
-         */
-        public DTDHandler getDTDHandler() {
-            return this.dtdHandler;
-        }
-
-        /**
-         * Sets the DTD Handler to feed SAX events into
-         *
-         * @param the DTD Handler to use to feed SAX events into
-         */
-        public void setDTDHandler(DTDHandler dtdHandler) {
-            this.dtdHandler = dtdHandler;
-        }
-
-        /**
-         * Gets the Error Handler to feed SAX events into
-         *
-         * @return the Error Handler to use to feed SAX events into
-         */
-        public ErrorHandler getErrorHandler() {
-            return this.errorHandler;
-        }
-
-        /**
-         * Sets the Error Handler to feed SAX events into
-         *
-         * @param the Error Handler to use to feed SAX events into
-         */
-        public void setErrorHandler(ErrorHandler errorHandler) {
-            // save the error handler
-            this.errorHandler = errorHandler;
-        }
-
-        /**
-         * Gets the Entity Resolver to feed SAX events into
-         *
-         * @return the Entity Resolver to use to feed SAX events into
-         */
-        public EntityResolver getEntityResolver() {
-            return this.entityResolver;
-        }
-
-        /**
-         * Sets the Entity Resolver to feed SAX events into
-         *
-         * @param the Entity Resolver to use to feed SAX events into
-         */
-        public void setEntityResolver(EntityResolver entityResolver) {
-            this.entityResolver = entityResolver;
-        }
-
-        /**
-         * Lookup the value of a property
-         *
-         * @param name - The property name, which is a fully-qualified URI.
-         * @return - The current value of the property.
-         * @throws SAXNotRecognizedException -
-         *            When the XMLReader does not recognize the property name.
-         * @throws SAXNotSupportedException -
-         *            When the XMLReader recognizes the property name but
-         *            cannot determine its value at this time.
-         */
-        public Object getProperty(String name)
-        throws SAXNotRecognizedException, SAXNotSupportedException
-        {
-            // respond to the lexical handler request
-            if (name.equalsIgnoreCase(LEXICAL_HANDLER_PROPERTY)) {
-                return this.xmlOutput.getLexicalHandler();
-            } else {
-                // do nothing
-                return null;
-            }
-        }
-
-        /**
-         * Set the value of a property
-         *
-         * @param name - The property name, which is a fully-qualified URI.
-         * @param value - The property value
-         * @throws SAXNotRecognizedException -
-         *            When the XMLReader does not recognize the property name.
-         * @throws SAXNotSupportedException -
-         *            When the XMLReader recognizes the property name but
-         *            cannot determine its value at this time.
-         */
-        public void setProperty(String name, Object value)
-        throws SAXNotRecognizedException, SAXNotSupportedException
-        {
-            // respond to the lexical handler setting
-            if (name.equalsIgnoreCase(LEXICAL_HANDLER_PROPERTY)) {
-                this.xmlOutput.setLexicalHandler((LexicalHandler) value);
-            }
-        }
-
-        /**
-         * Lookup the value of a feature
-         *
-         * @param name - The feature name, which is a fully-qualified URI.
-         * @return - The current state of the feature (true or false)
-         * @throws SAXNotRecognizedException -
-         *            When the XMLReader does not recognize the feature name.
-         * @throws SAXNotSupportedException -
-         *            When the XMLReader recognizes the feature name but
-         *            cannot determine its value at this time.
-         */
-        public boolean getFeature(String name)
-        throws SAXNotRecognizedException, SAXNotSupportedException
-        {
-            // do nothing
-            return false;
-        }
-
-        /**
-         * Set the value of a feature
-         *
-         * @param name - The feature name, which is a fully-qualified URI.
-         * @param value - The current state of the feature (true or false)
-         * @throws SAXNotRecognizedException -
-         *            When the XMLReader does not recognize the feature name.
-         * @throws SAXNotSupportedException -
-         *            When the XMLReader recognizes the feature name but
-         *            cannot determine its value at this time.
-         */
-        public void setFeature(String name, boolean value)
-        throws SAXNotRecognizedException, SAXNotSupportedException
-        {
-            // do nothing
-        }
-    }
-
-    /** A marker class used by the TagBodyXMLReader as a sanity check
-      * (i.e. The source is not actually used)
-      *
-      */
-    private class TagBodyInputSource extends InputSource {
-
-        /**
-         * Construct an instance of this marker class
-         */
-        public TagBodyInputSource() {
-        }
-    }
-
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/XMLTagLibrary.java b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/XMLTagLibrary.java
deleted file mode 100644
index e51828d..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/XMLTagLibrary.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-import org.apache.commons.jelly.expression.CompositeExpression;
-import org.apache.commons.jelly.expression.jexl.JexlExpressionFactory;
-import org.apache.commons.jelly.expression.xpath.XPathExpression;
-import org.apache.commons.jelly.impl.TagScript;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.5 $
-  */
-public class XMLTagLibrary extends TagLibrary {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(XMLTagLibrary.class);
-
-    private JexlExpressionFactory jexlFactory;
-
-    public XMLTagLibrary() {
-        registerTag("out", ExprTag.class);
-        registerTag("if", IfTag.class);
-        registerTag("forEach", ForEachTag.class);
-        registerTag("parse", ParseTag.class);
-        registerTag("set", SetTag.class);
-        registerTag("transform", TransformTag.class);
-        registerTag("param", ParamTag.class);
-
-        // extensions to JSTL
-        registerTag("expr", ExprTag.class);
-        registerTag("element", ElementTag.class);
-        registerTag("attribute", AttributeTag.class);
-        registerTag("copy", CopyTag.class);
-        registerTag("copyOf", CopyOfTag.class);
-        registerTag("comment", CommentTag.class);
-        registerTag("doctype", DoctypeTag.class);
-        registerTag("sort", SortTag.class);
-
-        this.jexlFactory = new JexlExpressionFactory();
-    }
-
-    public Expression createExpression(
-        ExpressionFactory factory,
-        TagScript tagScript,
-        String attributeName,
-        String attributeValue) throws JellyException {
-
-        // #### may need to include some namespace URI information in the XPath instance?
-
-        if (attributeName.equals("select") || attributeName.equals("sort")) {
-            if ( log.isDebugEnabled() ) {
-                log.debug( "Parsing XPath expression: " + attributeValue );
-            }
-
-            Expression xpathExpr = createXPathTextExpression( attributeValue );
-
-            return new XPathExpression(attributeValue,
-                                       xpathExpr,
-                                       tagScript);
-        }
-
-        // will use the default expression instead
-        return super.createExpression(factory, tagScript, attributeName, attributeValue);
-    }
-
-    protected Expression createXPathTextExpression(String exprText) throws JellyException {
-        return CompositeExpression.parse( exprText,
-                                          this.jexlFactory );
-    }
-}
diff --git a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/package.html b/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/package.html
deleted file mode 100644
index c472600..0000000
--- a/jelly-tags/xml/src/java/org/apache/commons/jelly/tags/xml/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
-  <p>The XML Tags from the JSTL
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestImport.java b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestImport.java
deleted file mode 100644
index 916b410..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestImport.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.URL;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.parser.XMLParser;
-import org.xml.sax.SAXException;
-
-import junit.framework.TestCase;
-
-/**
- * Test that compiled scripts can access resources
- */
-public class TestImport extends TestCase {
-    
-    private String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-        + "<html xmlns=\"http://www.w3.org/TR/xhtml1/strict\" "
-        + "xmlns=\"http://www.w3.org/TR/xhtml1/strict\">"
-        + "<head><title>Expense Report Summary</title></head>"
-        + "<body><p>Total Amount: 12</p></body></html>";
-    public TestImport(String name) {
-        super(name);
-    }
-    
-    public void testImportResources() throws JellyException, UnsupportedEncodingException, IOException {
-        JellyContext context = new JellyContext();
-        URL url = TestImport.class.getResource("/resources/import.jelly");
-        StringWriter writer = new StringWriter();
-        XMLOutput out = XMLOutput.createXMLOutput(writer);
-//         this works because of the created child context that has knowledge
-//         of the URL
-        context.runScript(url, out);
-        out.close();
-        assertEquals(expected, writer.toString());
-    }
-
-    public void testImportResourcesCompiled() throws JellyException, UnsupportedEncodingException, IOException {
-        JellyContext context = new JellyContext();
-        URL url = TestImport.class.getResource("/resources/import.jelly");
-        StringWriter writer = new StringWriter();
-        XMLOutput out = XMLOutput.createXMLOutput(writer);
-        Script script = context.compileScript(url);
-        script.run(context, out);
-        out.close();
-        assertEquals(expected, writer.toString());
-    }
-
-    public void testImportResourcesFromUncompiledScript() throws JellyException, UnsupportedEncodingException, IOException, SAXException {
-        JellyContext context = new JellyContext();
-        URL url = TestImport.class.getResource("/resources/import.jelly");
-        StringWriter writer = new StringWriter();
-        XMLOutput out = XMLOutput.createXMLOutput(writer);
-        Script script = new XMLParser().parse(url);
-        script.run(context, out);
-        out.close();
-        assertEquals(expected, writer.toString());
-    }
-
-}
\ No newline at end of file
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestJelly.java b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestJelly.java
deleted file mode 100644
index 8b4e908..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestParser.java b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestParser.java
deleted file mode 100644
index 5000c68..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestParser.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.Iterator;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.impl.ScriptBlock;
-import org.apache.commons.jelly.impl.TagScript;
-import org.apache.commons.jelly.parser.XMLParser;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Tests the core tags
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.6 $
-  */
-public class TestParser extends TestCase {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TestParser.class);
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestParser.class);
-    }
-
-    public TestParser(String testName) {
-        super(testName);
-    }
-
-    /**
-     * Tests that parsing an example script correctly creates the parent
-     * relationships
-     */
-    public void testParser() throws Exception {
-        InputStream in = new FileInputStream("src/test/org/apache/commons/jelly/tags/xml/example2.jelly");
-        XMLParser parser = new XMLParser();
-        Script script = parser.parse(in);
-        script = script.compile();
-
-        log.debug("Found: " + script);
-
-        assertTagsHaveParent( script, null, null );
-    }
-
-    /**
-     * Tests that the Tag in the TagScript has the given parent and then
-     * recurse to check its children has the correct parent and so forth.
-     */
-    protected void assertTagsHaveParent(Script script, Tag parent, JellyContext context) throws Exception {
-        if ( context == null )
-            context = new JellyContext();
-        if ( script instanceof TagScript ) {
-            TagScript tagScript = (TagScript) script;
-            Tag tag = tagScript.getTag(context);
-
-            assertEquals( "Tag: " + tag + " has the incorrect parent", parent, tag.getParent() );
-
-            assertTagsHaveParent( tag.getBody(), tag, context );
-        }
-        else if ( script instanceof ScriptBlock ) {
-            ScriptBlock block = (ScriptBlock) script;
-            for ( Iterator iter = block.getScriptList().iterator(); iter.hasNext(); ) {
-                assertTagsHaveParent( (Script) iter.next(), parent, context );
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestXMLTags.java b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestXMLTags.java
deleted file mode 100644
index 45fadb1..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/TestXMLTags.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.xml;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.StringWriter;
-import java.util.Iterator;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.parser.XMLParser;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Node;
-
-/** Tests the parser, the engine and the XML tags
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class TestXMLTags extends TestCase {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TestXMLTags.class);
-
-    /** basedir for test source */
-    private static final String testBaseDir ="src/test/org/apache/commons/jelly/tags/xml";
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestXMLTags.class);
-    }
-
-    public TestXMLTags(String testName) {
-        super(testName);
-    }
-
-    public void testUnitTests() throws Exception {
-        runUnitTest( testBaseDir + "/testForEach.jelly" );
-    }
-
-    public void testExpressions() throws Exception {
-        runUnitTest( testBaseDir + "/testExpressions.jelly");
-    }
-
-    public void testParse() throws Exception {
-        InputStream in = new FileInputStream(testBaseDir + "/example.jelly");
-        XMLParser parser = new XMLParser();
-        Script script = parser.parse(in);
-        script = script.compile();
-        log.debug("Found: " + script);
-        assertTrue("Parsed a Script", script instanceof Script);
-        StringWriter buffer = new StringWriter();
-        script.run(parser.getContext(), XMLOutput.createXMLOutput(buffer));
-        String text = buffer.toString().trim();
-        if (log.isDebugEnabled()) {
-            log.debug("Evaluated script as...");
-            log.debug(text);
-        }
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testTransform() throws Exception {
-        String text = evaluteScriptAsText(testBaseDir + "/transformExample.jelly");
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testTransformAllInLine() throws Exception {
-        String text = evaluteScriptAsText(testBaseDir + "/transformExampleAllInLine.jelly");
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testTransformParams() throws Exception {
-        String text = evaluteScriptAsText(testBaseDir + "/transformParamExample.jelly");
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testTransformParamsInLine() throws Exception {
-
-        String text = evaluteScriptAsText(testBaseDir + "/transformParamExample2.jelly");
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testTransformSAXOutput() throws Exception {
-        String text = evaluteScriptAsText(testBaseDir + "/transformExampleSAXOutput.jelly");
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testTransformSAXOutputNestedTransforms() throws Exception {
-        String text = evaluteScriptAsText(testBaseDir +
-            "/transformExampleSAXOutputNestedTransforms.jelly");
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testTransformSchematron() throws Exception {
-        String text = evaluteScriptAsText(testBaseDir +
-            "/schematron/transformSchematronExample.jelly");
-        assertEquals("Produces the correct output", "Report count=1:assert count=2", text);
-    }
-
-    public void testTransformXmlVar() throws Exception {
-        String text = evaluteScriptAsText(testBaseDir +
-            "/transformExampleXmlVar.jelly");
-        assertEquals("Produces the correct output", "It works!", text);
-    }
-
-    public void testDoctype() throws Exception {
-        String text = evaluteScriptAsText(testBaseDir +
-            "/testDoctype.jelly");
-        assertEquals("Produces the correct output", "<!DOCTYPE foo PUBLIC \"publicID\" \"foo.dtd\">\n<foo></foo>", text);
-    }
-
-    public void runUnitTest(String name) throws Exception {
-        Document document = parseUnitTest(name);
-
-        List failures = document.selectNodes( "/*/fail" );
-        for ( Iterator iter = failures.iterator(); iter.hasNext(); ) {
-            Node node = (Node) iter.next();
-            fail( node.getStringValue() );
-        }
-    }
-
-    public Document parseUnitTest(String name) throws Exception {
-        // parse script
-        InputStream in = new FileInputStream(name);
-        XMLParser parser = new XMLParser();
-        Script script = parser.parse(in);
-        script = script.compile();
-        assertTrue("Parsed a Script", script instanceof Script);
-        StringWriter buffer = new StringWriter();
-        script.run(parser.getContext(), XMLOutput.createXMLOutput(buffer));
-
-        String text = buffer.toString().trim();
-        if (log.isDebugEnabled()) {
-            log.debug("Evaluated script as...");
-            log.debug(text);
-        }
-
-        // now lets parse the output
-        return DocumentHelper.parseText( text );
-    }
-
-    /**
-     * Evaluates the script by the given file name and
-     * returns the whitespace trimmed output as text
-     */
-    protected String evaluteScriptAsText(String fileName) throws Exception {
-        JellyContext context = new JellyContext();
-
-        // allow scripts to refer to any resource inside this project
-        // using an absolute URI like /src/test/org/apache/foo.xml
-        context.setRootURL(new File(".").toURL());
-
-        // cature the output
-        StringWriter buffer = new StringWriter();
-        XMLOutput output = XMLOutput.createXMLOutput(buffer);
-
-        context.runScript( new File(fileName), output );
-        String text = buffer.toString().trim();
-        if (log.isDebugEnabled()) {
-            log.debug("Evaluated script as...");
-            log.debug(text);
-        }
-        return text;
-    }
-}
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/betwixt/input.xml b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/betwixt/input.xml
deleted file mode 100644
index 47f0624..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/betwixt/input.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<transactionBean
-  className="org.zenplex.tambora.transaction.PO"
-  primitiveTypes="attributes"
-  rootName="PO">
-
-  <fields>
-    <field name="id" type="int"/>
-    <field name="name" type="String"/>
-  </fields>
-</transactionBean>
\ No newline at end of file
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/betwixt/makeBetwixt.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/betwixt/makeBetwixt.jelly
deleted file mode 100644
index a7cb0c6..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/betwixt/makeBetwixt.jelly
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">
-
-<x:parse xml="${inputFile}" var="doc"/>
-<x:set var="rootElementName" select="string($doc/transactionBean/@rootName)"/>
-
-<info primitiveTypes="element">
-  <element name="${rootElementName}">
-    <x:forEach select="$doc/transactionBean/fields/field">
-      <x:set var="fieldName" select="string(@name)"/>
-      <x:set var="fieldType" select="string(@type)"/>
-      <element name="${fieldName}" property="${fieldName}"/>
-    </x:forEach>
-  </element>
-</info>
-</j:jelly>
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/dummy.xml b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/dummy.xml
deleted file mode 100644
index d6ca005..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/dummy.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<dummy>
-  <entry id="1">This is some sample XML</entry>
-  <entry id="2">And some more XML</entry>
-  <empty/>
-</dummy>  
\ No newline at end of file
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/entity.xml b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/entity.xml
deleted file mode 100644
index 9094478..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/entity.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE a [
-<!ENTITY x "y">
-]>
-<a>&x;</a> 
\ No newline at end of file
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/example.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/example.jelly
deleted file mode 100644
index 6829d78..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/example.jelly
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">
-
-  <x:parse var="doc">
-    <html>
-      <title>It works!</title>
-      <body>
-      </body>
-    </html>
-  </x:parse>
-
-  <x:expr select="$doc/html/title"/>
-
-</j:jelly>
-
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/example2.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/example2.jelly
deleted file mode 100644
index 3046bf0..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/example2.jelly
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!--

- ! FIXME: Move this to xml taglib

- !-->

-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-  <x:parse var="doc">

-    <web-app>

-      <servlet>

-        <servlet-name>snoop</servlet-name>

-        <servlet-class>SnoopServlet</servlet-class>

-      </servlet>

-      <servlet>

-        <servlet-name>file</servlet-name>

-        <servlet-class>ViewFile</servlet-class>

-        <init-param>

-          <param-name>initial</param-name>

-          <param-value>1000</param-value>

-          <description>

-            The initial value for the counter  <!-- optional -->

-          </description>

-        </init-param>

-      </servlet>

-      <servlet-mapping>

-        <servlet-name>snoop</servlet-name>

-        <url-pattern>/foo/snoop</url-pattern>

-      </servlet-mapping>

-    </web-app>

-  </x:parse>

-

-  <x:set var="count" select="count($doc//servlet)"/>

-  <x:forEach var="s" select="$doc//servlet">

-    name: <x:expr select="$s/servlet-name"/>

-    class: <x:expr select="$s/servlet-class"/>

-  </x:forEach>

-

-  There are <x:expr select="$count"/> servlet(s)

-

-</j:jelly>

-

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/filesetExample.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/filesetExample.jelly
deleted file mode 100644
index 5892dd6..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/filesetExample.jelly
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns="jelly:ant">

-

-    <fileScanner var="scanner">

-        <fileset dir="src/test/org/apache/commons/jelly/xml" includes="**/*.xml"/>

-    </fileScanner>

-    

-    <j:forEach var="file" items="${scanner.iterator()}">

-        <j:set var="fileFullName" value="${file.name}"/>

-        <j:set var="fileName" value="${fileFullName.substring(0, fileFullName.length() - 4)}"/>

-        About to process file ${file} and generate file name ${fileName}.html

-

-        <j:file name="target/${fileName}.html">

-            <x:transform xml="${file}" xslt="transformExample.xsl">

-                <x:param name="filename" value="${file.canonicalPath}"/>

-            </x:transform>

-        </j:file>

-    </j:forEach>

-

-</j:jelly>

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/schematron-wrapper.xsl b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/schematron-wrapper.xsl
deleted file mode 100644
index ad5c24c..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/schematron-wrapper.xsl
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-      <!-- import the basic framework -->
-      <xsl:import href="skeleton1-5.xsl"/>
-
-      <!-- override the process-root template and wrap output as HTML -->
-      <!--xsl:template name="process-root">
-         <xsl:param name="title"/>
-         <xsl:param name="contents" />
-         <html>
-            <head><title>Validation Report For: <xsl:value-of select="$title"/></title></head>
-            <body>
-            <h1>Validation Report For : <xsl:value-of select="$title"/></h1>
-
-            <pre>
-            <xsl:copy-of select="$contents" />
-            </pre>
-
-            </body>
-         </html>
-      </xsl:template-->
-
-      <xsl:template name="process-root">
-         <xsl:param name="title"/>
-         <xsl:param name="contents" />
-         <schematron-validation>Validation Report For: <xsl:value-of select="$title"/>
-         <xsl:copy-of select="$contents" />
-         </schematron-validation>
-      </xsl:template>
-
-      <!-- override additional templates as needed -->
-    <xsl:template name="process-assert">
-        <xsl:param name="role"/>
-        <xsl:param name="id"/>
-        <xsl:param name="test"/>
-        <xsl:param name="subject"/>
-        <xsl:param name="diagnostics"/>
-        <!-- unused parameters: icon -->
-        <assert>
-            <xsl:if test="$role">
-                <role><xsl:value-of select="$role" /></role>
-            </xsl:if>
-            <xsl:if test="$id">
-                <id><xsl:value-of select="$role" /></id>
-            </xsl:if>
-            <test><xsl:value-of select="$test" /></test>
-            <result><xsl:apply-templates mode="text" /></result>
-            <xsl:if test="$subject">
-                <subject><xsl:value-of select="$subject" /></subject>
-            </xsl:if>
-            <xsl:if test="$diagnostics">
-                <diagnostics>
-                    <xsl:call-template name="diagnosticsSplit">
-                        <xsl:with-param name="str" select="$diagnostics" />
-                    </xsl:call-template>
-                </diagnostics>
-            </xsl:if>
-        </assert>
-    </xsl:template>
-
-      <!-- override additional templates as needed -->
-    <xsl:template name="process-report">
-        <xsl:param name="role"/>
-        <xsl:param name="test"/>
-        <xsl:param name="id"/>
-        <xsl:param name="subject"/>
-        <xsl:param name="diagnostics"/>
-        <!-- unused parameters: icon -->
-        <report>
-            <xsl:if test="$role">
-                <role><xsl:value-of select="$role" /></role>
-            </xsl:if>
-            <xsl:if test="$id">
-                <id><xsl:value-of select="$role" /></id>
-            </xsl:if>
-            <test><xsl:value-of select="$test" /></test>
-            <result><xsl:apply-templates mode="text" /></result>
-            <xsl:if test="$subject">
-                <subject><xsl:value-of select="$subject" /></subject>
-            </xsl:if>
-            <xsl:if test="$diagnostics">
-                <diagnostics>
-                    <xsl:call-template name="diagnosticsSplit">
-                        <xsl:with-param name="str" select="$diagnostics" />
-                    </xsl:call-template>
-                </diagnostics>
-            </xsl:if>
-        </report>
-    </xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/skeleton1-5.xsl b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/skeleton1-5.xsl
deleted file mode 100644
index fde54e5..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/skeleton1-5.xsl
+++ /dev/null
@@ -1,556 +0,0 @@
-<?xml version="1.0"?>
-<!-- Beta Skeleton Module for the Schematron 1.5 XML Schema Language.
-	http://www.ascc.net/xml/schematron/
- 
- Copyright (c) 2000,2001 Rick Jelliffe and Academia Sinica Computing Center, Taiwan
-
- This software is provided 'as-is', without any express or implied warranty. 
- In no event will the authors be held liable for any damages arising from 
- the use of this software.
-
- Permission is granted to anyone to use this software for any purpose, 
- including commercial applications, and to alter it and redistribute it freely,
- subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not claim
- that you wrote the original software. If you use this software in a product, 
- an acknowledgment in the product documentation would be appreciated but is 
- not required.
-
- 2. Altered source versions must be plainly marked as such, and must not be 
- misrepresented as being the original software.
-
- 3. This notice may not be removed or altered from any source distribution.
--->
-<!-- 
-    Version: 2001-06-12
-           * same skeleton now supports namespace or no namespace
-           * parameters to handlers updated for all 1.5 attributes 
-           * diagnostic hints supported: command-line option diagnose=yes|no
-           * phases supported: command-line option phase=#ALL|...
-           * abstract rules
-           * compile-time error messages
-           * 1.6 feature: @match on sch:key  
-          
-    Contributors: Rick Jelliffe (original), Oliver Becker (architecture), 
-             Miloslav Nic (diagnostic, phase, options), Ludwig Svenonius (abstract)
-             Uche Ogbuji (misc. bug fixes), Jim Ancona (SAXON workaround),
-             Eddie Robertsson (misc. bug fixes)
-
-    XSLT versions tested and working as-is: 
-           * MS XML 3
-           * Oracle 
-           * SAXON + Instant Saxon  
-           * XT n.b. key() not available, will die
-
-   XSLT version reliably reported working
-           *  FourThought's Python implementation
-
-    XSLT versions tested and requires small workaround from you
-           * Sablotron does not support import, so merge meta-stylesheets by hand
-           * Xalan for Java 2.0 outputs wrong namespace URI, so alter by hand or script
-           * Xalan for C 1.0 has problem with key, so edit by hand. Find "KEY" below  
-
-   If you create your own meta-stylesheet to override this one, it is a
-   good idea to have both in the same directory and to run the stylesheet
-   from that directory, as many XSLT implementations have ideosyncratic
-   handling of URLs: keep it simple.
-         
--->
-<xsl:stylesheet version="1.0" 
-	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-	xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias" 
-	xmlns:sch="http://www.ascc.net/xml/schematron"
-	 >
-<!-- Note that this namespace is not version specific.
-This program implements schematron 1.5 with some 1.6 extensions -->
-<xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>
-<!-- Category: top-level-element -->
-<xsl:output method="xml" omit-xml-declaration="no" standalone="yes"  indent="yes"/>
-<xsl:param name="block"></xsl:param><!-- reserved -->
-<xsl:param name="phase">
-  <xsl:choose>
-    <xsl:when test="//sch:schema/@defaultPhase">
-      <xsl:value-of select="//sch:schema/@defaultPhase"/>
-    </xsl:when>
-    <xsl:otherwise>#ALL</xsl:otherwise>
-  </xsl:choose>
-</xsl:param>
-<xsl:param name="hiddenKey"> key </xsl:param><!-- workaround for Xalan4J 2.0 -->
-
-<!-- SCHEMA -->
-<xsl:template match="sch:schema | schema">
-	<axsl:stylesheet version="1.0">
-		<xsl:for-each select="sch:ns | ns">
-			<xsl:attribute name="{concat(@prefix,':dummy-for-xmlns')}" namespace="{@uri}"/>
-		</xsl:for-each>
- 
-		<xsl:if test="count(sch:title/* | title/* )">
-			<xsl:message>
-				<xsl:text>Warning: </xsl:text>
-				<xsl:value-of select="name(.)"/>
-				<xsl:text> must not contain any child elements</xsl:text>
-			</xsl:message>
-		</xsl:if>
- 
-		<xsl:call-template name="process-prolog"/>
-		<!-- utility routine for implementations -->
-   		<axsl:template match="*|@*" mode="schematron-get-full-path">
-
-			<axsl:apply-templates select="parent::*" mode="schematron-get-full-path"/>
-			<axsl:text>/</axsl:text>
-			<axsl:if test="count(. | ../@*) = count(../@*)">@</axsl:if>
-			<axsl:value-of select="name()"/>
-			<axsl:text>[</axsl:text>
-	  		<axsl:value-of select="1+count(preceding-sibling::*[name()=name(current())])"/>
-	  		<axsl:text>]</axsl:text>
-       	 	</axsl:template>
-
-		<xsl:apply-templates mode="do-keys" 
-                select="sch:pattern/sch:rule/sch:key | pattern/rule/key | sch:key | key "/>
-
-
-		<axsl:template match="/">
-			<xsl:call-template name="process-root">
-				<xsl:with-param name="fpi" select="@fpi"/>
-				<xsl:with-param 	xmlns:sch="http://www.ascc.net/xml/schematron"
-				name="title" select="./sch:title | title"/>
-				<xsl:with-param name="id" select="@id"/>
-				<xsl:with-param name="icon" select="@icon"/>
-				<xsl:with-param name="lang" select="@xml:lang"/>
-				<xsl:with-param name="version" select="@version" />
-				<xsl:with-param name="schemaVersion" select="@schemaVersion" />
-				<xsl:with-param name="contents">
-					<xsl:apply-templates mode="do-all-patterns"/>
-				</xsl:with-param>
-			</xsl:call-template>
-		</axsl:template>
- 
-		<xsl:apply-templates/>
-		<axsl:template match="text()" priority="-1">
-			<!-- strip characters -->
-		</axsl:template>
-	</axsl:stylesheet>
-</xsl:template>
-
-	<!-- ACTIVE -->
-	<xsl:template match="sch:active | active">
-                <xsl:if test="not(@pattern)">
-                    <xsl:message>Markup Error: no pattern attribute in &lt;active></xsl:message>
-                </xsl:if>
-                <xsl:if test="//sch:rule[@id= current()/@pattern]">
-                    <xsl:message>Reference Error: the pattern  "<xsl:value-of select="@pattern"/>" has been activated but is not declared</xsl:message>
-                </xsl:if>
-        </xsl:template>
-
-	<!-- ASSERT and REPORT -->
-	<xsl:template match="sch:assert | assert">
-                <xsl:if test="not(@test)">
-                    <xsl:message>Markup Error: no test attribute in &lt;assert></xsl:message>
-                </xsl:if>
-		<axsl:choose>
-			<axsl:when test="{@test}"/>
-			<axsl:otherwise>
-				<xsl:call-template name="process-assert">
-					<xsl:with-param name="role" select="@role"/>
-					<xsl:with-param name="id" select="@id"/>
-					<xsl:with-param name="test" select="normalize-space(@test)" />
-					<xsl:with-param name="icon" select="@icon"/>
-					<xsl:with-param name="subject" select="@subject"/>
-					<xsl:with-param name="diagnostics" select="@diagnostics"/>
-				</xsl:call-template>  
-			</axsl:otherwise>
-		</axsl:choose>
-	</xsl:template>
-	<xsl:template match="sch:report | report">
-                <xsl:if test="not(@test)">
-                    <xsl:message>Markup Error: no test attribute in &lt;report></xsl:message>
-                </xsl:if>
-		<axsl:if test="{@test}">
-			<xsl:call-template name="process-report">
-				<xsl:with-param name="role" select="@role"/>
-				<xsl:with-param name="test" select="normalize-space(@test)" />
-				<xsl:with-param name="icon" select="@icon"/>
-				<xsl:with-param name="id" select="@id"/>
-				<xsl:with-param name="subject" select="@subject"/>
-				<xsl:with-param name="diagnostics" select="@diagnostics"/>
-			</xsl:call-template>
-		</axsl:if>
-	</xsl:template>
-
-
-	<!-- DIAGNOSTIC -->
-	<xsl:template match="sch:diagnostic | diagnostic"
-              ><xsl:if test="not(@id)"
-                    ><xsl:message>Markup Error: no id attribute in &lt;diagnostic></xsl:message
-                ></xsl:if><xsl:call-template name="process-diagnostic">
-                <xsl:with-param name="id" select="@id" />
-               </xsl:call-template>
-        </xsl:template>
-
-	<!-- DIAGNOSTICS -->
-	<xsl:template match="sch:diagnostics | diagnostics"/>
-
-	<!-- DIR -->
-	<xsl:template match="sch:dir | dir"  mode="text"
-		><xsl:call-template name="process-dir">
-			<xsl:with-param name="value" select="@value"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<!-- EMPH -->
-	<xsl:template match="sch:emph | emph"  mode="text"
-		><xsl:call-template name="process-emph"/>
-	</xsl:template>
-
-	<!-- EXTENDS -->
-	<xsl:template match="sch:extends | extends">
-		<xsl:if test="not(@rule)"
-                    ><xsl:message>Markup Error: no rule attribute in &lt;extends></xsl:message
-                ></xsl:if>
-     		<xsl:if test="not(//sch:rule[@abstract='true'][@id= current()/@rule] )
-                    and not(//rule[@abstract='true'][@id= current()/@rule])">
-                    <xsl:message>Reference Error: the abstract rule  "<xsl:value-of select="@rule"/>" has been referenced but is not declared</xsl:message>
-                </xsl:if>
-	        <xsl:call-template name="IamEmpty" />
-
-  		<xsl:if test="//sch:rule[@id=current()/@rule]">
-    			<xsl:apply-templates select="//sch:rule[@id=current()/@rule]"
-				mode="extends"/>
-  		</xsl:if>
-
-	</xsl:template>
-
-	<!-- KEY -->
-	<!-- do we need something to test uniqueness too? --> 
-	<!-- NOTE: if you get complaint about "key" here (e.g. Xalan4C 1.0) replace
-		"key" with "$hiddenKey" -->
-	<xsl:template  match="sch:key | key " mode="do-keys" >
-                <xsl:if test="not(@name)">
-                    <xsl:message>Markup Error: no name attribute in &lt;key></xsl:message>
-                </xsl:if>
-               <xsl:if test="not(@match) and not(../sch:rule)">
-                    <xsl:message>Markup Error:  no match attribute on &lt;key> outside &lt;rule></xsl:message>
-                </xsl:if>
-                <xsl:if test="not(@path)">
-                    <xsl:message>Markup Error: no path attribute in &lt;key></xsl:message>
-                </xsl:if>
-	        <xsl:call-template name="IamEmpty" />
-
-             <xsl:choose>
-			<xsl:when test="@match">
-				<axsl:key match="{@match}" name="{@name}" use="{@path}"/>
-			</xsl:when>
-			<xsl:otherwise>
-				<axsl:key name="{@name}" match="{parent::sch:rule/@context}" use="{@path}"/>
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:template>
-
-      <xsl:template match="sch:key | key"  /><!-- swallow --> 
-
-	<!-- NAME -->
-	<xsl:template match="sch:name | name" mode="text">
-		<axsl:text xml:space="preserve"> </axsl:text>
-			<xsl:if test="@path"
-				><xsl:call-template name="process-name">
-					<xsl:with-param name="name" select="concat('name(',@path,')')"/>
-					<!-- SAXON needs that instead of  select="'name({@path})'"  -->
-				</xsl:call-template>
-			</xsl:if>
-			<xsl:if test="not(@path)"
-				><xsl:call-template name="process-name">
-					<xsl:with-param name="name" select="'name(.)'"/>
-				</xsl:call-template>
-			</xsl:if>
-	        	<xsl:call-template name="IamEmpty" />
-		<axsl:text xml:space="preserve"> </axsl:text>
-	</xsl:template>
-
-	<!-- NS -->
-	<xsl:template match="sch:ns | ns"  mode="do-all-patterns" >
-               <xsl:if test="not(@uri)">
-                    <xsl:message>Markup Error: no uri attribute in &lt;ns></xsl:message>
-                </xsl:if>
-               <xsl:if test="not(@prefix)">
-                    <xsl:message>Markup Error: no prefix attribute in &lt;ns></xsl:message>
-                </xsl:if>
-	        <xsl:call-template name="IamEmpty" />
-		<xsl:call-template name="process-ns" >
-			<xsl:with-param name="prefix" select="@prefix"/>
-			<xsl:with-param name="uri" select="@uri"/>
-		</xsl:call-template>
-	</xsl:template>
-	<xsl:template match="sch:ns | ns"  /><!-- swallow -->
-
-	<!-- P -->
-	<xsl:template match="sch:schema/sch:p | schema/p" mode="do-schema-p" >
-		<xsl:call-template name="process-p">
-			<xsl:with-param name="class" select="@class"/>
-			<xsl:with-param name="icon" select="@icon"/>
-			<xsl:with-param name="id" select="@id"/>
-			<xsl:with-param name="lang" select="@xml:lang"/>
-		</xsl:call-template>
-	</xsl:template>
-	<xsl:template match="sch:pattern/sch:p | pattern/p" mode="do-pattern-p" >
-		<xsl:call-template name="process-p">
-			<xsl:with-param name="class" select="@class"/>
-			<xsl:with-param name="icon" select="@icon"/>
-			<xsl:with-param name="id" select="@id"/>
-			<xsl:with-param name="lang" select="@xml:lang"/>
-		</xsl:call-template>
-	</xsl:template>
-	<xsl:template match="sch:phase/sch:p" /><!-- We don't use these -->
-	<xsl:template match="sch:p | p" />
-
-	<!-- PATTERN -->
-	<xsl:template match="sch:pattern | pattern" mode="do-all-patterns">
-	<xsl:if test="($phase = '#ALL') 
-	or (../sch:phase[@id= ($phase)]/sch:active[@pattern= current()/@id])
-	or (../phase[@id= ($phase)]/active[@id= current()/@id])">
-		<xsl:call-template name="process-pattern">
-			<xsl:with-param name="name" select="@name"/>
-			<xsl:with-param name="id" select="@id"/>
-			<xsl:with-param name="see" select="@see"/>
-			<xsl:with-param name="fpi" select="@fpi"/>
-			<xsl:with-param name="icon" select="@icon"/>
-		</xsl:call-template>
-		<axsl:apply-templates select="/" mode="M{count(preceding-sibling::*)}"/>
-        </xsl:if>
-	</xsl:template>
-	
-	<xsl:template match="sch:pattern | pattern">
-        <xsl:if test="($phase = '#ALL') 
-	or (../sch:phase[@id= ($phase)]/sch:active[@pattern= current()/@id])
-	or (../phase[@id= ($phase)]/active[@id= current()/@id])">
-		<xsl:apply-templates/>
-		<axsl:template match="text()" priority="-1" mode="M{count(preceding-sibling::*)}">
-			<!-- strip characters -->
-		</axsl:template>
-        </xsl:if>
-	</xsl:template>
-
-	<!-- PHASE -->
-	<xsl:template match="sch:phase | phase" >
-                <xsl:if test="not(@id)">
-                    <xsl:message>Markup Error: no id attribute in &lt;phase></xsl:message>
-                </xsl:if>
-	</xsl:template>
-
-	<!-- RULE -->
-	<xsl:template match="sch:rule[not(@abstract='true')] | rule[not(@abstract='true')]">
-                <xsl:if test="not(@context)">
-                    <xsl:message>Markup Error: no context attribute in &lt;rule></xsl:message>
-                </xsl:if>
-		<axsl:template match="{@context}" priority="{4000 - count(preceding-sibling::*)}" mode="M{count(../preceding-sibling::*)}">
-			<xsl:call-template name="process-rule">
-				<xsl:with-param name="id" select="@id"/>
-				<xsl:with-param name="context" select="@context"/>
-				<xsl:with-param name="role" select="@role"/>
-			</xsl:call-template>
-			<xsl:apply-templates/>
-			<axsl:apply-templates mode="M{count(../preceding-sibling::*)}"/>
-		</axsl:template>
-	</xsl:template>
-
-
-	<!-- ABSTRACT RULE -->
-	<xsl:template match="sch:rule[@abstract='true'] | rule[@abstract='true']" >
-		<xsl:if test=" not(@id)">
-                    <xsl:message>Markup Error: no id attribute on abstract &lt;rule></xsl:message>
-                </xsl:if>
- 		<xsl:if test="@context">
-                    <xsl:message>Markup Error: (2) context attribute on abstract &lt;rule></xsl:message>
-                </xsl:if>
-	</xsl:template>
-
-	<xsl:template match="sch:rule[@abstract='true'] | rule[@abstract='true']"
-		mode="extends" >
-                <xsl:if test="@context">
-                    <xsl:message>Markup Error: context attribute on abstract &lt;rule></xsl:message>
-                </xsl:if>
-			<xsl:apply-templates/>
-	</xsl:template>
-
-	<!-- SPAN -->
-	<xsl:template match="sch:span | span" mode="text">
-		<xsl:call-template name="process-span"
-			><xsl:with-param name="class" select="@class"/>
-		</xsl:call-template>
-	</xsl:template>
-
-	<!-- TITLE -->
-	<!-- swallow -->
-	<xsl:template match="sch:title | title" /> 
-
-	<!-- VALUE-OF -->
-	<xsl:template match="sch:value-of | value-of" mode="text" >
-               <xsl:if test="not(@select)">
-                    <xsl:message>Markup Error: no select attribute in &lt;value-of></xsl:message>
-                </xsl:if>
-	        <xsl:call-template name="IamEmpty" />
-		<axsl:text xml:space="preserve"> </axsl:text>
-		<xsl:choose>
-			<xsl:when test="@select"
-				><xsl:call-template name="process-value-of">
-					<xsl:with-param name="select" select="@select"/>  
-                                   <!-- will saxon have problem with this too?? -->
-				</xsl:call-template>
-			</xsl:when>
-			<xsl:otherwise >
-				<xsl:call-template name="process-value-of"
-					><xsl:with-param name="select" select="'.'"/>
-				</xsl:call-template>
-			</xsl:otherwise>
-                </xsl:choose>
-		<axsl:text xml:space="preserve"> </axsl:text>
-	</xsl:template>
-
-<!-- ============================================================== -->
-	<!-- Text -->
-	<xsl:template match="text()" priority="-1" mode="do-keys">
-		<!-- strip characters -->
-	</xsl:template>
-	<xsl:template match="text()" priority="-1" mode="do-all-patterns">
-		<!-- strip characters -->
-	</xsl:template>
-        <xsl:template match="text()" priority="-1" mode="do-schema-p">
-		<!-- strip characters -->
-	</xsl:template>
-        <xsl:template match="text()" priority="-1" mode="do-pattern-p">
-		<!-- strip characters -->
-	</xsl:template>
-	<xsl:template match="text()" priority="-1">
-		<!-- strip characters -->
-	</xsl:template>
-	<xsl:template match="text()" mode="text">
-		<xsl:value-of select="normalize-space(.)"/>
-	</xsl:template>
-
-	<xsl:template match="text()" mode="inline-text">
-		<xsl:value-of select="."/>
-	</xsl:template>
-
-<!-- ============================================================== -->
-<!-- utility templates -->
-<xsl:template name="IamEmpty">
-	<xsl:if test="count( * )">
-		<xsl:message>
-			<xsl:text>Warning: </xsl:text>
-			<xsl:value-of select="name(.)"/>
-			<xsl:text> must not contain any child elements</xsl:text>
-		</xsl:message>
-	</xsl:if>
-</xsl:template>
-
-<xsl:template name="diagnosticsSplit">
-  <!-- Process at the current point the first of the <diagnostic> elements
-       referred to parameter str, and then recurse -->
-  <xsl:param name="str"/>
-  <xsl:variable name="start">
-    <xsl:choose>
-      <xsl:when test="contains($str,' ')">
-	<xsl:value-of  select="substring-before($str,' ')"/>
-      </xsl:when>
-      <xsl:otherwise><xsl:value-of select="$str"/></xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-
-  <xsl:variable name="end">
-    <xsl:if test="contains($str,' ')">
-      <xsl:value-of select="substring-after($str,' ')"/>
-    </xsl:if>
-  </xsl:variable>
-
-  <xsl:if test="not(string-length(normalize-space($start)) = 0)
-	and not(//sch:diagnostic[@id = ($start)]) and not(//diagnostic[@id = ($start)])">
-	<xsl:message>Reference error: A diagnostic "<xsl:value-of select="string($start)"/>" has been referenced but is not declared</xsl:message>
-  </xsl:if>
-
-  <xsl:if test="string-length(normalize-space($start)) > 0">
-     <xsl:apply-templates 
-        select="//sch:diagnostic[@id = ($start) ] | //diagnostic[@id= ($start) ]"/>
-  </xsl:if>
-
-  <xsl:if test="not($end='')">
-    <xsl:call-template name="diagnosticsSplit">
-      <xsl:with-param name="str" select="$end"/>
-    </xsl:call-template>
-  </xsl:if>
-</xsl:template>
-
-
-<!-- ============================================================== -->
-
-	<xsl:template match="*">
-		<xsl:message>
-			<xsl:text>Warning: unrecognized element </xsl:text>
-			<xsl:value-of select="name(.)"/>
-		</xsl:message>
-	</xsl:template>
-	<xsl:template match="*" mode="text">
-		<xsl:message>
-			<xsl:text>Warning: unrecognized element </xsl:text>
-			<xsl:value-of select="name(.)"/>
-		</xsl:message>
-	</xsl:template>
-<!-- ============================================================== -->
-	<!-- Default named templates -->
-	<!-- These are the actions that are performed unless overridden -->
-	<xsl:template name="process-prolog"/>
-	<!-- no params -->
-	<xsl:template name="process-root">
-		<xsl:param name="contents"/>
-		<!-- unused params: fpi, title, id, icon, lang, version, schemaVersion -->
-		<xsl:copy-of select="$contents"/>
-	</xsl:template>
-	<xsl:template name="process-assert">
-		<xsl:param name="role"/>
-		<xsl:param name="test"/>
-		<!-- unused parameters: id, icon, diagnostics, subject -->
-		<xsl:call-template name="process-message">
-			<xsl:with-param name="pattern" select="$test"/>
-			<xsl:with-param name="role" select="$role"/>
-		</xsl:call-template>
-	</xsl:template>
-	<xsl:template name="process-report">
-		<xsl:param name="role"/>
-		<xsl:param name="test"/>
-		<!-- unused parameters: id, icon, diagnostics, subject -->
-		<xsl:call-template name="process-message">
-			<xsl:with-param name="pattern" select="$test"/>
-			<xsl:with-param name="role" select="$role"/>
-		</xsl:call-template>
-	</xsl:template>
-	<xsl:template name="process-diagnostic">
-		<!-- params: id -->
-		<xsl:apply-templates mode="text"/>
-	</xsl:template>
-	<xsl:template name="process-dir" 
-		><xsl:apply-templates mode="inline-text"/></xsl:template>
-	<xsl:template name="process-emph" 
-		><xsl:apply-templates mode="inline-text"/></xsl:template>
-	<xsl:template name="process-name">
-		<xsl:param name="name"
-		/><axsl:value-of select="{$name}"/></xsl:template>
-	<xsl:template name="process-ns" />
-	<!-- unused params: prefix, uri -->
-	<!-- note that this is independent of the use of sch:ns by sch:schema -->
-	<xsl:template name="process-p"/>
-	<!-- unused params: class, id, icon, lang -->
-	<xsl:template name="process-pattern"/>
-	<!-- unused params: name, id, see, fpi, icon -->
-	<xsl:template name="process-rule"/>
-	<!-- unused params: id, context, role -->
-	<xsl:template name="process-span" 
-		><xsl:apply-templates mode="inline-test"/></xsl:template>
-	<xsl:template name="process-value-of">
-		<xsl:param name="select"
-		/><axsl:value-of select="{$select}"/></xsl:template>
-	<!-- default output action: the simplest customization is to just override this -->
-	<xsl:template name="process-message">
-		<!-- params: pattern, role -->
-		<xsl:apply-templates mode="text"/>
-	</xsl:template>
-</xsl:stylesheet>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/source.xml b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/source.xml
deleted file mode 100644
index bbef50d..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/source.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<house>
-         <wall/>
-         <wall/>
-         <wall/>
-         <wall/>
-         <address>
-            <street>1 The High Street</street>
-            <town>New Town</town>
-            <postcode>NT1</postcode>
-         </address>
-         <builder>
-            <firstname>Bob</firstname>
-            <lastname>Builder</lastname>
-            <certification number="123"/>
-         </builder>
-      </house>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/test-schematron.xml b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/test-schematron.xml
deleted file mode 100644
index 45f4f65..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/test-schematron.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<sch:schema xmlns:sch="http://www.ascc.net/xml/schematron"
-                 icon="http://www.ascc.net/xml/resource/schematron/bilby.jpg"
-                 defaultPhase="built">
-
-             <sch:p>This is an example schema for the <emph>Building Projects XML</emph> language.</sch:p>
-
-             <sch:phase id="underConstruction">
-                <sch:active pattern="construction"></sch:active>
-                <sch:active pattern="admin"></sch:active>
-             </sch:phase>
-
-             <sch:phase id="built">
-                <sch:active pattern="completed">completed</sch:active>
-                <sch:active pattern="admin">admin</sch:active>
-             </sch:phase>
-
-
-             <sch:pattern name="Construction Checks" id="construction">
-
-                <sch:p>Constraints which are applied during construction</sch:p>
-
-                <sch:rule context="house">
-                   <sch:assert test="count(wall) = 4" diagnostics="1">A house should have 4 walls</sch:assert>
-                   <sch:report test="not(roof)" diagnostics="2">The house is incomplete, it still needs a roof</sch:report>
-                   <sch:assert test="builder">An incomplete house must have
-                   a builder assigned to it</sch:assert>
-                   <sch:assert test="not(owner)">An incomplete house cannot have an owner</sch:assert>
-                </sch:rule>
-
-             </sch:pattern>
-
-             <sch:pattern name="Final Checks" id="completed">
-                <sch:p>Constraints which are applied after construction</sch:p>
-
-                <sch:rule context="house">
-                   <sch:assert test="count(wall)= 4" diagnostics="1">A house should have 4 walls</sch:assert>
-                   <sch:report test="not(roof)" diagnostics="2">The house is incomplete, it still needs a roof</sch:report>
-                   <sch:assert test="owner">An incomplete house must have
-                   an owner</sch:assert>
-                   <sch:assert test="not(builder)">An incomplete house doesn't need a builder</sch:assert>
-                </sch:rule>
-
-             </sch:pattern>
-
-             <sch:pattern name="Adminstration Checks" id="admin">
-
-                <sch:p>Adminstrative constraints which are <sch:emph>always</sch:emph> applied</sch:p>
-
-                <sch:rule context="house">
-                   <sch:assert test="address">A house must have an address</sch:assert>
-                </sch:rule>
-
-                <sch:rule context="address">
-                   <sch:assert test="count(*) = count(street) + count(town) + count(postcode)">
-                   An address may only include street, town and postcode elements.
-                   </sch:assert>
-                   <sch:assert test="street">An address must include the street details</sch:assert>
-                   <sch:assert test="town">An address must identify the town</sch:assert>
-                   <sch:assert test="postcode">An address must have a postcode</sch:assert>
-                </sch:rule>
-
-
-                <sch:rule abstract="true" id="nameChecks">
-                   <sch:assert test="firstname">A <name/> element must have a first name</sch:assert>
-                   <sch:assert test="lastname">A <name/> element must have a last name</sch:assert>
-                </sch:rule>
-
-                <sch:rule context="builder">
-                   <sch:extends rule="nameChecks"></sch:extends>
-                   <sch:assert test="certification">A <name/> must be certified</sch:assert>
-                </sch:rule>
-
-                <sch:rule context="owner">
-                   <sch:extends rule="nameChecks"></sch:extends>
-                   <sch:assert test="telephone">An <name/> must have a telephone</sch:assert>
-                </sch:rule>
-
-                <sch:rule context="certification">
-                   <sch:assert test="@number">Certification numbers must be recorded
-                   in the number attribute</sch:assert>
-                </sch:rule>
-
-             </sch:pattern>
-
-             <diagnostics>
-                <diagnostic id="1">
-                    Its an odd house which has more or less than four walls! Consult your architect...
-                </diagnostic>
-
-                <diagnostic id="2">
-                    Its an odd house which has no roof! Consult your architect...
-                </diagnostic>
-
-             </diagnostics>
-
-         </sch:schema>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/transformSchematronExample.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/transformSchematronExample.jelly
deleted file mode 100644
index b0f41e4..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/schematron/transformSchematronExample.jelly
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-  <x:transform

-     xml="test-schematron.xml"

-     xslt="schematron-wrapper.xsl"

-     var="test_schematron"/>

-

-  <x:transform

-     xml="source.xml"

-     xslt="${test_schematron}" var="doc"/>

-

-  Report count=<x:expr select="count($doc//report)"/>:assert count=<x:expr select="count($doc//assert)"/>

-

-</j:jelly>

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/suite.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/suite.jelly
deleted file mode 100644
index 421fae8..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/suite.jelly
+++ /dev/null
@@ -1,321 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite 
-    xmlns:j="jelly:core" 
-    xmlns:x="jelly:xml" 
-    xmlns:test="jelly:junit">
-
-
-    <test:case name="testUriParse">
-        <x:parse var="doc" xml="dummy.xml"/>
-        
-        <test:assert xpath="$doc/dummy/entry[@id='2']"/>        
-    </test:case>
-    
-  <test:case name="testBodyParse">
-      
-      <x:parse var="doc">
-          <foo>
-              <bar a="1"/>
-          </foo>
-      </x:parse>
-    
-        <test:assert xpath="$doc/foo/bar[@a='1']"/>
-  </test:case>
-  
-  <test:case name="testTextParse">
-      
-      <j:set var="text" encode="false">
-          <foo>
-              <bar a="1"/>
-          </foo>
-      </j:set>
-    
-      <x:parse var="doc" text="${text}"/>
-    
-        <test:assert xpath="$doc/foo/bar[@a='1']"/>
-  </test:case>
-  
-  <test:case name="testElementAndAttribute">
-      
-      <x:parse var="doc">
-          <x:element name="foo">
-              <x:attribute name="x">1234</x:attribute>
-              
-              <x:element name="bar">
-                    <x:attribute name="y">ABC</x:attribute>
-                    hello
-                </x:element>
-          </x:element>
-      </x:parse>
-    
-        <test:assert xpath="$doc/foo"/>
-        <test:assert xpath="$doc/foo[@x='1234']"/>
-        <test:assert xpath="count($doc/bar) = 0"/>
-
-        <!-- test nested element and attributes -->        
-        <test:assert xpath="$doc/foo[@x='1234']/bar[@y='ABC']"/>
-        <test:assert xpath="$doc/foo[@x='1234']/bar[@y='ABC']='hello'"/>
-  </test:case>
-  
-  <test:case name="testBadElementAndAttribute">
-
-        
-            <j:catch var="ex">
-                <x:element name="foo">
-                    some text
-                    <x:attribute name="x">1234</x:attribute>
-                </x:element>
-            </j:catch>        
-              
-        
-        <test:assert test="${ex != null}">
-            We should have created an exception as some text is output before the attributes
-        </test:assert>
-  </test:case>
-  
-  <test:case name="assertXPathTests">
-  
-    <x:parse var="doc">
-      <foo>
-          <bar>cheese</bar>
-      </foo>
-    </x:parse>  
-     
-  
-    <test:assert xpath="$doc/foo/bar">This should never fail</test:assert>
-    <test:assert xpath="$doc/foo/bar = 'cheese'">This should never fail</test:assert>
-    
-    <j:catch var="ex">
-          <test:assert xpath="$doc/foo/xyz">This should always fail</test:assert>
-        </j:catch>        
-        
-        <test:assert test="${ex != null}">We should have created an exception</test:assert>
-        
-        The exception was: ${ex.message}
-  </test:case>
-
-    <!-- test the use of namespaces with XPath -->
-  <test:case name="assertXPathWithNamespaceTests" xmlns:a="fooURI" xmlns:z="doesNotMatch" xmlns="different">
-  
-    <x:parse var="doc">
-      <foo xmlns="fooURI">
-          <bar>cheese</bar>
-      </foo>
-    </x:parse>  
-     
-    <test:assert xpath="$doc/a:foo/a:bar">This should never fail</test:assert>
-    <test:assert xpath="$doc/b:foo/b:bar" xmlns:b="fooURI">This should never fail</test:assert>
-    
-    <j:catch var="ex">
-          <test:assert xpath="$doc/z:foo/z:bar">This should always fail</test:assert>
-        </j:catch>        
-        
-        <test:assert test="${ex != null}">We should have created an exception</test:assert>
-        
-    <j:catch var="ex">
-          <test:assert xpath="$doc/foo/bar">This should always fail, since foo is not in the empty namespace</test:assert>
-        </j:catch>        
-        
-        <test:assert test="${ex != null}">We should have created an exception</test:assert>
-        
-        <!-- 
-            || now lets test that the default namespace 'different' is ignored by the XPath expressions
-            || since XPath should ignore the default namespace - you must use a prefix in XPath to denote
-            || a namespace
-            -->
-        <test:assert xpath="$doc/*[local-name()='foo']"/>
-  </test:case>
-
-    <!-- test xpath sorting -->
-    <test:case name="testXpathSorting">
-        <x:parse var="nums">
-            <a>
-                <b v="3"/>
-                <b v="2"/>
-                <b v="1"/>
-                <b v="11"/>
-                <b v="1.4"/>
-                <b v="1.2"/>
-            </a>
-        </x:parse>
-
-        <x:parse var="deeper">
-            <a>
-                <b><c><d>3<e>1</e></d></c></b>
-                <b><c><d>2<e>11</e></d></c></b>
-                <b><c><d>1</d></c></b>
-                <b><c><d>11</d></c></b>
-            </a>
-        </x:parse>
-
-        <!-- test ascending -->
-        <j:set var="result" value=""/>
-        <x:forEach select="$nums/a/b" var="x" sort="number(@v)">
-            <x:set var="num" select="$x/@v"/>
-            <j:set var="result" value="${result} ${num.get(0).getText()}"/>
-        </x:forEach>
-
-        <test:assertEquals expected=" 1 1.2 1.4 2 3 11" actual="${result}"/>
-
-        <!-- test descending -->
-        <j:set var="result" value=""/>
-        <x:forEach select="$nums/a/b" var="x" sort="number(@v)" descending="true">
-            <x:set var="num" select="$x/@v"/>
-            <j:set var="result" value="${result} ${num.get(0).getText()}"/>
-        </x:forEach>
-
-        <test:assertEquals expected=" 11 3 2 1.4 1.2 1" actual="${result}"/>
-
-        <!-- test deeper nesting -->
-        <j:set var="result" value=""/>
-        <x:forEach select="$deeper/a/b" var="x" sort="number(c/d/text())">
-            <j:set var="result" value="${result} ${x.getStringValue()}"/>
-        </x:forEach>
-
-        <test:assertEquals expected=" 1 211 31 11" actual="${result}"/>
-
-        <!-- test sort as strings -->
-        <j:set var="result" value=""/>
-        <x:forEach select="$nums/a/b" var="x" sort="@v">
-            <x:set var="num" select="$x/@v"/>
-            <j:set var="result" value="${result} ${num.get(0).getText()}"/>
-        </x:forEach>
-
-        <test:assertEquals expected=" 1 1.2 1.4 11 2 3" actual="${result}"/>
-
-        <!-- test x:set with sort -->
-        <j:set var="result" value=""/>
-        <x:set var="rset" select="$nums/a/b" sort="number(@v)"/>
-        <j:forEach var="num" items="${rset.iterator()}">
-            <j:set var="result" value="${result} ${num.attributeValue('v')}"/>
-        </j:forEach>
-
-        <test:assertEquals expected=" 1 1.2 1.4 2 3 11" actual="${result}"/>
-
-        <!-- test x:set with sort -->
-        <j:set var="result" value=""/>
-        <x:set var="rset" select="$nums/a/b"/>
-        <x:sort list="${rset}" sort="number(@v)"/>
-        <j:forEach var="num" items="${rset.iterator()}">
-            <j:set var="result" value="${result} ${num.attributeValue('v')}"/>
-        </j:forEach>
-
-        <test:assertEquals expected=" 1 1.2 1.4 2 3 11" actual="${result}"/>
-
-    </test:case>
-
-
-  <test:case name="testCommentWithLexical">
-      
-      <x:parse var="doc">
-          <foo>
-                <!-- this will not be output -->
-                
-                <x:comment text="this is a comment"/>
-          </foo>
-      </x:parse>
-    
-        <test:assert xpath="$doc/foo"/>
-
-        <j:set var="t"><x:copyOf select="$doc/foo/comment()" lexical="true"/></j:set>
-        
-        <test:assertEquals expected="&lt;!--this is a comment--&gt;" actual="${t.trim()}"/>
-
-    </test:case>
-    
-    <test:case name="testCommentWithoutLexical">
-      
-      <x:parse var="doc">
-          <foo>
-                <!-- this will not be output -->
-                
-                <x:comment text="this is a comment"/>
-          </foo>
-      </x:parse>
-    
-        <test:assert xpath="$doc/foo"/>
-
-        <j:set var="t"><x:copyOf select="string($doc/foo/comment())" lexical="true"/></j:set>
-        
-        <test:assertEquals expected="this is a comment" actual="${t.trim()}"/>
-
-    </test:case>
-
-  <test:case name="testCommentWithTextAttributeWithLexical">
-      
-      <x:parse var="doc">
-          <foo>
-                <!-- this will not be output -->
-                
-                <x:comment text="this is a comment"/>
-          </foo>
-      </x:parse>
-    
-        <test:assert xpath="$doc/foo"/>
-
-        <j:set var="t"><x:copyOf select="$doc/foo/comment()" lexical="true"/></j:set>
-        
-        <test:assertEquals expected="&lt;!--this is a comment--&gt;" actual="${t.trim()}"/>
-  </test:case>
-  
-  <test:case name="testFileParse">
-    <j:new var="theSuite" className="java.io.File">
-      <j:arg value="${basedir}/src/test/org/apache/commons/jelly/tags/xml/suite.jelly"/>
-    </j:new>
-    exists = ${theSuite.exists()}, readable = ${theSuite.canRead()}, class=${theSuite.class.name}
-    <!-- this test fails with beanutils 1.6 
-    <x:parse var="suite" xml="${theSuite}"/> -->
-  </test:case>
-
-    
-    <test:case name="testSetSingleNodeAndAsString">
-        <x:parse var="blopElements">
-            <root>
-            <blop>blop1</blop>
-            <blip/>
-            <blop id="bla">blop0</blop></root>
-        </x:parse>
-        <x:set var="blopSingle" select="$blopElements/root/blop" single="true"/>
-        <!-- should return the second -->
-        <j:invokeStatic var="eltClass" className="java.lang.Class" method="forName"><j:arg value="org.dom4j.Element"/></j:invokeStatic>
-        <test:assert test="${eltClass.isAssignableFrom(blopSingle.getClass())}"/>
-        <j:set var="blopSingleText"><x:expr select="$blopSingle/text()"/></j:set>
-        <test:assertEquals actual="${blopSingleText}" expected="blop1"/>
-        <!-- check if selecting root/blip returns a list -->
-        <x:set var="blip" select="$blopElements/root/blip" single="false"/>
-        <j:invokeStatic var="listClass" className="java.lang.Class" method="forName"><j:arg value="java.util.List"/></j:invokeStatic>
-        <test:assert test="${listClass.isAssignableFrom(blip.getClass())}"/>
-        <!-- check if selecting blop/@id asString returns a string -->
-        <x:set var="blopId" select="$blopElements/root/blop/@id" asString="true"/>
-        <j:invokeStatic var="stringClass" className="java.lang.Class" method="forName"><j:arg value="java.lang.String"/></j:invokeStatic>
-        <test:assert test="${stringClass.isAssignableFrom(blopId.getClass())}"/>
-  </test:case>
-   
-  <test:case name="testEntities">
-    <x:parse var="doc" xml="entity.xml"/> 
-    
-    <!--just the entity is output-->
-    <j:set var="value"><x:copyOf select="$doc/a/node()"/></j:set>
-    <test:assertEquals actual="${value}" expected="y"/>
-    
-    <!--both the entity and it's lexical name are properly output-->
-    <j:set var="value"><x:copyOf select="$doc/a/node()" lexical="true"/></j:set>
-    <test:assertEquals actual="${value}" expected="&amp;x;y"/>
-  </test:case>
-    
-</test:suite>
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testDoctype.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testDoctype.jelly
deleted file mode 100644
index adf97a3..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testDoctype.jelly
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly trim="false" xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-<x:doctype name="foo" publicId="publicID" systemId="foo.dtd"/>

-<foo/>

-

-</j:jelly>

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testExpressions.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testExpressions.jelly
deleted file mode 100644
index 473ed22..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testExpressions.jelly
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly trim="false" xmlns:j="jelly:core">
-<testcase>
-    
-  <j:set var="topping">cheese</j:set>
-  <j:set var="base">deep pan</j:set>
-
-  <j:set var="test" value="pizza has ${topping} on top"/>
-  
-  <j:if test="${test != 'pizza has cheese on top'}">
-      <fail>attribute test failed. Found <j:expr value="${test}"/> and expected 'pizza has cheese on top'</fail>
-  </j:if>
-      
-  <j:set var="test">pizza has ${topping} on top</j:set>
-  
-  <j:if test="${test != 'pizza has cheese on top'}">
-      <fail>element test failed. Found <j:expr value="${test}"/> and expected 'pizza has cheese on top'</fail>
-  </j:if>
-      
-</testcase>
-</j:jelly>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testForEach.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testForEach.jelly
deleted file mode 100644
index ea78b86..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testForEach.jelly
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">
-
-<testcase>
-
-  <x:parse var="doc">
-
-    <a>
-      <b v="1"/>
-      <b v="2"/>
-      <b v="3"/>
-    </a>
-  </x:parse>
-
-  <j:set var="i" value="0"/>
-  <j:set var="i2" value="0"/>
-    
-  <x:forEach select="$doc/a/b" var="x">
-    <x:set var="i2" select="$i2 + number($x/@v)"/>
-  </x:forEach>
-    
-  <x:forEach select="$doc/a">
-      <x:forEach select="b">
-      <x:set var="i" select="$i + @v"/>
-    </x:forEach>
-  </x:forEach>
-  
-  <x:if select="$i2 != 6.0">          
-      <fail>The i2 should be 6! but the value is <x:expr select="$i2"/></fail>
-  </x:if>
-  
-  <x:if select="$i != 6.0">          
-      <fail>The i should be 6! but the value is <x:expr select="$i"/></fail>
-  </x:if>
-  
-</testcase>
-
-</j:jelly>
-
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testThread.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testThread.jelly
deleted file mode 100644
index 6ed9018..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/testThread.jelly
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!--

- ! FIXME: move to xml taglib

- !-->

-<j:jelly trim="false" xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-About to spawn another thread...

-

-<j:thread name="thread1" file="target/thread.xml">

-  <x:parse var="doc">

-    <web-app>

-      <servlet>

-        <servlet-name>snoop</servlet-name>

-        <servlet-class>SnoopServlet</servlet-class>

-      </servlet>

-      <servlet>

-        <servlet-name>file</servlet-name>

-        <servlet-class>ViewFile</servlet-class>

-        <init-param>

-          <param-name>initial</param-name>

-          <param-value>1000</param-value>

-          <description>

-            The initial value for the counter  

-          </description>

-        </init-param>

-      </servlet>

-      <servlet-mapping>

-        <servlet-name>snoop</servlet-name>

-        <url-pattern>/foo/snoop</url-pattern>

-      </servlet-mapping>

-    </web-app>

-  </x:parse>

-

-  <j:whitespace>    

-  <x:set var="count" select="count($doc//servlet)"/>

-  <x:forEach var="s" select="$doc//servlet">

-    name: <x:expr select="$s/servlet-name"/>

-    class: <x:expr select="$s/servlet-class"/>

-  </x:forEach>

-

-  There are <x:expr select="$count"/> servlet(s)

-  </j:whitespace>    

-</j:thread>

-

-The thread should have started now!

-

-</j:jelly>

-

-

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample.jelly
deleted file mode 100644
index 9e7cf7f..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample.jelly
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-  <x:transform xslt="transformExample.xsl" var="doc" >

-    <document>

-      <chapter>It works!</chapter>

-    </document>

-  </x:transform>

-

-  <x:expr select="$doc/html/title"/>

-

-</j:jelly>

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample.xsl b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample.xsl
deleted file mode 100644
index b7fbbe0..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample.xsl
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:template match="document">
-  <html>
-    <xsl:apply-templates/>
-    <body></body>
-  </html>
-</xsl:template>
-
-<xsl:template match="chapter">
-  <title><xsl:apply-templates/></title>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample1.xsl b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample1.xsl
deleted file mode 100644
index 957f7a0..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample1.xsl
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:template match="document">
-<data1>
-  <xsl:apply-templates/>
-  <data1_body></data1_body>
-</data1>
-</xsl:template>
-
-<xsl:template match="chapter">
-<data1_title><xsl:apply-templates/></data1_title>
-</xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample2.xsl b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample2.xsl
deleted file mode 100644
index 7353e15..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample2.xsl
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:template match="data1">
-<data2>
-  <xsl:apply-templates/>
-  <data2_body></data2_body>
-</data2>
-</xsl:template>
-
-<xsl:template match="data1_title">
-<data2_title><xsl:apply-templates/></data2_title>
-</xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample3.xsl b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample3.xsl
deleted file mode 100644
index 2ffaa7b..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample3.xsl
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:template match="data2">
-<data3>
-  <xsl:apply-templates/>
-  <data3_body></data3_body>
-</data3>
-</xsl:template>
-
-<xsl:template match="data2_title">
-<data3_title><xsl:apply-templates/></data3_title>
-</xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample4.xsl b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample4.xsl
deleted file mode 100644
index 9430a2a..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample4.xsl
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:template match="data3">
-<data4>
-  <xsl:apply-templates/>
-  <data4_body></data4_body>
-</data4>
-</xsl:template>
-
-<xsl:template match="data3_title">
-<data4_title><xsl:apply-templates/></data4_title>
-</xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample5.xsl b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample5.xsl
deleted file mode 100644
index 4f87c7b..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExample5.xsl
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:template match="data4">
-<data5>
-  <xsl:apply-templates/>
-  <data5_body></data5_body>
-</data5>
-</xsl:template>
-
-<xsl:template match="data4_title">
-<data5_title><xsl:apply-templates/></data5_title>
-</xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleAllInLine.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleAllInLine.jelly
deleted file mode 100644
index 01f4c0e..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleAllInLine.jelly
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-  <x:parse var="xsl_doc">

-                <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

-

-      <xsl:template match="document">

-        <html>

-          <xsl:apply-templates/>

-          <body></body>

-        </html>

-      </xsl:template>

-

-      <xsl:template match="chapter">

-        <title><xsl:apply-templates/></title>

-      </xsl:template>

-

-    </xsl:stylesheet>

-        </x:parse>

-

-  <x:transform xslt="${xsl_doc}" var="doc" >

-    <document>

-      <chapter>It works!</chapter>

-    </document>

-  </x:transform>

-

-  <x:expr select="$doc/html/title"/>

-

-</j:jelly>

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleSAXOutput.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleSAXOutput.jelly
deleted file mode 100644
index b5d8fa0..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleSAXOutput.jelly
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-  <x:parse var="xsl_doc">

-                <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

-

-      <xsl:template match="document">

-        <html>

-          <xsl:apply-templates/>

-          <body></body>

-        </html>

-      </xsl:template>

-

-      <xsl:template match="chapter">

-        <title><xsl:apply-templates/></title>

-      </xsl:template>

-

-    </xsl:stylesheet>

-        </x:parse>

-

-        <!-- here we're testing if the output of the XSLT comes out as SAX events

-                || that the <x:parse> tag can then parse.

-                || We're using the <x:parse> around the <x:transform> purely to test

-                || that the <x:transform> is capable of outputting SAX events -->

-        <x:parse var="doc">             

-          <x:transform xslt="${xsl_doc}">

-            <document>

-              <chapter>It works!</chapter>

-            </document>

-          </x:transform>

-        </x:parse>      

-        

-  <x:expr select="$doc/html/title"/>

-

-</j:jelly>

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleSAXOutputNestedTransforms.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleSAXOutputNestedTransforms.jelly
deleted file mode 100644
index ffb88fa..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleSAXOutputNestedTransforms.jelly
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-  <x:transform xslt="transformExample5.xsl" var="doc">

-      <x:transform xslt="transformExample4.xsl">

-        <x:transform xslt="transformExample3.xsl">

-            <x:transform xslt="transformExample2.xsl">

-                <x:transform xslt="transformExample1.xsl">

-                    <document>

-                      <chapter>It works!</chapter>

-                    </document>

-                </x:transform>

-            </x:transform>

-        </x:transform>

-      </x:transform>

-  </x:transform>

-

-  <x:expr select="$doc/data5/data5_title"/>

-

-</j:jelly>

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleXmlVar.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleXmlVar.jelly
deleted file mode 100644
index f1b3a66..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleXmlVar.jelly
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-  <x:transform xslt="transformExample.xsl" xml="transformExampleXmlVar.xml" var="doc"/>

-

-  <x:expr select="$doc/html/title"/>

-

-</j:jelly>

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleXmlVar.xml b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleXmlVar.xml
deleted file mode 100644
index e7d5b5a..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformExampleXmlVar.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-    <document>
-      <chapter>It works!</chapter>
-    </document>
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample.jelly
deleted file mode 100644
index 0b97f18..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample.jelly
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-  <x:transform xslt="transformParamExample.xsl" var="doc" xml="transformParamExample.xml">

-    <x:param name="param1" value="It works!"/>

-  </x:transform>

-

-  <x:expr select="$doc/out"/>

-

-</j:jelly>

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample.xml b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample.xml
deleted file mode 100644
index 892ebfc..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<doc>Hello</doc>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample.xsl b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample.xsl
deleted file mode 100644
index c2009de..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample.xsl
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-  <xsl:param name="param1" select="'default value'"/>
-  <xsl:template match="doc">
-    <out><xsl:value-of select="$param1"/></out>
-  </xsl:template>
-</xsl:stylesheet>
-
diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample2.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample2.jelly
deleted file mode 100644
index ffd03ba..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/transformParamExample2.jelly
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">

-

-    <x:parse var="xsl_doc">

-        <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

-          <xsl:param name="param1" select="'default value 1'"/>

-          <xsl:param name="param2" select="'default value 2'"/>

-          <xsl:template match="doc">

-            <out><xsl:value-of select="$param1"/><xsl:value-of select="$param2"/></out>

-          </xsl:template>

-        </xsl:stylesheet>

-    </x:parse>

-

-  <x:transform xslt="${xsl_doc}" var="doc">

-    <doc>Hello</doc>

-    <x:param name="param1" value="It "/>

-    <x:param name="param2">works!</x:param>

-  </x:transform>

-

-  <x:expr select="$doc/out"/>

-

-</j:jelly>

-

-

diff --git a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/xpathSortExample.jelly b/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/xpathSortExample.jelly
deleted file mode 100644
index 36a9691..0000000
--- a/jelly-tags/xml/src/test/org/apache/commons/jelly/tags/xml/xpathSortExample.jelly
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0"?>

-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:test="jelly:junit" xmlns:x="jelly:xml">

-    <x:parse var="nums">

-        <a>

-            <b v="3"/>

-            <b v="2"/>

-            <b v="1"/>

-            <b v="11"/>

-            <b v="1.4"/>

-            <b v="1.2"/>

-        </a>

-    </x:parse>

-

-    <x:parse var="strs">

-        <a>

-            <b v="z"/>

-            <b v="g"/>

-            <b v="d"/>

-            <b v="a"/>

-        </a>

-    </x:parse>

-

-    <x:parse var="deeper">

-        <a>

-            <b><c><d>3<e>1</e></d></c></b>

-            <b><c><d>2<e>11</e></d></c></b>

-            <b><c><d>1</d></c></b>

-            <b><c><d>11</d></c></b>

-        </a>

-    </x:parse>

-

-    <j:set var="result" value=""/>

-    <x:forEach select="$nums/a/b" var="x" sort="@v">

-        <x:set var="num" select="$x/@v"/>

-        <j:set var="result" value="${result} ${num.get(0).getText()}"/>

-    </x:forEach>

-    ${result}

-

-    <j:set var="result" value=""/>

-    <x:forEach select="$nums/a/b" var="x" sort="@v" descending="true">

-        <x:set var="num" select="$x/@v"/>

-        <j:set var="result" value="${result} ${num.get(0).getText()}"/>

-    </x:forEach>

-    ${result}

-

-    <j:set var="result" value=""/>

-    <x:forEach select="$nums/a/b" var="x" sort="@v" sortDataType="java.lang.String">

-        <x:set var="num" select="$x/@v"/>

-        <j:set var="result" value="${result} ${num.get(0).getText()}"/>

-    </x:forEach>

-    ${result}

-

-    <j:set var="result" value=""/>

-    <x:forEach select="$strs/a/b" var="x" sort="@v">

-        <x:set var="str" select="$x/@v"/>

-        <j:set var="result" value="${result} ${str.get(0).getText()}"/>

-    </x:forEach>

-    ${result}

-

-    <j:set var="result" value=""/>

-    <x:forEach select="$deeper/a/b" var="x" sort="c/d">

-        <j:set var="result" value="${result} ${x.getStringValue()}"/>

-    </x:forEach>

-    ${result}

-

-    <j:set var="result" value=""/>

-    <x:set var="rset" select="$nums/a/b" sort="@v"/>

-    <j:forEach var="num" items="${rset.iterator()}">

-        <j:set var="result" value="${result} ${num.attributeValue('v')}"/>

-    </j:forEach>

-    ${result}

-

-    <j:set var="result" value=""/>

-    <x:set var="rset" select="$nums/a/b"/>

-    <x:sort list="${rset}" sort="@v"/>

-    <j:forEach var="num" items="${rset.iterator()}">

-        <j:set var="result" value="${result} ${num.attributeValue('v')}"/>

-    </j:forEach>

-    ${result}

-

-</j:jelly>
\ No newline at end of file
diff --git a/jelly-tags/xml/src/test/resources/import.jelly b/jelly-tags/xml/src/test/resources/import.jelly
deleted file mode 100644
index b296769..0000000
--- a/jelly-tags/xml/src/test/resources/import.jelly
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" >
-<x:transform xslt="import.xsl">
-<x:param name="language" value="DE"/>
-<root/>
-</x:transform>
-</j:jelly>
diff --git a/jelly-tags/xml/src/test/resources/import.xsl b/jelly-tags/xml/src/test/resources/import.xsl
deleted file mode 100644
index 877945e..0000000
--- a/jelly-tags/xml/src/test/resources/import.xsl
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns="http://www.w3.org/TR/xhtml1/strict">
-  <xsl:template match="/">
-    <html>
-      <head>
-        <title>Expense Report Summary</title>
-      </head>
-      <body>
-        <p>Total Amount: 12</p>
-      </body>
-    </html>
-  </xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/jelly-tags/xml/xdocs/changes.xml b/jelly-tags/xml/xdocs/changes.xml
deleted file mode 100644
index 9b99f67..0000000
--- a/jelly-tags/xml/xdocs/changes.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-11">
-      <action dev="dion" type="add">Initial release</action>
-    </release>
-  </body>
-</document>
diff --git a/jelly-tags/xml/xdocs/index.xml b/jelly-tags/xml/xdocs/index.xml
deleted file mode 100644
index f7a6136..0000000
--- a/jelly-tags/xml/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>XML Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        The XML Tags from the JSTL.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/xml/xdocs/navigation.xml b/jelly-tags/xml/xdocs/navigation.xml
deleted file mode 100644
index bbb5f3c..0000000
--- a/jelly-tags/xml/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="XML Tag Library">
-
-  <title>XML Tag Library</title>
-  
-  <body>
-    <menu name="XML Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/jelly-tags/xmlunit/.cvsignore b/jelly-tags/xmlunit/.cvsignore
deleted file mode 100644
index cabf1a6..0000000
--- a/jelly-tags/xmlunit/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-maven.log
-target
-lib
-velocity.log
diff --git a/jelly-tags/xmlunit/build.xml b/jelly-tags/xmlunit/build.xml
deleted file mode 100644
index ae717a5..0000000
--- a/jelly-tags/xmlunit/build.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.0-SNAPSHOT
-  on date May 24 2004, time 2301-->
-<project default="jar" name="commons-jelly-tags-xmlunit" basedir=".">
-  <property name="defaulttargetdir" value="target">
-  </property>
-  <property name="libdir" value="target/lib">
-  </property>
-  <property name="classesdir" value="target/classes">
-  </property>
-  <property name="testclassesdir" value="target/test-classes">
-  </property>
-  <property name="testreportdir" value="target/test-reports">
-  </property>
-  <property name="distdir" value="dist">
-  </property>
-  <property name="javadocdir" value="dist/docs/api">
-  </property>
-  <property name="final.name" value="commons-jelly-tags-xmlunit-1.0-SNAPSHOT">
-  </property>
-  <target name="init" description="o Initializes some properties">
-    <mkdir dir="${libdir}">
-    </mkdir>
-    <condition property="noget">
-      <equals arg2="only" arg1="${build.sysclasspath}">
-      </equals>
-    </condition>
-  </target>
-  <target name="compile" description="o Compile the code" depends="get-deps">
-    <mkdir dir="${classesdir}">
-    </mkdir>
-    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/java">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-      </classpath>
-    </javac>
-    <copy todir="${classesdir}">
-      <fileset dir="src/java">
-        <include name="**/*.properties">
-        </include>
-      </fileset>
-    </copy>
-    <copy todir="${testclassesdir}">
-      <fileset dir="src/test">
-        <include name="**/*.jelly">
-        </include>
-        <include name="**/*.xml">
-        </include>
-        <include name="**/*.xsl">
-        </include>
-        <include name="**/*.rng">
-        </include>
-        <include name="**/*.dtd">
-        </include>
-        <include name="**/*.properties">
-        </include>
-        <include name="**/*.html">
-        </include>
-      </fileset>
-    </copy>
-  </target>
-  <target name="jar" description="o Create the jar" depends="compile,test">
-    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
-    </jar>
-  </target>
-  <target name="clean" description="o Clean up the generated directories">
-    <delete dir="${defaulttargetdir}">
-    </delete>
-    <delete dir="${distdir}">
-    </delete>
-  </target>
-  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
-    <mkdir dir="dist">
-    </mkdir>
-    <copy todir="dist">
-      <fileset dir="${defaulttargetdir}" includes="*.jar">
-      </fileset>
-      <fileset dir="${basedir}" includes="LICENSE*, README*">
-      </fileset>
-    </copy>
-  </target>
-  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
-    <fail message="There were test failures.">
-    </fail>
-  </target>
-  <target name="internal-test" depends="compile-tests">
-    <mkdir dir="${testreportdir}">
-    </mkdir>
-    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
-      <sysproperty key="basedir" value=".">
-      </sysproperty>
-      <formatter type="xml">
-      </formatter>
-      <formatter usefile="false" type="plain">
-      </formatter>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${testclassesdir}">
-        </pathelement>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-      <batchtest todir="${testreportdir}">
-        <fileset dir="src/test">
-          <include name="**/Test*.java">
-          </include>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-  <target name="compile-tests" depends="compile">
-    <mkdir dir="${testclassesdir}">
-    </mkdir>
-    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
-      <src>
-        <pathelement location="src/test">
-        </pathelement>
-      </src>
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement path="${classesdir}">
-        </pathelement>
-      </classpath>
-    </javac>
-  </target>
-  <target name="javadoc" description="o Generate javadoc" depends="jar">
-    <mkdir dir="${javadocdir}">
-    </mkdir>
-    <tstamp>
-      <format pattern="2002-yyyy" property="year">
-      </format>
-    </tstamp>
-    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved.">
-    </property>
-    <property name="title" value="commons-jelly-tags-xmlunit 1.0-SNAPSHOT API">
-    </property>
-    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.jelly.tags.xmlunit.*">
-      <classpath>
-        <fileset dir="${libdir}">
-          <include name="*.jar">
-          </include>
-        </fileset>
-        <pathelement location="target/${final.name}.jar">
-        </pathelement>
-      </classpath>
-    </javadoc>
-  </target>
-  <target name="get-deps" unless="noget" depends="init">
-    <get dest="${libdir}/commons-jelly-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xmlunit-0.8.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xmlunit/jars/xmlunit-0.8.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-junit-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-junit-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/commons-jelly-tags-xml-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-xml-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xalan-2.3.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xalan/jars/xalan-2.3.1.jar">
-    </get>
-    <get dest="${libdir}/commons-jexl-SNAPSHOT.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-jexl/jars/commons-jexl-SNAPSHOT.jar">
-    </get>
-    <get dest="${libdir}/xml-apis-1.0.b2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-1.0.b2.jar">
-    </get>
-    <get dest="${libdir}/commons-beanutils-1.6.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.6.jar">
-    </get>
-    <get dest="${libdir}/commons-collections-2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.1.jar">
-    </get>
-    <get dest="${libdir}/commons-logging-1.0.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.3.jar">
-    </get>
-    <get dest="${libdir}/dom4j-1.5-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/dom4j/jars/dom4j-1.5-beta-2.jar">
-    </get>
-    <get dest="${libdir}/jaxen-1.1-beta-2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jaxen/jars/jaxen-1.1-beta-2.jar">
-    </get>
-    <get dest="${libdir}/xerces-2.2.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-2.2.1.jar">
-    </get>
-    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
-    </get>
-    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
-    </get>
-    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
-    </get>
-  </target>
-  <target name="install-maven">
-    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
-    </get>
-    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
-    </unjar>
-  </target>
-</project>
\ No newline at end of file
diff --git a/jelly-tags/xmlunit/maven.xml b/jelly-tags/xmlunit/maven.xml
deleted file mode 100644
index e7c4ace..0000000
--- a/jelly-tags/xmlunit/maven.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project default="java:jar">
-
-</project>
diff --git a/jelly-tags/xmlunit/project.properties b/jelly-tags/xmlunit/project.properties
deleted file mode 100644
index 39c1b61..0000000
--- a/jelly-tags/xmlunit/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-
-# Copyright 2002-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
diff --git a/jelly-tags/xmlunit/project.xml b/jelly-tags/xmlunit/project.xml
deleted file mode 100644
index 9a8a5df..0000000
--- a/jelly-tags/xmlunit/project.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project>
-  <extend>${basedir}/../tag-project.xml</extend>
-  <id>commons-jelly-tags-xmlunit</id>
-  <name>commons-jelly-tags-xmlunit</name>
-  <currentVersion>1.0</currentVersion>
-  <package>org.apache.commons.jelly.tags.xmlunit</package>
-  <description>This is a Jelly interface for unit testing XML applications.</description>
-  <shortDescription>Commons Jelly XMLUnit Tag Library</shortDescription>
-  <versions>
-    <version>
-      <id>1.0</id>
-      <name>1.0</name>
-      <tag>COMMONS-JELLY-XMLUNIT-1_0</tag>
-    </version>
-  </versions>
-  <dependencies>
-    <!-- START for compilation -->
-    <dependency>
-      <id>xmlunit</id>
-      <version>0.8</version>
-    </dependency>
-    <!-- for some reason I had to add this in or the 1.3.1 compiler barfed -->
-
-    <dependency>
-      <id>junit</id>
-      <version>3.8.1</version>
-    </dependency>
-    <!-- END for compilation -->
-    <!-- START for testing -->
-
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-junit</artifactId>
-      <version>1.0</version>
-      <url>http://jakarta.apache.org/commons/jelly/tags/junit/</url>
-    </dependency>
-    <dependency>
-      <groupId>commons-jelly</groupId>
-      <artifactId>commons-jelly-tags-xml</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <id>xalan</id>
-      <version>2.3.1</version>
-      <url>http://xml.apache.org/xalan-j/</url>
-    </dependency>
-    <!-- END for testing -->
-
-  </dependencies>
-</project>
diff --git a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/ActualTag.java b/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/ActualTag.java
deleted file mode 100644
index c30eb0f..0000000
--- a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/ActualTag.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.xmlunit;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.dom4j.Document;
-import org.dom4j.io.SAXReader;
-
-public class ActualTag extends XMLUnitTagSupport {
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Document actualDocument = parseBody();
-
-        AssertDocumentsEqualTag assertTag =
-            (AssertDocumentsEqualTag) findAncestorWithClass(AssertDocumentsEqualTag
-                .class);
-        assertTag.setActual(actualDocument);
-    }
-
-    protected SAXReader createSAXReader() {
-        return new SAXReader();
-    }
-}
diff --git a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/AssertDocumentsEqualTag.java b/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/AssertDocumentsEqualTag.java
deleted file mode 100644
index 2f82d57..0000000
--- a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/AssertDocumentsEqualTag.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.xmlunit;
-
-import java.io.IOException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.custommonkey.xmlunit.Diff;
-import org.custommonkey.xmlunit.XMLUnit;
-import org.dom4j.Document;
-import org.dom4j.io.SAXReader;
-import org.xml.sax.SAXException;
-
-/**
- * Compares two XML documents using XMLUnit (http://xmlunit.sourceforge.net/).
- * If they are different an exception will be thrown.
- */
-public class AssertDocumentsEqualTag extends XMLUnitTagSupport {
-
-    private Object actual;
-    private Document actualDocument;
-
-    private Object expected;
-    private Document expectedDocument;
-
-    /**
-     * Controls whether whitespace differences are reported as differences.
-     *
-     * Defaults to <code>false</code>, so if <code>trim</code> is set to
-     * <code>false</code> whitespace differences are detected.
-     */
-    private boolean ignoreWhitespace = false;
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-        invokeBody(output);
-
-        if (actual != null) {
-            if (actualDocument != null) {
-                fail("Cannot specify both actual attribute and element");
-            }
-            actualDocument = parse(actual);
-        }
-
-        if (expected != null) {
-            if (expectedDocument != null) {
-                fail("Cannot specify both expected attribute and element");
-            }
-            expectedDocument = parse(expected);
-        }
-
-        if ((expectedDocument == null
-            || expectedDocument.getRootElement() == null)
-            && (actualDocument == null
-                || actualDocument.getRootElement() == null)) {
-            return;
-        }
-
-        if (actualDocument != null) {
-            XMLUnit.setIgnoreWhitespace(ignoreWhitespace);
-
-            Diff delta = null;
-            try {
-                delta = XMLUnit.compare(
-                    expectedDocument.asXML(),
-                    actualDocument.asXML());
-            }
-            catch (SAXException e) {
-                throw new JellyTagException(e);
-            }
-            catch (IOException e) {
-                throw new JellyTagException(e);
-            }
-            catch (ParserConfigurationException e) {
-                throw new JellyTagException(e);
-            }
-
-            if (delta.identical()) {
-                return;
-            }
-            fail(delta.toString());
-        }
-    }
-
-    /**
-     * Sets the actual XML document which is either a Document, String (of an
-     * URI), URI, Reader, or InputStream.
-     */
-    public void setActual(Object actual) {
-        this.actual = actual;
-    }
-
-    /**
-     * Sets the expected XML document which is either a Document, String (of an
-     * URI), URI, Reader, or InputStream.
-     */
-    public void setExpected(Object expected) {
-        this.expected = expected;
-    }
-
-    /**
-     * Controls whether whitespace differences should be interpreted as
-     * differences or not.  The default is <code>false</code>.  Note that the
-     * use of the <code>trim</code> attribute is crucial here.
-     */
-    public void setIgnoreWhitespace(boolean ignoreWhitespace) {
-        this.ignoreWhitespace = ignoreWhitespace;
-    }
-
-    protected SAXReader createSAXReader() {
-        return new SAXReader();
-    }
-
-}
diff --git a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/ExpectedTag.java b/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/ExpectedTag.java
deleted file mode 100644
index 082c4a4..0000000
--- a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/ExpectedTag.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.xmlunit;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.dom4j.Document;
-import org.dom4j.io.SAXReader;
-
-public class ExpectedTag extends XMLUnitTagSupport {
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Document expectedDocument = parseBody();
-
-        AssertDocumentsEqualTag assertTag =
-            (AssertDocumentsEqualTag) findAncestorWithClass(AssertDocumentsEqualTag
-                .class);
-        assertTag.setExpected(expectedDocument);
-    }
-
-    protected SAXReader createSAXReader() {
-        return new SAXReader();
-    }
-
-}
diff --git a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/XMLUnitTagLibrary.java b/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/XMLUnitTagLibrary.java
deleted file mode 100644
index 441868d..0000000
--- a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/XMLUnitTagLibrary.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.xmlunit;
-
-import org.apache.commons.jelly.TagLibrary;
-
-public class XMLUnitTagLibrary extends TagLibrary {
-
-    public XMLUnitTagLibrary() {
-        registerTag("assertDocumentsEqual", AssertDocumentsEqualTag.class);
-        registerTag("actual", ActualTag.class);
-        registerTag("expected", ExpectedTag.class);
-    }
-
-}
diff --git a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/XMLUnitTagSupport.java b/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/XMLUnitTagSupport.java
deleted file mode 100644
index 4c31019..0000000
--- a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/XMLUnitTagSupport.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.xmlunit;
-
-import java.io.InputStream;
-import java.io.Reader;
-import java.net.URL;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.junit.AssertTagSupport;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.io.SAXContentHandler;
-import org.dom4j.io.SAXReader;
-import org.xml.sax.SAXException;
-
-public abstract class XMLUnitTagSupport extends AssertTagSupport {
-
-    /** The SAXReader used to parser the document */
-    private SAXReader saxReader;
-
-    /** @return the SAXReader used for parsing, creating one lazily if need be  */
-    public SAXReader getSAXReader() {
-        if (saxReader == null) {
-            saxReader = createSAXReader();
-        }
-        return saxReader;
-    }
-
-    /** Sets the SAXReader used for parsing */
-    public void setSAXReader(SAXReader saxReader) {
-        this.saxReader = saxReader;
-    }
-
-    /**
-     * Factory method to create a new SAXReader
-     */
-    protected abstract SAXReader createSAXReader();
-
-    /**
-     * Parses the body of this tag and returns the parsed document
-     */
-    protected Document parseBody() throws JellyTagException {
-        SAXContentHandler handler = new SAXContentHandler();
-        XMLOutput newOutput = new XMLOutput(handler);
-        try {
-            handler.startDocument();
-            invokeBody(newOutput);
-            handler.endDocument();
-        }
-        catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-        return handler.getDocument();
-    }
-
-    /**
-     * Parses the given source
-     */
-    protected Document parse(Object source) throws JellyTagException {
-        try {
-            if (source instanceof Document) {
-                return (Document) source;
-            } else if (source instanceof String) {
-                String uri = (String) source;
-                InputStream in = context.getResourceAsStream(uri);
-                return getSAXReader().read(in, uri);
-            } else if (source instanceof Reader) {
-                return getSAXReader().read((Reader) source);
-            } else if (source instanceof InputStream) {
-                return getSAXReader().read((InputStream) source);
-            } else if (source instanceof URL) {
-                return getSAXReader().read((URL) source);
-            } else {
-                throw new IllegalArgumentException(
-                    "Invalid source argument. Must be a Document, String, Reader, InputStream or URL."
-                        + " Was type: "
-                        + source.getClass().getName()
-                        + " with value: "
-                        + source);
-            }
-        }
-        catch (DocumentException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
diff --git a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/package.html b/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/package.html
deleted file mode 100644
index ea8f681..0000000
--- a/jelly-tags/xmlunit/src/java/org/apache/commons/jelly/tags/xmlunit/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
-  <p>
-    Compares two XML documents using <a href="http://xmlunit.sourceforge.net/">XMLUnit</a>
-  </p>
-</body>
-</html>
diff --git a/jelly-tags/xmlunit/src/test/org/apache/commons/jelly/tags/xmlunit/TestJelly.java b/jelly-tags/xmlunit/src/test/org/apache/commons/jelly/tags/xmlunit/TestJelly.java
deleted file mode 100644
index 17a477b..0000000
--- a/jelly-tags/xmlunit/src/test/org/apache/commons/jelly/tags/xmlunit/TestJelly.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.xmlunit;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-public class TestJelly extends JellyTestSuite {
-
-    public static void main(String[] args) throws Exception {
-        TestRunner.run(suite());
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-
-}
diff --git a/jelly-tags/xmlunit/src/test/org/apache/commons/jelly/tags/xmlunit/suite.jelly b/jelly-tags/xmlunit/src/test/org/apache/commons/jelly/tags/xmlunit/suite.jelly
deleted file mode 100644
index 2bc5efb..0000000
--- a/jelly-tags/xmlunit/src/test/org/apache/commons/jelly/tags/xmlunit/suite.jelly
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<test:suite 
-    xmlns:j="jelly:core" 
-    xmlns:x="jelly:xml" 
-    xmlns:test="jelly:junit" 
-    xmlns:xu="jelly:xmlunit">
-
-    <test:case name="illegalArgument">
-
-        <j:catch var="ex">
-            <j:new var="illegalDoc" className="java.util.ArrayList"/>
-            <xu:assertDocumentsEqual actual="${illegalDoc}">
-                <xu:expected/>
-            </xu:assertDocumentsEqual>
-        </j:catch>
-
-        <test:assert test="${ex != null}">An exception should have been thrown</test:assert>
-        The exception was ${ex.message}
-
-    </test:case>
-
-    <test:case name="emptyDocuments">
-
-        <xu:assertDocumentsEqual>
-            <xu:actual/>
-            <xu:expected/>
-        </xu:assertDocumentsEqual>
-
-    </test:case>
-
-    <test:case name="sameDocument">
-
-        <x:parse var="doc">
-            <testDoc/>
-        </x:parse>
-
-        <xu:assertDocumentsEqual actual="${doc}" expected="${doc}"/>
-
-        <xu:assertDocumentsEqual expected="${doc}">
-            <xu:actual>
-                <testDoc/>
-            </xu:actual>
-        </xu:assertDocumentsEqual>
-
-    </test:case>
-
-    <test:case name="differentDocuments">
-
-        <j:catch var="ex">
-            <x:parse var="doc1">
-                <testDoc1/>
-            </x:parse>
-            <x:parse var="doc2">
-                <testDoc2/>
-            </x:parse>
-            <xu:assertDocumentsEqual actual="${doc1}" expected="${doc2}"/>
-        </j:catch>
-
-        <test:assert test="${ex != null}">An exception should have been thrown</test:assert>
-        The exception was ${ex.message}
-
-    </test:case>
-
-    <test:case name="ignoreWhitespace">
-
-        <xu:assertDocumentsEqual trim="false" ignoreWhitespace="true">
-            <xu:actual>
-                <apa> </apa>
-            </xu:actual>
-            <xu:expected>
-                <apa/>
-            </xu:expected>
-        </xu:assertDocumentsEqual>
-
-        <j:catch var="ex">
-            <xu:assertDocumentsEqual trim="false">
-                <xu:actual>
-                    <apa> </apa>
-                </xu:actual>
-                <xu:expected>
-                    <apa/>
-                </xu:expected>
-            </xu:assertDocumentsEqual>
-        </j:catch>
-
-        <test:assert test="${ex != null}">An exception should have been thrown</test:assert>
-        The exception was ${ex.message}
-
-    </test:case>
-
-</test:suite>
diff --git a/jelly-tags/xmlunit/xdocs/changes.xml b/jelly-tags/xmlunit/xdocs/changes.xml
deleted file mode 100644
index e030810..0000000
--- a/jelly-tags/xmlunit/xdocs/changes.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0" date="2004-09-12"></release>
-  </body>
-</document>
diff --git a/jelly-tags/xmlunit/xdocs/index.xml b/jelly-tags/xmlunit/xdocs/index.xml
deleted file mode 100644
index 29f5c8f..0000000
--- a/jelly-tags/xmlunit/xdocs/index.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>XMLUnit Tag Library</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-
-  <body>
-    <section name="Overview">
-      <p>
-        Compares two XML documents using <a href="http://xmlunit.sourceforge.net/">XMLUnit</a>.
-          See the <a href="tags.html">tags</a> for more information.
-      </p>
-    </section>
-  </body>
-</document>
-
diff --git a/jelly-tags/xmlunit/xdocs/navigation.xml b/jelly-tags/xmlunit/xdocs/navigation.xml
deleted file mode 100644
index 30ba331..0000000
--- a/jelly-tags/xmlunit/xdocs/navigation.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="XMLUnit Tag Library">
-
-  <title>XMLUnit Tag Library</title>
-  
-  <body>
-    <menu name="XMLUnit Tag Library">
-      <item name="Overview"                href="/index.html"/>
-      <item name="Tags"                    href="/tags.html"/>
-    </menu>
-  </body>
-</project>
diff --git a/maven.xml b/maven.xml
deleted file mode 100644
index 03a6659..0000000
--- a/maven.xml
+++ /dev/null
@@ -1,488 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project default="jar" xmlns:j="jelly:core" xmlns:maven="jelly:maven" xmlns:util="jelly:util">
-
-  <!-- ================================================================== -->
-  <!-- START : C O M M O N S - B U I L D                                  -->
-  <!-- ================================================================== -->
-  <!-- Required: Look and Feel for documentation within distributions     -->
-  <!-- ================================================================== -->
-  <postGoal name="xdoc:copy-resources">
-    <!-- check commons-build is available before using -->
-    <j:set var="commonsBuildStyle" value="${basedir}/../commons-build/xdocs/style" />
-    <util:available file="${commonsBuildStyle}">
-      <copy todir="${basedir}/target/docs/style/" failonerror="false">
-        <fileset dir="${commonsBuildStyle}">
-            <include name='**/*'/>
-            <exclude name='**/CVS/**'/>
-        </fileset>
-      </copy>
-    </util:available>
-    <!-- check commons-build is available for a taglib before using -->
-    <j:set var="commonsBuildStyle" value="${basedir}/../.././commons-build/xdocs/style" />
-    <util:available file="${commonsBuildStyle}">
-      <copy todir="${basedir}/target/docs/style/" failonerror="false">
-        <fileset dir="${commonsBuildStyle}">
-            <include name='**/*'/>
-            <exclude name='**/CVS/**'/>
-        </fileset>
-      </copy>
-    </util:available>
-  </postGoal>
-    <!-- ================================================================== -->
-  <!-- END: C O M M O N S - B U I L D                                     -->
-  <!-- ================================================================== -->
-
-  <!-- build the timestamp after compiling -->
-  <postGoal name="java:jar-resources">
-    <j:file name="${maven.build.dest}/org/apache/commons/jelly/jelly-version.txt" omitXmlDeclaration="true"
-      >${pom.currentVersion}</j:file>
-    <tstamp><format property="now" pattern="yyyy-MM-dd kk:mm:ss zzz"/></tstamp>
-    <j:file name="${maven.build.dest}/org/apache/commons/jelly/jelly-build-date.txt" omitXmlDeclaration="true"
-      >${now}</j:file>
-  </postGoal>
-  
-  <!-- create the lib and bin directories in the binary distro -->
-  <preGoal name="dist:build">
-    <echo>About to create lib and bin directories in ${maven.dist.assembly.dir}</echo>
-
-    <mkdir dir="${maven.dist.assembly.dir}/bin"/>
-    <mkdir dir="${maven.dist.assembly.dir}/lib"/>
-    <mkdir dir="${maven.dist.assembly.dir}/custom"/>
-
-    <copy todir="${maven.dist.assembly.dir}/bin">
-      <fileset dir="src/bin"/>
-    </copy>
-
-    <chmod file="${maven.dist.assembly.dir}/bin/jelly" perm="ugo+rx" />
-
-    <j:forEach var="dep" items="${pom.dependencies}">
-      <j:choose>
-        <j:when test="${dep.id == 'forehead'}">
-          <copy tofile="${maven.dist.assembly.dir}/lib/forehead.jar"
-              file="${maven.repo.local}/${dep.artifactDirectory}/${dep.type}s/${dep.artifact}"/>
-        </j:when>
-        <j:otherwise>
-          <copy todir="${maven.dist.assembly.dir}/lib"
-              file="${maven.repo.local}/${dep.artifactDirectory}/${dep.type}s/${dep.artifact}"/>
-        </j:otherwise>
-      </j:choose>
-    </j:forEach>
-
-    <!-- put a copy of Jelly's jar there too -->
-    <copy todir="${maven.dist.assembly.dir}/lib"
-            file="${maven.build.dir}/${maven.final.name}.jar"/>
-  </preGoal>
-
-  <!-- TAG LIBS BUILD -->
-  <goal 
-    name="tags:build"
-    description="Build each tag into an installable jar">
-
-    <maven:reactor
-      basedir="jelly-tags"
-      includes="*/project.xml"
-      goals="clean,jar:install"
-      banner="Building tag"
-      ignoreFailures="false"/>
-  </goal>
-
-  <!-- TAG DOCUMENTATION -->
-  <goal 
-    name="tags:doc"
-    description="Build the documentation for each tag library">
-
-    <j:set var="maven.jellydoc.packages" value="org.apache.commons.jelly.*"/>
-    
-    <maven:reactor
-      basedir="jelly-tags"
-      includes="*/project.xml"
-      goals="jellydoc,xdoc"
-      banner="Building tag"
-      ignoreFailures="false"/>
-  </goal>
-
-  <!-- Do the same goal on all Tag Libs -->
-  <goal 
-    name="tags:do"
-    description="Do a specific goal on each taglib">
-
-    <maven:reactor
-      basedir="jelly-tags"
-      includes="*/project.xml"
-      goals="${goal}"
-      banner="Building tag"
-      ignoreFailures="false"/>
-  </goal>
-
-
-  <!-- ===================================================================== -->
-  <!--                      D I S T : I N S T A L L                          -->
-  <!-- ===================================================================== -->
-  <!-- This installs Jelly on your system. With an installed Jelly, you'll   -->
-  <!-- be able to run Jelly scripts from wherever your are, using :          -->
-  <!-- "jelly <script> <outputfile>".                                        -->
-  <!-- The installation dir is set in the project.properties file, under the -->
-  <!-- name "maven.dist.install.dir", which defaults to "/usr/local/jelly"   -->
-  <!-- (yep, that's a Linux path :). Please override it to suit your needs   -->
-  <!-- ===================================================================== -->
-
-  <goal name="dist:install"
-            description="Installs Jelly on your system."
-            prereqs="dist:build">
-
-    <echo>
-      +-------------------------------------------------------+
-      | I N S T A L L I N G   J E L L Y                       |
-      | to ${maven.dist.install.dir}                          |
-      +-------------------------------------------------------+
-    </echo>
-    <delete dir="${maven.dist.install.dir}"/>
-    <mkdir dir="${maven.dist.install.dir}"/>
-
-    <copy todir="${maven.dist.install.dir}">
-      <fileset dir="${maven.dist.assembly.dir}"/>
-    </copy>
-
-    <chmod file="${maven.dist.install.dir}/bin/jelly" perm="ugo+rx" />
-
-    <echo>
-      * ===================================================== *
-      *                    W A R N I N G                      *
-      * ===================================================== *
-      * Jelly is now almost installed on your system !        *
-      * Next, you must set JELLY_HOME to point to             *
-      * "${maven.dist.install.dir}", and add JELLY_HOME/bin   *
-      * to your PATH.                                         *
-      *                                                       *
-      * Then, you will be able to run Jelly scripts using the *
-      * command : "jelly script outputfile".                  *
-      *                                                       *
-      * Enjoy !                                               *
-      *                                                       *
-      * p.s. if ${maven.dist.install.dir} isn't where you'd   *
-      * like Jelly installed, please set a property called    *
-      * maven.dist.install.dir to the appropriate directory   *
-      * ===================================================== *
-    </echo>
-  </goal>
-
-
-  <!-- ===================================================================== -->
-  <!-- GENERATE THE TAG-LIBRARY LIST                       -->
-  <!-- ===================================================================== -->
-  <preGoal name="xdoc:transform">
-      
-    <!-- can't pass anything into the jellydoc doclet so its hard coded to target -->      
-    <mkdir dir="target"/>
-          
-    <mkdir dir="${maven.gen.docs}/libs/"/>
-    <j:file name="${maven.gen.docs}/libs/index.xml"
-      prettyPrint="true">
-      <document>
-        <properties>
-          <title>Jelly Libraries</title>
-          <author email="dion@multitask.com.au">dIon Gillard</author>
-        </properties>
-        <body>
-          <section name="Jelly Libraries">
-            <p>
-              The following libraries are available for Jelly as part of the standard distribution.
-              Other libraries are maintained elsewhere - please see the 
-              <a href="../poweredby.html">powered by</a> page for more details.
-            </p>
-            <ul>
-              <fileScanner var="pluginProjects">
-                <fileset dir="${basedir}">
-                  <include name="jelly-tags/*/project.xml" />
-                </fileset>
-             </fileScanner>
-             <j:forEach items="${pluginProjects.iterator()}" var="plugin">
-               <j:set var="pluginName" value="${plugin.parentFile.name}" />
-               <li>
-                 <a href="./${pluginName}/index.html">${pluginName}</a> :
-                 <a href="./${pluginName}/tags.html">tags</a> 
-               </li>
-             </j:forEach>
-            </ul>
-          </section>
-        </body>
-      </document>
-    </j:file>
-
-    <!-- now lets implement the jellydoc for the core package -->    
-    <j:set var="maven.jellydoc.packages" value="org.apache.commons.jelly.tags.core.*"/>
-    <attainGoal name="jellydoc"/>
-  </preGoal>
-
-  <preGoal name="xdoc">
-
-    <j:if test="${!empty(fullSite)}">
-      <echo>Building site for Jelly and all taglibs</echo>
-      <sleep seconds="5" />
-      <!--        
-      This runs out of memory - have a feeling its the velocity & xdoc plugin
-      -->
-      <!-- <maven:reactor
-        basedir="${basedir}"
-        includes="jelly-tags/*/project.xml"
-        goals="site"
-        banner="Generating site for"
-        ignoreFailures="false"
-      />-->
-      <!-- PL: instead... invoke maven from the command-line directly for
-       each directory in jelly-tags. -->
-      <attainGoal name="tags:build-site-individually"/>
-        
-      <!-- then copy all the results to docs/libs -->
-      <j:if test="${context.getVariable('maven.docs.dest') == null}">
-        <j:set var="maven.docs.dest" value="target/docs"/>
-      </j:if>
-    
-      <!-- create the parent directory for the docs -->
-      <mkdir dir="${maven.docs.dest}/libs" />
-    
-      <!-- copy them all to ${maven.docs.dest}/libs/${plugin.id}/ -->
-      <j:forEach items="${pluginProjects.iterator()}" var="plugin">
-        <j:set var="pluginName" value="${plugin.parentFile.name}" />
-        <mkdir dir="${maven.docs.dest}/libs/${pluginName}/" />
-        <copy toDir="${maven.docs.dest}/libs/${pluginName}/">
-          <fileset dir="jelly-tags/${pluginName}/target/docs/">
-            <include name="**" />
-          </fileset>
-        </copy>
-      </j:forEach>
-    </j:if>
-  </preGoal>
-
-  <goal name="tags:build-site-individually">
-
-    <fileScanner var="taglibProjects">
-      <fileset dir="${basedir}">
-        <include name="jelly-tags/*/project.xml" />
-      </fileset>
-    </fileScanner>
-            
-    <j:choose>
-      <j:when test="${systemScope['os.name'].startsWith('Windows')}">
-        <j:set var="mavenCmd" value="${maven.home}/bin/maven.bat"/>
-      </j:when>
-      <j:otherwise>
-        <j:set var="mavenCmd" value="${maven.home}/bin/maven"/>
-      </j:otherwise>
-    </j:choose>
-        
-    <j:forEach items="${taglibProjects.iterator()}" var="taglib">
-      <j:set var="tlName" value="${taglib.parentFile.name}" />
-      <echo>Processing tag-library ${tlName}.</echo>
-      <j:set var="dir" value="${basedir}/jelly-tags/${tlName}"/>
-      <j:set var="testVar" value="siteIsBuilt${tlName}"/>
-      <uptodate property="${testVar}">
-        <srcfiles dir="${dir}" excludes="target/**/*"/>
-        <mapper type="merge" to="${dir}/target/docs/index.html"/>
-      </uptodate>
-      <echo>Tag-library ${tlname}'s site is up-to-date ? "${context.getVariable(testVar)}"</echo>
-      <j:if test="${!context.getVariable(testVar)}">
-        <echo>Building tag-library ${tlname}'s site.</echo>
-
-        <exec executable="${mavenCmd}" failonerror="true" dir="${dir}">
-          <arg value="site"/>
-        </exec>
-      </j:if>
-    </j:forEach>
-        
-  </goal>
-
-
-  <!-- demo programs -->
-
-  <!-- a sample of using the command line interface to invoke Jelly -->
-  <goal name="demo:cmdline" prereqs="create-classpath"
-    description="Demonstrates how to use the command line interface to Jelly">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/testCmdLineOptions.jelly"/>
-      <arg value="-a"/>
-      <arg value="valueOfA"/>
-      <arg value="-b"/>
-      <arg value="valueOfB"/>
-      <arg value="-c"/>
-      <arg value="valueOfC"/>
-      <arg value="-Dtestsysprop=valueOfTestSystemProp"/>
-    </java>
-  </goal>
-
-
-  <goal name="test:benchmark" prereqs="create-classpath"
-    description="A simple bit of Jelly script used as a benchmark to guage performance">
-    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
-      <classpath refid="test.classpath"/>
-      <arg value="src/test/org/apache/commons/jelly/benchmark/benchmark.jelly"/>
-    </java>
-  </goal>
-
-  <goal name="demo:embed" prereqs="create-classpath"
-    description="A sample Swing app which lets you build a personalized homepage, and uses Jelly as a templating engine">
-    <java classname="org.apache.commons.jelly.demos.HomepageBuilder" fork="yes">
-      <classpath refid="test.classpath"/>
-    </java>
-  </goal>
-
-  <goal name="demo:async"
-    description="An example of using asynchronous invocation of goals">
-
-    <j:thread>
-      <attainGoal name="demo:asyncOtherThread"/>
-    </j:thread>
-
-    <echo>XXXX</echo>
-  </goal>
-
-  <goal name="demo:asyncOtherThread"
-    description="A private target invoked by the async demo">
-    <echo>YYYY</echo>
-  </goal>
-
-
-  <!-- define the classpath used to run examples -->
-  <goal name="create-classpath" prereqs="java:compile,test:compile">
-    <path id="test.classpath">
-      <pathelement path="${maven.build.dest}"/>
-      <pathelement path="target/classes"/>
-      <pathelement path="target/test-classes"/>
-      <path refid="maven.dependency.classpath"/>
-    </path>
-  </goal>
-    
-    
-  <goal name="clean-build">
-    <attainGoal name="clean"/>
-    <attainGoal name="jar:install-snapshot"/>
-    ${systemScope.put('goal','clean,jar:install-snapshot')}
-    <attainGoal name="multiproject:goal"/>
-  </goal>
-  
-  <goal name="pack-fat-jar" prereqs=""
-            description="Creates a jar with all the dependencies of jelly and the taglibs indicated in ${tagLibs}.">
-      <!-- variables: 
-        - tagLibs: a comma-separated list of taglib-names (without the "jelly:")
-        - doBuildAll: a boolean that says wether we invoke build (of jelly, and the taglibs)
-           When true, invokes jar:install-snapshot on jelly and each taglib included
-        - fatJarName: the location of the fat-jar collected
-        -->
-      <!-- this goal isn't really much tested yet but could be the key
-        to get a better packaging -->
-        
-      <property name="tagLibs" value="ant,bean,beanshell,betwixt,define,dynabean,fmt,html,http,interaction,junit,jsl,log,swing,threads,util,validate,velocity,xml,xmlunit"/>
-      <!-- arbitrary set of taglibs with dependencies that should have no problems -->
-      <property name="doBuildAll" value="false"/>
-      <property name="fatJarPath" value="${maven.build.dir}/fatjelly.jar"/>
-      <property name="classpathFile" value="${maven.build.dir}/classpath-with-deps.txt"/>
-      <property name="mergedDepsFile" value="${maven.build.dir}/mergedDeps.xml"/>
-        
-      <!-- if we need to build, we need to build first jelly -->
-      <j:if test="${doBuildAll}"><attainGoal name="jar:install-snapshot"/></j:if>
-      <j:new var="jellyTaglibNames" className="java.util.HashSet"/>
-      <j:set var="taglibs_projects" value=""/>
-      <util:tokenize delim="," var="tagLibnames">${tagLibs}</util:tokenize>
-      <j:forEach var="tlName" items="${tagLibnames}">
-        <echo>Considering taglib tlName "${tlName}".</echo>
-        <j:if test="${'core' ne tlName}">
-          <j:if test="${taglibs_projects.length() > 0}"><j:set var="taglibs_projects" trim="false">${taglibs_projects},</j:set></j:if>
-          <j:set var="taglibs_projects">${taglibs_projects}jelly-tags/${tlName}/project.xml</j:set>
-          ${jellyTaglibNames.add(tlName)}
-        </j:if>
-      </j:forEach> 
-    
-      <!-- collect all dependencies in a set -->
-      <j:new var="deps" className="java.util.HashSet"/>
-
-      <j:choose>
-        <j:when test="${doBuildAll}">
-          <maven:reactor basedir="." 
-                         postProcessing="true"
-                         goals="jar:install-snapshot"
-                         includes="${taglibs_projects}" 
-                         ignoreFailures="false"/>
-        </j:when>
-        <j:otherwise>
-              <maven:reactor basedir="." postProcessing="true"
-                  includes="${taglibs_projects}" ignoreFailures="false"/>
-        </j:otherwise>
-      </j:choose>
-        
-      <j:forEach var="reactorProject" items="${reactorProjects}">
-        <j:forEach var="dep" items="${reactorProject.dependencies}">
-          <j:if test="${dep.artifactId eq 'commons-jelly'}">${dep.setVersion("SNAPSHOT")}</j:if>
-          ${deps.add(dep)}
-        </j:forEach>
-      </j:forEach>
-      <j:forEach var="tl" items="${jellyTaglibNames}">
-        <j:new var="tlD" className="org.apache.maven.project.Dependency"/>
-        ${tlD.setGroupId("commons-jelly")}
-        <j:set var="artId" value="commons-jelly-tags-${tl}"/>
-        ${tlD.setArtifactId(artId)}
-        ${tlD.setType("jar")}
-        ${tlD.setVersion("SNAPSHOT")}
-        ${deps.add(tlD)}
-      </j:forEach>
-  
-      <!-- <maven:reactor
-           basedir="."
-           postProcessing="true"
-           includes="project.xml"
-           ignoreFailures="false">
-           </maven:reactor>
-        <j:forEach var="reactorProject" items="${reactorProjects}">
-          <j:forEach var="dep" items="${reactorProject.dependencies}">${deps.add(dep)}</j:forEach>
-        </j:forEach> -->
-
-
-      <j:if test="${'' ne classpathFile}">    
-        <j:file name="${classpathFile}" omitXmlDeclaration="true"><j:forEach items="${deps}" trim="true" var="dep">${maven.repo.local}/${dep.groupId}/${dep.type}s/${dep.artifactId}-${dep.version}.${dep.type}${path.separator}</j:forEach></j:file>
-      </j:if>
-    
-      <!-- merging it all -->
-      <j:if test="${'' ne fatJarPath}">
-        <jar destfile="${fatJarPath}" update="yes">
-          <manifest><attribute name="Main-Class" value="org.apache.commons.jelly.Jelly"/></manifest>
-          <j:forEach var="dep" items="${deps}">
-            <zipfileset src="${maven.repo.local}/${dep.groupId}/${dep.type}s/${dep.artifact}" />
-            <echo>Adding jar ${maven.repo.local}/${dep.groupId}/${dep.type}s/${dep.artifact}.</echo>
-          </j:forEach>
-        </jar>
-      </j:if>
-      
-    <j:if test="${!empty(mergedDepsFile)}">
-      <j:file prettyPrint="true" name="${mergedDepsFile}">
-        <dependencyList project="commons-jelly"
-              withAddOns="${tagLibs}">
-          <j:forEach var="dep" items="${deps}">
-            <dependency groupId="${dep.groupId}" artifactId="${dep.artifactId}" version="${dep.version}"/>
-            </j:forEach>
-          </dependencyList>
-        </j:file>
-      </j:if>
-            
-    </goal>
-
-    <goal name="generate-gump">
-      <j:set var="maven.multiproject.includes" value="project.xml,jelly-tags/*/project.xml" />
-      <j:set var="maven.multiproject.excludes" value="" />
-      <attainGoal name="gump:multiproject" />
-    </goal>
-</project>
diff --git a/parent-project.xml b/parent-project.xml
deleted file mode 100644
index 7f1ed00..0000000
--- a/parent-project.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  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>
-
-  <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>
-      <id>commons-jexl</id>
-      <version>1.0</version>
-    </dependency>
-    
-    <dependency>
-      <id>xml-apis</id>
-      <version>1.0.b2</version>
-    </dependency>
-    
-    <dependency>
-      <id>commons-beanutils</id>
-      <version>1.6</version>
-      <properties>
-        <gump.runtime>true</gump.runtime>
-      </properties>
-    </dependency>
-    
-    <dependency>
-      <id>commons-collections</id>
-      <version>2.1</version>
-      <properties>
-        <gump.runtime>true</gump.runtime>
-      </properties>
-    </dependency>
-    
-    <dependency>
-      <id>commons-logging</id>
-      <version>1.0.3</version>
-      <properties>
-        <gump.runtime>true</gump.runtime>
-      </properties>
-    </dependency>
-    
-    <dependency>
-      <id>dom4j</id>
-      <version>1.5</version>
-    </dependency>
-
-    <dependency>
-      <id>jaxen</id>
-      <version>1.1-beta-2</version>
-    </dependency>
-
-    <dependency>
-      <id>xerces</id>
-      <version>2.2.1</version>
-      <properties>
-        <gump.project>xml-xerces</gump.project>
-      </properties>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/project.properties b/project.properties
deleted file mode 100644
index c2dc166..0000000
--- a/project.properties
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -------------------------------------------------------------------
-# P R O J E C T  P R O P E R T I E S
-# -------------------------------------------------------------------
-
-maven.junit.fork=true
-maven.compile.fork=true
-
-maven.compile.debug = on
-maven.compile.optimize = off
-maven.compile.deprecation = on
-
-maven.junit.usefile = true
-
-# copied from maven test plugin due to a bug/caching issue
-maven.test.dest = ${maven.build.dir}/test-classes
- 
-# Installation dir
-maven.dist.install.dir = /usr/local/jelly
-
-maven.changes.issue.template=http://issues.apache.org/jira/browse/%ISSUE%
-
-maven.xdoc.jsl=../commons-build/commons-site.jsl
-maven.xdoc.date=left
-maven.xdoc.version=${pom.currentVersion}
-maven.xdoc.developmentProcessUrl=http://jakarta.apache.org/commons/charter.html
-maven.xdoc.poweredby.image =maven-feather.png
-maven.xdoc.distributionUrl=http://www.apache.org/dist/java-repository/commons-jelly/jars
-
-apache.cvs=pserver:anoncvs@cvs.apache.org:/home/cvspublic
-
-maven.multiproject.excludes=project.xml
-maven.multiproject.includes=jelly-tags/*/project.xml
-maven.multiproject.navigation=independent
-
-maven.linkcheck.enable=false
-
-maven.checkstyle.properties=jelly-tags/tag-checkstyle.xml
-maven.checkstyle.header.file=${basedir}/short-license.txt
-maven.license.licenseFile=${basedir}/LICENSE.txt
-
-maven.pmd.rulesetfiles=\
-  rulesets/basic.xml,\
-  rulesets/unusedcode.xml,\
-  rulesets/imports.xml,\
-  rulesets/codesize.xml,\
-  rulesets/coupling.xml,\
-  rulesets/design.xml,\
-  rulesets/strings.xml
diff --git a/project.xml b/project.xml
deleted file mode 100644
index 4f1356c..0000000
--- a/project.xml
+++ /dev/null
@@ -1,409 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  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>
-  <id>commons-jelly</id>
-  <currentVersion>1.0-RC2-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>
-  <package>org.apache.commons.*</package>
-  <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>jakarta.apache.org</siteAddress>
-  <siteDirectory>/www/jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</siteDirectory>
-  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId.substring(8)}/</distributionDirectory>
-  <repository>
-    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/jelly</connection>
-    <developerConnection>scm:cvs:ext:${maven.username}@cvs.apache.org:/home/cvs:jakarta-commons/jelly</developerConnection>
-    <url>http://cvs.apache.org/viewcvs/jakarta-commons/${pom.artifactId.substring(8)}/</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>
-  </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>
-      <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>
-      <id>servletapi</id>
-      <version>2.3</version>
-      <properties>
-        <gump.project>jakarta-servletapi-5-servlet</gump.project>
-      </properties>
-    </dependency>
-
-    <!-- for command line interface support -->
-    <dependency>
-      <id>commons-cli</id>
-      <version>1.0</version>
-    </dependency>
-
-    <!-- this is brought in by the commons-cli dependency -->
-    <dependency>
-      <id>commons-lang</id>
-      <version>2.0</version>
-      <properties>
-        <gump.runtime>true</gump.runtime>
-      </properties>
-    </dependency>
-    <dependency>
-      <id>commons-discovery</id>
-      <version>20030211.213356</version>
-    </dependency>
-
-    <!-- for the jelly startup scripts -->
-    <dependency>
-      <id>forehead</id>
-      <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}/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>
diff --git a/short-license.txt b/short-license.txt
deleted file mode 100644
index 1860c3a..0000000
--- a/short-license.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
\ No newline at end of file
diff --git a/src/bin/forehead.conf b/src/bin/forehead.conf
deleted file mode 100644
index b43ea9c..0000000
--- a/src/bin/forehead.conf
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-#  Copyright 2002,2004 The Apache Software Foundation.
-#  
-#  Licensed under the Apache License, Version 2.0 (the "License");
-#  you may not use this file except in compliance with the License.
-#  You may obtain a copy of the License at
-#  
-#       http://www.apache.org/licenses/LICENSE-2.0
-#  
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-#
-
-+jelly.home
-+tools.jar
-
-=[root.jelly] org.apache.commons.jelly.Jelly
-
-[root]
-
-[root.jelly]
-  ${jelly.home}/lib/*.jar
-  ${jelly.home}/custom/*.jar
-
diff --git a/src/bin/jelly b/src/bin/jelly
deleted file mode 100644
index bd58b73..0000000
--- a/src/bin/jelly
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-#
-#  Copyright 2002,2004 The Apache Software Foundation.
-#  
-#  Licensed under the Apache License, Version 2.0 (the "License");
-#  you may not use this file except in compliance with the License.
-#  You may obtain a copy of the License at
-#  
-#       http://www.apache.org/licenses/LICENSE-2.0
-#  
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-#
-
-if [ -z "$FOREHEAD_CONF" ] ; then
-  FOREHEAD_CONF=${JELLY_HOME}/bin/forehead.conf 
-fi
-
-$JAVA_HOME/bin/java -classpath ${CLASSPATH}:${JELLY_HOME}/lib/forehead-1.0-beta-5.jar \
-  -Dforehead.conf.file=${FOREHEAD_CONF} \
-  -Djelly.home=${JELLY_HOME} \
-  -Dtools.jar=${JAVA_HOME}/lib/tools.jar \
-  ${JELLY_OPTS} \
-  com.werken.forehead.Forehead $*
-
diff --git a/src/bin/jelly.bat b/src/bin/jelly.bat
deleted file mode 100644
index 7479da2..0000000
--- a/src/bin/jelly.bat
+++ /dev/null
@@ -1,21 +0,0 @@
-@echo off
-
-@REM Copyright 2002,2004 The Apache Software Foundation.
-@REM 
-@REM Licensed under the Apache License, Version 2.0 (the "License");
-@REM you may not use this file except in compliance with the License.
-@REM You may obtain a copy of the License at
-@REM 
-@REM      http://www.apache.org/licenses/LICENSE-2.0
-@REM 
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-@REM
-
-if "%FOREHEAD_CONF%"=="" set FOREHEAD_CONF=%JELLY_HOME%\bin\forehead.conf
-
-%JAVA_HOME%\bin\java -classpath "%CLASSPATH%;%JELLY_HOME%\lib\forehead-1.0-beta-5.jar" "-Dforehead.conf.file=%FOREHEAD_CONF%" "-Djelly.home=%JELLY_HOME%" "-Dtools.jar=%JAVA_HOME%\lib\tools.jar" %JELLY_OPTS% com.werken.forehead.Forehead %*
-
diff --git a/src/java/org/apache/commons/jelly/CompilableTag.java b/src/java/org/apache/commons/jelly/CompilableTag.java
deleted file mode 100644
index 32786f0..0000000
--- a/src/java/org/apache/commons/jelly/CompilableTag.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-/** <p><code>Compilable</code> represents a Tag that is compilable.</p>
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.11 $
-  */
-
-public interface CompilableTag {
-
-    /** 
-     * Called by the parser to allow a more tag to create a more efficient 
-     * format of the tag.
-     * @throws JellyException on any error
-     */
-
-    // #### should this return Tag?
-    
-    void compile() throws JellyException;
-
-}
diff --git a/src/java/org/apache/commons/jelly/DynaBeanTagSupport.java b/src/java/org/apache/commons/jelly/DynaBeanTagSupport.java
deleted file mode 100644
index f2ec376..0000000
--- a/src/java/org/apache/commons/jelly/DynaBeanTagSupport.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-import org.apache.commons.beanutils.DynaBean;
-import org.apache.commons.beanutils.DynaProperty;
-
-/** 
- * <p><code>DynaBeanTag</code> is a DynaTag implementation which uses a DynaBean
- * to store its attribute values in. Derived tags can then process this
- * DynaBean in any way it wishes.
- * </p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.3 $
- */
-
-public abstract class DynaBeanTagSupport extends DynaTagSupport {
-
-    /** the DynaBean which is used to store the attributes of this tag. */
-    private DynaBean dynaBean;
-
-    public DynaBeanTagSupport() {
-    }
-    
-    public DynaBeanTagSupport(DynaBean dynaBean) {
-        this.dynaBean = dynaBean;
-    }
-     
-    /** Sets the context in which the tag will be run. */
-    public void setContext(JellyContext context) throws JellyTagException {
-        this.context = context;
-        beforeSetAttributes();
-    }
-    
-    /** Sets an attribute value of this tag before the tag is invoked
-     */
-    public void setAttribute(String name, Object value) throws JellyTagException {
-        getDynaBean().set(name, value);
-    }
-
-    /**
-     * @return the type of the given attribute. By default just return
-     * Object.class if this is not known.
-     */
-    public Class getAttributeType(String name) throws JellyTagException {
-        DynaProperty property = getDynaBean().getDynaClass().getDynaProperty(name);
-        if (property != null) {
-            return property.getType();
-        }
-        return Object.class;
-    }
-    
-    /** 
-     * @return the DynaBean which is used to store the
-     *  attributes of this tag
-     */
-    public DynaBean getDynaBean() {
-        return dynaBean;
-    }
-    
-    /**
-     * Sets the DynaBean which is used to store the
-     *  attributes of this tag
-     */
-    public void setDynaBean(DynaBean dynaBean) {
-        this.dynaBean = dynaBean;
-    }
-
-    /**
-     * Callback to allow processing to occur before the attributes are about to be set
-     */
-    public void beforeSetAttributes() throws JellyTagException {
-    }
-    
-}
diff --git a/src/java/org/apache/commons/jelly/DynaTag.java b/src/java/org/apache/commons/jelly/DynaTag.java
deleted file mode 100644
index 2d4cf4e..0000000
--- a/src/java/org/apache/commons/jelly/DynaTag.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-/** 
- * <p><code>DynaTag</code> represents a Jelly custom tag which
- * can take its attributes dynamically and store them in some data structure.
- * Typically a DynaTag may use either a Map or a DynaBean to implement itself
- * which avoids writing explicit getter and setter methods for each possible attribute.
- * </p>
- * <p>
- * This kind of tag can be extremely useful when making HTML-like tags which
- * generally output all the attributes which are used in the markup, except
- * one or two special attributes are used, all others pass through.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.11 $
- */
-
-public interface DynaTag extends Tag {
-
-    /** Sets an attribute value of this tag before the tag is invoked
-     */
-    public void setAttribute(String name, Object value) throws JellyTagException;
-
-    /**
-     * @return the type of the given attribute. By default just return
-     * Object.class if this is not known.
-     * If this method returns Expression.class then the expression will not
-     * be evaluated and just passed in as the attribute value.
-     */
-    public Class getAttributeType(String name) throws JellyTagException;
-}
diff --git a/src/java/org/apache/commons/jelly/DynaTagSupport.java b/src/java/org/apache/commons/jelly/DynaTagSupport.java
deleted file mode 100644
index 16b5523..0000000
--- a/src/java/org/apache/commons/jelly/DynaTagSupport.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-/** 
- * <p><code>DynaTagSupport</code> is an abstract base class
- * for any DynaTag implementation to derive from.
- * </p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.3 $
- */
-
-public abstract class DynaTagSupport extends TagSupport implements DynaTag {
-
-    /**
-     * @return the type of the given attribute. By default just return
-     * Object.class if this is not known.
-     */
-    public Class getAttributeType(String name) throws JellyTagException {
-        return Object.class;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/Jelly.java b/src/java/org/apache/commons/jelly/Jelly.java
deleted file mode 100644
index ce3434d..0000000
--- a/src/java/org/apache/commons/jelly/Jelly.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.Properties;
-
-import org.apache.commons.jelly.parser.XMLParser;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.apache.commons.jelly.util.CommandLineParser;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.xml.sax.SAXException;
-
-/** 
- * <p><code>Jelly</code> is a helper class which is capable of
- * running a Jelly script. This class can be used from the command line
- * or can be used as the basis of an Ant task.</p> Command line usage is as follows:
- *
- * <pre>
- * jelly [scriptFile] [-script scriptFile -o outputFile -Dsysprop=syspropval]
- * </pre>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.35 $
- */
-public class Jelly {
-    
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(Jelly.class);
-    
-    /** The JellyContext to use */
-    private JellyContext context;
-    
-    /** The URL of the script to execute */
-    private URL url;
-    
-    /** The URL of the root context for other scripts */
-    private URL rootContext;
-    
-    /** Whether we have loaded the properties yet */
-    private boolean loadedProperties = false;
-
-    /**
-     * whether to override the default namespace
-     */
-    private String defaultNamespaceURI = null;
-
-    /**
-     * whether or not to validate the Jelly script
-     */
-    private boolean validateXML = false;
-        
-    public Jelly() {
-    }
-
-    /**
-     * Usage: jelly [scriptFile] [-script scriptFile -o outputFile -Dsysprop=syspropval]
-     */
-    public static void main(String[] args) throws Exception {
-
-        try {
-            if (args.length <= 0) {
-                System.out.println("Usage: jelly [scriptFile] [-script scriptFile -o outputFile -Dsysprop=syspropval]");
-                return;
-            }
-
-            // parse the command line options using CLI
-            // using a separate class to avoid unnecessary 
-            // dependencies
-            CommandLineParser.getInstance().invokeCommandLineJelly(args);
-        }
-        catch (JellyException e) {
-            Throwable cause = e.getCause();
-
-            if (cause == null) {
-                e.printStackTrace();
-            } else {
-                cause.printStackTrace();
-            }
-        }
-    }
-    
-    
-    public static String getJellyVersion() {
-        return readBuildTimestampResource("jelly-version.txt");
-    }
-    
-    public static String getJellyBuildDate() {
-        return readBuildTimestampResource("jelly-build-date.txt");
-    }
-    
-    private static String readBuildTimestampResource(String name) {
-        java.io.Reader in = null;
-        try {
-            java.io.StringWriter w = new java.io.StringWriter();
-            in = new java.io.InputStreamReader(Jelly.class.getResourceAsStream(name),"utf-8");
-            int r;
-            while ( (r=in.read()) >= 0 ) {
-                w.write((char) r);
-            }
-            return w.toString();
-        } catch(Exception ex) {
-            ex.printStackTrace();
-            try { in.close(); } catch(Exception e) {}
-            throw new IllegalStateException("Resource \"" + name + "\" not found.");
-        }
-    }
-    
-    
-
-    /**
-     * Compiles the script
-     */
-    public Script compileScript() throws JellyException {
-        if (! loadedProperties) {
-            loadedProperties = true;
-            loadJellyProperties();
-        }
-        
-        XMLParser parser = new XMLParser();
-        try {
-            parser.setContext(getJellyContext());
-        } catch (MalformedURLException e) {
-            throw new JellyException(e.toString());
-        }
-        
-        Script script = null;
-        try {
-            parser.setDefaultNamespaceURI(this.defaultNamespaceURI);
-            parser.setValidating(this.validateXML);
-            script = parser.parse(getUrl());
-            script = script.compile();
-            if (log.isDebugEnabled()) {
-               log.debug("Compiled script: " + getUrl());
-            }
-        } catch (IOException e) {
-            throw new JellyException("could not parse Jelly script",e);
-        } catch (SAXException e) {
-            throw new JellyException("could not parse Jelly script",e);
-        }
-        
-        return script;
-    }
-
-    
-    // Properties
-    //-------------------------------------------------------------------------                
-    
-    /** 
-     * Sets the script URL to use as an absolute URL or a relative filename
-     */
-    public void setScript(String script) throws MalformedURLException {
-        setUrl(resolveURL(script));
-    }
-    
-    public URL getUrl() {
-        return url;
-    }
-    
-    /** 
-     * Sets the script URL to use 
-     */
-    public void setUrl(URL url) {
-        this.url = url;
-    }
-    
-    /** 
-     * Gets the root context
-     */
-    public URL getRootContext() throws MalformedURLException {
-        if (rootContext == null) {
-            rootContext = new File(System.getProperty("user.dir")).toURL();
-        }
-        return rootContext;
-    }
-    
-    /** 
-     * Sets the root context
-     */
-    public void setRootContext(URL rootContext) {
-        this.rootContext = rootContext;
-    }
-    
-    /**
-     * The context to use
-     */
-    public JellyContext getJellyContext() throws MalformedURLException {
-        if (context == null) {
-            // take off the name off the URL
-            String text = getUrl().toString();
-            int idx = text.lastIndexOf('/');
-            text = text.substring(0, idx + 1);
-            context = new JellyContext(getRootContext(), new URL(text));
-        }
-        return context;
-    }
-
-
-    /**
-     * Set the jelly namespace to use for unprefixed elements.
-     * Will be overridden by an explicit namespace in the
-     * XML document.
-     * 
-     * @param namespace jelly namespace to use (e.g. 'jelly:core')
-     */
-    public void setDefaultNamespaceURI(String namespace) {
-        this.defaultNamespaceURI = namespace;
-    }
-
-    /**
-     * When set to true, the XML parser will attempt to validate
-     * the Jelly XML before converting it into a Script.
-     * 
-     * @param validate whether or not to validate
-     */
-    public void setValidateXML(boolean validate) {
-        this.validateXML = validate;
-    }
-    
-    // Implementation methods
-    //-------------------------------------------------------------------------                
-    /**
-     * @return the URL for the relative file name or absolute URL 
-     */
-    protected URL resolveURL(String name) throws MalformedURLException {
-        
-        URL resourceUrl = ClassLoaderUtils.getClassLoader(getClass()).getResource(name);
-        if (resourceUrl == null)
-        {
-            File file = new File(name);
-            if (file.exists()) {
-                return file.toURL();
-            }
-            return new URL(name);
-        } else {
-            return resourceUrl;
-        }
-    }
-
-    /**
-     * Attempts to load jelly.properties from the current directory,
-     * the users home directory or from the classpath
-     */
-    protected void loadJellyProperties() {
-        InputStream is = null;
-    
-        String userDir = System.getProperty("user.home");
-        File f = new File(userDir + File.separator + "jelly.properties");
-        loadProperties(f);
-    
-        f = new File("jelly.properties");
-        loadProperties(f);
-        
-        
-        is = ClassLoaderUtils.getClassLoader(getClass()).getResourceAsStream("jelly.properties");
-        if (is != null) {
-            try {
-                loadProperties(is);
-            }
-            catch (Exception e) {
-                log.error( "Caught exception while loading jelly.properties from the classpath. Reason: " + e, e );
-            }
-        }
-    }
-
-    /**
-     * Load properties from a file into the context
-     * @param f
-     */
-    private void loadProperties(File f) {
-        InputStream is = null;
-        try {
-            if (f.exists()) {
-                is = new FileInputStream(f);
-                loadProperties(is);
-            }
-        } catch (Exception e) {
-            log.error( "Caught exception while loading: " + f.getName() + ". Reason: " + e, e );
-        } finally {
-            if (is != null) {
-                try {
-                    is.close();
-                } catch (IOException e) {
-                    if (log.isDebugEnabled()) log.debug("error closing property input stream", e);
-                }
-            }
-        }
-    }
-
-    /**
-     * Loads the properties from the given input stream 
-     */    
-    protected void loadProperties(InputStream is) throws IOException {
-        JellyContext theContext = getJellyContext();
-        Properties props = new Properties();
-        props.load(is);
-        Enumeration propsEnum = props.propertyNames();
-        while (propsEnum.hasMoreElements()) {
-            String key = (String) propsEnum.nextElement();
-            String value = props.getProperty(key);
-            
-            // @todo we should parse the value in case its an Expression
-            theContext.setVariable(key, value);
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/JellyContext.java b/src/java/org/apache/commons/jelly/JellyContext.java
deleted file mode 100644
index 371fe6c..0000000
--- a/src/java/org/apache/commons/jelly/JellyContext.java
+++ /dev/null
@@ -1,1059 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.jelly.parser.XMLParser;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
-  * <p><code>JellyContext</code> represents the Jelly context.</p>
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.10 $
-  */
-public class JellyContext {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(JellyContext.class);
-
-    /** Default for inheritance of variables **/
-    private static final boolean DEFAULT_INHERIT = true;
-
-    /** Default for export of variables **/
-    private static final boolean DEFAULT_EXPORT = false;
-
-    /** String used to denote a script can't be parsed */
-    private static final String BAD_PARSE = "Could not parse Jelly script";
-
-    /**
-     * The class loader to use for instantiating application objects.
-     * If not specified, the context class loader, or the class loader
-     * used to load this class itself, is used, based on the value of the
-     * <code>useContextClassLoader</code> variable.
-     */
-    protected ClassLoader classLoader;
-
-    /**
-     * Do we want to use the Context ClassLoader when loading classes
-     * for instantiating new objects?  Default is <code>false</code>.
-     */
-    protected boolean useContextClassLoader = false;
-
-    /** The root URL context (where scripts are located from) */
-    private URL rootURL;
-
-    /** The current URL context (where relative scripts are located from) */
-    private URL currentURL;
-
-    /** Tag libraries found so far */
-    private Map taglibs = new Hashtable();
-
-    /** synchronized access to the variables in scope */
-    private Map variables = new Hashtable();
-
-    /** The parent context */
-    private JellyContext parent;
-
-    /** Do we inherit variables from parent context? */
-    private boolean inherit = JellyContext.DEFAULT_INHERIT;
-
-    /** Do we export our variables to parent context? */
-    private boolean export  = JellyContext.DEFAULT_EXPORT;
-
-    /** Should we export tag libraries to our parents context */
-    private boolean exportLibraries = true;
-
-    /** Holds a Map containing thread-specific data for Scripts.
-     * Scripts may hold a single object in this map using the
-     * {@link #setThreadLocalScriptData(Script,Object)}
-      */
-    private ThreadLocal threadLocalScriptData = new ThreadLocal();
-    // THINKME: Script objects are like Object (for equals and hashCode) I think.
-    //          It should be asy to optimize hash-map distribution, e.g. by
-    //          shifting the hashcode return value (presuming Object.hashcode()
-    //          is something like an address)
-
-    /**
-     * Create a new context with the currentURL set to the rootURL
-     */
-    public JellyContext() {
-        this.currentURL = rootURL;
-        init();
-    }
-
-    /**
-     * Create a new context with the given rootURL
-     * @param rootURL the root URL used in resolving absolute resources i.e. those starting with '/'
-     */
-    public JellyContext(URL rootURL) {
-        this( rootURL, rootURL );
-    }
-
-    /**
-     * Create a new context with the given rootURL and currentURL
-     * @param rootURL the root URL used in resolving absolute resources i.e. those starting with '/'
-     * @param currentURL the root URL used in resolving relative resources
-     */
-    public JellyContext(URL rootURL, URL currentURL) {
-        this.rootURL = rootURL;
-        this.currentURL = currentURL;
-        init();
-    }
-
-
-    /**
-     * Create a new context with the given parent context.
-     * The parent's rootURL and currentURL are set on the child, and the parent's variables are
-     * available in the child context under the name <code>parentScope</code>.
-     *
-     * @param parent the parent context for the newly created context.
-     */
-    public JellyContext(JellyContext parent) {
-        this.parent = parent;
-        this.rootURL = parent.rootURL;
-        this.currentURL = parent.currentURL;
-        this.variables.put("parentScope", parent.variables);
-        init();
-    }
-
-    /**
-     * Create a new context with the given parent context.
-     * The parent's rootURL are set on the child, and the parent's variables are
-     * available in the child context under the name <code>parentScope</code>.
-     *
-     * @param parentJellyContext the parent context for the newly created context.
-     * @param currentURL the root URL used in resolving relative resources
-     */
-    public JellyContext(JellyContext parentJellyContext, URL currentURL) {
-        this(parentJellyContext);
-        this.currentURL = currentURL;
-    }
-
-    /**
-     * Create a new context with the given parent context.
-     * The parent's variables are available in the child context under the name <code>parentScope</code>.
-     *
-     * @param parentJellyContext the parent context for the newly created context.
-     * @param rootURL the root URL used in resolving absolute resources i.e. those starting with '/'
-     * @param currentURL the root URL used in resolving relative resources
-     */
-    public JellyContext(JellyContext parentJellyContext, URL rootURL, URL currentURL) {
-        this(parentJellyContext, currentURL);
-        this.rootURL = rootURL;
-    }
-
-    /**
-     * Initialize the context.
-     * This includes adding the context to itself under the name <code>context</code> and
-     * making the System Properties available as <code>systemScope</code>
-     */
-    private void init() {
-        variables.put("context",this);
-        try {
-            variables.put("systemScope", System.getProperties() );
-        } catch (SecurityException e) {
-            log.debug("security exception accessing system properties", e);
-        }
-    }
-
-    /**
-     * @return the parent context for this context
-     */
-    public JellyContext getParent() {
-        return parent;
-    }
-
-    /**
-     * @return the scope of the given name, such as the 'parent' scope.
-     * If Jelly is used in a Servlet situation then 'request', 'session' and 'application' are other names
-     * for scopes
-     */
-    public JellyContext getScope(String name) {
-        if ( "parent".equals( name ) ) {
-            return getParent();
-        }
-        return null;
-    }
-
-    /**
-     * Finds the variable value of the given name in this context or in any other parent context.
-     * If this context does not contain the variable, then its parent is used and then its parent
-     * and so forth until the context with no parent is found.
-     *
-     * @return the value of the variable in this or one of its descendant contexts or null
-     *  if the variable could not be found.
-     */
-    public Object findVariable(String name) {
-        Object answer = variables.get(name);
-        boolean definedHere = answer != null || variables.containsKey(name);
-
-        if (definedHere) return answer;
-
-        if ( answer == null && parent != null ) {
-            answer = parent.findVariable(name);
-        }
-        // ### this is a hack - remove this when we have support for pluggable Scopes
-        if ( answer == null ) {
-            answer = getSystemProperty(name);
-        }
-
-        if (log.isDebugEnabled()) {
-            log.debug("findVariable: " + name + " value: " + answer );
-        }
-        return answer;
-    }
-
-
-    /** @return the value of the given variable name */
-    public Object getVariable(String name) {
-        Object value = variables.get(name);
-        boolean definedHere = value != null || variables.containsKey(name);
-
-        if (definedHere) return value;
-
-        if ( value == null && isInherit() ) {
-            JellyContext parentContext = getParent();
-            if (parentContext != null) {
-                value = parentContext.getVariable( name );
-            }
-        }
-
-        // ### this is a hack - remove this when we have support for pluggable Scopes
-        if ( value == null ) {
-            value = getSystemProperty(name);
-        }
-
-        return value;
-    }
-
-    /**
-     * Get a system property and handle security exceptions
-     * @param name the name of the property to retrieve
-     * @return the value of the property, or null if a SecurityException occurs
-     */
-    private Object getSystemProperty(String name) {
-        try {
-            return System.getProperty(name);
-        }
-        catch (SecurityException e) {
-            log.debug("security exception accessing system properties", e);
-        }
-        return null;
-    }
-
-    /**
-     * @return the value of the given variable name in the given variable scope
-     * @param name is the name of the variable
-     * @param scopeName is the optional scope name such as 'parent'. For servlet environments
-     * this could be 'application', 'session' or 'request'.
-     */
-    public Object getVariable(String name, String scopeName) {
-        JellyContext scope = getScope(scopeName);
-        if ( scope != null ) {
-            return scope.getVariable(name);
-        }
-        return null;
-    }
-
-
-
-    /** Sets the value of the named variable */
-    public void setVariable(String name, Object value) {
-        if ( isExport() ) {
-            getParent().setVariable( name, value );
-            return;
-        }
-        if (value == null) {
-            variables.remove(name);
-        }
-        else {
-            variables.put(name, value);
-        }
-    }
-
-    /**
-     * Sets the value of the given variable name in the given variable scope
-     * @param name is the name of the variable
-     * @param scopeName is the optional scope name such as 'parent'. For servlet environments
-     *  this could be 'application', 'session' or 'request'.
-     * @param value is the value of the attribute
-     */
-    public void setVariable(String name, String scopeName, Object value) {
-        JellyContext scope = getScope(scopeName);
-        if ( scope != null ) {
-            scope.setVariable(name, value);
-        }
-    }
-
-    /** Removes the given variable */
-    public void removeVariable(String name) {
-        variables.remove(name);
-    }
-
-    /**
-     * Removes the given variable in the specified scope.
-     *
-     * @param name is the name of the variable
-     * @param scopeName is the optional scope name such as 'parent'. For servlet environments
-     *  this could be 'application', 'session' or 'request'.
-     */
-    public void removeVariable(String name, String scopeName) {
-        JellyContext scope = getScope(scopeName);
-        if ( scope != null ) {
-            scope.removeVariable(name);
-        }
-    }
-
-    /**
-     * @return an Iterator over the current variable names in this
-     * context
-     */
-    public Iterator getVariableNames() {
-        return variables.keySet().iterator();
-    }
-
-    /**
-     * @return the Map of variables in this scope
-     */
-    public Map getVariables() {
-        return variables;
-    }
-
-    /**
-     * Sets the Map of variables to use
-     */
-    public void setVariables(Map variables) {
-        // I have seen this fail when the passed Map contains a key, value
-        // pair where the value is null
-        for (Iterator iter = variables.entrySet().iterator(); iter.hasNext();) {
-            Map.Entry element = (Map.Entry) iter.next();
-            if (element.getValue() != null) {
-                this.variables.put(element.getKey(), element.getValue());
-            }
-        }
-        //this.variables.putAll( variables );
-    }
-
-    /**
-     * A factory method to create a new child context of the
-     * current context.
-     */
-    public JellyContext newJellyContext(Map newVariables) {
-        // XXXX: should allow this new context to
-        // XXXX: inherit parent contexts?
-        // XXXX: Or at least publish the parent scope
-        // XXXX: as a Map in this new variable scope?
-        newVariables.put("parentScope", variables);
-        JellyContext answer = createChildContext();
-        answer.setVariables(newVariables);
-        return answer;
-    }
-
-    /**
-     * A factory method to create a new child context of the
-     * current context.
-     */
-    public JellyContext newJellyContext() {
-        return createChildContext();
-    }
-    
-
-    /** Gets the Script data item that may have previously been stored
-     * by the script, in this context, for the current thread.
-     *  
-     * @return the tag associated with the current context and thread
-      */
-    public Object getThreadScriptData(Script script) {
-        if( script == null )
-            return null;
-        Tag tag = (Tag) getThreadScriptDataMap().get(script);
-		if( tag == null && getParent() != null) {
-			return getParent().getThreadScriptData(script);
-		} else {
-			return tag;
-		}
-    }
-	
-	/** Gets a per-thread (thread local) Map of data for use by
-     * Scripts.
-     * @return the thread local Map of Script data */
-	public Map getThreadScriptDataMap() {
-        Map rv;
-        Map data = (Map) threadLocalScriptData.get();
-        if (data == null) {
-            rv = new HashMap();
-            threadLocalScriptData.set(rv);
-        } else {
-            rv = data;
-        }
-		return rv;
-	}
-    
-    /** Stores an object that lasts for the life of this context
-     * and is local to the current thread. This method is
-     * mainly intended to store Tag instances. However, any
-     * Script that wants to cache data can use this
-     * method.
-      */
-    public void setThreadScriptData(Script script, Object data) {
-        getThreadScriptDataMap().put(script,data);
-    }
-    
-    /** Clears variables set by Tags (basically, variables set in a Jelly script)
-     * and data stored by {@link Script} instances.
-     * @see #clearVariables()
-     * @see #clearThreadScriptData()
-     * @see #clearScriptData()
-      */
-    public void clear() {
-        getThreadScriptDataMap().clear();
-        variables.clear();
-    }
-    
-    /** Clears variables set by Tags (variables set while running a Jelly script)
-     * @see #clear()
-     * @see #clearThreadScriptData()
-     * @see #clearScriptData()
-     */
-    public void clearVariables() {
-        variables.clear();
-    }
-    
-    /** Clears data cached by {@link Script} instances, 
-     * for this context, <strong>for the current thread</strong>.
-     * The data cleared could be cached Tag instances or other data
-     * saved by Script classes.
-     * @see #clear()
-     * @see #clearVariables()
-     * @see #clearScriptData()
-     */
-    public void clearThreadScriptData() {
-        getThreadScriptDataMap().clear();
-    }
-    
-    /** Clears data cached by {@link Script} instances, 
-     * for this context, <strong>for all threads</strong>. 
-     * The data cleared could be cached Tag instances or other data
-     * saved by Script classes.
-     * @see #clear()
-     * @see #clearThreadScriptData()
-     * @see #clearVariables()
-     */
-    public void clearScriptData() {
-        threadLocalScriptData = new ThreadLocal();
-    }
-    
-    /** Registers the given tag library against the given namespace URI.
-     * This should be called before the parser is used.
-     */
-    public void registerTagLibrary(String namespaceURI, TagLibrary taglib) {
-        if (log.isDebugEnabled()) {
-            log.debug("Registering tag library to: " + namespaceURI + " taglib: " + taglib);
-        }
-        taglibs.put(namespaceURI, taglib);
-
-        if (isExportLibraries() && parent != null) {
-            parent.registerTagLibrary( namespaceURI, taglib );
-        }
-    }
-
-    /** Registers the given tag library class name against the given namespace URI.
-     * The class will be loaded via the given ClassLoader
-     * This should be called before the parser is used.
-     */
-    public void registerTagLibrary(
-        String namespaceURI,
-        String className) {
-
-        if (log.isDebugEnabled()) {
-            log.debug("Registering tag library to: " + namespaceURI + " taglib: " + className);
-        }
-        taglibs.put(namespaceURI, className);
-
-        if (isExportLibraries() && parent != null) {
-            parent.registerTagLibrary( namespaceURI, className );
-        }
-    }
-
-    public boolean isTagLibraryRegistered(String namespaceURI) {
-        boolean answer = taglibs.containsKey( namespaceURI );
-        if (answer) {
-            return true;
-        }
-        else if ( parent != null ) {
-            return parent.isTagLibraryRegistered(namespaceURI);
-        }
-        else {
-            return false;
-        }
-    }
-
-    /**
-     * @return the TagLibrary for the given namespace URI or null if one could not be found
-     */
-    public TagLibrary getTagLibrary(String namespaceURI) {
-
-        // use my own mapping first, so that namespaceURIs can
-        // be redefined inside child contexts...
-
-        Object answer = taglibs.get(namespaceURI);
-
-        if ( answer == null && parent != null ) {
-            answer = parent.getTagLibrary( namespaceURI );
-        }
-
-        if ( answer instanceof TagLibrary ) {
-            return (TagLibrary) answer;
-        }
-        else if ( answer instanceof String ) {
-            String className = (String) answer;
-            Class theClass = null;
-            try {
-                theClass = getClassLoader().loadClass(className);
-            }
-            catch (ClassNotFoundException e) {
-                log.error("Could not find the class: " + className, e);
-            }
-            if ( theClass != null ) {
-                try {
-                    Object object = theClass.newInstance();
-                    if (object instanceof TagLibrary) {
-                        taglibs.put(namespaceURI, object);
-                        return (TagLibrary) object;
-                    }
-                    else {
-                        log.error(
-                            "The tag library object mapped to: "
-                                + namespaceURI
-                                + " is not a TagLibrary. Object = "
-                                + object);
-                    }
-                }
-                catch (Exception e) {
-                    log.error(
-                        "Could not instantiate instance of class: " + className + ". Reason: " + e,
-                        e);
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Attempts to parse the script from the given uri using the
-     * {@link #getResource} method then returns the compiled script.
-     */
-    public Script compileScript(String uri) throws JellyException {
-        XMLParser parser = getXMLParser();
-        parser.setContext(this);
-        InputStream in = getResourceAsStream(uri);
-        if (in == null) {
-            throw new JellyException("Could not find Jelly script: " + uri);
-        }
-        Script script = null;
-        try {
-            script = parser.parse(in);
-        } catch (IOException e) {
-            throw new JellyException(JellyContext.BAD_PARSE, e);
-        } catch (SAXException e) {
-            throw new JellyException(JellyContext.BAD_PARSE, e);
-        }
-
-        return script.compile();
-    }
-
-    /**
-     * Attempts to parse the script from the given URL using the
-     * {@link #getResource} method then returns the compiled script.
-     */
-    public Script compileScript(URL url) throws JellyException {
-        XMLParser parser = getXMLParser();
-        parser.setContext(this);
-
-        Script script = null;
-        try {
-            script = parser.parse(url.toString());
-        } catch (IOException e) {
-            throw new JellyException(JellyContext.BAD_PARSE, e);
-        } catch (SAXException e) {
-            throw new JellyException(JellyContext.BAD_PARSE, e);
-        }
-
-        return script.compile();
-    }
-
-    /**
-     * Attempts to parse the script from the given InputSource using the
-     * {@link #getResource} method then returns the compiled script.
-     */
-    public Script compileScript(InputSource source) throws JellyException {
-        XMLParser parser = getXMLParser();
-        parser.setContext(this);
-
-        Script script = null;
-        try {
-            script = parser.parse(source);
-        } catch (IOException e) {
-            throw new JellyException(JellyContext.BAD_PARSE, e);
-        } catch (SAXException e) {
-            throw new JellyException(JellyContext.BAD_PARSE, e);
-        }
-
-        return script.compile();
-    }
-
-    /**
-     * @return a thread pooled XMLParser to avoid the startup overhead
-     * of the XMLParser
-     */
-    protected XMLParser getXMLParser() {
-        XMLParser parser = createXMLParser();
-        return parser;
-    }
-
-    /**
-     * Factory method to allow JellyContext implementations to overload how an XMLParser
-     * is created - such as to overload what the default ExpressionFactory should be.
-     */
-    protected XMLParser createXMLParser() {
-        return new XMLParser();
-    }
-
-    /**
-     * Parses the script from the given File then compiles it and runs it.
-     *
-     * @return the new child context that was used to run the script
-     */
-    public JellyContext runScript(File file, XMLOutput output) throws JellyException {
-        try {
-            return runScript(file.toURL(), output, JellyContext.DEFAULT_EXPORT,
-                JellyContext.DEFAULT_INHERIT);
-        } catch (MalformedURLException e) {
-            throw new JellyException(e.toString());
-        }
-    }
-
-    /**
-     * Parses the script from the given URL then compiles it and runs it.
-     *
-     * @return the new child context that was used to run the script
-     */
-    public JellyContext runScript(URL url, XMLOutput output) throws JellyException {
-        return runScript(url, output, JellyContext.DEFAULT_EXPORT,
-            JellyContext.DEFAULT_INHERIT);
-    }
-
-    /**
-     * Parses the script from the given InputSource then compiles it and runs it.
-     *
-     * @return the new child context that was used to run the script
-     */
-    public JellyContext runScript(InputSource source, XMLOutput output) throws JellyException {
-        return runScript(source, output, JellyContext.DEFAULT_EXPORT,
-            JellyContext.DEFAULT_INHERIT);
-    }
-
-    /**
-     * Parses the script from the given uri using the
-     * JellyContext.getResource() API then compiles it and runs it.
-     *
-     * @return the new child context that was used to run the script
-     */
-    public JellyContext runScript(String uri, XMLOutput output) throws JellyException {
-        URL url = null;
-        try {
-            url = getResource(uri);
-        } catch (MalformedURLException e) {
-            throw new JellyException(e.toString());
-        }
-
-        if (url == null) {
-            throw new JellyException("Could not find Jelly script: " + url);
-        }
-        return runScript(url, output, JellyContext.DEFAULT_EXPORT,
-            JellyContext.DEFAULT_INHERIT);
-    }
-
-    /**
-     * Parses the script from the given uri using the
-     * JellyContext.getResource() API then compiles it and runs it.
-     *
-     * @return the new child context that was used to run the script
-     */
-    public JellyContext runScript(String uri, XMLOutput output,
-                          boolean export, boolean inherit) throws JellyException {
-        URL url = null;
-        try {
-            url = getResource(uri);
-        } catch (MalformedURLException e) {
-            throw new JellyException(e.toString());
-        }
-
-        if (url == null) {
-            throw new JellyException("Could not find Jelly script: " + url);
-        }
-
-        return runScript(url, output, export, inherit);
-    }
-
-    /**
-     * Parses the script from the given file then compiles it and runs it.
-     *
-     * @return the new child context that was used to run the script
-     */
-    public JellyContext runScript(File file, XMLOutput output,
-                          boolean export, boolean inherit) throws JellyException {
-        try {
-            return runScript(file.toURL(), output, export, inherit);
-        } catch (MalformedURLException e) {
-            throw new JellyException(e.toString());
-        }
-    }
-
-    /**
-     * Parses the script from the given URL then compiles it and runs it.
-     *
-     * @return the new child context that was used to run the script
-     */
-    public JellyContext runScript(URL url, XMLOutput output,
-                          boolean export, boolean inherit) throws JellyException {
-        return runScript(new InputSource(url.toString()), output, export, inherit);
-    }
-
-    /**
-     * Parses the script from the given InputSource then compiles it and runs it.
-     *
-     * @return the new child context that was used to run the script
-     */
-    public JellyContext runScript(InputSource source, XMLOutput output,
-                          boolean export, boolean inherit) throws JellyException {
-        Script script = compileScript(source);
-
-        URL newJellyContextURL = null;
-        try {
-            newJellyContextURL = getJellyContextURL(source);
-        } catch (MalformedURLException e) {
-            throw new JellyException(e.toString());
-        }
-
-        JellyContext newJellyContext = newJellyContext();
-        newJellyContext.setRootURL( newJellyContextURL );
-        newJellyContext.setCurrentURL( newJellyContextURL );
-        newJellyContext.setExport( export );
-        newJellyContext.setInherit( inherit );
-
-        if ( inherit ) {
-            // use the same variable scopes
-            newJellyContext.variables = this.variables;
-        }
-
-        if (log.isDebugEnabled() ) {
-            log.debug( "About to run script: " + source.getSystemId() );
-            log.debug( "root context URL: " + newJellyContext.rootURL );
-            log.debug( "current context URL: " + newJellyContext.currentURL );
-        }
-
-        script.run(newJellyContext, output);
-
-        return newJellyContext;
-    }
-
-    /**
-     * Returns a URL for the given resource from the specified path.
-     * If the uri starts with "/" then the path is taken as relative to
-     * the current context root.
-     * If the uri is a well formed URL then it is used.
-     * If the uri is a file that exists and can be read then it is used.
-     * Otherwise the uri is interpreted as relative to the current context (the
-     * location of the current script).
-     */
-    public URL getResource(String uri) throws MalformedURLException {
-        if (uri.startsWith("/")) {
-            // append this uri to the context root
-            return createRelativeURL(rootURL, uri.substring(1));
-        }
-        else {
-            try {
-                return new URL(uri);
-            }
-            catch (MalformedURLException e) {
-                // lets try find a relative resource
-                try {
-                    return createRelativeURL(currentURL, uri);
-                } catch (MalformedURLException e2) {
-                    throw e;
-                }
-            }
-        }
-    }
-
-    /**
-     * Attempts to open an InputStream to the given resource at the specified path.
-     * If the uri starts with "/" then the path is taken as relative to
-     * the current context root. If the uri is a well formed URL then it
-     * is used. Otherwise the uri is interpreted as relative to the current
-     * context (the location of the current script).
-     *
-     * @return null if this resource could not be loaded, otherwise the resources
-     *  input stream is returned.
-     */
-    public InputStream getResourceAsStream(String uri) {
-        try {
-            URL url = getResource(uri);
-            return url.openStream();
-        }
-        catch (Exception e) {
-            if (log.isTraceEnabled()) {
-                log.trace(
-                    "Caught exception attempting to open: " + uri + ". Exception: " + e,
-                    e);
-            }
-            return null;
-        }
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the current root context URL from which all absolute resource URIs
-     *  will be relative to. For example in a web application the root URL will
-     *  map to the web directory which contains the WEB-INF directory.
-     */
-    public URL getRootURL() {
-        return rootURL;
-    }
-
-    /**
-     * Sets the current root context URL from which all absolute resource URIs
-     *  will be relative to. For example in a web application the root URL will
-     *  map to the web directory which contains the WEB-INF directory.
-     */
-    public void setRootURL(URL rootURL) {
-        this.rootURL = rootURL;
-    }
-
-
-    /**
-     * @return the current URL context of the current script that is executing.
-     *  This URL context is used to deduce relative scripts when relative URIs are
-     *  used in calls to {@link #getResource} to process relative scripts.
-     */
-    public URL getCurrentURL() {
-        return currentURL;
-    }
-
-    /**
-     * Sets the current URL context of the current script that is executing.
-     *  This URL context is used to deduce relative scripts when relative URIs are
-     *  used in calls to {@link #getResource} to process relative scripts.
-     */
-    public void setCurrentURL(URL currentURL) {
-        this.currentURL = currentURL;
-    }
-
-    /**
-     * Returns whether we export tag libraries to our parents context
-     * @return boolean
-     */
-    public boolean isExportLibraries() {
-        return exportLibraries;
-    }
-
-    /**
-     * Sets whether we export tag libraries to our parents context
-     * @param exportLibraries The exportLibraries to set
-     */
-    public void setExportLibraries(boolean exportLibraries) {
-        this.exportLibraries = exportLibraries;
-    }
-
-
-    /**
-     * Sets whether we should export variable definitions to our parent context
-     */
-    public void setExport(boolean export) {
-        this.export = export;
-    }
-
-    /**
-     * @return whether we should export variable definitions to our parent context
-     */
-    public boolean isExport() {
-        return this.export;
-    }
-
-    /**
-     * Sets whether we should inherit variables from our parent context
-     */
-    public void setInherit(boolean inherit) {
-        this.inherit = inherit;
-    }
-
-    /**
-     * @return whether we should inherit variables from our parent context
-     */
-    public boolean isInherit() {
-        return this.inherit;
-    }
-
-
-    /**
-     * Return the class loader to be used for instantiating application objects
-     * when required.  This is determined based upon the following rules:
-     * <ul>
-     * <li>The class loader set by <code>setClassLoader()</code>, if any</li>
-     * <li>The thread context class loader, if it exists and the
-     *     <code>useContextClassLoader</code> property is set to true</li>
-     * <li>The class loader used to load the XMLParser class itself.
-     * </ul>
-     */
-    public ClassLoader getClassLoader() {
-        return ClassLoaderUtils.getClassLoader(classLoader, useContextClassLoader, getClass());
-    }
-
-    /**
-     * Set the class loader to be used for instantiating application objects
-     * when required.
-     *
-     * @param classLoader The new class loader to use, or <code>null</code>
-     *  to revert to the standard rules
-     */
-    public void setClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
-    /**
-     * Return the boolean as to whether the context classloader should be used.
-     */
-    public boolean getUseContextClassLoader() {
-        return useContextClassLoader;
-    }
-
-    /**
-     * Determine whether to use the Context ClassLoader (the one found by
-     * calling <code>Thread.currentThread().getContextClassLoader()</code>)
-     * to resolve/load classes.  If not
-     * using Context ClassLoader, then the class-loading defaults to
-     * using the calling-class' ClassLoader.
-     *
-     * @param use determines whether to use JellyContext ClassLoader.
-     */
-    public void setUseContextClassLoader(boolean use) {
-        useContextClassLoader = use;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    /**
-     * @return a new relative URL from the given root and with the addition of the
-     * extra relative URI
-     *
-     * @param rootURL is the root context from which the relative URI will be applied
-     * @param relativeURI is the relative URI (without a leading "/")
-     * @throws MalformedURLException if the URL is invalid.
-     */
-    protected URL createRelativeURL(URL rootURL, String relativeURI)
-        throws MalformedURLException {
-        URL url = rootURL;
-        if (url == null) {
-            File file = new File(System.getProperty("user.dir"));
-            url = file.toURL();
-        }
-        String urlText = url.toString() + relativeURI;
-        if ( log.isDebugEnabled() ) {
-            log.debug("Attempting to open url: " + urlText);
-        }
-        return new URL(urlText);
-    }
-
-    /**
-     * Strips off the name of a script to create a new context URL
-     */
-    protected URL getJellyContextURL(URL url) throws MalformedURLException {
-        String text = url.toString();
-        int idx = text.lastIndexOf('/');
-        text = text.substring(0, idx + 1);
-        return new URL(text);
-    }
-
-    /**
-     * Strips off the name of a script to create a new context URL
-     */
-    protected URL getJellyContextURL(InputSource source) throws MalformedURLException {
-        String text = source.getSystemId();
-        if (text != null) {
-            int idx = text.lastIndexOf('/');
-            text = text.substring(0, idx + 1);
-            return new URL(text);
-        } else {
-            return null;
-        }
-        
-    }
-
-    /**
-     * Factory method to create a new child of this context
-     */
-    protected JellyContext createChildContext() {
-        return new JellyContext(this);
-    }
-
-    /**
-     * Change the parent context to the one provided
-     * @param context the new parent context
-     */
-    protected void setParent(JellyContext context)
-    {
-        parent = context;
-        this.variables.put("parentScope", parent.variables);
-        // need to re-export tag libraries to the new parent
-        if (isExportLibraries() && parent != null) {
-            for (Iterator keys = taglibs.keySet().iterator(); keys.hasNext();)
-            {
-                String namespaceURI = (String) keys.next();
-                Object tagLibOrClassName = taglibs.get(namespaceURI);
-                if (tagLibOrClassName instanceof TagLibrary)
-                {
-                    parent.registerTagLibrary( namespaceURI, (TagLibrary) tagLibOrClassName );
-                }
-                else
-                {
-                    parent.registerTagLibrary( namespaceURI, (String) tagLibOrClassName );
-                }
-            }
-        }
-
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/JellyException.java b/src/java/org/apache/commons/jelly/JellyException.java
deleted file mode 100644
index 38920fa..0000000
--- a/src/java/org/apache/commons/jelly/JellyException.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-/** 
- * <p><code>JellyException</code> is the root of all Jelly exceptions.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.17 $
- */
-
-public class JellyException extends Exception implements LocationAware {
-    
-    /** the underlying cause of the exception */
-    private Throwable cause;
-
-    /** the Jelly file which caused the problem */
-    private String fileName;
-
-    /** the tag name which caused the problem */
-    private String elementName;
-
-    /** the line number in the script of the error */
-    private int lineNumber = -1;
-    
-    /** the column number in the script of the error */
-    private int columnNumber = -1;
-    
-    public JellyException() {
-    }
-
-    public JellyException(String message) {
-        super(message);
-    }
-
-    public JellyException(String message, Throwable cause) {
-        super(message);
-        this.cause = cause;
-    }
-    
-    public JellyException(Throwable cause) {
-        super(cause.getLocalizedMessage());
-        this.cause = cause;
-    }
-    
-    public JellyException(Throwable cause, String fileName, String elementName, int columnNumber, int lineNumber) {
-        this(cause.getLocalizedMessage(), cause, fileName, elementName, columnNumber, lineNumber);
-    }
-    
-    public JellyException(String reason, Throwable cause, String fileName, String elementName, int columnNumber, int lineNumber) {
-        super( (reason==null?cause.getClass().getName():reason) );
-        this.cause = cause;
-        this.fileName = fileName;
-        this.elementName = elementName;
-        this.columnNumber = columnNumber;
-        this.lineNumber = lineNumber;
-    }
-    
-    public JellyException(String reason, String fileName, String elementName, int columnNumber, int lineNumber) {
-        super(reason);
-        this.fileName = fileName;
-        this.elementName = elementName;
-        this.columnNumber = columnNumber;
-        this.lineNumber = lineNumber;
-    }
-    
-    public Throwable getCause() {
-        return cause;
-    }
-
-    
-    /** 
-     * @return the line number of the tag 
-     */
-    public int getLineNumber() {
-        return lineNumber;
-    }
-    
-    /** 
-     * Sets the line number of the tag 
-     */
-    public void setLineNumber(int lineNumber) {
-        this.lineNumber = lineNumber;
-    }
-
-    /** 
-     * @return the column number of the tag 
-     */
-    public int getColumnNumber() {
-        return columnNumber;
-    }
-    
-    /** 
-     * Sets the column number of the tag 
-     */
-    public void setColumnNumber(int columnNumber) {
-        this.columnNumber = columnNumber;
-    }
-
-    /** 
-     * @return the Jelly file which caused the problem 
-     */
-    public String getFileName() {
-        return fileName;
-    }
-
-    /** 
-     * Sets the Jelly file which caused the problem 
-     */
-    public void setFileName(String fileName) {
-        this.fileName = fileName;
-    }
-    
-
-    /** 
-     * @return the element name which caused the problem
-     */
-    public String getElementName() {
-        return elementName;
-    }
-
-    /** 
-     * Sets the element name which caused the problem
-     */
-    public void setElementName(String elementName) {
-        this.elementName = elementName;
-    }
-    
-    
-    public String getMessage() {
-        return fileName + ":" + lineNumber + ":" + columnNumber + ": <" + elementName + "> " + getReason();
-    }
-
-    public String getReason() {
-        return super.getMessage();
-    }
-
-    // #### overload the printStackTrace methods...
-    public void printStackTrace(PrintWriter s) { 
-        synchronized (s) {
-            super.printStackTrace(s);
-            if  (cause != null) {
-                s.println("Root cause");
-                cause.printStackTrace(s);
-            }
-        }
-    }
-        
-    public void printStackTrace(PrintStream s) {
-        synchronized (s) {
-            super.printStackTrace(s);
-            if  (cause != null) {
-                s.println("Root cause");
-                cause.printStackTrace(s);
-            }
-        }
-    }
-
-    public void printStackTrace() {
-        super.printStackTrace();
-        if (cause != null) {
-            System.out.println("Root cause");
-            cause.printStackTrace();
-        }
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/JellyTagException.java b/src/java/org/apache/commons/jelly/JellyTagException.java
deleted file mode 100644
index 27cc215..0000000
--- a/src/java/org/apache/commons/jelly/JellyTagException.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-/** 
- * <p>A <code>JellyTagException</code> is an exception generated by a Tag
- * implementation.</p>
- *
- * @author <a href="mailto:morgand@apache.org">Morgan Delagrange</a>
- * @version $Revision: 1.5 $
- */
-
-public class JellyTagException extends JellyException {
-    
-    public JellyTagException() {
-    }
-
-    public JellyTagException(String message) {
-        super(message);
-    }
-
-    public JellyTagException(String message, Throwable cause) {
-        super(message,cause);
-    }
-    
-    public JellyTagException(Throwable cause) {
-        super(cause);
-    }
-    
-    public JellyTagException(Throwable cause, String fileName, String elementName, int columnNumber, int lineNumber) {
-        super(cause, fileName, elementName, columnNumber, lineNumber);
-    }
-    
-    public JellyTagException(String reason, Throwable cause, String fileName, String elementName, int columnNumber, int lineNumber) {
-        super(reason,cause,fileName,elementName,columnNumber,lineNumber);
-    }
-    
-    public JellyTagException(String reason, String fileName, String elementName, int columnNumber, int lineNumber) {
-        super(reason,fileName,elementName,columnNumber,lineNumber);
-    }
-    
-}
diff --git a/src/java/org/apache/commons/jelly/LocationAware.java b/src/java/org/apache/commons/jelly/LocationAware.java
deleted file mode 100644
index 9c8fb32..0000000
--- a/src/java/org/apache/commons/jelly/LocationAware.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-/** 
- * <p><code>LocationAware</code> represents a Tag or Exception which is location aware.
- * That is to say it is capable of recording where in a Jelly script a tag or exception
- * is used which can aid debugging and tracing.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.11 $
- */
-
-public interface LocationAware {
-    
-    /** 
-     * @return the line number of the tag 
-     */
-    int getLineNumber();
-    
-    /** 
-     * Sets the line number of the tag 
-     */
-    void setLineNumber(int lineNumber);
-
-    /** 
-     * @return the column number of the tag 
-     */
-    int getColumnNumber();
-    
-    /** 
-     * Sets the column number of the tag 
-     */
-    void setColumnNumber(int columnNumber);
-
-    /** 
-     * @return the Jelly file which caused the problem 
-     */
-    String getFileName();
-    
-    /** 
-     * Sets the Jelly file which caused the problem 
-     */
-    void setFileName(String fileName);
-    
-    /** 
-     * @return the element name which caused the problem
-     */
-    String getElementName();
-
-    /** 
-     * Sets the element name which caused the problem
-     */
-    void setElementName(String elementName);
-}
diff --git a/src/java/org/apache/commons/jelly/MapTagSupport.java b/src/java/org/apache/commons/jelly/MapTagSupport.java
deleted file mode 100644
index 4ad5468..0000000
--- a/src/java/org/apache/commons/jelly/MapTagSupport.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-import java.util.HashMap;
-
-import java.util.Map;
-
-/** 
- * <p><code>MapTag</code> is a DynaTag implementation which uses a Map
- * to store its attribute values in. Derived tags can then process this
- * Map, change values, add or remove attributes or perform some other form
- * of processsing pretty easily.
- * </p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-
-public abstract class MapTagSupport extends DynaTagSupport {
-
-    private Map map;
-
-    /** Sets an attribute value of this tag before the tag is invoked
-     */
-    public void setAttribute(String name, Object value) {
-        getAttributes().put(name, value);
-    }
-
-    /** 
-     * Helper method which allows derived tags to access the attributes
-     * associated with this tag
-     */
-    protected Map getAttributes() {
-        if (map == null) {
-            map = createAttributes();
-        }
-        return map;
-    }
-    /**
-     * A Factory Method which allows derived tags to overload the Map
-     * implementation used by this tag
-     */
-
-    protected Map createAttributes() {
-        return new HashMap();
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/MissingAttributeException.java b/src/java/org/apache/commons/jelly/MissingAttributeException.java
deleted file mode 100644
index a034f31..0000000
--- a/src/java/org/apache/commons/jelly/MissingAttributeException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-/** 
- * <p><code>JellyException</code> is the root of all Jelly exceptions.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.2 $
- */
-public class MissingAttributeException extends JellyTagException {
-
-    private String missingAttribute;
-    
-    // ### we may wish to implement a localized messag for this error
-        
-    public MissingAttributeException(String missingAttribute) {
-        super( "You must define an attribute called '" + missingAttribute + "' for this tag." );
-        this.missingAttribute = missingAttribute;
-    }
-    
-    public String getMissingAttribute() {
-        return missingAttribute;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/NamespaceAwareTag.java b/src/java/org/apache/commons/jelly/NamespaceAwareTag.java
deleted file mode 100644
index 23ca241..0000000
--- a/src/java/org/apache/commons/jelly/NamespaceAwareTag.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-import java.util.Map;
-
-/**
- * <p><code>NamespaceAwareTag</code> represents a Jelly custom tag which
- * needs to be aware of the XML Namespace context in which it is used.
- * When the tag is used it will be given the namespace context which is a
- * Map keyed on the namespace prefixes and the values are the namespace URIs
- * in scope in the tags element.
- * </p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-
-public interface NamespaceAwareTag extends Tag {
-
-    /**
-     * Sets the namespace context in scope when this tag is used
-     *
-     * @param prefixToUriMap is a Map where the keys are the namespace
-     * prefixes and the values are the namespace URIs
-     */
-    public void setNamespaceContext(Map prefixToUriMap);
-}
diff --git a/src/java/org/apache/commons/jelly/Script.java b/src/java/org/apache/commons/jelly/Script.java
deleted file mode 100644
index 45b717d..0000000
--- a/src/java/org/apache/commons/jelly/Script.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-/**
- * <p><code>Script</code> represents a Jelly script.
- * A Script <b>must</b> be thread safe so care should be taken on the
- * implementations of Scripts. However Tags are only used in a single thread
- * (each thread will have create its own Tags for the Script it is running)
- * so multi threading is not a concern for Tag developers.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.12 $
- */
-public interface Script {
-
-    /** Called by the parser to allow a more efficient
-     * representation of the script to be used.
-     */
-    public Script compile() throws JellyException;
-
-    /** Evaluates the body of a tag */
-    public void run(JellyContext context, XMLOutput output) throws JellyTagException;
-
-}
diff --git a/src/java/org/apache/commons/jelly/Tag.java b/src/java/org/apache/commons/jelly/Tag.java
deleted file mode 100644
index 439bb18..0000000
--- a/src/java/org/apache/commons/jelly/Tag.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-/**
- * <p><code>Tag</code> represents a Jelly custom tag.
- * A Tag is only ever used by a single thread so that Tag developers do not
- * need to concern themselves with mutli-threading issues when writing a Tag.
- * A Tag is created per custom tag in a script, per invocation.
- * So there is no need to worry about pooling errors like those caused
- * in JSP 1.x.(</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.17 $
- */
-public interface Tag {
-
-    /**
-     * @return the parent of this tag
-     */
-    public Tag getParent();
-
-    /**
-     * Sets the parent of this tag
-     */
-    public void setParent(Tag parent);
-
-    /**
-     * @return the body of the tag
-     */
-    public Script getBody();
-
-    /**
-     * Sets the body of the tag
-     */
-    public void setBody(Script body);
-
-    /**
-     * Gets the context in which the tag will be run
-     */
-    public JellyContext getContext();
-
-    /**
-     * Sets the context in which the tag will be run
-     */
-    public void setContext(JellyContext context) throws JellyTagException;
-
-    /**
-     * Evaluates this tag after all the tags properties have been initialized.
-     */
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException;
-
-    /**
-     * A helper method to invoke this tags body
-     */
-    public void invokeBody(XMLOutput output) throws JellyTagException;
-
-}
diff --git a/src/java/org/apache/commons/jelly/TagLibrary.java b/src/java/org/apache/commons/jelly/TagLibrary.java
deleted file mode 100644
index bbb403d..0000000
--- a/src/java/org/apache/commons/jelly/TagLibrary.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.beanutils.Converter;
-
-import org.apache.commons.jelly.expression.CompositeExpression;
-import org.apache.commons.jelly.expression.ConstantExpression;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.jelly.impl.TagScript;
-
-import org.xml.sax.Attributes;
-
-/** <p><code>Taglib</code> represents the metadata for a Jelly custom tag library.</p>
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.25 $
-  */
-
-public abstract class TagLibrary {
-
-    private Map tags = new HashMap();
-
-    static {
-
-        // register standard converters
-
-        ConvertUtils.register(
-            new Converter() {
-                public Object convert(Class type, Object value) {
-                    if ( value instanceof File ) {
-                        return (File) value;
-                    }
-                    else if ( value != null ) {
-                        String text = value.toString();
-                        return new File( text );
-                    }
-                    return null;
-                }
-            },
-            File.class
-        );
-    }
-
-    public TagLibrary() {
-    }
-
-    /** Creates a new script to execute the given tag name and attributes */
-    public TagScript createTagScript(String name, Attributes attributes)
-        throws JellyException {
-
-        Object value = tags.get(name);
-        if (value instanceof Class) {
-            Class type = (Class) value;
-            return TagScript.newInstance(type);
-        }
-        else if (value instanceof TagFactory) {
-            return new TagScript( (TagFactory) value );
-        }
-        return null;
-
-    }
-
-    /** Creates a new Tag for the given tag name and attributes */
-    public Tag createTag(String name, Attributes attributes)
-        throws JellyException {
-
-        Object value = tags.get(name);
-        if (value instanceof Class) {
-            Class type = (Class) value;
-            try {
-                return (Tag) type.newInstance();
-            } catch (InstantiationException e) {
-                throw new JellyException(e.toString());
-            } catch (IllegalAccessException e) {
-                throw new JellyException(e.toString());
-            }
-        }
-        else if (value instanceof TagFactory) {
-            TagFactory factory = (TagFactory) value;
-            return factory.createTag(name, attributes);
-        }
-        return null;
-    }
-
-    /** Allows taglibs to use their own expression evaluation mechanism */
-    public Expression createExpression(
-        ExpressionFactory factory,
-        TagScript tagScript,
-        String attributeName,
-        String attributeValue)
-        throws JellyException {
-
-        ExpressionFactory myFactory = getExpressionFactory();
-        if (myFactory == null) {
-            myFactory = factory;
-        }
-        if (myFactory != null) {
-            return CompositeExpression.parse(attributeValue, myFactory);
-        }
-
-        // will use a constant expression instead
-        return new ConstantExpression(attributeValue);
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Registers a tag implementation Class for a given tag name
-     */
-    protected void registerTag(String name, Class type) {
-        tags.put(name, type);
-    }
-
-    /**
-     * Registers a tag factory for a given tag name
-     */
-    protected void registerTagFactory(String name, TagFactory tagFactory) {
-        tags.put(name, tagFactory);
-    }
-
-    /** Allows derived tag libraries to use their own factory */
-    protected ExpressionFactory getExpressionFactory() {
-        return null;
-    }
-
-    protected Map getTagClasses() {
-        return tags;
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/TagSupport.java b/src/java/org/apache/commons/jelly/TagSupport.java
deleted file mode 100644
index c705346..0000000
--- a/src/java/org/apache/commons/jelly/TagSupport.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly;
-
-import java.io.StringWriter;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.jelly.util.TagUtils;
-
-/** <p><code>TagSupport</code> an abstract base class which is useful to
-  * inherit from if developing your own tag.</p>
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.35 $
-  */
-
-public abstract class TagSupport implements Tag {
-
-    /** the parent of this tag */
-    protected Tag parent;
-
-    /** the body of the tag */
-    protected Script body;
-    /** The current context */
-
-    protected Boolean shouldTrim;
-    protected boolean hasTrimmed;
-
-    protected JellyContext context;
-
-    /** whether xml text should be escaped */
-    private boolean escapeText = true;
-
-    /**
-     * Searches up the parent hierarchy from the given tag
-     * for a Tag of the given type
-     *
-     * @param from the tag to start searching from
-     * @param tagClass the type of the tag to find
-     * @return the tag of the given type or null if it could not be found
-     */
-    public static Tag findAncestorWithClass(Tag from, Class tagClass) {
-        // we could implement this as
-        //  return findAncestorWithClass(from,Collections.singleton(tagClass));
-        // but this is so simple let's save the object creation for now
-        while (from != null) {
-            if (tagClass.isInstance(from)) {
-                return from;
-            }
-            from = from.getParent();
-        }
-        return null;
-    }
-
-    /**
-     * Searches up the parent hierarchy from the given tag
-     * for a Tag matching one or more of given types.
-     *
-     * @param from the tag to start searching from
-     * @param tagClasses a Collection of Class types that might match
-     * @return the tag of the given type or null if it could not be found
-     */
-    public static Tag findAncestorWithClass(Tag from, Collection tagClasses) {
-        while (from != null) {
-            for(Iterator iter = tagClasses.iterator();iter.hasNext();) {
-                Class klass = (Class)(iter.next());
-                if (klass.isInstance(from)) {
-                    return from;
-                }
-            }
-            from = from.getParent();
-        }
-        return null;
-    }
-
-    /**
-     * Searches up the parent hierarchy from the given tag
-     * for a Tag matching one or more of given types.
-     *
-     * @param from the tag to start searching from
-     * @param tagClasses an array of types that might match
-     * @return the tag of the given type or null if it could not be found
-     * @see #findAncestorWithClass(Tag,Collection)
-     */
-    public static Tag findAncestorWithClass(Tag from, Class[] tagClasses) {
-        return findAncestorWithClass(from,Arrays.asList(tagClasses));
-    }
-
-    public TagSupport() {
-    }
-
-    public TagSupport(boolean shouldTrim) {
-        setTrim( shouldTrim );
-    }
-
-    /**
-     * Sets whether whitespace inside this tag should be trimmed or not.
-     * Defaults to true so whitespace is trimmed
-     */
-    public void setTrim(boolean shouldTrim) {
-        if ( shouldTrim ) {
-            this.shouldTrim = Boolean.TRUE;
-        }
-        else {
-            this.shouldTrim = Boolean.FALSE;
-        }
-    }
-
-    public boolean isTrim() {
-        if ( this.shouldTrim == null ) {
-            Tag parent = getParent();
-            if ( parent == null ) {
-                return true;
-            }
-            else {
-                if ( parent instanceof TagSupport ) {
-                    TagSupport parentSupport = (TagSupport) parent;
-
-                    this.shouldTrim = ( parentSupport.isTrim() ? Boolean.TRUE : Boolean.FALSE );
-                }
-                else {
-                    this.shouldTrim = Boolean.TRUE;
-                }
-            }
-        }
-
-        return this.shouldTrim.booleanValue();
-    }
-
-    /** @return the parent of this tag */
-    public Tag getParent() {
-        return parent;
-    }
-
-    /** Sets the parent of this tag */
-    public void setParent(Tag parent) {
-        this.parent = parent;
-    }
-
-    /** @return the body of the tag */
-    public Script getBody() {
-        if (! hasTrimmed) {
-            hasTrimmed = true;
-            if (isTrim()) {
-                trimBody();
-            }
-        }
-        return body;
-    }
-
-    /** Sets the body of the tag */
-    public void setBody(Script body) {
-        this.body = body;
-        this.hasTrimmed = false;
-    }
-
-    /** @return the context in which the tag will be run */
-    public JellyContext getContext() {
-        return context;
-    }
-
-    /** Sets the context in which the tag will be run */
-    public void setContext(JellyContext context) throws JellyTagException {
-        this.context = context;
-    }
-
-    /**
-     * Invokes the body of this tag using the given output
-     */
-    public void invokeBody(XMLOutput output) throws JellyTagException {
-        getBody().run(context, output);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    /**
-     * Searches up the parent hierarchy for a Tag of the given type.
-     * @return the tag of the given type or null if it could not be found
-     */
-    protected Tag findAncestorWithClass(Class parentClass) {
-        return findAncestorWithClass(getParent(), parentClass);
-    }
-
-    /**
-     * Searches up the parent hierarchy for a Tag of one of the given types.
-     * @return the tag of the given type or null if it could not be found
-     * @see #findAncestorWithClass(Collection)
-     */
-    protected Tag findAncestorWithClass(Class[] parentClasses) {
-        return findAncestorWithClass(getParent(),parentClasses);
-    }
-
-    /**
-     * Searches up the parent hierarchy for a Tag of one of the given types.
-     * @return the tag of the given type or null if it could not be found
-     */
-    protected Tag findAncestorWithClass(Collection parentClasses) {
-        return findAncestorWithClass(getParent(),parentClasses);
-    }
-
-    /**
-     * Executes the body of the tag and returns the result as a String.
-     *
-     * @return the text evaluation of the body
-     */
-    protected String getBodyText() throws JellyTagException {
-        return getBodyText(escapeText);
-    }
-
-    /**
-     * Executes the body of the tag and returns the result as a String.
-     *
-     * @param shouldEscape Signal if the text should be escaped.
-     *
-     * @return the text evaluation of the body
-     */
-    protected String getBodyText(boolean shouldEscape) throws JellyTagException {
-        StringWriter writer = new StringWriter();
-        invokeBody(XMLOutput.createXMLOutput(writer, shouldEscape));
-        return writer.toString();
-    }
-
-
-    /**
-     * Find all text nodes inside the top level of this body and
-     * if they are just whitespace then remove them
-     */
-    protected void trimBody() {
-        TagUtils.trimScript(body);
-    }
-
-    /**
-     * Returns whether the body of this tag will be escaped or not.
-     */
-    public boolean isEscapeText() {
-        return escapeText;
-    }
-
-    /**
-     * Sets whether the body of the tag should be escaped as text (so that &lt; and &gt; are
-     * escaped as &amp;lt; and &amp;gt;), which is the default or leave the text as XML.
-     */
-    public void setEscapeText(boolean escapeText) {
-        this.escapeText = escapeText;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/XMLOutput.java b/src/java/org/apache/commons/jelly/XMLOutput.java
deleted file mode 100644
index 70e9ff2..0000000
--- a/src/java/org/apache/commons/jelly/XMLOutput.java
+++ /dev/null
@@ -1,858 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.io.XMLWriter;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.helpers.AttributesImpl;
-import org.xml.sax.helpers.DefaultHandler;
-
-/** <p><code>XMLOutput</code> is used to output XML events
-  * in a SAX-like manner. This also allows pipelining to be done
-  * such as in the <a href="http://xml.apache.org/cocoon/">Cocoon</a> project.</p>
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.21 $
-  */
-
-public class XMLOutput implements ContentHandler, LexicalHandler {
-
-    protected static final String[] LEXICAL_HANDLER_NAMES =
-        {
-            "http://xml.org/sax/properties/lexical-handler",
-            "http://xml.org/sax/handlers/LexicalHandler" };
-
-    /** empty attributes */
-    private static final Attributes EMPTY_ATTRIBUTES = new AttributesImpl();
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(XMLOutput.class);
-
-    /** the default for escaping of text */
-    private static final boolean DEFAULT_ESCAPE_TEXT = false;
-
-    /** The SAX ContentHandler that output goes to */
-    private ContentHandler contentHandler;
-
-    /** The SAX LexicalHandler that output goes to */
-    private LexicalHandler lexicalHandler;
-
-
-    public XMLOutput() {
-    }
-
-    public XMLOutput(ContentHandler contentHandler) {
-        this.contentHandler = contentHandler;
-        // often classes will implement LexicalHandler as well
-        if (contentHandler instanceof LexicalHandler) {
-            this.lexicalHandler = (LexicalHandler) contentHandler;
-        }
-    }
-
-    public XMLOutput(
-        ContentHandler contentHandler,
-        LexicalHandler lexicalHandler) {
-        this.contentHandler = contentHandler;
-        this.lexicalHandler = lexicalHandler;
-    }
-
-    public String toString() {
-        return super.toString()
-            + "[contentHandler="
-            + contentHandler
-            + ";lexicalHandler="
-            + lexicalHandler
-            + "]";
-    }
-
-    /**
-     * Provides a useful hook that implementations can use to close the
-     * underlying OutputStream or Writer
-     */
-    public void close() throws IOException {
-    }
-
-    public void flush() throws IOException {
-        if( contentHandler instanceof XMLWriter )
-        {
-            ((XMLWriter)contentHandler).flush();
-        }
-    }
-
-    // Static helper methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Creates an XMLOutput from an existing SAX XMLReader
-     */
-    public static XMLOutput createXMLOutput(XMLReader xmlReader) {
-        XMLOutput output = new XMLOutput(xmlReader.getContentHandler());
-
-        // isn't it lovely what we've got to do to find the LexicalHandler... ;-)
-        for (int i = 0; i < LEXICAL_HANDLER_NAMES.length; i++) {
-            try {
-                Object value = xmlReader.getProperty(LEXICAL_HANDLER_NAMES[i]);
-                if (value instanceof LexicalHandler) {
-                    output.setLexicalHandler((LexicalHandler) value);
-                    break;
-                }
-            }
-            catch (Exception e) {
-                // ignore any unsupported-operation exceptions
-                if (log.isDebugEnabled()) log.debug("error setting lexical handler properties", e);
-            }
-        }
-        return output;
-    }
-
-    /**
-     * Creates a text based XMLOutput which converts all XML events into
-     * text and writes to the underlying Writer.
-     */
-    public static XMLOutput createXMLOutput(Writer writer) {
-        return createXMLOutput(writer, DEFAULT_ESCAPE_TEXT);
-    }
-
-    /**
-     * Creates a text based XMLOutput which converts all XML events into
-     * text and writes to the underlying Writer.
-     *
-     * @param writer is the writer to output to
-     * @param escapeText is whether or not text output will be escaped. This must be true
-     * if the underlying output is XML or could be false if the underlying output is textual.
-     */
-    public static XMLOutput createXMLOutput(Writer writer, boolean escapeText)
-    {
-        XMLWriter xmlWriter = new XMLWriter(writer);
-        xmlWriter.setEscapeText(escapeText);
-        return createXMLOutput(xmlWriter);
-    }
-
-    /**
-     * Creates a text based XMLOutput which converts all XML events into
-     * text and writes to the underlying OutputStream.
-     */
-    public static XMLOutput createXMLOutput(OutputStream out) throws UnsupportedEncodingException {
-        return createXMLOutput(out, DEFAULT_ESCAPE_TEXT);
-    }
-
-    /**
-     * Creates a text based XMLOutput which converts all XML events into
-     * text and writes to the underlying OutputStream.
-     *
-     * @param out is the output stream to write
-     * @param escapeText is whether or not text output will be escaped. This must be true
-     * if the underlying output is XML or could be false if the underlying output is textual.
-     */
-    public static XMLOutput createXMLOutput(OutputStream out, boolean escapeText) throws UnsupportedEncodingException {
-        XMLWriter xmlWriter = new XMLWriter(out);
-        xmlWriter.setEscapeText(escapeText);
-        return createXMLOutput(xmlWriter);
-    }
-
-    /**
-     * returns an XMLOutput object that will discard all
-     * tag-generated XML events.  Useful when tag output is not expected
-     * or not significant.
-     *
-     * @return a no-op XMLOutput
-     */
-    public static XMLOutput createDummyXMLOutput() {
-        return new XMLOutput(new DefaultHandler());
-    }
-
-    // Extra helper methods provided for tag authors
-    //-------------------------------------------------------------------------
-
-    /**
-     * Outputs the given String as a piece of valid text in the
-     * XML event stream.
-     * Any special XML characters should be properly escaped.
-     */
-    public void write(String text) throws SAXException {
-        char[] ch = text.toCharArray();
-        characters(ch, 0, ch.length);
-    }
-
-    /**
-     * Outputs the given String as a piece of CDATA in the
-     * XML event stream.
-     */
-    public void writeCDATA(String text) throws SAXException {
-        startCDATA();
-        char[] ch = text.toCharArray();
-        characters(ch, 0, ch.length);
-        endCDATA();
-    }
-
-    /**
-     * Outputs a comment to the XML stream
-     */
-    public void writeComment(String text) throws SAXException {
-        char[] ch = text.toCharArray();
-        comment(ch, 0, ch.length);
-    }
-
-    /**
-     * Helper method for outputting a start element event for an element in no namespace
-     */
-    public void startElement(String localName) throws SAXException {
-        startElement("", localName, localName, EMPTY_ATTRIBUTES);
-    }
-
-    /**
-     * Helper method for outputting a start element event for an element in no namespace
-     */
-    public void startElement(String localName, Attributes attributes) throws SAXException {
-        startElement("", localName, localName, attributes);
-    }
-
-    /**
-     * Helper method for outputting an end element event for an element in no namespace
-     */
-    public void endElement(String localName) throws SAXException {
-        endElement("", localName, localName);
-    }
-
-
-    // ContentHandler interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Receive an object for locating the origin of SAX document events.
-     *
-     * <p>SAX parsers are strongly encouraged (though not absolutely
-     * required) to supply a locator: if it does so, it must supply
-     * the locator to the application by invoking this method before
-     * invoking any of the other methods in the ContentHandler
-     * interface.</p>
-     *
-     * <p>The locator allows the application to determine the end
-     * position of any document-related event, even if the parser is
-     * not reporting an error.  Typically, the application will
-     * use this information for reporting its own errors (such as
-     * character content that does not match an application's
-     * business rules).  The information returned by the locator
-     * is probably not sufficient for use with a search engine.</p>
-     *
-     * <p>Note that the locator will return correct information only
-     * during the invocation of the events in this interface.  The
-     * application should not attempt to use it at any other time.</p>
-     *
-     * @param locator An object that can return the location of
-     *                any SAX document event.
-     * @see org.xml.sax.Locator
-     */
-    public void setDocumentLocator(Locator locator) {
-        contentHandler.setDocumentLocator(locator);
-    }
-
-    /**
-     * Receive notification of the beginning of a document.
-     *
-     * <p>The SAX parser will invoke this method only once, before any
-     * other event callbacks (except for {@link #setDocumentLocator
-     * setDocumentLocator}).</p>
-     *
-     * @exception org.xml.sax.SAXException Any SAX exception, possibly
-     *            wrapping another exception.
-     * @see #endDocument
-     */
-    public void startDocument() throws SAXException {
-        contentHandler.startDocument();
-    }
-
-    /**
-     * Receive notification of the end of a document.
-     *
-     * <p>The SAX parser will invoke this method only once, and it will
-     * be the last method invoked during the parse.  The parser shall
-     * not invoke this method until it has either abandoned parsing
-     * (because of an unrecoverable error) or reached the end of
-     * input.</p>
-     *
-     * @exception org.xml.sax.SAXException Any SAX exception, possibly
-     *            wrapping another exception.
-     * @see #startDocument
-     */
-    public void endDocument() throws SAXException {
-        contentHandler.endDocument();
-    }
-
-    /**
-     * Begin the scope of a prefix-URI Namespace mapping.
-     *
-     * <p>The information from this event is not necessary for
-     * normal Namespace processing: the SAX XML reader will
-     * automatically replace prefixes for element and attribute
-     * names when the <code>http://xml.org/sax/features/namespaces</code>
-     * feature is <var>true</var> (the default).</p>
-     *
-     * <p>There are cases, however, when applications need to
-     * use prefixes in character data or in attribute values,
-     * where they cannot safely be expanded automatically; the
-     * start/endPrefixMapping event supplies the information
-     * to the application to expand prefixes in those contexts
-     * itself, if necessary.</p>
-     *
-     * <p>Note that start/endPrefixMapping events are not
-     * guaranteed to be properly nested relative to each other:
-     * all startPrefixMapping events will occur immediately before the
-     * corresponding {@link #startElement startElement} event,
-     * and all {@link #endPrefixMapping endPrefixMapping}
-     * events will occur immediately after the corresponding
-     * {@link #endElement endElement} event,
-     * but their order is not otherwise
-     * guaranteed.</p>
-     *
-     * <p>There should never be start/endPrefixMapping events for the
-     * "xml" prefix, since it is predeclared and immutable.</p>
-     *
-     * @param prefix The Namespace prefix being declared.
-     *  An empty string is used for the default element namespace,
-     *  which has no prefix.
-     * @param uri The Namespace URI the prefix is mapped to.
-     * @exception org.xml.sax.SAXException The client may throw
-     *            an exception during processing.
-     * @see #endPrefixMapping
-     * @see #startElement
-     */
-    public void startPrefixMapping(String prefix, String uri) throws SAXException {
-        contentHandler.startPrefixMapping(prefix, uri);
-    }
-
-    /**
-     * End the scope of a prefix-URI mapping.
-     *
-     * <p>See {@link #startPrefixMapping startPrefixMapping} for
-     * details.  These events will always occur immediately after the
-     * corresponding {@link #endElement endElement} event, but the order of
-     * {@link #endPrefixMapping endPrefixMapping} events is not otherwise
-     * guaranteed.</p>
-     *
-     * @param prefix The prefix that was being mapped.
-     *  This is the empty string when a default mapping scope ends.
-     * @exception org.xml.sax.SAXException The client may throw
-     *            an exception during processing.
-     * @see #startPrefixMapping
-     * @see #endElement
-     */
-    public void endPrefixMapping(String prefix) throws SAXException {
-        contentHandler.endPrefixMapping(prefix);
-    }
-
-    /**
-     * Receive notification of the beginning of an element.
-     *
-     * <p>The Parser will invoke this method at the beginning of every
-     * element in the XML document; there will be a corresponding
-     * {@link #endElement endElement} event for every startElement event
-     * (even when the element is empty). All of the element's content will be
-     * reported, in order, before the corresponding endElement
-     * event.</p>
-     *
-     * <p>This event allows up to three name components for each
-     * element:</p>
-     *
-     * <ol>
-     * <li>the Namespace URI;</li>
-     * <li>the local name; and</li>
-     * <li>the qualified (prefixed) name.</li>
-     * </ol>
-     *
-     * <p>Any or all of these may be provided, depending on the
-     * values of the <var>http://xml.org/sax/features/namespaces</var>
-     * and the <var>http://xml.org/sax/features/namespace-prefixes</var>
-     * properties:</p>
-     *
-     * <ul>
-     * <li>the Namespace URI and local name are required when
-     * the namespaces property is <var>true</var> (the default), and are
-     * optional when the namespaces property is <var>false</var> (if one is
-     * specified, both must be);</li>
-     * <li>the qualified name is required when the namespace-prefixes property
-     * is <var>true</var>, and is optional when the namespace-prefixes property
-     * is <var>false</var> (the default).</li>
-     * </ul>
-     *
-     * <p>Note that the attribute list provided will contain only
-     * attributes with explicit values (specified or defaulted):
-     * #IMPLIED attributes will be omitted.  The attribute list
-     * will contain attributes used for Namespace declarations
-     * (xmlns* attributes) only if the
-     * <code>http://xml.org/sax/features/namespace-prefixes</code>
-     * property is true (it is false by default, and support for a
-     * true value is optional).</p>
-     *
-     * <p>Like {@link #characters characters()}, attribute values may have
-     * characters that need more than one <code>char</code> value.  </p>
-     *
-     * @param uri The Namespace URI, or the empty string if the
-     *        element has no Namespace URI or if Namespace
-     *        processing is not being performed.
-     * @param localName The local name (without prefix), or the
-     *        empty string if Namespace processing is not being
-     *        performed.
-     * @param qName The qualified name (with prefix), or the
-     *        empty string if qualified names are not available.
-     * @param atts The attributes attached to the element.  If
-     *        there are no attributes, it shall be an empty
-     *        Attributes object.
-     * @exception org.xml.sax.SAXException Any SAX exception, possibly
-     *            wrapping another exception.
-     * @see #endElement
-     * @see org.xml.sax.Attributes
-     */
-    public void startElement(
-        String uri,
-        String localName,
-        String qName,
-        Attributes atts)
-        throws SAXException {
-        contentHandler.startElement(uri, localName, qName, atts);
-    }
-
-    /**
-     * Receive notification of the end of an element.
-     *
-     * <p>The SAX parser will invoke this method at the end of every
-     * element in the XML document; there will be a corresponding
-     * {@link #startElement startElement} event for every endElement
-     * event (even when the element is empty).</p>
-     *
-     * <p>For information on the names, see startElement.</p>
-     *
-     * @param uri The Namespace URI, or the empty string if the
-     *        element has no Namespace URI or if Namespace
-     *        processing is not being performed.
-     * @param localName The local name (without prefix), or the
-     *        empty string if Namespace processing is not being
-     *        performed.
-     * @param qName The qualified XML 1.0 name (with prefix), or the
-     *        empty string if qualified names are not available.
-     * @exception org.xml.sax.SAXException Any SAX exception, possibly
-     *            wrapping another exception.
-     */
-    public void endElement(String uri, String localName, String qName)
-        throws SAXException {
-        contentHandler.endElement(uri, localName, qName);
-    }
-
-    /**
-     * Receive notification of character data.
-     *
-     * <p>The Parser will call this method to report each chunk of
-     * character data.  SAX parsers may return all contiguous character
-     * data in a single chunk, or they may split it into several
-     * chunks; however, all of the characters in any single event
-     * must come from the same external entity so that the Locator
-     * provides useful information.</p>
-     *
-     * <p>The application must not attempt to read from the array
-     * outside of the specified range.</p>
-     *
-     * <p>Individual characters may consist of more than one Java
-     * <code>char</code> value.  There are two important cases where this
-     * happens, because characters can't be represented in just sixteen bits.
-     * In one case, characters are represented in a <em>Surrogate Pair</em>,
-     * using two special Unicode values. Such characters are in the so-called
-     * "Astral Planes", with a code point above U+FFFF.  A second case involves
-     * composite characters, such as a base character combining with one or
-     * more accent characters. </p>
-     *
-     * <p> Your code should not assume that algorithms using
-     * <code>char</code>-at-a-time idioms will be working in character
-     * units; in some cases they will split characters.  This is relevant
-     * wherever XML permits arbitrary characters, such as attribute values,
-     * processing instruction data, and comments as well as in data reported
-     * from this method.  It's also generally relevant whenever Java code
-     * manipulates internationalized text; the issue isn't unique to XML.</p>
-     *
-     * <p>Note that some parsers will report whitespace in element
-     * content using the {@link #ignorableWhitespace ignorableWhitespace}
-     * method rather than this one (validating parsers <em>must</em>
-     * do so).</p>
-     *
-     * @param ch The characters from the XML document.
-     * @param start The start position in the array.
-     * @param length The number of characters to read from the array.
-     * @exception org.xml.sax.SAXException Any SAX exception, possibly
-     *            wrapping another exception.
-     * @see #ignorableWhitespace
-     * @see org.xml.sax.Locator
-     */
-    public void characters(char ch[], int start, int length) throws SAXException {
-        contentHandler.characters(ch, start, length);
-    }
-
-    /**
-     * Receive notification of ignorable whitespace in element content.
-     *
-     * <p>Validating Parsers must use this method to report each chunk
-     * of whitespace in element content (see the W3C XML 1.0 recommendation,
-     * section 2.10): non-validating parsers may also use this method
-     * if they are capable of parsing and using content models.</p>
-     *
-     * <p>SAX parsers may return all contiguous whitespace in a single
-     * chunk, or they may split it into several chunks; however, all of
-     * the characters in any single event must come from the same
-     * external entity, so that the Locator provides useful
-     * information.</p>
-     *
-     * <p>The application must not attempt to read from the array
-     * outside of the specified range.</p>
-     *
-     * @param ch The characters from the XML document.
-     * @param start The start position in the array.
-     * @param length The number of characters to read from the array.
-     * @exception org.xml.sax.SAXException Any SAX exception, possibly
-     *            wrapping another exception.
-     * @see #characters
-     */
-    public void ignorableWhitespace(char ch[], int start, int length)
-        throws SAXException {
-        contentHandler.ignorableWhitespace(ch, start, length);
-    }
-
-    /**
-     * Receive notification of a processing instruction.
-     *
-     * <p>The Parser will invoke this method once for each processing
-     * instruction found: note that processing instructions may occur
-     * before or after the main document element.</p>
-     *
-     * <p>A SAX parser must never report an XML declaration (XML 1.0,
-     * section 2.8) or a text declaration (XML 1.0, section 4.3.1)
-     * using this method.</p>
-     *
-     * <p>Like {@link #characters characters()}, processing instruction
-     * data may have characters that need more than one <code>char</code>
-     * value. </p>
-     *
-     * @param target The processing instruction target.
-     * @param data The processing instruction data, or null if
-     *        none was supplied.  The data does not include any
-     *        whitespace separating it from the target.
-     * @exception org.xml.sax.SAXException Any SAX exception, possibly
-     *            wrapping another exception.
-     */
-    public void processingInstruction(String target, String data)
-        throws SAXException {
-        contentHandler.processingInstruction(target, data);
-    }
-
-    /**
-     * Receive notification of a skipped entity.
-     * This is not called for entity references within markup constructs
-     * such as element start tags or markup declarations.  (The XML
-     * recommendation requires reporting skipped external entities.
-     * SAX also reports internal entity expansion/non-expansion, except
-     * within markup constructs.)
-     *
-     * <p>The Parser will invoke this method each time the entity is
-     * skipped.  Non-validating processors may skip entities if they
-     * have not seen the declarations (because, for example, the
-     * entity was declared in an external DTD subset).  All processors
-     * may skip external entities, depending on the values of the
-     * <code>http://xml.org/sax/features/external-general-entities</code>
-     * and the
-     * <code>http://xml.org/sax/features/external-parameter-entities</code>
-     * properties.</p>
-     *
-     * @param name The name of the skipped entity.  If it is a
-     *        parameter entity, the name will begin with '%', and if
-     *        it is the external DTD subset, it will be the string
-     *        "[dtd]".
-     * @exception org.xml.sax.SAXException Any SAX exception, possibly
-     *            wrapping another exception.
-     */
-    public void skippedEntity(String name) throws SAXException {
-        contentHandler.skippedEntity(name);
-    }
-
-
-    // Lexical Handler interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Report the start of DTD declarations, if any.
-     *
-     * <p>This method is intended to report the beginning of the
-     * DOCTYPE declaration; if the document has no DOCTYPE declaration,
-     * this method will not be invoked.</p>
-     *
-     * <p>All declarations reported through
-     * {@link org.xml.sax.DTDHandler DTDHandler} or
-     * {@link org.xml.sax.ext.DeclHandler DeclHandler} events must appear
-     * between the startDTD and {@link #endDTD endDTD} events.
-     * Declarations are assumed to belong to the internal DTD subset
-     * unless they appear between {@link #startEntity startEntity}
-     * and {@link #endEntity endEntity} events.  Comments and
-     * processing instructions from the DTD should also be reported
-     * between the startDTD and endDTD events, in their original
-     * order of (logical) occurrence; they are not required to
-     * appear in their correct locations relative to DTDHandler
-     * or DeclHandler events, however.</p>
-     *
-     * <p>Note that the start/endDTD events will appear within
-     * the start/endDocument events from ContentHandler and
-     * before the first
-     * {@link org.xml.sax.ContentHandler#startElement startElement}
-     * event.</p>
-     *
-     * @param name The document type name.
-     * @param publicId The declared public identifier for the
-     *        external DTD subset, or null if none was declared.
-     * @param systemId The declared system identifier for the
-     *        external DTD subset, or null if none was declared.
-     *        (Note that this is not resolved against the document
-     *        base URI.)
-     * @exception SAXException The application may raise an
-     *            exception.
-     * @see #endDTD
-     * @see #startEntity
-     */
-    public void startDTD(String name, String publicId, String systemId)
-        throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.startDTD(name, publicId, systemId);
-        }
-    }
-
-    /**
-     * Report the end of DTD declarations.
-     *
-     * <p>This method is intended to report the end of the
-     * DOCTYPE declaration; if the document has no DOCTYPE declaration,
-     * this method will not be invoked.</p>
-     *
-     * @exception SAXException The application may raise an exception.
-     * @see #startDTD
-     */
-    public void endDTD() throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.endDTD();
-        }
-    }
-
-    /**
-     * Report the beginning of some internal and external XML entities.
-     *
-     * <p>The reporting of parameter entities (including
-     * the external DTD subset) is optional, and SAX2 drivers that
-     * report LexicalHandler events may not implement it; you can use the
-     * <code
-     * >http://xml.org/sax/features/lexical-handler/parameter-entities</code>
-     * feature to query or control the reporting of parameter entities.</p>
-     *
-     * <p>General entities are reported with their regular names,
-     * parameter entities have '%' prepended to their names, and
-     * the external DTD subset has the pseudo-entity name "[dtd]".</p>
-     *
-     * <p>When a SAX2 driver is providing these events, all other
-     * events must be properly nested within start/end entity
-     * events.  There is no additional requirement that events from
-     * {@link org.xml.sax.ext.DeclHandler DeclHandler} or
-     * {@link org.xml.sax.DTDHandler DTDHandler} be properly ordered.</p>
-     *
-     * <p>Note that skipped entities will be reported through the
-     * {@link org.xml.sax.ContentHandler#skippedEntity skippedEntity}
-     * event, which is part of the ContentHandler interface.</p>
-     *
-     * <p>Because of the streaming event model that SAX uses, some
-     * entity boundaries cannot be reported under any
-     * circumstances:</p>
-     *
-     * <ul>
-     * <li>general entities within attribute values</li>
-     * <li>parameter entities within declarations</li>
-     * </ul>
-     *
-     * <p>These will be silently expanded, with no indication of where
-     * the original entity boundaries were.</p>
-     *
-     * <p>Note also that the boundaries of character references (which
-     * are not really entities anyway) are not reported.</p>
-     *
-     * <p>All start/endEntity events must be properly nested.
-     *
-     * @param name The name of the entity.  If it is a parameter
-     *        entity, the name will begin with '%', and if it is the
-     *        external DTD subset, it will be "[dtd]".
-     * @exception SAXException The application may raise an exception.
-     * @see #endEntity
-     * @see org.xml.sax.ext.DeclHandler#internalEntityDecl
-     * @see org.xml.sax.ext.DeclHandler#externalEntityDecl
-     */
-    public void startEntity(String name) throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.startEntity(name);
-        }
-    }
-
-    /**
-     * Report the end of an entity.
-     *
-     * @param name The name of the entity that is ending.
-     * @exception SAXException The application may raise an exception.
-     * @see #startEntity
-     */
-    public void endEntity(String name) throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.endEntity(name);
-        }
-    }
-
-    /**
-     * Report the start of a CDATA section.
-     *
-     * <p>The contents of the CDATA section will be reported through
-     * the regular {@link org.xml.sax.ContentHandler#characters
-     * characters} event; this event is intended only to report
-     * the boundary.</p>
-     *
-     * @exception SAXException The application may raise an exception.
-     * @see #endCDATA
-     */
-    public void startCDATA() throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.startCDATA();
-        }
-    }
-
-    /**
-     * Report the end of a CDATA section.
-     *
-     * @exception SAXException The application may raise an exception.
-     * @see #startCDATA
-     */
-    public void endCDATA() throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.endCDATA();
-        }
-    }
-
-    /**
-     * Report an XML comment anywhere in the document.
-     *
-     * <p>This callback will be used for comments inside or outside the
-     * document element, including comments in the external DTD
-     * subset (if read).  Comments in the DTD must be properly
-     * nested inside start/endDTD and start/endEntity events (if
-     * used).</p>
-     *
-     * @param ch An array holding the characters in the comment.
-     * @param start The starting position in the array.
-     * @param length The number of characters to use from the array.
-     * @exception SAXException The application may raise an exception.
-     */
-    public void comment(char ch[], int start, int length) throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.comment(ch, start, length);
-        }
-    }
-    
-    /** Pass data through the pipline.
-      * By default, this call is ignored.
-      * Subclasses are invited to use this as a way for children tags to
-      * pass data to their parent.
-      * 
-      * @param object the data to pass
-      * @exception SAXException The application may raise an exception.
-      */
-    public void objectData(Object object) throws SAXException {
-        if(contentHandler instanceof XMLOutput)
-            ((XMLOutput) contentHandler).objectData(object);
-        else {
-            if(object!=null) {
-                String output=object.toString();
-                write(output);
-            } else {
-                // we could have a "configurable null-toString"...
-                write("null");
-            }
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * @return the SAX ContentHandler to use to pipe SAX events into
-     */
-    public ContentHandler getContentHandler() {
-        return contentHandler;
-    }
-
-    /**
-     * Sets the SAX ContentHandler to pipe SAX events into
-     *
-     * @param contentHandler is the new ContentHandler to use.
-     *      This value cannot be null.
-     */
-    public void setContentHandler(ContentHandler contentHandler) {
-        if (contentHandler == null) {
-            throw new NullPointerException("ContentHandler cannot be null!");
-        }
-        this.contentHandler = contentHandler;
-    }
-
-    /**
-     * @return the SAX LexicalHandler to use to pipe SAX events into
-     */
-    public LexicalHandler getLexicalHandler() {
-        return lexicalHandler;
-    }
-
-    /**
-     * Sets the SAX LexicalHandler to pipe SAX events into
-     *
-     * @param lexicalHandler is the new LexicalHandler to use.
-     *      This value can be null.
-     */
-    public void setLexicalHandler(LexicalHandler lexicalHandler) {
-        this.lexicalHandler = lexicalHandler;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    /**
-     * Factory method to create a new XMLOutput from an XMLWriter
-     */
-    protected static XMLOutput createXMLOutput(final XMLWriter xmlWriter) {
-        XMLOutput answer = new XMLOutput() {
-            public void close() throws IOException {
-                xmlWriter.close();
-            }
-        };
-        answer.setContentHandler(xmlWriter);
-        answer.setLexicalHandler(xmlWriter);
-        return answer;
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/expression/CompositeExpression.java b/src/java/org/apache/commons/jelly/expression/CompositeExpression.java
deleted file mode 100644
index f86a890..0000000
--- a/src/java/org/apache/commons/jelly/expression/CompositeExpression.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.expression;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.collections.iterators.SingletonIterator;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-
-/**
- * <p><code>CompositeExpression</code> is a Composite expression made up of several
- * Expression objects which are concatenated into a single String.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public class CompositeExpression extends ExpressionSupport {
-
-    /** The expressions */
-    private List expressions;
-
-    public CompositeExpression() {
-        this.expressions = new ArrayList();
-    }
-
-    public CompositeExpression(List expressions) {
-        this.expressions = expressions;
-    }
-
-    public String toString() {
-        return super.toString() + "[expressions=" + expressions +"]";
-    }
-
-    /**
-     * Parses the given String to be either a ConstantExpresssion, an Expression denoted as
-     * "${foo}" or some String with embedded expresssions such as "abc${something}def${else}xyz"
-     * which results in a CompositeExpression being returned.
-     *
-     * @param text is the String to parse into expressions
-     * @param factory is the Factory of Expression objects used to create expresssions for the contents
-     *  of the String "foo" inside expressions such as "${foo}"
-     *
-     * @return the Expresssion for the given String.
-     * @throws JellyException if the text is invalid (such as missing '}' character).
-     * @throws JellyException if there was some problem creating the underlying Expression object
-     *  from the ExpressionFactory
-     */
-    public static Expression parse(String text, ExpressionFactory factory) throws JellyException {
-
-        int len = text.length();
-
-        int startIndex = text.indexOf( "${" );
-
-        if ( startIndex < 0) {
-            return new ConstantExpression(text);
-        }
-
-        int endIndex = text.indexOf( "}", startIndex+2 );
-
-        if ( endIndex < 0 ) {
-            throw new JellyException( "Missing '}' character at the end of expression: " + text );
-        }
-        if ( startIndex == 0 && endIndex == len - 1 ) {
-            return factory.createExpression(text.substring(2, endIndex));
-        }
-
-        CompositeExpression answer = new CompositeExpression();
-
-        int cur = 0;
-        char c = 0;
-
-        StringBuffer chars = new StringBuffer();
-        StringBuffer expr  = new StringBuffer();
-
-      MAIN:
-        while ( cur < len ) {
-            c = text.charAt( cur );
-
-            switch ( c ) {
-                case('$'):
-                    if ( cur+1<len ) {
-                        ++cur;
-                        c = text.charAt( cur );
-
-                        switch ( c ) {
-                            case('$'):
-                                chars.append( c );
-                                break;
-                            case('{'):
-                                if ( chars.length() > 0 ) {
-                                    answer.addTextExpression( chars.toString() );
-                                    chars.delete(0, chars.length() );
-                                }
-
-                                if (cur+1<len) {
-                                    ++cur;
-
-                                    while (cur<len) {
-                                        c = text.charAt(cur);
-                                        switch ( c ) {
-                                            case('"'):
-                                              expr.append( c );
-                                              ++cur;
-
-                                              DOUBLE_QUOTE:
-                                                while(cur<len) {
-                                                    c = text.charAt(cur);
-
-                                                    switch ( c ) {
-                                                        case('\\'):
-                                                            ++cur;
-                                                            expr.append(c);
-                                                            break;
-                                                        case('"'):
-                                                            ++cur;
-                                                            expr.append(c);
-                                                            break DOUBLE_QUOTE;
-                                                        default:
-                                                            ++cur;
-                                                            expr.append(c);
-                                                    } // switch
-                                                } // while
-                                                break;
-                                            case('\''):
-                                                expr.append( c );
-                                                ++cur;
-
-                                              SINGLE_QUOTE:
-                                                while(cur<len) {
-                                                    c = text.charAt(cur);
-
-                                                    switch ( c ) {
-                                                        case('\\'):
-                                                            ++cur;
-                                                            expr.append(c);
-                                                            break;
-                                                        case('\''):
-                                                            ++cur;
-                                                            expr.append(c);
-                                                            break SINGLE_QUOTE;
-                                                        default:
-                                                            ++cur;
-                                                            expr.append(c);
-                                                    } // switch
-                                                } // while
-                                                break;
-                                            case('}'):
-                                                answer.addExpression(factory.createExpression(expr.toString()));
-                                                expr.delete(0, expr.length());
-                                                ++cur;
-                                                continue MAIN;
-                                            default:
-                                                expr.append( c );
-                                                ++cur;
-                                        }
-                                    }
-                                }
-                                break;
-                            default:
-                                chars.append(c);
-                        }
-                    }
-                    else
-                    {
-                        chars.append(c);
-                    }
-                    break;
-                default:
-                    chars.append( c );
-            }
-            ++cur;
-        }
-
-        if ( chars.length() > 0 )
-        {
-            answer.addTextExpression( chars.toString() );
-        }
-
-        return answer;
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the Expression objects that make up this
-     * composite expression
-     */
-    public List getExpressions() {
-        return expressions;
-    }
-
-    /**
-     * Sets the Expression objects that make up this
-     * composite expression
-     */
-    public void setExpressions(List expressions) {
-        this.expressions = expressions;
-    }
-
-    /**
-     * Adds a new expression to the end of the expression list
-     */
-    public void addExpression(Expression expression) {
-        expressions.add(expression);
-    }
-
-    /**
-     * A helper method to add a new constant text expression
-     */
-    public void addTextExpression(String text) {
-        addExpression(new ConstantExpression(text));
-    }
-
-    // Expression interface
-    //-------------------------------------------------------------------------
-
-    public String getExpressionText() {
-        StringBuffer buffer = new StringBuffer();
-        for (Iterator iter = expressions.iterator(); iter.hasNext(); ) {
-            Expression expression = (Expression) iter.next();
-            buffer.append( expression.getExpressionText() );
-        }
-        return buffer.toString();
-    }
-
-
-    // inherit javadoc from interface
-    public Object evaluate(JellyContext context) {
-        return evaluateAsString(context);
-    }
-
-    // inherit javadoc from interface
-    public String evaluateAsString(JellyContext context) {
-        StringBuffer buffer = new StringBuffer();
-        for (Iterator iter = expressions.iterator(); iter.hasNext(); ) {
-            Expression expression = (Expression) iter.next();
-            String value = expression.evaluateAsString(context);
-            if ( value != null ) {
-                buffer.append( value );
-            }
-        }
-        return buffer.toString();
-
-    }
-
-    // inherit javadoc from interface
-    public Iterator evaluateAsIterator(JellyContext context) {
-        String value = evaluateAsString(context);
-        if ( value == null ) {
-            return Collections.EMPTY_LIST.iterator();
-        }
-        else {
-            return new SingletonIterator( value );
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/expression/ConstantExpression.java b/src/java/org/apache/commons/jelly/expression/ConstantExpression.java
deleted file mode 100644
index 8cc3db4..0000000
--- a/src/java/org/apache/commons/jelly/expression/ConstantExpression.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.expression;
-
-import org.apache.commons.jelly.JellyContext;
-
-/** <p><code>ConstantExpression</code> represents a constant expression.</p>
-  *
-  * <p> In other words, {@link #evaluate} returns a value independent of the context. </p>
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.9 $
-  */
-public class ConstantExpression extends ExpressionSupport {
-
-    /** The value of this expression */
-    private Object value;
-
-    /** Base constructor
-     */
-    public ConstantExpression() {
-    }
-
-    /** Convenience constructor sets <code>value</code> property.
-     */
-    public ConstantExpression(Object value) {
-        this.value = value;
-    }
-
-    public String toString() {
-        return super.toString() + "[value=" + value +"]";
-    }
-
-    public String getExpressionText() {
-        return value == null ? "null" : value.toString();
-    }
-
-    /**
-      * Evaluate expression against given context.
-      *
-      * @param context evaluate expression against this context
-      * @return current value of <code>value</code> property
-      */
-    public Object evaluate(JellyContext context) {
-        return value;
-    }
-
-    /** Gets the constant value of this expression */
-    public Object getValue() {
-        return value;
-    }
-
-    /** Sets the constant value of this expression */
-    public void setValue(Object value) {
-        this.value = value;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/expression/Expression.java b/src/java/org/apache/commons/jelly/expression/Expression.java
deleted file mode 100644
index bc0992c..0000000
--- a/src/java/org/apache/commons/jelly/expression/Expression.java
+++ /dev/null
Binary files differ
diff --git a/src/java/org/apache/commons/jelly/expression/ExpressionFactory.java b/src/java/org/apache/commons/jelly/expression/ExpressionFactory.java
deleted file mode 100644
index c65db06..0000000
--- a/src/java/org/apache/commons/jelly/expression/ExpressionFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.expression;
-
-import org.apache.commons.jelly.JellyException;
-
-/** <p><code>ExpressionFactory</code> is a factory of Expression objects.</p>
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.9 $
-  */
-public interface ExpressionFactory {
-
-    /**
-     * Creates a new expression for the given text
-     */
-
-    public Expression createExpression(String text) throws JellyException;
-
-}
diff --git a/src/java/org/apache/commons/jelly/expression/ExpressionSupport.java b/src/java/org/apache/commons/jelly/expression/ExpressionSupport.java
deleted file mode 100644
index fdb812e..0000000
--- a/src/java/org/apache/commons/jelly/expression/ExpressionSupport.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.expression;
-
-import java.util.Collections;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.collections.iterators.ArrayIterator;
-import org.apache.commons.collections.iterators.EnumerationIterator;
-import org.apache.commons.collections.iterators.SingletonIterator;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.lang.StringUtils;
-
-/** <p><code>ExpressionSupport</code>
-  * an abstract base class for Expression implementations
-  * which provides default implementations of some of the
-  * typesafe evaluation methods.</p>
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.15 $
-  */
-public abstract class ExpressionSupport implements Expression {
-
-    protected static final Iterator EMPTY_ITERATOR = Collections.EMPTY_LIST.iterator();
-
-    // inherit javadoc from interface
-    public String evaluateAsString(JellyContext context) {
-        Object value = evaluateRecurse(context);
-        // sometimes when Jelly is used inside Maven the value
-        // of an expression can actually be an expression.
-        // e.g. ${foo.bar} can lookup "foo.bar" in a Maven context
-        // which could actually be an expression
-
-        if ( value != null ) {
-            return value.toString();
-        }
-        return null;
-    }
-
-
-    // inherit javadoc from interface
-    public Object evaluateRecurse(JellyContext context) {
-        Object value = evaluate(context);
-        if (value instanceof Expression) {
-            Expression expression = (Expression) value;
-            return expression.evaluateRecurse(context);
-        }
-        return value;
-    }
-
-    // inherit javadoc from interface
-    public boolean evaluateAsBoolean(JellyContext context) {
-        Object value = evaluateRecurse(context);
-        if ( value instanceof Boolean ) {
-            Boolean b = (Boolean) value;
-            return b.booleanValue();
-        }
-        else if ( value instanceof String ) {
-            // return Boolean.getBoolean( (String) value );
-            String str = (String) value;
-
-            return ( str.equalsIgnoreCase( "on" )
-                 ||
-                 str.equalsIgnoreCase( "yes" )
-                 ||
-                 str.equals( "1" )
-                 ||
-                 str.equalsIgnoreCase( "true" ) );
-
-        }
-        return false;
-    }
-
-    // inherit javadoc from interface
-    public Iterator evaluateAsIterator(JellyContext context) {
-        Object value = evaluateRecurse(context);
-        if ( value == null ) {
-            return EMPTY_ITERATOR;
-        } else if ( value instanceof Iterator ) {
-            return (Iterator) value;
-        } else if ( value instanceof List ) {
-            List list = (List) value;
-            return list.iterator();
-        } else if ( value instanceof Map ) {
-            Map map = (Map) value;
-            return map.entrySet().iterator();
-        } else if ( value.getClass().isArray() ) {
-            return new ArrayIterator( value );
-        } else if ( value instanceof Enumeration ) {
-            return new EnumerationIterator((Enumeration ) value);
-        } else if ( value instanceof Collection ) {
-          Collection collection = (Collection) value;
-          return collection.iterator();
-        } else if ( value instanceof String ) {
-           String[] array = StringUtils.split((String) value, "," );
-           array = StringUtils.stripAll( array );
-           return new ArrayIterator( array );
-        } else {
-            // XXX: should we return single iterator?
-            return new SingletonIterator( value );
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/expression/jexl/JexlExpression.java b/src/java/org/apache/commons/jelly/expression/jexl/JexlExpression.java
deleted file mode 100644
index be4651b..0000000
--- a/src/java/org/apache/commons/jelly/expression/jexl/JexlExpression.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.expression.jexl;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.Collection;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.expression.ExpressionSupport;
-
-import org.apache.commons.jexl.Expression;
-import org.apache.commons.jexl.JexlContext;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Represents a <a href="http://jakarta.apache.org/commons/jexl.html">Jexl</a>
- * expression which fully supports the Expression Language in JSTL and JSP
- * along with some extra features like object method invocation.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.18 $
- */
-
-public class JexlExpression extends ExpressionSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(JexlExpression.class);
-
-    /** The Jexl expression object */
-    private Expression expression;
-
-    public JexlExpression(Expression expression) {
-        this.expression = expression;
-    }
-
-    public String toString() {
-        return super.toString() + "[" + expression.getExpression() + "]";
-    }
-
-    // Expression interface
-    //-------------------------------------------------------------------------
-    public String getExpressionText() {
-        return "${" + expression.getExpression() + "}";
-    }
-
-    public Object evaluate(JellyContext context) {
-        try {
-            JexlContext jexlContext = new JellyJexlContext( context );
-            if (log.isDebugEnabled()) {
-                log.debug("Evaluating EL: " + expression.getExpression());
-            }
-            Object value = expression.evaluate(jexlContext);
-
-            if (log.isDebugEnabled()) {
-                log.debug("value of expression: " + value);
-            }
-
-            return value;
-        }
-        catch (Exception e) {
-            log.warn("Caught exception evaluating: " + expression + ". Reason: " + e, e);
-            return null;
-        }
-    }
-}
-
-class JellyJexlContext implements JexlContext {
-
-    private Map vars;
-
-    JellyJexlContext(JellyContext context) {
-        this.vars = new JellyMap( context );
-    }
-
-    public void setVars(Map vars) {
-        this.vars.clear();
-        this.vars.putAll( vars );
-    }
-
-    public Map getVars() {
-        return this.vars;
-    }
-}
-
-
-class JellyMap implements Map {
-
-    private JellyContext context;
-
-    JellyMap(JellyContext context) {
-        this.context = context;
-    }
-
-    public Object get(Object key) {
-        return context.getVariable( (String) key );
-    }
-
-    public void clear() {
-        // not implemented
-    }
-
-    public boolean containsKey(Object key) {
-        return ( get( key ) != null );
-    }
-
-    public boolean containsValue(Object value) {
-        return false;
-    }
-
-    public Set entrySet() {
-        return null;
-    }
-
-    public boolean isEmpty() {
-        return false;
-    }
-
-    public Set keySet() {
-        return null;
-    }
-
-    public Object put(Object key, Object value) {
-        return null;
-    }
-
-    public void putAll(Map t) {
-        // not implemented
-    }
-
-    public Object remove(Object key) {
-        return null;
-    }
-
-    public int size() {
-        return -1;
-    }
-
-    public Collection values() {
-        return null;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/expression/jexl/JexlExpressionFactory.java b/src/java/org/apache/commons/jelly/expression/jexl/JexlExpressionFactory.java
deleted file mode 100644
index 8a4f501..0000000
--- a/src/java/org/apache/commons/jelly/expression/jexl/JexlExpressionFactory.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.expression.jexl;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionSupport;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-
-//import org.apache.commons.jexl.resolver.FlatResolver;
-
-/**
- * Represents a factory of <a href="http://jakarta.apache.org/commons/jexl.html">Jexl</a>
- * expression which fully supports the Expression Language in JSTL and JSP.
- * In addition this ExpressionFactory can also support Ant style variable
- * names, where '.' is used inside variable names.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.19 $
- */
-
-public class JexlExpressionFactory implements ExpressionFactory {
-
-    /** whether we should allow Ant-style expresssions, using dots as part of variable name */
-    private boolean supportAntVariables = true;
-
-    // ExpressionFactory interface
-    //-------------------------------------------------------------------------
-    public Expression createExpression(String text) throws JellyException {
-/*
-
-        org.apache.commons.jexl.Expression expr =
-            org.apache.commons.jexl.ExpressionFactory.createExpression(text);
-
-        if ( isSupportAntVariables() ) {
-            expr.addPostResolver(new FlatResolver());
-        }
-
-        return new JexlExpression( expr );
-*/
-
-        Expression jexlExpression = null;
-        try {
-            // this method really does throw Exception
-            jexlExpression = new JexlExpression(
-            org.apache.commons.jexl.ExpressionFactory.createExpression(text)
-            );
-        } catch (Exception e) {
-            throw new JellyException("Unable to create expression: " + text, e);
-        }
-
-        if ( isSupportAntVariables() && isValidAntVariableName(text) ) {
-            return new ExpressionSupportLocal(jexlExpression,text);
-        }
-        return jexlExpression;
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return whether we should allow Ant-style expresssions, using dots as
-     * part of variable name
-     */
-    public boolean isSupportAntVariables() {
-        return supportAntVariables;
-    }
-
-    /**
-     * Sets whether we should allow Ant-style expresssions, using dots as
-     * part of variable name
-     */
-    public void setSupportAntVariables(boolean supportAntVariables) {
-        this.supportAntVariables = supportAntVariables;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return true if the given string is a valid Ant variable name,
-     * typically thats alphanumeric text with '.' etc.
-     */
-    protected boolean isValidAntVariableName(String text) {
-        char[] chars = text.toCharArray();
-        for (int i = 0, size = chars.length; i < size; i++ ) {
-            char ch = chars[i];
-            // could maybe be a bit more restrictive...
-            if ( Character.isWhitespace(ch) || ch == '[' || ch == ']' || ch == '(' || ch == ')') {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private class ExpressionSupportLocal extends ExpressionSupport {
-
-        protected Expression jexlExpression = null;
-        protected String text = null;
-
-        public ExpressionSupportLocal(Expression jexlExpression, String text) {
-            this.jexlExpression = jexlExpression;
-            this.text = text;
-        }
-
-        public Object evaluate(JellyContext context) {
-            Object answer = jexlExpression.evaluate(context);
-
-            if ( answer == null ) {
-                answer = context.getVariable(text);
-            }
-
-            return answer;
-        }
-
-        public String getExpressionText() {
-            return "${" + text + "}";
-        }
-
-        public String toString() {
-            return super.toString() + "[expression:" + text + "]";
-        }
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/expression/jexl/package.html b/src/java/org/apache/commons/jelly/expression/jexl/package.html
deleted file mode 100644
index c2d6df5..0000000
--- a/src/java/org/apache/commons/jelly/expression/jexl/package.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<html>
-<head>
-</head>
-<body>
-
-  <p>Expressions used to turn the tag attribute values into compiled
-  expression objects for languages such as Jexl, XPath, Velocity, beanshell, Rhino 
-  etc.
-  </p>
-
-</body>
-</html>
diff --git a/src/java/org/apache/commons/jelly/expression/package.html b/src/java/org/apache/commons/jelly/expression/package.html
deleted file mode 100644
index f25cd73..0000000
--- a/src/java/org/apache/commons/jelly/expression/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<html>
-<head>
-</head>
-<body>
-
-  <p>Implementations of the Expression classes using commons-jexl.
-  </p>
-
-</body>
-</html>
diff --git a/src/java/org/apache/commons/jelly/expression/xpath/XPathExpression.java b/src/java/org/apache/commons/jelly/expression/xpath/XPathExpression.java
deleted file mode 100644
index 162adbc..0000000
--- a/src/java/org/apache/commons/jelly/expression/xpath/XPathExpression.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.expression.xpath;
-
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionSupport;
-import org.apache.commons.jelly.impl.TagScript;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jaxen.SimpleNamespaceContext;
-import org.jaxen.VariableContext;
-import org.jaxen.XPath;
-import org.jaxen.JaxenException;
-import org.jaxen.dom4j.Dom4jXPath;
-
-/** An expression which returns an XPath object.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public class XPathExpression extends ExpressionSupport implements VariableContext {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(XPathExpression.class);
-
-    private String text;
-    private Expression xpathExpr;
-    private JellyContext context;
-    private Map uris;
-
-    public XPathExpression() {
-    }
-
-    public XPathExpression(String text,
-                           Expression xpathExpr,
-                           TagScript tagScript) {
-        this.text = text;
-        this.xpathExpr = xpathExpr;
-
-        Map namespaceContext = tagScript.getNamespaceContext();
-
-        this.uris = createUriMap(namespaceContext);
-    }
-
-    public String toString() {
-        return getExpressionText();
-    }
-
-    // Expression interface
-    //-------------------------------------------------------------------------
-    public String getExpressionText() {
-        return this.text;
-    }
-
-    public Object evaluate(JellyContext context) {
-        this.context = context;
-
-        try
-        {
-            XPath xpath = new Dom4jXPath( this.xpathExpr.evaluateAsString( context ) );
-
-            xpath.setVariableContext(this);
-
-            if (log.isDebugEnabled()) {
-                log.debug( "Setting the namespace context to be: " + uris );
-            }
-
-            xpath.setNamespaceContext( new SimpleNamespaceContext( this.uris ) );
-
-            return xpath;
-        }
-        catch (JaxenException e)
-        {
-            log.error( "Error constructing xpath",
-                       e );
-        }
-
-        return null;
-    }
-
-    // VariableContext interface
-    //-------------------------------------------------------------------------
-    public Object getVariableValue(
-        String namespaceURI,
-        String prefix,
-        String localName) {
-
-        Object value = context.getVariable(localName);
-
-        //log.debug( "Looking up XPath variable of name: " + localName + " value is: " + value );
-
-        return value;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a synchronized Map of non-null and non-blank
-     * namespace prefixes to namespace URIs
-     */
-    protected Map createUriMap(Map namespaceContext) {
-        // now lets clone the Map but ignoring default or null prefixes
-        Map uris = new Hashtable(namespaceContext.size());
-        for (Iterator iter = namespaceContext.entrySet().iterator(); iter.hasNext(); ) {
-            Map.Entry entry = (Map.Entry) iter.next();
-            String prefix = (String) entry.getKey();
-            if (prefix != null && prefix.length() != 0) {
-                uris.put(prefix, entry.getValue());
-            }
-        }
-        return uris;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/Attribute.java b/src/java/org/apache/commons/jelly/impl/Attribute.java
deleted file mode 100644
index 1caa874..0000000
--- a/src/java/org/apache/commons/jelly/impl/Attribute.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.jelly.expression.Expression;
-
-/**
- * Represents the attribute definition used by dynamic tags, such as whether the attribute is required
- * or any default values etc.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class Attribute {
-
-    /** the name of the attribute */
-    private String name;
-
-    /** the default value expression */
-    private Expression defaultValue;
-
-    /** whether this attribute is required */
-    private boolean required;
-
-    public Attribute() {
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns whether this attribute is required.
-     * @return boolean
-     */
-    public boolean isRequired() {
-        return required;
-    }
-
-    /**
-     * Sets whether this attribute is required.
-     * @param required is true if this attribute is a mandatory attribute
-     */
-    public void setRequired(boolean required) {
-        this.required = required;
-    }
-
-    /**
-     * Returns the name.
-     * @return String
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the name.
-     * @param name The name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Returns the defaultValue.
-     * @return Expression
-     */
-    public Expression getDefaultValue() {
-        return defaultValue;
-    }
-
-    /**
-     * Sets the defaultValue.
-     * @param defaultValue The defaultValue to set
-     */
-    public void setDefaultValue(Expression defaultValue) {
-        this.defaultValue = defaultValue;
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/impl/BeanSource.java b/src/java/org/apache/commons/jelly/impl/BeanSource.java
deleted file mode 100644
index 8b76c76..0000000
--- a/src/java/org/apache/commons/jelly/impl/BeanSource.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.jelly.JellyTagException;
-
-/**
- * A tag which is associated with a JavaBean, such as a {@link DynamicBeanTag}
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public interface BeanSource {
-
-    /**
-     * @return the bean to which this tag is associated
-     */
-    public Object getBean() throws JellyTagException;
-}
diff --git a/src/java/org/apache/commons/jelly/impl/BreakException.java b/src/java/org/apache/commons/jelly/impl/BreakException.java
deleted file mode 100644
index 8f45efc..0000000
--- a/src/java/org/apache/commons/jelly/impl/BreakException.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.jelly.JellyTagException;
-
-/**
- * <p><code>BreakException</code> is used to terminate loops such as
- * &lt;forEach&gt; and &lt;while&gt; tags.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.9 $
- */
-
-public class BreakException extends JellyTagException {
-
-    public BreakException() {
-        super("Break exception, terminating the parent loop");
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/CollectionTag.java b/src/java/org/apache/commons/jelly/impl/CollectionTag.java
deleted file mode 100644
index bf9768c..0000000
--- a/src/java/org/apache/commons/jelly/impl/CollectionTag.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.jelly.JellyTagException;
-
-/**
- * A tag which is capable of consuming objects, such as a &lt;useList&gt; tag
- * such that nested objects will be added to the parent tag.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public interface CollectionTag {
-
-    /**
-     * @return adds an item to the tags collection
-     */
-    public void addItem(Object value) throws JellyTagException;
-}
diff --git a/src/java/org/apache/commons/jelly/impl/CompositeTextScriptBlock.java b/src/java/org/apache/commons/jelly/impl/CompositeTextScriptBlock.java
deleted file mode 100644
index 5d9e7a8..0000000
--- a/src/java/org/apache/commons/jelly/impl/CompositeTextScriptBlock.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import java.util.List;
-
-import org.apache.commons.jelly.Script;
-
-
-/**
- * <p><code>CompositeTextScriptBlock</code> represents a text body of a
- * a tag which contains expressions, so that whitespace trimming
- * can be handled differently.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class CompositeTextScriptBlock extends ScriptBlock {
-
-    /**
-     * Create an instance.
-     */
-    public CompositeTextScriptBlock() {
-    }
-    
-    
-    /**
-     * Trim the body of the script.
-     * In this case, trim the whitespace from the start of the first element
-     * and from the end of the last element.
-     */
-    public void trimWhitespace() {
-        List list = getScriptList();
-        int size = list.size();
-        if ( size > 0 ) {
-            Script script = (Script) list.get(0);
-            if ( script instanceof TextScript ) {
-                TextScript textScript = (TextScript) script;
-                textScript.trimStartWhitespace();
-            }
-            if ( size > 1 ) {
-                script = (Script) list.get(size - 1);
-                if ( script instanceof TextScript ) {
-                    TextScript textScript = (TextScript) script;
-                    textScript.trimEndWhitespace();
-                }
-            }
-        }
-    }
-
-
-}
diff --git a/src/java/org/apache/commons/jelly/impl/DefaultTagFactory.java b/src/java/org/apache/commons/jelly/impl/DefaultTagFactory.java
deleted file mode 100644
index 16c9e85..0000000
--- a/src/java/org/apache/commons/jelly/impl/DefaultTagFactory.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Tag;
-
-import org.xml.sax.Attributes;
-
-/**
- * <p><code>DefaultTagFactory</code> a default implementation of TagFactory
- * which creates new instances of a given class.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.16 $
- */
-public class DefaultTagFactory implements TagFactory {
-
-    private Class tagClass;
-
-    public DefaultTagFactory() {
-    }
-
-    public DefaultTagFactory(Class tagClass) {
-        this.tagClass = tagClass;
-    }
-
-    // TagFactory interface
-    //-------------------------------------------------------------------------
-    public Tag createTag(String name, Attributes attributes) throws JellyException {
-        try {
-          return (Tag) tagClass.newInstance();
-        } catch (InstantiationException e) {
-            throw new JellyException(e.toString());
-        } catch (IllegalAccessException e) {
-            throw new JellyException(e.toString());
-        }
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the tagClass.
-     * @return Class
-     */
-    public Class getTagClass() {
-        return tagClass;
-    }
-
-    /**
-     * Sets the tagClass.
-     * @param tagClass The tagClass to set
-     */
-    public void setTagClass(Class tagClass) {
-        this.tagClass = tagClass;
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/impl/DefaultTagLibraryResolver.java b/src/java/org/apache/commons/jelly/impl/DefaultTagLibraryResolver.java
deleted file mode 100644
index 8412d6a..0000000
--- a/src/java/org/apache/commons/jelly/impl/DefaultTagLibraryResolver.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.discovery.ResourceClass;
-import org.apache.commons.discovery.ResourceClassIterator;
-import org.apache.commons.discovery.resource.ClassLoaders;
-import org.apache.commons.discovery.resource.classes.DiscoverClasses;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/**
- * <p><code>DefaultTagLibraryResolver</code> is a default implemenation
- * which attempts to interpret the URI as a String called 'jelly:className'
- * and class load the given Java class. Otherwise META-INF/services/jelly/uri
- * is searched for on the thread context's class path and, if found, that
- * class will be loaded.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.12 $
- */
-public class DefaultTagLibraryResolver implements TagLibraryResolver {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(DefaultTagLibraryResolver.class);
-
-    private DiscoverClasses discovery;
-
-    /**
-     * The class loader to use for instantiating application objects.
-     * If not specified, the context class loader, or the class loader
-     * used to load this class itself, is used, based on the value of the
-     * <code>useContextClassLoader</code> variable.
-     */
-    private ClassLoader classLoader;
-
-    /**
-     * Do we want to use the Context ClassLoader when loading classes
-     * for instantiating new objects?  Default is <code>false</code>.
-     */
-    private boolean useContextClassLoader = false;
-
-
-    public DefaultTagLibraryResolver() {
-    }
-
-
-    // TagLibraryResolver interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Attempts to resolve the given URI to be associated with a TagLibrary
-     * otherwise null is returned to indicate no tag library could be found
-     * so that the namespace URI should be treated as just vanilla XML.
-     */
-    public TagLibrary resolveTagLibrary(String uri) {
-        DiscoverClasses discovery = getDiscoverClasses();
-        String name = uri;
-        if ( uri.startsWith( "jelly:" ) ) {
-            name = "jelly." + uri.substring(6);
-        }
-
-        log.info( "Looking up service name: " + name );
-
-/*
-        ClassLoaders loaders = ClassLoaders.getAppLoaders(TagLibrary.class, getClass(), false);
-
-        DiscoverClass discover = new DiscoverClass(loaders);
-        Class implClass = discover.find(TestInterface2.class);
-
-
-
-        TagLibrary answer = null;
-        try {
-            answer = (TagLibrary) DiscoverSingleton.find(TagLibrary.class, name);
-        }
-        catch (Exception e) {
-            log.error( "Could not load service: " + name );
-        }
-        return answer;
-*/
-        ResourceClassIterator iter = discovery.findResourceClasses(name);
-        while (iter.hasNext()) {
-            ResourceClass resource = iter.nextResourceClass();
-            try {
-                Class typeClass = resource.loadClass();
-                if ( typeClass != null ) {
-                    return newInstance(uri, typeClass);
-                }
-            }
-            catch (Exception e) {
-                log.error( "Could not load service: " + resource );
-            }
-        }
-        log.info( "Could not find any services for name: " + name );
-        return null;
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Return the class loader to be used for instantiating application objects
-     * when required.  This is determined based upon the following rules:
-     * <ul>
-     * <li>The class loader set by <code>setClassLoader()</code>, if any</li>
-     * <li>The thread context class loader, if it exists and the
-     *     <code>useContextClassLoader</code> property is set to true</li>
-     * <li>The class loader used to load the XMLParser class itself.
-     * </ul>
-     */
-    public ClassLoader getClassLoader() {
-        return ClassLoaderUtils.getClassLoader(classLoader, useContextClassLoader, getClass());
-    }
-
-    /**
-     * Set the class loader to be used for instantiating application objects
-     * when required.
-     *
-     * @param classLoader The new class loader to use, or <code>null</code>
-     *  to revert to the standard rules
-     */
-    public void setClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
-    /**
-     * Return the boolean as to whether the context classloader should be used.
-     */
-    public boolean getUseContextClassLoader() {
-        return useContextClassLoader;
-    }
-
-    /**
-     * Determine whether to use the Context ClassLoader (the one found by
-     * calling <code>Thread.currentThread().getContextClassLoader()</code>)
-     * to resolve/load classes.  If not
-     * using Context ClassLoader, then the class-loading defaults to
-     * using the calling-class' ClassLoader.
-     *
-     * @param boolean determines whether to use JellyContext ClassLoader.
-     */
-    public void setUseContextClassLoader(boolean use) {
-        useContextClassLoader = use;
-    }
-
-    /**
-     * @return the DiscoverClasses instance to use to locate services.
-     *  This object is lazily created if it has not been configured.
-     */
-    public DiscoverClasses getDiscoverClasses() {
-        if ( discovery == null ) {
-            ClassLoaders loaders = ClassLoaders.getAppLoaders(TagLibrary.class, getClass(), false);
-            discovery = new DiscoverClasses(loaders);
-        }
-        return discovery;
-    }
-
-    /**
-     * Sets the fully configured DiscoverClasses instance to be used to
-     * lookup services
-     */
-    public void setDiscoverClasses(DiscoverClasses discovery) {
-        this.discovery = discovery;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Instantiates the given class name. Otherwise an exception is logged
-     * and null is returned
-     */
-    protected TagLibrary loadClass(String uri, String className) {
-        try {
-            Class theClass = getClassLoader().loadClass(className);
-            if ( theClass != null ) {
-                return newInstance(uri, theClass);
-            }
-        }
-        catch (ClassNotFoundException e) {
-            log.error("Could not find the class: " + className + " when trying to resolve URI: " + uri, e);
-        }
-        return null;
-    }
-
-
-    /**
-     * Creates a new instance of the given TagLibrary class or
-     * return null if it could not be instantiated.
-     */
-    protected TagLibrary newInstance(String uri, Class theClass) {
-        try {
-            Object object = theClass.newInstance();
-            if (object instanceof TagLibrary) {
-                return (TagLibrary) object;
-            }
-            else {
-                log.error(
-                    "The tag library object mapped to: "
-                        + uri
-                        + " is not a TagLibrary. Object = "
-                        + object);
-            }
-        }
-        catch (Exception e) {
-            log.error(
-                "Could not instantiate instance of class: " + theClass.getName() + ". Reason: " + e,
-                e);
-        }
-        return null;
-    }
-
-}
\ No newline at end of file
diff --git a/src/java/org/apache/commons/jelly/impl/DynamicBeanTag.java b/src/java/org/apache/commons/jelly/impl/DynamicBeanTag.java
deleted file mode 100644
index a122541..0000000
--- a/src/java/org/apache/commons/jelly/impl/DynamicBeanTag.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.beanutils.ConvertingWrapDynaBean;
-import org.apache.commons.collections.BeanMap;
-import org.apache.commons.jelly.DynaBeanTagSupport;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This tag is bound onto a Java Bean class. When the tag is invoked a bean will be created
- * using the tags attributes.
- * The bean may also have an invoke method called invoke(), run(), execute() or some such method
- * which will be invoked after the bean has been configured.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
- * @version $Revision: 1.7 $
- */
-public class DynamicBeanTag extends DynaBeanTagSupport implements BeanSource {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(DynamicBeanTag.class);
-
-    /** Empty arguments for Method.invoke() */
-    private static final Object[] emptyArgs = {};
-
-    /** the bean class */
-    private Class beanClass;
-
-    /** the current bean instance */
-    private Object bean;
-
-    /** the method to invoke on the bean */
-    private Method method;
-
-    /**
-     * the tag attribute name that is used to declare the name
-     * of the variable to export after running this tag
-     */
-    private String variableNameAttribute;
-
-    /** the current variable name that the bean should be exported as */
-    private String var;
-
-    /** the set of attribute names we've already set */
-    private Set setAttributesSet = new HashSet();
-
-    /** the attribute definitions */
-    private Map attributes;
-
-    /**
-     *
-     * @param beanClass Class of the bean that will receive the setter events
-     * @param attributes
-     * @param variableNameAttribute
-     * @param method method of the Bean to invoke after the attributes have been set.  Can be null.
-     */
-    public DynamicBeanTag(Class beanClass, Map attributes, String variableNameAttribute, Method method) {
-        this.beanClass = beanClass;
-        this.method = method;
-        this.attributes = attributes;
-        this.variableNameAttribute = variableNameAttribute;
-    }
-
-    public void beforeSetAttributes() throws JellyTagException {
-        // create a new dynabean before the attributes are set
-        try {
-            bean = beanClass.newInstance();
-            setDynaBean( new ConvertingWrapDynaBean( bean ) );
-        } catch (InstantiationException e) {
-            throw new JellyTagException("Could not instantiate dynabean",e);
-        } catch (IllegalAccessException e) {
-            throw new JellyTagException("Could not instantiate dynabean",e);
-        }
-
-        setAttributesSet.clear();
-    }
-
-    public void setAttribute(String name, Object value) throws JellyTagException {
-        boolean isVariableName = false;
-        if (variableNameAttribute != null ) {
-            if ( variableNameAttribute.equals( name ) ) {
-                if (value == null) {
-                    var = null;
-                }
-                else {
-                    var = value.toString();
-                }
-                isVariableName = true;
-            }
-        }
-        if (! isVariableName) {
-
-            // #### strictly speaking we could
-            // know what attributes are specified at compile time
-            // so this dynamic set is unnecessary
-            setAttributesSet.add(name);
-
-            // we could maybe implement attribute specific validation here
-
-            super.setAttribute(name, value);
-        }
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        // lets find any attributes that are not set and
-        for ( Iterator iter = attributes.values().iterator(); iter.hasNext(); ) {
-            Attribute attribute = (Attribute) iter.next();
-            String name = attribute.getName();
-            if ( ! setAttributesSet.contains( name ) ) {
-                if ( attribute.isRequired() ) {
-                    throw new MissingAttributeException(name);
-                }
-                // lets get the default value
-                Object value = null;
-                Expression expression = attribute.getDefaultValue();
-                if ( expression != null ) {
-                    value = expression.evaluate(context);
-                }
-
-                // only set non-null values?
-                if ( value != null ) {
-                    super.setAttribute(name, value);
-                }
-            }
-        }
-
-        // If the dynamic bean is itself a tag, let it execute itself
-        if (bean instanceof Tag)
-        {
-            Tag tag = (Tag) bean;
-            tag.setBody(getBody());
-            tag.setContext(getContext());
-            tag.setParent(getParent());
-            ((Tag) bean).doTag(output);
-
-            return;
-        }
-
-        invokeBody(output);
-
-        // export the bean if required
-        if ( var != null ) {
-            context.setVariable(var, bean);
-        }
-
-        // now, I may invoke the 'execute' method if I have one
-        if ( method != null ) {
-            try {
-                method.invoke( bean, emptyArgs );
-            }
-            catch (IllegalAccessException e) {
-                methodInvocationException(bean, method, e);
-            }
-            catch (IllegalArgumentException e) {
-                methodInvocationException(bean, method, e);
-            }
-            catch (InvocationTargetException e) {
-                // methodInvocationError(bean, method, e);
-
-                Throwable inner = e.getTargetException();
-
-                throw new JellyTagException(inner);
-
-            }
-        }
-    }
-
-    /**
-     * Report the state of the bean when method invocation fails
-     * so that the user can determine any problems that might
-     * be occuring while using dynamic jelly beans.
-     *
-     * @param bean Bean on which <code>method</code was invoked
-     * @param method Method that was invoked
-     * @param e Exception throw when <code>method</code> was invoked
-     */
-    private void methodInvocationException(Object bean, Method method, Exception e) throws JellyTagException {
-        log.error("Could not invoke " + method, e);
-        BeanMap beanMap = new BeanMap(bean);
-
-        log.error("Bean properties:");
-        for (Iterator i = beanMap.keySet().iterator(); i.hasNext();) {
-            String property = (String) i.next();
-            Object value = beanMap.get(property);
-            log.error(property + " -> " + value);
-        }
-
-        log.error(beanMap);
-        throw new JellyTagException(e);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * @return the bean that has just been created
-     */
-    public Object getBean() {
-        return bean;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/DynamicDynaBeanTag.java b/src/java/org/apache/commons/jelly/impl/DynamicDynaBeanTag.java
deleted file mode 100644
index 966ef7c..0000000
--- a/src/java/org/apache/commons/jelly/impl/DynamicDynaBeanTag.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.beanutils.DynaClass;
-import org.apache.commons.jelly.DynaBeanTagSupport;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-/**
- * This tag is bound onto a {@link DynaClass} instance.
- * When the tag is invoked a {@link DynaBean will be created using the tags attributes.
- * So this class is like a {@link DynaBean} implemenation of {@link DynamicBeanTag}
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class DynamicDynaBeanTag extends DynaBeanTagSupport implements BeanSource {
-
-    /** the bean class */
-    private DynaClass beanClass;
-
-    /**
-     * the tag attribute name that is used to declare the name
-     * of the variable to export after running this tag
-     */
-    private String variableNameAttribute;
-
-    /** the current variable name that the bean should be exported as */
-    private String var;
-
-    /** the set of attribute names we've already set */
-    private Set setAttributesSet = new HashSet();
-
-    /** the attribute definitions */
-    private Map attributes;
-
-    public DynamicDynaBeanTag(DynaClass beanClass, Map attributes, String variableNameAttribute) {
-        this.beanClass = beanClass;
-        this.attributes = attributes;
-        this.variableNameAttribute = variableNameAttribute;
-    }
-
-    public void beforeSetAttributes() throws JellyTagException {
-        // create a new dynabean before the attributes are set
-        try {
-            setDynaBean( beanClass.newInstance() );
-        } catch (IllegalAccessException e) {
-            throw new JellyTagException("Could not instantiate dynabean",e);
-        } catch (InstantiationException e) {
-            throw new JellyTagException("Could not instantiate dynabean",e);
-        }
-
-        setAttributesSet.clear();
-    }
-
-    public void setAttribute(String name, Object value) throws JellyTagException {
-        boolean isVariableName = false;
-        if (variableNameAttribute != null ) {
-            if ( variableNameAttribute.equals( name ) ) {
-                if (value == null) {
-                    var = null;
-                }
-                else {
-                    var = value.toString();
-                }
-                isVariableName = true;
-            }
-        }
-        if (! isVariableName) {
-
-            // #### strictly speaking we could
-            // know what attributes are specified at compile time
-            // so this dynamic set is unnecessary
-            setAttributesSet.add(name);
-
-            // we could maybe implement attribute specific validation here
-
-            super.setAttribute(name, value);
-        }
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        // lets find any attributes that are not set and
-        for ( Iterator iter = attributes.values().iterator(); iter.hasNext(); ) {
-            Attribute attribute = (Attribute) iter.next();
-            String name = attribute.getName();
-            if ( ! setAttributesSet.contains( name ) ) {
-                if ( attribute.isRequired() ) {
-                    throw new MissingAttributeException(name);
-                }
-                // lets get the default value
-                Object value = null;
-                Expression expression = attribute.getDefaultValue();
-                if ( expression != null ) {
-                    value = expression.evaluate(context);
-                }
-
-                // only set non-null values?
-                if ( value != null ) {
-                    super.setAttribute(name, value);
-                }
-            }
-        }
-
-        invokeBody(output);
-
-        // export the bean if required
-        if ( var != null ) {
-            context.setVariable(var, getDynaBean());
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * @return the bean that has just been created
-     */
-    public Object getBean() {
-        return getDynaBean();
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/DynamicTag.java b/src/java/org/apache/commons/jelly/impl/DynamicTag.java
deleted file mode 100644
index 54b8846..0000000
--- a/src/java/org/apache/commons/jelly/impl/DynamicTag.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Iterator;
-
-import org.apache.commons.jelly.DynaTagSupport;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * <p><code>DynamicTag</code> is a tag that is created from
- * inside a Jelly script as a Jelly template and will invoke a
- * given script, passing in its instantiation attributes
- * as variables and will allow the template to invoke its instance body.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.10 $
- */
-public class DynamicTag extends DynaTagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(DynamicTag.class);
-
-    /** The template script */
-    private Script template;
-
-    /** The instance attributes */
-    private Map attributes = new HashMap();
-
-    public DynamicTag() {
-    }
-
-    public DynamicTag(Script template) {
-        this.template = template;
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if ( log.isDebugEnabled() ) {
-            log.debug("Invoking dynamic tag with attributes: " + attributes);
-        }
-        attributes.put("org.apache.commons.jelly.body", getBody());
-
-        // create new context based on current attributes
-        JellyContext newJellyContext = context.newJellyContext(attributes);
-        Map attrMap = new HashMap();
-        for ( Iterator keyIter = this.attributes.keySet().iterator();
-              keyIter.hasNext();) {
-            String key = (String) keyIter.next();
-            if ( key.endsWith( "Attr" ) ) {
-                Object value = this.attributes.get( key );
-                attrMap.put( key, value );
-                attrMap.put( key.substring( 0, key.length()-4 ), value );
-            }
-        }
-        newJellyContext.setVariable( "attrs", attrMap );
-        getTemplate().run(newJellyContext, output);
-    }
-
-    // DynaTag interface
-    //-------------------------------------------------------------------------
-    public void setAttribute(String name, Object value) {
-        attributes.put(name, value);
-        attributes.put(name + "Attr", value);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** The template to be executed by this tag which may well
-     * invoke this instances body from inside the template
-     */
-    public Script getTemplate() {
-        return template;
-    }
-
-    public void setTemplate(Script template) {
-        this.template = template;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/DynamicTagLibrary.java b/src/java/org/apache/commons/jelly/impl/DynamicTagLibrary.java
deleted file mode 100644
index 85b93de..0000000
--- a/src/java/org/apache/commons/jelly/impl/DynamicTagLibrary.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagLibrary;
-import org.xml.sax.Attributes;
-
-/**
- * <p><code>DynamicTagLibrary</code> represents a TagLibrary which
- * gets created by running a Jelly script.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class DynamicTagLibrary extends TagLibrary {
-
-    private String uri;
-    private Map templates = new HashMap();
-    private TagLibrary parent;
-
-    public DynamicTagLibrary() {
-    }
-
-    public DynamicTagLibrary(String uri) {
-        this.uri = uri;
-    }
-
-    /** Creates a new script to execute the given tag name and attributes */
-    public TagScript createTagScript(final String name, final Attributes attributes)
-        throws JellyException {
-
-        return new TagScript(
-            new TagFactory() {
-                public Tag createTag(String name, Attributes attributes) throws JellyException {
-                    return DynamicTagLibrary.this.createTag(name, attributes);
-                }
-            }
-        );
-    }
-
-    /** Creates a new Tag for the given tag name if it exists */
-    public Tag createTag(String name, Attributes attributes)
-        throws JellyException {
-
-        Object value = templates.get(name);
-        if ( value instanceof Script ) {
-            Script template = (Script) value;
-            return new DynamicTag(template);
-        }
-        else if ( value instanceof TagFactory ) {
-            TagFactory factory = (TagFactory) value;
-            return factory.createTag(name, attributes);
-        }
-        else if ( parent != null ) {
-            // delegate to the parent
-            return parent.createTag(name, attributes);
-        }
-
-        return null;
-    }
-
-    /**
-     * Creates a new tag with the given name and template
-     */
-    public void registerDynamicTag(String name, Script template) {
-        templates.put(name, template);
-    }
-
-    /**
-     * Creates a new Jelly Bean Tag with the given name
-     */
-    public void registerBeanTag(String name, TagFactory factory) {
-        templates.put(name, factory);
-    }
-
-    /**
-     * Returns the script associated with the given tag name
-     *
-     * @param name The tag name
-     * @return The script associated with <code>name</code>, or
-     *         <code>null</code> if the tag doesn't exist or isn't a script
-     */
-    public Script getDynamicTag(String name) {
-        Object result = templates.get(name);
-        return (result instanceof Script) ? (Script) result : null;
-    }
-
-    /**
-     * Returns the tag library instance which contains the named tag.
-     * <p/>
-     * If the tag is not registered within this library, the set of
-     * parent libraries will be searched.
-     *
-     * @param name The tag name
-     * @return The tag library containing the named tag, or <code>null</code>
-     *         if the tag is not registered.
-     */
-    public DynamicTagLibrary find(String name) {
-        DynamicTagLibrary result = null;
-        if (templates.get(name) != null) {
-            result = this;
-        }
-        else if (parent instanceof DynamicTagLibrary) {
-            result = ((DynamicTagLibrary) parent).find(name);
-        }
-        return result;
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public String getUri() {
-        return uri;
-    }
-
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
-
-
-    /**
-     * Returns the parent library which will be used to resolve unknown tags.
-     * @return TagLibrary
-     */
-    public TagLibrary getParent() {
-        return parent;
-    }
-
-    /**
-     * Sets the parent to inherit tags from that are not defined in this library.
-     * @param parent The parent to set
-     */
-    public void setParent(TagLibrary parent) {
-        this.parent = parent;
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/impl/Embedded.java b/src/java/org/apache/commons/jelly/impl/Embedded.java
deleted file mode 100644
index 3212408..0000000
--- a/src/java/org/apache/commons/jelly/impl/Embedded.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.parser.XMLParser;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.xml.sax.SAXException;
-
-/**
- * @author <a href="mailto:vinayc@apache.org">Vinay Chandran</a>
- *
- * <p><code>Embedded</code> provides easy means to embed JellyEngine <br/>
- * and use Jelly scripts within an application</p>
- * A typical usage:<br/>
- *  <code><br/>
- *     Embedded embedded = new Embedded();<br/>
- *     embedded.setOutputStream(new ByteArrayOutputStream());<br/>
- *     embedded.setVariable("some-var","some-object");<br/>
- *     .....<br/>
- *     embedded.setScript(scriptAsString);<br/>
- *     //or one can do.<br/>
- *     //embedded.setScript(scriptAsInputStream);<br/>
- *     <br/>
- *     boolean bStatus=embedded.execute();<br/>
- *     if(!bStatus) //if error<br/>
- *     {<br/>
- *         String errorMsg=embedded.getErrorMsg();<br/>
- *     }<br/>
- *  </code>  <br/>
- *
- * @author <a href="mailto:vinayc@apache.org">Vinay Chandran</a>
- */
-public class Embedded {
-    /** Jelly Engine */
-    Jelly m_jellyEngine = new Jelly();
-    /** JellyContext*/
-    private JellyContext m_context = new JellyContext();
-    /** Compiled Script Object*/
-    private Script m_script;
-    /** Input script as stream*/
-    private InputStream m_inputStream;
-    /** Output Stream */
-    private OutputStream m_outputStream;
-    /** Output(default System.out) */
-    private XMLOutput m_output =
-        XMLOutput.createXMLOutput(new OutputStreamWriter(System.out));
-    /** Exception thrown during compilation of script*/
-    Exception m_scriptCompilationException;
-    /** boolean value indicating whether the script has been successfully compiled or NOT */
-    boolean m_scriptCompiled = false;
-    /** ErrorMsg*/
-    private String m_errorMsg;
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(Embedded.class);
-
-    /**
-     * Default Constructor
-     *
-     */
-    public Embedded() {
-        //m_context.setClassLoader(new TagLibraryClassLoader(m_context));
-    }
-
-    /**
-     * Method setContext.
-     * @param context
-     */
-    public void setContext(JellyContext context) {
-        m_context = context;
-    }
-
-    /**
-     * Method getContext.
-     * @return JellyContext
-     */
-    public JellyContext getContext() {
-        return m_context;
-    }
-
-    /**
-     * Set a new variable within the context for the script to use.
-     * @param name
-     * @param value
-     */
-    public void setVariable(String name, Object value) {
-        m_context.setVariable(name, value);
-    }
-
-    /**
-     * Set the input script
-     * @param scriptAsString
-     */
-    public void setScript(String scriptAsString) {
-
-        try {
-            URL url = resolveURL(scriptAsString);
-            m_inputStream = url.openStream();
-        }
-        catch (MalformedURLException e) {
-            //Encapsulate the string within
-            m_inputStream = new ByteArrayInputStream(scriptAsString.getBytes());
-        }
-        catch (IOException e) {
-            //Error reading from the URL
-            m_inputStream = null;
-        }
-
-        compileScriptAndKeep();
-
-    }
-
-    /**
-     * @return the URL for the relative file name or absolute URL
-     */
-    private URL resolveURL(String name) throws MalformedURLException {
-        File file = new File(name);
-        if (file.exists()) {
-            return file.toURL();
-        }
-        return new URL(name);
-    }
-
-    /**
-     * Set the input stream
-     * @param scriptAsInputStream
-     */
-    public void setScript(InputStream scriptAsInputStream) {
-        m_inputStream = scriptAsInputStream;
-        compileScriptAndKeep();
-    }
-
-    /**
-     * Compile the script
-     */
-    private void compileScriptAndKeep() {
-        XMLParser parser = new XMLParser();
-        parser.setContext(m_context);
-        m_scriptCompiled = false;
-        try {
-            m_script = parser.parse(m_inputStream);
-            m_script = m_script.compile();
-            m_scriptCompiled = true;
-        }
-        catch (IOException e) {
-            m_scriptCompilationException = e;
-        }
-        catch (SAXException e) {
-            m_scriptCompilationException = e;
-        }
-        catch (Exception e) {
-            m_scriptCompilationException = e;
-        }
-    }
-
-    /**
-     * Method setOutputStream.
-     * @param outputStream
-     */
-    public void setOutputStream(OutputStream outputStream) {
-        m_outputStream = outputStream;
-        m_output =
-            XMLOutput.createXMLOutput(new OutputStreamWriter(m_outputStream));
-    }
-
-    /**
-     * Registers the given tag library class name against the given namespace URI.
-     * The class will be loaded via the given ClassLoader
-     * This should be called before the parser is used.
-     */
-    public void registerTagLibrary(String namespaceURI, String className) {
-        if (m_context != null)
-            m_context.registerTagLibrary(namespaceURI, className);
-    }
-
-    /**
-     * Registers the given tag library against the given namespace URI.
-     * This should be called before the parser is used.
-     */
-    public void registerTagLibrary(String namespaceURI, TagLibrary taglib) {
-        if (m_context != null)
-            m_context.registerTagLibrary(namespaceURI, taglib);
-    }
-
-    /**
-     * Returns the errorMsg.
-     * @return String
-     */
-    public String getErrorMsg() {
-        return m_errorMsg;
-    }
-
-    /**
-     * Sets the errorMsg.
-     * @param errorMsg The errorMsg to set
-     */
-    private void setErrorMsg(String errorMsg) {
-        m_errorMsg = errorMsg;
-    }
-
-    /**
-     * Execute the jelly script and capture the errors (ifany)within.
-     *
-     * @throws JellyException
-     */
-    public boolean execute() {
-        if (log.isDebugEnabled())
-            log.debug("Starting Execution");
-        //If script has not been compiled then return the errorMsg that occured during compilation
-        if (!m_scriptCompiled) {
-            if (log.isErrorEnabled())
-                log.error(m_scriptCompilationException.getMessage());
-            setErrorMsg(m_scriptCompilationException.getMessage());
-            return false;
-        }
-        if (m_inputStream == null) {
-            if (log.isErrorEnabled())
-                log.error("[Error] Input script-resource NOT accessible");
-            setErrorMsg("[Error] Input script-resource NOT accessible");
-            return false;
-        }
-        try {
-            m_script.run(m_context, m_output);
-            m_outputStream.close();
-            m_output.flush();
-        }
-        catch (Exception e) {
-            if (log.isErrorEnabled())
-                log.error(e.getMessage());
-            setErrorMsg(e.getMessage());
-            return false;
-        }
-        if (log.isDebugEnabled())
-            log.debug("Done Executing");
-        return true;
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/impl/ExpressionScript.java b/src/java/org/apache/commons/jelly/impl/ExpressionScript.java
deleted file mode 100644
index b497a3f..0000000
--- a/src/java/org/apache/commons/jelly/impl/ExpressionScript.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-import org.xml.sax.SAXException;
-
-/**
- * <p><code>ExpressionScript</code> outputs the value of an expression as text.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class ExpressionScript implements Script {
-
-    /** the expression evaluated as a String and output by this script */
-    private Expression expression;
-
-    public ExpressionScript() {
-    }
-
-    public ExpressionScript(Expression expression) {
-        this.expression = expression;
-    }
-
-    public String toString() {
-        return super.toString() + "[expression=" + expression + "]";
-    }
-
-    /** @return the expression evaluated as a String and output by this script */
-    public Expression getExpression() {
-        return expression;
-    }
-
-    /** Sets the expression evaluated as a String and output by this script */
-    public void setExpression(Expression expression) {
-        this.expression = expression;
-    }
-
-    // Script interface
-    //-------------------------------------------------------------------------
-    public Script compile() {
-        return this;
-    }
-
-    /** Evaluates the body of a tag */
-    public void run(JellyContext context, XMLOutput output) throws JellyTagException {
-        Object result = expression.evaluate(context);
-        if ( result != null ) {
-
-            try {
-              output.objectData(result);
-            } catch (SAXException e) {
-                throw new JellyTagException("Could not write to XMLOutput",e);
-            }
-
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/ScriptBlock.java b/src/java/org/apache/commons/jelly/impl/ScriptBlock.java
deleted file mode 100644
index f2b3c05..0000000
--- a/src/java/org/apache/commons/jelly/impl/ScriptBlock.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-/** <p><code>ScriptBlock</code> a block of scripts.</p>
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.16 $
-  */
-public class ScriptBlock implements Script {
-
-    /** The list of scripts */
-    private List list = new ArrayList();
-
-    /**
-     * Create a new instance.
-     */
-    public ScriptBlock() {
-    }
-
-    /**
-     * @see Object#toString()
-     */
-    public String toString() {
-        return super.toString() + "[scripts=" + list + "]";
-    }
-
-    /** Add a new script to the end of this block */
-    public void addScript(Script script) {
-        list.add(script);
-    }
-
-    /** Removes a script from this block */
-    public void removeScript(Script script) {
-        list.remove(script);
-    }
-
-    /**
-     * Gets the child scripts that make up this block. This list is live
-     * so that it can be modified if requried
-     */
-    public List getScriptList() {
-        return list;
-    }
-
-    // Script interface
-    //-------------------------------------------------------------------------
-    public Script compile() throws JellyException {
-        int size = list.size();
-        if (size == 1) {
-            Script script = (Script) list.get(0);
-            return script.compile();
-        }
-        // now compile children
-        for (int i = 0; i < size; i++) {
-            Script script = (Script) list.get(i);
-            list.set(i, script.compile());
-        }
-        return this;
-    }
-
-    /** Evaluates the body of a tag */
-    public void run(JellyContext context, XMLOutput output) throws JellyTagException {
-/*
-        for (int i = 0, size = scripts.length; i < size; i++) {
-            Script script = scripts[i];
-            script.run(context, output);
-        }
-*/
-        for (Iterator iter = list.iterator(); iter.hasNext(); ) {
-            Script script = (Script) iter.next();
-            script.run(context, output);
-        }
-    }
-    
-    /**
-     * Trim the body of the script.
-     * In this case, trim all elements, removing any that are empty text.
-     */
-    public void trimWhitespace() {
-        List list = getScriptList();
-        for ( int i = list.size() - 1; i >= 0; i-- ) {
-            Script script = (Script) list.get(i);
-            if ( script instanceof TextScript ) {
-                TextScript textScript = (TextScript) script;
-                String text = textScript.getText();
-                text = text.trim();
-                if ( text.length() == 0 ) {
-                    list.remove(i);
-                }
-                else {
-                    textScript.setText(text);
-                }
-            }
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/StaticTag.java b/src/java/org/apache/commons/jelly/impl/StaticTag.java
deleted file mode 100644
index 2795f19..0000000
--- a/src/java/org/apache/commons/jelly/impl/StaticTag.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.jelly.DynaTagSupport;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * <p><code>StaticTag</code> represents a static XML element
- * which echos itself to XMLOutput when it is invoked.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.19 $
- */
-
-public class StaticTag extends DynaTagSupport {
-
-    /** The namespace URI */
-    private String uri;
-
-    /** The qualified name */
-    private String qname;
-
-    /** The local name */
-    private String localName;
-
-    /** The XML Attributes */
-    private AttributesImpl attributes = new AttributesImpl();
-
-    public StaticTag() {
-    }
-
-    public StaticTag(String uri, String localName, String qname) {
-        this.uri = uri;
-        this.localName = localName;
-        this.qname = qname;
-    }
-
-    public String toString() {
-        return super.toString() + "[qname=" + qname + ";attributes=" + attributes + "]";
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        try {
-            output.startElement(uri, localName, qname, attributes);
-            invokeBody(output);
-            output.endElement(uri, localName, qname);
-        } catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // DynaTag interface
-    //-------------------------------------------------------------------------
-    public void setAttribute(String name, Object value) throws JellyTagException {
-        // ### we'll assume that all attributes are in no namespace!
-        // ### this is severely limiting!
-        // ### - Tag attributes should allow for namespace aware
-        int index = attributes.getIndex("", name);
-        if (index >= 0) {
-            attributes.removeAttribute(index);
-        }
-        // treat null values as no attribute
-        if (value != null) {
-            attributes.addAttribute("", name, name, "CDATA", value.toString());
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public String getUri() {
-        return uri;
-    }
-
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
-
-    public String getQName() {
-        return qname;
-    }
-
-    public void setQName(String qname) {
-        this.qname = qname;
-        int idx = qname.indexOf(':');
-        if (idx >= 0) {
-            this.localName = qname.substring(idx + 1);
-        }
-        else {
-            this.localName = qname;
-        }
-    }
-
-    public String getLocalName() {
-        return localName;
-    }
-
-    public void setLocalName(String localName) {
-        this.localName = localName;
-        // FIXME This just doesn't seem right or work...
-        if (qname == null || !qname.endsWith(localName)) {
-            localName = qname;
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/StaticTagScript.java b/src/java/org/apache/commons/jelly/impl/StaticTagScript.java
deleted file mode 100644
index c80c5c4..0000000
--- a/src/java/org/apache/commons/jelly/impl/StaticTagScript.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import java.net.URL;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.jelly.DynaTag;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-import org.xml.sax.SAXException;
-
-/**
- * <p><code>StaticTagScript</code> is a script that evaluates a StaticTag, a piece of static XML
- * though its attributes or element content may contain dynamic expressions.
- * The first time this tag evaluates, it may have become a dynamic tag, so it will check that
- * a new dynamic tag has not been generated.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class StaticTagScript extends TagScript {
-
-    public StaticTagScript() {
-    }
-
-    public StaticTagScript(TagFactory tagFactory) {
-        super(tagFactory);
-    }
-
-
-    // Script interface
-    //-------------------------------------------------------------------------
-    public void run(JellyContext context, XMLOutput output) throws JellyTagException {
-        try {
-            startNamespacePrefixes(output);
-        } catch (SAXException e) {
-            throw new JellyTagException("could not start namespace prefixes",e);
-        }
-
-        Tag tag = null;
-        try {
-            tag = getTag(context);
-
-            // lets see if we have a dynamic tag
-            if (tag instanceof StaticTag) {
-                tag = findDynamicTag(context, (StaticTag) tag);
-            }
-
-            setTag(tag,context);
-        } catch (JellyException e) {
-            throw new JellyTagException(e);
-        }
-
-        URL rootURL = context.getRootURL();
-        URL currentURL = context.getCurrentURL();
-        try {
-            if ( tag == null ) {
-                return;
-            }
-            tag.setContext(context);
-            setContextURLs(context);
-
-            DynaTag dynaTag = (DynaTag) tag;
-
-            // ### probably compiling this to 2 arrays might be quicker and smaller
-            for (Iterator iter = attributes.entrySet().iterator(); iter.hasNext();) {
-                Map.Entry entry = (Map.Entry) iter.next();
-                String name = (String) entry.getKey();
-                Expression expression = (Expression) entry.getValue();
-
-                Object value = null;
-
-                if ( Expression.class.isAssignableFrom( dynaTag.getAttributeType(name) ) ) {
-                    value = expression;
-                } else {
-                    value = expression.evaluate(context);
-                }
-
-                dynaTag.setAttribute(name, value);
-            }
-
-            tag.doTag(output);
-        }
-        catch (JellyTagException e) {
-            handleException(e);
-        }
-        catch (RuntimeException e) {
-            handleException(e);
-        } finally {
-            context.setCurrentURL(currentURL);
-            context.setRootURL(rootURL);
-        }
-
-        try {
-            endNamespacePrefixes(output);
-        } catch (SAXException e) {
-            throw new JellyTagException("could not end namespace prefixes",e);
-        }
-    }
-
-    /**
-     * Attempts to find a dynamically created tag that has been created since this
-     * script was compiled
-     */
-    protected Tag findDynamicTag(JellyContext context, StaticTag tag) throws JellyException {
-        // lets see if there's a tag library for this URI...
-        TagLibrary taglib = context.getTagLibrary( tag.getUri() );
-        if ( taglib != null ) {
-            Tag newTag = taglib.createTag( tag.getLocalName(), getSaxAttributes() );
-            if ( newTag != null ) {
-                newTag.setParent( tag.getParent() );
-                newTag.setBody( tag.getBody() );
-                return newTag;
-            }
-        }
-        return tag;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/TagFactory.java b/src/java/org/apache/commons/jelly/impl/TagFactory.java
deleted file mode 100644
index 9eb4635..0000000
--- a/src/java/org/apache/commons/jelly/impl/TagFactory.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Tag;
-
-import org.xml.sax.Attributes;
-
-/**
- * <p><code>TagFactory</code> represents a Factory of {@link Tag} instances.</p>
- *
- * <b>Note</b> that this class should be re-entrant and used
- * concurrently by multiple threads.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.16 $
- */
-public interface TagFactory {
-
-    /**
-     * Creates a Tag for the given local name and the SAX attributes
-     */
-    public Tag createTag(String name, Attributes attributes) throws JellyException;
-}
diff --git a/src/java/org/apache/commons/jelly/impl/TagLibraryResolver.java b/src/java/org/apache/commons/jelly/impl/TagLibraryResolver.java
deleted file mode 100644
index 74b7be7..0000000
--- a/src/java/org/apache/commons/jelly/impl/TagLibraryResolver.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.jelly.TagLibrary;
-
-
-/**
- * <p><code>TagLibraryResolver</code> represents an object capable of
- * resolving a URI to a TagLibrary instance.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.12 $
- */
-public interface TagLibraryResolver {
-
-    /**
-     * Attempts to resolve the given URI to be associated with a TagLibrary
-     * otherwise null is returned to indicate no tag library could be found
-     * so that the namespace URI should be treated as just vanilla XML.
-     */
-    public TagLibrary resolveTagLibrary(String uri);
-}
\ No newline at end of file
diff --git a/src/java/org/apache/commons/jelly/impl/TagScript.java b/src/java/org/apache/commons/jelly/impl/TagScript.java
deleted file mode 100644
index 38163d6..0000000
--- a/src/java/org/apache/commons/jelly/impl/TagScript.java
+++ /dev/null
@@ -1,684 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.beanutils.ConvertingWrapDynaBean;
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.beanutils.DynaBean;
-import org.apache.commons.beanutils.DynaProperty;
-
-import org.apache.commons.jelly.CompilableTag;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.DynaTag;
-import org.apache.commons.jelly.LocationAware;
-import org.apache.commons.jelly.NamespaceAwareTag;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-
-/**
- * <p><code>TagScript</code> is a Script that evaluates a custom tag.</p>
- *
- * <b>Note</b> that this class should be re-entrant and used
- * concurrently by multiple threads.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.50 $
- */
-public class TagScript implements Script {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TagScript.class);
-
-
-    /** The attribute expressions that are created */
-    protected Map attributes = new Hashtable();
-
-    /** the optional namespaces Map of prefix -> URI of this single Tag */
-    private Map tagNamespacesMap;
-
-    /**
-     * The optional namespace context mapping all prefixes -> URIs in scope
-     * at the point this tag is used.
-     * This Map is only created lazily if it is required by the NamespaceAwareTag.
-     */
-    private Map namespaceContext;
-
-    /** the Jelly file which caused the problem */
-    private String fileName;
-
-    /** the qualified element name which caused the problem */
-    private String elementName;
-
-    /** the local (non-namespaced) tag name */
-    private String localName;
-
-    /** the line number of the tag */
-    private int lineNumber = -1;
-
-    /** the column number of the tag */
-    private int columnNumber = -1;
-
-    /** the factory of Tag instances */
-    private TagFactory tagFactory;
-
-    /** the body script used for this tag */
-    private Script tagBody;
-
-    /** the parent TagScript */
-    private TagScript parent;
-
-    /** the SAX attributes */
-    private Attributes saxAttributes;
-    
-    /** the url of the script when parsed */
-    private URL scriptURL = null;
-
-    /**
-     * @return a new TagScript based on whether
-     * the given Tag class is a bean tag or DynaTag
-     */
-    public static TagScript newInstance(Class tagClass) {
-        TagFactory factory = new DefaultTagFactory(tagClass);
-        return new TagScript(factory);
-    }
-
-    public TagScript() {
-    }
-
-    public TagScript(TagFactory tagFactory) {
-        this.tagFactory = tagFactory;
-    }
-
-    public String toString() {
-        return super.toString() + "[tag=" + elementName + ";at=" + lineNumber + ":" + columnNumber + "]";
-    }
-
-    /**
-     * Compiles the tags body
-     */
-    public Script compile() throws JellyException {
-        if (tagBody != null) {
-            tagBody = tagBody.compile();
-        }
-        return this;
-    }
-
-    /**
-     * Sets the optional namespaces prefix -> URI map of
-     * the namespaces attached to this Tag
-     */
-    public void setTagNamespacesMap(Map tagNamespacesMap) {
-        // lets check that this is a thread-safe map
-        if ( ! (tagNamespacesMap instanceof Hashtable) ) {
-            tagNamespacesMap = new Hashtable( tagNamespacesMap );
-        }
-        this.tagNamespacesMap = tagNamespacesMap;
-    }
-
-    /**
-     * Configures this TagScript from the SAX Locator, setting the column
-     * and line numbers
-     */
-    public void setLocator(Locator locator) {
-        setLineNumber( locator.getLineNumber() );
-        setColumnNumber( locator.getColumnNumber() );
-    }
-
-
-    /** Add an initialization attribute for the tag.
-     * This method must be called after the setTag() method
-     */
-    public void addAttribute(String name, Expression expression) {
-        if (log.isDebugEnabled()) {
-            log.debug("adding attribute name: " + name + " expression: " + expression);
-        }
-        attributes.put(name, expression);
-    }
-
-    /**
-     * Strips off the name of a script to create a new context URL
-     * FIXME: Copied from JellyContext
-     */
-    private URL getJellyContextURL(URL url) throws MalformedURLException {
-        String text = url.toString();
-        int idx = text.lastIndexOf('/');
-        text = text.substring(0, idx + 1);
-        return new URL(text);
-    }
-
-    // Script interface
-    //-------------------------------------------------------------------------
-
-    /** Evaluates the body of a tag */
-    public void run(JellyContext context, XMLOutput output) throws JellyTagException {
-        URL rootURL = context.getRootURL();
-        URL currentURL = context.getCurrentURL();
-        try {
-            Tag tag = getTag(context);
-            if ( tag == null ) {
-                return;
-            }
-            tag.setContext(context);
-            setContextURLs(context);
-
-            if ( tag instanceof DynaTag ) {
-                DynaTag dynaTag = (DynaTag) tag;
-
-                // ### probably compiling this to 2 arrays might be quicker and smaller
-                for (Iterator iter = attributes.entrySet().iterator(); iter.hasNext();) {
-                    Map.Entry entry = (Map.Entry) iter.next();
-                    String name = (String) entry.getKey();
-                    Expression expression = (Expression) entry.getValue();
-
-                    Class type = dynaTag.getAttributeType(name);
-                    Object value = null;
-                    if (type != null && type.isAssignableFrom(Expression.class) && !type.isAssignableFrom(Object.class)) {
-                        value = expression;
-                    }
-                    else {
-                        value = expression.evaluateRecurse(context);
-                    }
-                    dynaTag.setAttribute(name, value);
-                }
-            }
-            else {
-                // treat the tag as a bean
-                DynaBean dynaBean = new ConvertingWrapDynaBean( tag );
-                for (Iterator iter = attributes.entrySet().iterator(); iter.hasNext();) {
-                    Map.Entry entry = (Map.Entry) iter.next();
-                    String name = (String) entry.getKey();
-                    Expression expression = (Expression) entry.getValue();
-
-                    DynaProperty property = dynaBean.getDynaClass().getDynaProperty(name);
-                    if (property == null) {
-                        throw new JellyException("This tag does not understand the '" + name + "' attribute" );
-                    }
-                    Class type = property.getType();
-
-                    Object value = null;
-                    if (type.isAssignableFrom(Expression.class) && !type.isAssignableFrom(Object.class)) {
-                        value = expression;
-                    }
-                    else {
-                        value = expression.evaluateRecurse(context);
-                    }
-                    dynaBean.set(name, value);
-                }
-            }
-
-            tag.doTag(output);
-            if (output != null) {
-                output.flush();
-            }
-        }
-        catch (JellyTagException e) {
-            handleException(e);
-        } catch (JellyException e) {
-            handleException(e);
-        } catch (IOException e) {
-            handleException(e);
-        } catch (RuntimeException e) {
-            handleException(e);
-        }
-        catch (Error e) {
-           /*
-            * Not sure if we should be converting errors to exceptions,
-            * but not trivial to remove because JUnit tags throw
-            * Errors in the normal course of operation.  Hmm...
-            */
-            handleException(e);
-        } finally {
-            context.setRootURL(rootURL);
-            context.setCurrentURL(currentURL);
-        }
-
-    }
-
-    /**
-     * Set the context's root and current URL if not present
-     * @param context
-     * @throws JellyTagException
-     */
-    protected void setContextURLs(JellyContext context) throws JellyTagException {
-        if ((context.getCurrentURL() == null || context.getRootURL() == null) && scriptURL != null)
-        {
-            if (context.getRootURL() == null) context.setRootURL(scriptURL);
-            if (context.getCurrentURL() == null) context.setCurrentURL(scriptURL);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the tag to be evaluated, creating it lazily if required.
-     */
-    public Tag getTag(JellyContext context) throws JellyException {
-        Tag tag = (Tag) context.getThreadScriptData(this);
-        if ( tag == null ) {
-            tag = createTag();
-            if ( tag != null ) {
-                context.setThreadScriptData(this,tag);
-                configureTag(tag,context);
-            }
-        }
-        return tag;
-    }
-
-    /**
-     * Returns the Factory of Tag instances.
-     * @return the factory
-     */
-    public TagFactory getTagFactory() {
-        return tagFactory;
-    }
-
-    /**
-     * Sets the Factory of Tag instances.
-     * @param tagFactory The factory to set
-     */
-    public void setTagFactory(TagFactory tagFactory) {
-        this.tagFactory = tagFactory;
-    }
-
-    /**
-     * Returns the parent.
-     * @return TagScript
-     */
-    public TagScript getParent() {
-        return parent;
-    }
-
-    /**
-     * Returns the tagBody.
-     * @return Script
-     */
-    public Script getTagBody() {
-        return tagBody;
-    }
-
-    /**
-     * Sets the parent.
-     * @param parent The parent to set
-     */
-    public void setParent(TagScript parent) {
-        this.parent = parent;
-    }
-
-    /**
-     * Sets the tagBody.
-     * @param tagBody The tagBody to set
-     */
-    public void setTagBody(Script tagBody) {
-        this.tagBody = tagBody;
-    }
-
-    /**
-     * @return the Jelly file which caused the problem
-     */
-    public String getFileName() {
-        return fileName;
-    }
-
-    /**
-     * Sets the Jelly file which caused the problem
-     */
-    public void setFileName(String fileName) {
-        this.fileName = fileName;
-        try
-        {
-            this.scriptURL = getJellyContextURL(new URL(fileName));
-        } catch (MalformedURLException e) {
-            log.debug("error setting script url", e);
-        }
-    }
-
-
-    /**
-     * @return the element name which caused the problem
-     */
-    public String getElementName() {
-        return elementName;
-    }
-
-    /**
-     * Sets the element name which caused the problem
-     */
-    public void setElementName(String elementName) {
-        this.elementName = elementName;
-    }
-    /**
-     * @return the line number of the tag
-     */
-    public int getLineNumber() {
-        return lineNumber;
-    }
-
-    /**
-     * Sets the line number of the tag
-     */
-    public void setLineNumber(int lineNumber) {
-        this.lineNumber = lineNumber;
-    }
-
-    /**
-     * @return the column number of the tag
-     */
-    public int getColumnNumber() {
-        return columnNumber;
-    }
-
-    /**
-     * Sets the column number of the tag
-     */
-    public void setColumnNumber(int columnNumber) {
-        this.columnNumber = columnNumber;
-    }
-
-    /**
-     * Returns the SAX attributes of this tag
-     * @return Attributes
-     */
-    public Attributes getSaxAttributes() {
-        return saxAttributes;
-    }
-
-    /**
-     * Sets the SAX attributes of this tag
-     * @param saxAttributes The saxAttributes to set
-     */
-    public void setSaxAttributes(Attributes saxAttributes) {
-        this.saxAttributes = saxAttributes;
-    }
-
-    /**
-     * Returns the local, non namespaced XML name of this tag
-     * @return String
-     */
-    public String getLocalName() {
-        return localName;
-    }
-
-    /**
-     * Sets the local, non namespaced name of this tag.
-     * @param localName The localName to set
-     */
-    public void setLocalName(String localName) {
-        this.localName = localName;
-    }
-
-
-    /**
-     * Returns the namespace context of this tag. This is all the prefixes
-     * in scope in the document where this tag is used which are mapped to
-     * their namespace URIs.
-     *
-     * @return a Map with the keys are namespace prefixes and the values are
-     * namespace URIs.
-     */
-    public synchronized Map getNamespaceContext() {
-        if (namespaceContext == null) {
-            if (parent != null) {
-                namespaceContext = getParent().getNamespaceContext();
-                if (tagNamespacesMap != null && !tagNamespacesMap.isEmpty()) {
-                    // create a new child context
-                    Hashtable newContext = new Hashtable(namespaceContext.size()+1);
-                    newContext.putAll(namespaceContext);
-                    newContext.putAll(tagNamespacesMap);
-                    namespaceContext = newContext;
-                }
-            }
-            else {
-                namespaceContext = tagNamespacesMap;
-                if (namespaceContext == null) {
-                    namespaceContext = new Hashtable();
-                }
-            }
-        }
-        return namespaceContext;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new Tag instance.
-     * The default implementation is to delegate to the TagFactory
-     */
-    protected Tag createTag() throws JellyException {
-        if ( tagFactory != null) {
-            return tagFactory.createTag(localName, getSaxAttributes());
-        }
-        return null;
-    }
-
-	
-    /**
-     * Compiles a newly created tag if required, sets its parent and body.
-     */
-    protected void configureTag(Tag tag, JellyContext context) throws JellyException {
-        if (tag instanceof CompilableTag) {
-            ((CompilableTag) tag).compile();
-        }
-        Tag parentTag = null;
-        if ( parent != null ) {
-            parentTag = parent.getTag(context);
-        }
-        tag.setParent( parentTag );
-        tag.setBody( tagBody );
-
-        if (tag instanceof NamespaceAwareTag) {
-            NamespaceAwareTag naTag = (NamespaceAwareTag) tag;
-            naTag.setNamespaceContext(getNamespaceContext());
-        }
-        if (tag instanceof LocationAware) {
-            applyLocation((LocationAware) tag);
-        }
-    }
-
-
-    /**
-     * Allows the script to set the tag instance to be used, such as in a StaticTagScript
-     * when a StaticTag is switched with a DynamicTag
-     */
-    protected void setTag(Tag tag, JellyContext context) {
-        context.setThreadScriptData(this,tag);
-    }
-
-    /**
-     * Output the new namespace prefixes used for this element
-     */
-    protected void startNamespacePrefixes(XMLOutput output) throws SAXException {
-        if ( tagNamespacesMap != null ) {
-            for ( Iterator iter = tagNamespacesMap.entrySet().iterator(); iter.hasNext(); ) {
-                Map.Entry entry = (Map.Entry) iter.next();
-                String prefix = (String) entry.getKey();
-                String uri = (String) entry.getValue();
-                output.startPrefixMapping(prefix, uri);
-            }
-        }
-    }
-
-    /**
-     * End the new namespace prefixes mapped for the current element
-     */
-    protected void endNamespacePrefixes(XMLOutput output) throws SAXException {
-        if ( tagNamespacesMap != null ) {
-            for ( Iterator iter = tagNamespacesMap.keySet().iterator(); iter.hasNext(); ) {
-                String prefix = (String) iter.next();
-                output.endPrefixMapping(prefix);
-            }
-        }
-    }
-
-    /**
-     * Converts the given value to the required type.
-     *
-     * @param value is the value to be converted. This will not be null
-     * @param requiredType the type that the value should be converted to
-     */
-    protected Object convertType(Object value, Class requiredType)
-        throws JellyException {
-        if (requiredType.isInstance(value)) {
-            return value;
-        }
-        if (value instanceof String) {
-            return ConvertUtils.convert((String) value, requiredType);
-        }
-        return value;
-    }
-
-    /**
-     * Creates a new Jelly exception, adorning it with location information
-     */
-    protected JellyException createJellyException(String reason) {
-        return new JellyException(
-            reason, fileName, elementName, columnNumber, lineNumber
-        );
-    }
-
-    /**
-     * Creates a new Jelly exception, adorning it with location information
-     */
-    protected JellyException createJellyException(String reason, Exception cause) {
-        if (cause instanceof JellyException) {
-            return (JellyException) cause;
-        }
-
-        if (cause instanceof InvocationTargetException) {
-            return new JellyException(
-                reason,
-                ((InvocationTargetException) cause).getTargetException(),
-                fileName,
-                elementName,
-                columnNumber,
-                lineNumber);
-        }
-        return new JellyException(
-            reason, cause, fileName, elementName, columnNumber, lineNumber
-        );
-    }
-
-    /**
-     * A helper method to handle this Jelly exception.
-     * This method adorns the JellyException with location information
-     * such as adding line number information etc.
-     */
-    protected void handleException(JellyTagException e) throws JellyTagException {
-        if (log.isTraceEnabled()) {
-            log.trace( "Caught exception: " + e, e );
-        }
-
-        applyLocation(e);
-
-        throw e;
-    }
-
-    /**
-     * A helper method to handle this Jelly exception.
-     * This method adorns the JellyException with location information
-     * such as adding line number information etc.
-     */
-    protected void handleException(JellyException e) throws JellyTagException {
-        if (log.isTraceEnabled()) {
-            log.trace( "Caught exception: " + e, e );
-        }
-
-        applyLocation(e);
-
-        throw new JellyTagException(e);
-    }
-
-    protected void applyLocation(LocationAware locationAware) {
-        if (locationAware.getLineNumber() == -1) {
-            locationAware.setColumnNumber(columnNumber);
-            locationAware.setLineNumber(lineNumber);
-        }
-        if ( locationAware.getFileName() == null ) {
-            locationAware.setFileName( fileName );
-        }
-        if ( locationAware.getElementName() == null ) {
-            locationAware.setElementName( elementName );
-        }
-    }
-
-    /**
-     * A helper method to handle this non-Jelly exception.
-     * This method will rethrow the exception, wrapped in a JellyException
-     * while adding line number information etc.
-     */
-    protected void handleException(Exception e) throws JellyTagException {
-        if (log.isTraceEnabled()) {
-            log.trace( "Caught exception: " + e, e );
-        }
-
-        if (e instanceof LocationAware) {
-            applyLocation((LocationAware) e);
-        }
-
-        if ( e instanceof JellyException ) {
-            e.fillInStackTrace();
-        }
-
-        if ( e instanceof InvocationTargetException) {
-            throw new JellyTagException( ((InvocationTargetException)e).getTargetException(),
-                                      fileName,
-                                      elementName,
-                                      columnNumber,
-                                      lineNumber );
-        }
-
-        throw new JellyTagException(e, fileName, elementName, columnNumber, lineNumber);
-    }
-
-    /**
-     * A helper method to handle this non-Jelly exception.
-     * This method will rethrow the exception, wrapped in a JellyException
-     * while adding line number information etc.
-     *
-     * Is this method wise?
-     */
-    protected void handleException(Error e) throws Error, JellyTagException {
-        if (log.isTraceEnabled()) {
-            log.trace( "Caught exception: " + e, e );
-        }
-
-        if (e instanceof LocationAware) {
-            applyLocation((LocationAware) e);
-        }
-
-        throw new JellyTagException(e, fileName, elementName, columnNumber, lineNumber);
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/TextScript.java b/src/java/org/apache/commons/jelly/impl/TextScript.java
deleted file mode 100644
index 7f307d3..0000000
--- a/src/java/org/apache/commons/jelly/impl/TextScript.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-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: 1.17 $
-  */
-public class TextScript implements Script {
-
-    /** the text output by this script */
-    private String text;
-
-    public TextScript() {
-    }
-
-    public TextScript(String text) {
-        this.text = text;
-    }
-
-    public String toString() {
-        return super.toString() + "[text=" + text + "]";
-    }
-
-    /**
-     * Trims whitespace from the start and end of the text in this script
-     */
-    public void trimWhitespace() {
-        this.text = text.trim();
-    }
-
-    /**
-     * Trims whitespace from the start of the text
-     */
-    public void trimStartWhitespace() {
-        int index = 0;
-        for ( int length = text.length(); index < length; index++ ) {
-            char ch = text.charAt(index);
-            if (!Character.isWhitespace(ch)) {
-                break;
-            }
-        }
-        if ( index > 0 ) {
-            this.text = text.substring(index);
-        }
-    }
-
-    /**
-     * Trims whitespace from the end of the text
-     */
-    public void trimEndWhitespace() {
-        int index = text.length();
-        while (--index >= 0) {
-            char ch = text.charAt(index);
-            if (!Character.isWhitespace(ch)) {
-                break;
-            }
-        }
-        index++;
-        if ( index < text.length() ) {
-            this.text = text.substring(0,index);
-        }
-    }
-
-    /** @return the text output by this script */
-    public String getText() {
-        return text;
-    }
-
-    /** Sets the text output by this script */
-    public void setText(String text) {
-        this.text = text;
-    }
-
-    // Script interface
-    //-------------------------------------------------------------------------
-    public Script compile() {
-        return this;
-    }
-
-    /** Evaluates the body of a tag */
-    public void run(JellyContext context, XMLOutput output) throws JellyTagException {
-        if ( text != null ) {
-            try {
-              output.write(text);
-            } catch (SAXException e) {
-                throw new JellyTagException("could not write to XMLOutput",e);
-            }
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/impl/package.html b/src/java/org/apache/commons/jelly/impl/package.html
deleted file mode 100644
index 04afd2b..0000000
--- a/src/java/org/apache/commons/jelly/impl/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<html>
-<head>
-</head>
-<body>
-
-  <p>Core implementation classes for Jelly.
-  </p>
-
-</body>
-</html>
diff --git a/src/java/org/apache/commons/jelly/jelly.properties b/src/java/org/apache/commons/jelly/jelly.properties
deleted file mode 100644
index 3debc4e..0000000
--- a/src/java/org/apache/commons/jelly/jelly.properties
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# register the default tag libraries with an abbreviated name
-core        = org.apache.commons.jelly.tags.core.CoreTagLibrary
-
-# optional taglibs
-ant         = org.apache.commons.jelly.tags.ant.AntTagLibrary
-antlr       = org.apache.commons.jelly.tags.antlr.AntlrTagLibrary
-bean        = org.apache.commons.jelly.tags.bean.BeanTagLibrary
-beanshell   = org.apache.commons.jelly.tags.beanshell.BeanShellTagLibrary
-betwixt     = org.apache.commons.jelly.tags.betwixt.BetwixtTagLibrary
-bsf         = org.apache.commons.jelly.tags.bsf.BSFTagLibrary
-define      = org.apache.commons.jelly.tags.define.DefineTagLibrary
-dynabean    = org.apache.commons.jelly.tags.dynabean.DynabeanTagLibrary
-email       = org.apache.commons.jelly.tags.email.EmailTagLibrary
-fmt         = org.apache.commons.jelly.tags.fmt.FmtTagLibrary
-html        = org.apache.commons.jelly.tags.html.HTMLTagLibrary
-http        = org.apache.commons.jelly.tags.http.HttpTagLibrary
-interaction = org.apache.commons.jelly.tags.interaction.InteractionTagLibrary
-javascript  = org.apache.commons.jelly.tags.bsf.JavaScriptTagLibrary
-jface       = org.apache.commons.jelly.tags.jface.JFaceTagLibrary
-jetty       = org.apache.commons.jelly.tags.jetty.JettyTagLibrary
-jms         = org.apache.commons.jelly.tags.jms.JMSTagLibrary
-jmx         = org.apache.commons.jelly.tags.jmx.JMXTagLibrary
-jpython     = org.apache.commons.jelly.tags.bsf.JPythonTagLibrary
-jython      = org.apache.commons.jelly.tags.bsf.JythonTagLibrary
-jsl         = org.apache.commons.jelly.tags.jsl.JSLTagLibrary
-junit       = org.apache.commons.jelly.tags.junit.JUnitTagLibrary
-log         = org.apache.commons.jelly.tags.log.LogTagLibrary
-ojb         = org.apache.commons.jelly.tags.ojb.OjbTagLibrary
-pnuts       = org.apache.commons.jelly.tags.bsf.PNutsTagLibrary
-quartz      = org.apache.commons.jelly.tags.quartz.QuartzTagLibrary
-regexp      = org.apache.commons.jelly.tags.regexp.RegexpTagLibrary
-soap        = org.apache.commons.jelly.tags.soap.SoapTagLibrary
-sql         = org.apache.commons.jelly.tags.sql.SqlTagLibrary
-swing       = org.apache.commons.jelly.tags.swing.SwingTagLibrary
-swt         = org.apache.commons.jelly.tags.swt.SwtTagLibrary
-threads     = org.apache.commons.jelly.tags.threads.ThreadsTagLibrary
-util        = org.apache.commons.jelly.tags.util.UtilTagLibrary
-validate    = org.apache.commons.jelly.tags.validate.ValidateTagLibrary
-velocity    = org.apache.commons.jelly.tags.velocity.VelocityTagLibrary
-xml         = org.apache.commons.jelly.tags.xml.XMLTagLibrary
-xmlunit     = org.apache.commons.jelly.tags.xmlunit.XMLUnitTagLibrary
diff --git a/src/java/org/apache/commons/jelly/package.html b/src/java/org/apache/commons/jelly/package.html
deleted file mode 100644
index 618c1c4..0000000
--- a/src/java/org/apache/commons/jelly/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<html>
-<head>
-</head>
-<body>
-
-  <p>This package contains the main jelly API classes. Developers writing tags should use this package.
-  </p>
-</body>
-</html>
diff --git a/src/java/org/apache/commons/jelly/parser/DefaultNamespaceFilter.java b/src/java/org/apache/commons/jelly/parser/DefaultNamespaceFilter.java
deleted file mode 100644
index a7667e4..0000000
--- a/src/java/org/apache/commons/jelly/parser/DefaultNamespaceFilter.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.parser;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLFilterImpl;
-
-/**
- * XMLFilter that can provide a default namespace when
- * one has not been declared by the XML document.  Note:
- * this class does not address the namespace of attributes.
- *
- * @author Morgan Delagrange
- */
-public class DefaultNamespaceFilter extends XMLFilterImpl {
-
-    protected String uriDefault = null;
-
-    /**
-     * Filter for undefined an undefined namespace
-     *
-     * @param defaultNamespace
-     *               uri for the jelly namespace
-     * @param reader XMLReader to filter
-     */
-    public DefaultNamespaceFilter(String defaultNamespace, XMLReader reader) {
-        super(reader);
-        this.uriDefault = defaultNamespace;
-    }
-
-    /**
-     * All incoming empty URIs will be remapped to the default.
-     *
-     * @param prefix incoming prefix
-     * @param uri    URI to check and potentially replace
-     * @exception SAXException
-     */
-    public void startPrefixMapping(java.lang.String prefix,
-                                   java.lang.String uri)
-    throws SAXException {
-
-        if (uri.equals("")) {
-            super.startPrefixMapping(prefix,this.uriDefault);
-        } else {
-            super.startPrefixMapping(prefix,uri);
-        }
-    }
-
-    /**
-     * All incoming empty URIs will be remapped to the default.
-     *
-     * @param uri       URI to check and potentially replace
-     * @param localName
-     * @param qName
-     * @param atts
-     * @exception SAXException
-     */
-    public void startElement(java.lang.String uri,
-                             java.lang.String localName,
-                             java.lang.String qName,
-                             Attributes atts)
-    throws SAXException {
-
-        if (uri.equals("")) {
-            super.startElement(this.uriDefault,localName,qName,atts);
-        } else {
-            super.startElement(uri,localName,qName,atts);
-        }
-
-    }
-
-    /**
-     * All incoming empty URIs will be remapped to the default.
-     *
-     * @param namespaceURI
-     *                  URI to check and potentially replace
-     * @param localName
-     * @param qName
-     * @exception SAXException
-     */
-    public void endElement(String namespaceURI, String localName, String qName)
-    throws SAXException {
-        if (namespaceURI.equals("")) {
-            super.endElement(this.uriDefault,localName,qName);
-        } else {
-            super.endElement(namespaceURI,localName,qName);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/java/org/apache/commons/jelly/parser/XMLParser.java b/src/java/org/apache/commons/jelly/parser/XMLParser.java
deleted file mode 100644
index db2467d..0000000
--- a/src/java/org/apache/commons/jelly/parser/XMLParser.java
+++ /dev/null
@@ -1,1213 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.parser;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.Reader;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.EmptyStackException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.apache.commons.collections.ArrayStack;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.Tag;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.impl.CompositeTextScriptBlock;
-import org.apache.commons.jelly.impl.ExpressionScript;
-import org.apache.commons.jelly.impl.StaticTag;
-import org.apache.commons.jelly.impl.ScriptBlock;
-import org.apache.commons.jelly.impl.StaticTagScript;
-import org.apache.commons.jelly.impl.TagFactory;
-import org.apache.commons.jelly.impl.TagScript;
-import org.apache.commons.jelly.impl.TextScript;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.apache.commons.jelly.expression.CompositeExpression;
-import org.apache.commons.jelly.expression.ConstantExpression;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-import org.apache.commons.jelly.expression.jexl.JexlExpressionFactory;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.AttributesImpl;
-
-/** <p><code>XMLParser</code> parses the XML Jelly format.
- * The SAXParser and XMLReader portions of this code come from Digester.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.57 $
- */
-public class XMLParser extends DefaultHandler {
-
-    /**
-     * Share the Jelly properties across parsers
-     */
-    private static Properties jellyProperties;
-
-
-    /** JellyContext which is used to locate tag libraries*/
-    private JellyContext context = new JellyContext();
-
-    /** the expression factory used to evaluate tag attributes */
-    private ExpressionFactory expressionFactory;
-
-    /** The current script block */
-    private ScriptBlock script;
-
-    /** The current, parent tagScript */
-    private TagScript tagScript;
-
-    /** The stack of body scripts. */
-    private ArrayStack scriptStack = new ArrayStack();
-
-    /** The stack of tagScripts - use ArrayList as it allows null. */
-    private ArrayList tagScriptStack = new ArrayList();
-
-    /** The current text buffer where non-custom tags get written */
-    private StringBuffer textBuffer;
-
-    /**
-     * The class loader to use for instantiating application objects.
-     * If not specified, the context class loader, or the class loader
-     * used to load XMLParser itself, is used, based on the value of the
-     * <code>useContextClassLoader</code> variable.
-     */
-    protected ClassLoader classLoader = null;
-
-    /**
-     * Do we want to use the Context ClassLoader when loading classes
-     * for instantiating new objects?  Default is <code>false</code>.
-     */
-    protected boolean useContextClassLoader = false;
-
-    /**
-     * The application-supplied error handler that is notified when parsing
-     * warnings, errors, or fatal errors occur.
-     */
-    protected ErrorHandler errorHandler = null;
-
-    /**
-     * The SAXParserFactory that is created the first time we need it.
-     */
-    protected static SAXParserFactory factory = null;
-
-    /**
-     * The SAXParser we will use to parse the input stream.
-     */
-    protected SAXParser parser = null;
-
-    /**
-     * The XMLReader used to parse digester rules.
-     */
-    protected XMLReader reader = null;
-
-    /**
-     * The Locator associated with our parser.
-     */
-    protected Locator locator = null;
-
-    /**
-     * Registered namespaces we are currently processing.  The key is the
-     * namespace prefix that was declared in the document.  The value is an
-     * ArrayStack of the namespace URIs this prefix has been mapped to --
-     * the top Stack element is the most current one.  (This architecture
-     * is required because documents can declare nested uses of the same
-     * prefix for different Namespace URIs).
-     */
-    protected Map namespaces = new HashMap();
-
-    /** The Map of the namespace prefix -&gt; URIs defined for the current element */
-    private Map elementNamespaces;
-
-    /**
-     * The name of the file being parsed that is passed to the TagScript objects
-     * for error reporting
-     */
-    private String fileName;
-
-    /**
-     * Do we want to use a validating parser?
-     */
-    protected boolean validating = false;
-
-    /** Flag to indicate if this object has been configured */
-    private boolean configured;
-
-    /**
-     * when not null, set the default namespace for
-     * unprefixed elements via the DefaultNamespaceFilter
-     * class
-     */
-    private String defaultNamespaceURI = null;
-
-    /**
-     * The Log to which logging calls will be made.
-     */
-    private Log log = LogFactory.getLog(XMLParser.class);
-
-    /**
-     * Construct a new XMLParser with default properties.
-     */
-    public XMLParser() {
-    }
-
-    /**
-     * Construct a new XMLParser, allowing a SAXParser to be passed in.  This
-     * allows XMLParser to be used in environments which are unfriendly to
-     * JAXP1.1 (such as WebLogic 6.0).  Thanks for the request to change go to
-     * James House (james@interobjective.com).  This may help in places where
-     * you are able to load JAXP 1.1 classes yourself.
-     */
-    public XMLParser(SAXParser parser) {
-        this.parser = parser;
-    }
-
-    /**
-     * Construct a new XMLParser, allowing an XMLReader to be passed in.  This
-     * allows XMLParser to be used in environments which are unfriendly to
-     * JAXP1.1 (such as WebLogic 6.0).  Note that if you use this option you
-     * have to configure namespace and validation support yourself, as these
-     * properties only affect the SAXParser and emtpy constructor.
-     */
-    public XMLParser(XMLReader reader) {
-        this.reader = reader;
-    }
-
-    /**
-     * Parse the content of the specified file using this XMLParser.  Returns
-     * the root element from the object stack (if any).
-     *
-     * @param file File containing the XML data to be parsed
-     *
-     * @exception IOException if an input/output error occurs
-     * @exception SAXException if a parsing exception occurs
-     */
-    public Script parse(File file) throws IOException, SAXException {
-        return parse(file.toURL());
-    }
-
-    /**
-     * Parse the content of the specified file using this XMLParser.  Returns
-     * the root element from the object stack (if any).
-     *
-     * @param url URL containing the XML data to be parsed
-     *
-     * @exception IOException if an input/output error occurs
-     * @exception SAXException if a parsing exception occurs
-     */
-    public Script parse(URL url) throws IOException, SAXException {
-        ensureConfigured();
-        this.fileName = url.toString();
-
-        InputSource source = new InputSource(url.toString());
-
-        getXMLReader().parse(source);
-        return script;
-    }
-
-    /**
-     * Parse the content of the specified input source using this XMLParser.
-     * Returns the root element from the object stack (if any).
-     *
-     * @param input Input source containing the XML data to be parsed
-     *
-     * @exception IOException if an input/output error occurs
-     * @exception SAXException if a parsing exception occurs
-     */
-    public Script parse(InputSource input) throws IOException, SAXException {
-        ensureConfigured();
-        this.fileName = input.getSystemId();
-        getXMLReader().parse(input);
-        return script;
-    }
-
-    /**
-     * Parse the content of the specified input stream using this XMLParser.
-     * Returns the root element from the object stack (if any).
-     * (Note: if reading a File or URL, use one of the URL-based
-     * parse methods instead.  This method will not be able
-     * to resolve any relative paths inside a DTD.)
-     *
-     * @param input  Input stream containing the XML data to be parsed
-     * @return
-     * @exception IOException
-     *                   if an input/output error occurs
-     * @exception SAXException
-     *                   if a parsing exception occurs
-     */
-    public Script parse(InputStream input) throws IOException, SAXException {
-        ensureConfigured();
-        this.fileName = getCurrentURI();
-        getXMLReader().parse(new InputSource(input));
-        return script;
-    }
-
-    /**
-     * Parse the content of the specified reader using this XMLParser.
-     * Returns the root element from the object stack (if any).
-     * (Note: if reading a File or URL, use one of the URL-based
-     * parse methods instead.  This method will not be able
-     * to resolve any relative paths inside a DTD.)
-     *
-     * @param reader Reader containing the XML data to be parsed
-     * @return
-     * @exception IOException
-     *                   if an input/output error occurs
-     * @exception SAXException
-     *                   if a parsing exception occurs
-     */
-    public Script parse(Reader reader) throws IOException, SAXException {
-        ensureConfigured();
-        this.fileName = getCurrentURI();
-        getXMLReader().parse(new InputSource(reader));
-        return script;
-    }
-
-    /**
-     * Parse the content of the specified URI using this XMLParser.
-     * Returns the root element from the object stack (if any).
-     *
-     * @param uri URI containing the XML data to be parsed
-     *
-     * @exception IOException if an input/output error occurs
-     * @exception SAXException if a parsing exception occurs
-     */
-    public Script parse(String uri) throws IOException, SAXException {
-        ensureConfigured();
-        this.fileName = uri;
-        getXMLReader().parse(uri);
-        return script;
-    }
-
-    /**
-     * Return the currently mapped namespace URI for the specified prefix,
-     * if any; otherwise return <code>null</code>.  These mappings come and
-     * go dynamically as the document is parsed.
-     *
-     * @param prefix Prefix to look up
-     */
-    public String findNamespaceURI(String prefix) {
-        ArrayStack stack = (ArrayStack) namespaces.get(prefix);
-        if (stack == null) {
-            return (null);
-        }
-        try {
-            return ((String) stack.peek());
-        }
-        catch (EmptyStackException e) {
-            return (null);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public JellyContext getContext() {
-        return context;
-    }
-
-    public void setContext(JellyContext context) {
-        this.context = context;
-    }
-
-    /**
-     * Set the jelly namespace to use for unprefixed elements.
-     * Will be overridden by an explicit namespace in the
-     * XML document.
-     *
-     * @param namespace jelly namespace to use (e.g. 'jelly:core')
-     */
-    public void setDefaultNamespaceURI(String namespace) {
-        this.defaultNamespaceURI = namespace;
-    }
-
-    /**
-     * Return the class loader to be used for instantiating application objects
-     * when required.  This is determined based upon the following rules:
-     * <ul>
-     * <li>The class loader set by <code>setClassLoader()</code>, if any</li>
-     * <li>The thread context class loader, if it exists and the
-     *     <code>useContextClassLoader</code> property is set to true</li>
-     * <li>The class loader used to load the XMLParser class itself.
-     * </ul>
-     */
-    public ClassLoader getClassLoader() {
-        return ClassLoaderUtils.getClassLoader(classLoader, useContextClassLoader, getClass());
-    }
-
-    /**
-     * Set the class loader to be used for instantiating application objects
-     * when required.
-     *
-     * @param classLoader The new class loader to use, or <code>null</code>
-     *  to revert to the standard rules
-     */
-    public void setClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
-    /**
-     * Return the boolean as to whether the context classloader should be used.
-     */
-    public boolean getUseContextClassLoader() {
-        return useContextClassLoader;
-    }
-
-    /**
-     * Determine whether to use the Context ClassLoader (the one found by
-     * calling <code>Thread.currentThread().getContextClassLoader()</code>)
-     * to resolve/load classes.  If not
-     * using Context ClassLoader, then the class-loading defaults to
-     * using the calling-class' ClassLoader.
-     *
-     * @param use determines whether to use JellyContext ClassLoader.
-     */
-    public void setUseContextClassLoader(boolean use) {
-        useContextClassLoader = use;
-    }
-
-    /**
-     * Return the error handler for this XMLParser.
-     */
-    public ErrorHandler getErrorHandler() {
-        return (this.errorHandler);
-    }
-
-    /**
-     * Set the error handler for this XMLParser.
-     *
-     * @param errorHandler The new error handler
-     */
-    public void setErrorHandler(ErrorHandler errorHandler) {
-        this.errorHandler = errorHandler;
-    }
-
-    /**
-     * Return the current Logger associated with this instance of the XMLParser
-     */
-    public Log getLogger() {
-        return log;
-    }
-
-    /**
-     * Set the current logger for this XMLParser.
-     */
-    public void setLogger(Log log) {
-        this.log = log;
-    }
-
-    /** @return the expression factory used to evaluate tag attributes */
-    public ExpressionFactory getExpressionFactory() {
-        if (expressionFactory == null) {
-            expressionFactory = createExpressionFactory();
-        }
-        return expressionFactory;
-    }
-
-    /** Sets the expression factory used to evaluate tag attributes */
-    public void setExpressionFactory(ExpressionFactory expressionFactory) {
-        this.expressionFactory = expressionFactory;
-    }
-
-    /**
-     * Return the SAXParser we will use to parse the input stream.  If there
-     * is a problem creating the parser, return <code>null</code>.
-     */
-    public SAXParser getParser() {
-        // Return the parser we already created (if any)
-        if (parser != null) {
-            return (parser);
-        }
-        // Create and return a new parser
-        synchronized (this) {
-            try {
-                if (factory == null) {
-                    factory = SAXParserFactory.newInstance();
-                }
-                factory.setNamespaceAware(true);
-                factory.setValidating(validating);
-                parser = factory.newSAXParser();
-                return (parser);
-            }
-            catch (Exception e) {
-                log.error("XMLParser.getParser: ", e);
-                return (null);
-            }
-        }
-    }
-
-    /**
-     * By setting the reader in the constructor, you can bypass JAXP and
-     * be able to use digester in Weblogic 6.0.
-     *
-     * @deprecated Use getXMLReader() instead, which can throw a
-     *  SAXException if the reader cannot be instantiated
-     */
-    public XMLReader getReader() {
-        try {
-            return (getXMLReader());
-        }
-        catch (SAXException e) {
-            log.error("Cannot get XMLReader", e);
-            return (null);
-        }
-    }
-
-    /**
-     * Return the XMLReader to be used for parsing the input document.
-     *
-     * @exception SAXException if no XMLReader can be instantiated
-     */
-    public synchronized XMLReader getXMLReader() throws SAXException {
-        if (reader == null) {
-            reader = getParser().getXMLReader();
-            if (this.defaultNamespaceURI != null) {
-                reader = new DefaultNamespaceFilter(this.defaultNamespaceURI,reader);
-            }
-        }
-        //set up the parse
-        reader.setContentHandler(this);
-        reader.setDTDHandler(this);
-        //reader.setEntityResolver(this);
-        reader.setErrorHandler(this);
-
-        return reader;
-    }
-
-    /**
-     * Return the validating parser flag.
-     */
-    public boolean getValidating() {
-        return (this.validating);
-    }
-
-    /**
-     * Set the validating parser flag.  This must be called before
-     * <code>parse()</code> is called the first time.
-     *
-     * @param validating The new validating parser flag.
-     */
-    public void setValidating(boolean validating) {
-        this.validating = validating;
-    }
-
-
-    /**
-     * Returns the script that has just been created if this class is used
-     * as a SAX ContentHandler and passed into some XML processor or parser.
-     *
-     * @return the ScriptBlock created if SAX events are piped into this class,
-     * which must include a startDocument() and endDocument()
-     */
-    public ScriptBlock getScript() {
-        return script;
-    }
-
-
-    // ContentHandler interface
-    //-------------------------------------------------------------------------
-    /**
-     * Process notification of the beginning of the document being reached.
-     *
-     * @exception SAXException if a parsing error is to be reported
-     */
-    public void startDocument() throws SAXException {
-        script = new ScriptBlock();
-        textBuffer = new StringBuffer();
-        tagScript = null;
-        scriptStack.clear();
-        tagScriptStack.clear();
-    }
-
-    /**
-     * Process notification of the end of the document being reached.
-     *
-     * @exception SAXException if a parsing error is to be reported
-     */
-    public void endDocument() throws SAXException {
-        textBuffer = null;
-    }
-
-    /**
-     * Process notification of the start of an XML element being reached.
-     *
-     * @param namespaceURI The Namespace URI, or the empty string if the
-     *   element has no Namespace URI or if Namespace processing is not
-     *   being performed.
-     * @param localName The local name (without prefix), or the empty
-     *   string if Namespace processing is not being performed.
-     * @param qName The qualified name (with prefix), or the empty
-     *   string if qualified names are not available.\
-     * @param list The attributes attached to the element. If there are
-     *   no attributes, it shall be an empty Attributes object.
-     * @exception SAXException if a parsing error is to be reported
-     */
-    public void startElement(
-        String namespaceURI,
-        String localName,
-        String qName,
-        Attributes list)
-        throws SAXException {
-
-        try {
-            // add check to ensure namespace URI is "" for no namespace
-            if ( namespaceURI == null ) {
-                namespaceURI = "";
-            }
-
-            // if this is a tag then create a script to run it
-            // otherwise pass the text to the current body
-            TagScript newTagScript = createTag(namespaceURI, localName, list);
-            if (newTagScript == null) {
-                newTagScript = createStaticTag(namespaceURI, localName, qName, list);
-            }
-            tagScript = newTagScript;
-            tagScriptStack.add(tagScript);
-            if (tagScript != null) {
-                // set the line number details
-                if ( locator != null ) {
-                    tagScript.setLocator(locator);
-                }
-                // sets the file name element names
-                tagScript.setFileName(fileName);
-                tagScript.setElementName(qName);
-                tagScript.setLocalName(localName);
-
-                if (textBuffer.length() > 0) {
-                    addTextScript(textBuffer.toString());
-                    textBuffer.setLength(0);
-                }
-                script.addScript(tagScript);
-                // start a new body
-                scriptStack.push(script);
-                script = new ScriptBlock();
-                tagScript.setTagBody(script);
-            }
-            else {
-                // XXXX: might wanna handle empty elements later...
-                textBuffer.append("<");
-                textBuffer.append(qName);
-                int size = list.getLength();
-                for (int i = 0; i < size; i++) {
-                    textBuffer.append(" ");
-                    textBuffer.append(list.getQName(i));
-                    textBuffer.append("=");
-                    textBuffer.append("\"");
-                    textBuffer.append(list.getValue(i));
-                    textBuffer.append("\"");
-                }
-                textBuffer.append(">");
-            }
-        }
-        catch (SAXException e) {
-            throw e;
-        }
-        catch (Exception e) {
-            log.error( "Caught exception: " + e, e );
-            throw new SAXException( "Runtime Exception: " + e, e );
-        }
-    }
-
-    /**
-     * Process notification of character data received from the body of
-     * an XML element.
-     *
-     * @param buffer The characters from the XML document
-     * @param start Starting offset into the buffer
-     * @param length Number of characters from the buffer
-     *
-     * @exception SAXException if a parsing error is to be reported
-     */
-    public void characters(char buffer[], int start, int length)
-        throws SAXException {
-        textBuffer.append(buffer, start, length);
-    }
-
-    /**
-     * Process notification of the end of an XML element being reached.
-     *
-     * @param namespaceURI The Namespace URI, or the empty string if the
-     *   element has no Namespace URI or if Namespace processing is not
-     *   being performed.
-     * @param localName The local name (without prefix), or the empty
-     *   string if Namespace processing is not being performed.
-     * @param qName The qualified XML 1.0 name (with prefix), or the
-     *   empty string if qualified names are not available.
-     * @exception SAXException if a parsing error is to be reported
-     */
-    public void endElement(String namespaceURI, String localName, String qName)
-        throws SAXException {
-        try {
-            tagScript = (TagScript) tagScriptStack.remove(tagScriptStack.size() - 1);
-            if (tagScript != null) {
-                if (textBuffer.length() > 0) {
-                    addTextScript(textBuffer.toString());
-                    textBuffer.setLength(0);
-                }
-                script = (ScriptBlock) scriptStack.pop();
-            }
-            else {
-                textBuffer.append("</");
-                textBuffer.append(qName);
-                textBuffer.append(">");
-            }
-
-            // now lets set the parent tag variable
-            if ( tagScriptStack.isEmpty() ) {
-                tagScript = null;
-            }
-            else {
-                tagScript = (TagScript) tagScriptStack.get(tagScriptStack.size() - 1);
-            }
-        } catch (Exception e) {
-            log.error( "Caught exception: " + e, e );
-            throw new SAXException( "Runtime Exception: " + e, e );
-        }
-    }
-
-    /**
-     * Process notification that a namespace prefix is coming in to scope.
-     *
-     * @param prefix Prefix that is being declared
-     * @param namespaceURI Corresponding namespace URI being mapped to
-     *
-     * @exception SAXException if a parsing error is to be reported
-     */
-    public void startPrefixMapping(String prefix, String namespaceURI)
-        throws SAXException {
-        // Register this prefix mapping
-        ArrayStack stack = (ArrayStack) namespaces.get(prefix);
-        if (stack == null) {
-            stack = new ArrayStack();
-            namespaces.put(prefix, stack);
-        }
-        stack.push(namespaceURI);
-
-        if ( elementNamespaces == null ) {
-            elementNamespaces = new HashMap();
-        }
-        elementNamespaces.put(prefix, namespaceURI);
-    }
-
-    /**
-     * Process notification that a namespace prefix is going out of scope.
-     *
-     * @param prefix Prefix that is going out of scope
-     *
-     * @exception SAXException if a parsing error is to be reported
-     */
-    public void endPrefixMapping(String prefix) throws SAXException {
-        // Deregister this prefix mapping
-        ArrayStack stack = (ArrayStack) namespaces.get(prefix);
-        if (stack == null) {
-            return;
-        }
-        try {
-            stack.pop();
-            if (stack.empty()) {
-                namespaces.remove(prefix);
-            }
-        }
-        catch (EmptyStackException e) {
-            throw createSAXException("endPrefixMapping popped too many times");
-        }
-    }
-
-    /**
-     * Process notification of ignorable whitespace received from the body of
-     * an XML element.
-     *
-     * @param buffer The characters from the XML document
-     * @param start Starting offset into the buffer
-     * @param len Number of characters from the buffer
-     *
-     * @exception SAXException if a parsing error is to be reported
-     */
-    public void ignorableWhitespace(char buffer[], int start, int len)
-        throws SAXException {
-        ; // No processing required
-    }
-
-    /**
-     * Process notification of a processing instruction that was encountered.
-     *
-     * @param target The processing instruction target
-     * @param data The processing instruction data (if any)
-     *
-     * @exception SAXException if a parsing error is to be reported
-     */
-    public void processingInstruction(String target, String data)
-        throws SAXException {
-        ; // No processing is required
-    }
-
-    /**
-     * Set the document locator associated with our parser.
-     *
-     * @param locator The new locator
-     */
-    public void setDocumentLocator(Locator locator) {
-        this.locator = locator;
-    }
-
-    /**
-     * Process notification of a skipped entity.
-     *
-     * @param name Name of the skipped entity
-     *
-     * @exception SAXException if a parsing error is to be reported
-     */
-    public void skippedEntity(String name) throws SAXException {
-        ; // No processing required
-    }
-
-
-    // DTDHandler interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Receive notification of a notation declaration event.
-     *
-     * @param name The notation name
-     * @param publicId The public identifier (if any)
-     * @param systemId The system identifier (if any)
-     */
-    public void notationDecl(String name, String publicId, String systemId) {
-    }
-
-    /**
-     * Receive notification of an unparsed entity declaration event.
-     *
-     * @param name The unparsed entity name
-     * @param publicId The public identifier (if any)
-     * @param systemId The system identifier (if any)
-     * @param notation The name of the associated notation
-     */
-    public void unparsedEntityDecl(
-        String name,
-        String publicId,
-        String systemId,
-        String notation) {
-    }
-
-
-    // ErrorHandler interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Forward notification of a parsing error to the application supplied
-     * error handler, if any, otherwise throw a SAXException with the error.
-     *
-     * @param exception The error information
-     *
-     * @exception SAXException if a parsing exception occurs
-     */
-    public void error(SAXParseException exception) throws SAXException {
-        log.error(
-            "Parse Error at line "
-                + exception.getLineNumber()
-                + " column "
-                + exception.getColumnNumber()
-                + ": "
-                + exception.getMessage(),
-            exception);
-        if (errorHandler != null) {
-            errorHandler.error(exception);
-        } else {
-            throw exception;
-        }
-    }
-
-    /**
-     * Forward notification of a fatal parsing error to the application
-     * supplied error handler, if any, otherwise throw a SAXException with the error.
-     *
-     * @param exception The fatal error information
-     *
-     * @exception SAXException if a parsing exception occurs
-     */
-    public void fatalError(SAXParseException exception) throws SAXException {
-        log.error(
-            "Parse Fatal Error at line "
-                + exception.getLineNumber()
-                + " column "
-                + exception.getColumnNumber()
-                + ": "
-                + exception.getMessage(),
-            exception);
-        if (errorHandler != null) {
-            errorHandler.fatalError(exception);
-        } else {
-            throw exception;
-        }
-    }
-
-    /**
-     * Forward notification of a parse warning to the application supplied
-     * error handler (if any).  Unlike XMLParser.error(SAXParseException) and
-     * XMLParser.fatalError(SAXParseException), this implementation will
-     * NOT throw a SAXException by default if no error handler is supplied.
-     *
-     * @param exception The warning information
-     *
-     * @exception SAXException if a parsing exception occurs
-     */
-    public void warning(SAXParseException exception) throws SAXException {
-        log.error(
-            "Parse Warning at line "
-                + exception.getLineNumber()
-                + " column "
-                + exception.getColumnNumber()
-                + ": "
-                + exception.getMessage(),
-            exception);
-        if (errorHandler != null) {
-            errorHandler.warning(exception);
-        }
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    /**
-     * If this object has not been configured then register the default
-     * namespaces
-     */
-    private void ensureConfigured() {
-        if (!configured) {
-            configure();
-            configured = true;
-        }
-    }
-
-    /**
-     * This method is called only once before parsing occurs
-     * which allows tag libraries to be registered and so forth
-     */
-    protected void configure() {
-        // load the properties file of libraries available
-        Properties properties = getJellyProperties();
-        for (Iterator iter = properties.entrySet().iterator(); iter.hasNext();) {
-            Map.Entry entry = (Map.Entry) iter.next();
-            String uri = (String) entry.getKey();
-            String className = (String) entry.getValue();
-            String libraryURI = "jelly:" + uri;
-
-            // don't overload any Mock Tags already
-            if ( ! context.isTagLibraryRegistered(libraryURI) ) {
-                context.registerTagLibrary(libraryURI, className);
-            }
-        }
-    }
-
-
-    /**
-     * A helper method which loads the static Jelly properties once on startup
-     */
-    protected synchronized Properties getJellyProperties() {
-        if (jellyProperties == null) {
-            jellyProperties = new Properties();
-
-            InputStream in = null;
-            URL url =
-                getClassLoader().getResource("org/apache/commons/jelly/jelly.properties");
-            if (url != null) {
-                log.debug("Loading Jelly default tag libraries from: " + url);
-                try {
-                    in = url.openStream();
-                    jellyProperties .load(in);
-                }
-                catch (IOException e) {
-                    log.error("Could not load jelly properties from: " + url + ". Reason: " + e, e);
-                }
-                finally {
-                    try {
-                        in.close();
-                    }
-                    catch (Exception e) {
-                        if (log.isDebugEnabled()) log.debug("error closing jelly.properties", e);
-                    }
-                }
-            }
-        }
-        return jellyProperties;
-    }
-
-    /**
-     * Factory method to create new Tag script for the given namespaceURI and name or
-     * return null if this is not a custom Tag.
-     */
-    protected TagScript createTag(
-        String namespaceURI,
-        String localName,
-        Attributes list)
-        throws SAXException {
-        try {
-            // use the URI to load a taglib
-            TagLibrary taglib = context.getTagLibrary(namespaceURI);
-            if (taglib == null) {
-                if (namespaceURI != null && namespaceURI.startsWith("jelly:")) {
-                    String uri = namespaceURI.substring(6);
-                    // try to find the class on the claspath
-                    try {
-                        Class taglibClass = getClassLoader().loadClass(uri);
-                        taglib = (TagLibrary) taglibClass.newInstance();
-                        context.registerTagLibrary(namespaceURI, taglib);
-                    }
-                    catch (ClassNotFoundException e) {
-                        throw createSAXException("Could not load class: " + uri + " so taglib instantiation failed", e);
-                    }
-                    catch (IllegalAccessException e) {
-                        throw createSAXException("Constructor for class is not accessible: " + uri + " so taglib instantiation failed",e);
-                    }
-                    catch (InstantiationException e) {
-                        throw createSAXException("Class could not be instantiated: " + uri + " so taglib instantiation failed",e);
-                    }
-                    catch (ClassCastException e) {
-                        throw createSAXException("Class is not a TagLibrary: " + uri + " so taglib instantiation failed",e);
-                    }
-                }
-            }
-            if (taglib != null) {
-                TagScript script = taglib.createTagScript(localName, list);
-                if ( script != null ) {
-                    configureTagScript(script);
-
-                    // clone the attributes to keep them around after this parse
-                    script.setSaxAttributes(new AttributesImpl(list));
-
-                    // now iterate through through the expressions
-                    int size = list.getLength();
-                    for (int i = 0; i < size; i++) {
-                        String attributeName = list.getLocalName(i);
-                        String attributeValue = list.getValue(i);
-                        Expression expression =
-                            taglib.createExpression(
-                                getExpressionFactory(),
-                                script,
-                                attributeName,
-                                attributeValue);
-                        if (expression == null) {
-                            expression = createConstantExpression(localName, attributeName, attributeValue);
-                        }
-                        script.addAttribute(attributeName, expression);
-                    }
-                }
-                return script;
-            }
-            return null;
-        }
-        catch (Exception e) {
-            log.warn(
-                "Could not create taglib or URI: " + namespaceURI + " tag name: " + localName,
-                e);
-            throw createSAXException(e);
-        }
-    }
-
-
-    /**
-     * Factory method to create a static Tag that represents some static content.
-     */
-    protected TagScript createStaticTag(
-        final String namespaceURI,
-        final String localName,
-        final String qName,
-        Attributes list)
-        throws SAXException {
-        try {
-            StaticTag tag = new StaticTag( namespaceURI, localName, qName );
-            StaticTagScript script = new StaticTagScript(
-                new TagFactory() {
-                    public Tag createTag(String name, Attributes attributes) {
-                        return new StaticTag( namespaceURI, localName, qName );
-                    }
-                }
-            );
-            configureTagScript(script);
-
-            // now iterate through through the expressions
-            int size = list.getLength();
-            for (int i = 0; i < size; i++) {
-                String attributeValue = list.getValue(i);
-                Expression expression = CompositeExpression.parse(
-                        attributeValue, getExpressionFactory()
-                    );
-                String attrQName = list.getQName(i);
-                script.addAttribute(attrQName, expression);
-            }
-            return script;
-        }
-        catch (Exception e) {
-            log.warn(
-                "Could not create static tag for URI: "
-                    + namespaceURI
-                    + " tag name: "
-                    + localName,
-                e);
-            throw createSAXException(e);
-        }
-    }
-
-
-    /**
-     * Configure a newly created TagScript instance before any Expressions are created
-     *
-     * @param aTagScript
-     */
-    protected void configureTagScript(TagScript aTagScript) {
-        // set parent relationship...
-        aTagScript.setParent(this.tagScript);
-
-        // set the namespace Map
-        if ( elementNamespaces != null ) {
-            aTagScript.setTagNamespacesMap( elementNamespaces );
-            elementNamespaces = null;
-        }
-    }
-
-    /**
-     * Adds the text to the current script block parsing any embedded
-     * expressions inot ExpressionScript objects.
-     */
-    protected void addTextScript(String text) throws JellyException {
-        Expression expression =
-            CompositeExpression.parse(text, getExpressionFactory());
-
-        addExpressionScript(script, expression);
-    }
-
-
-    /**
-     * Adds the given Expression object to the current Script.
-     */
-    protected void addExpressionScript(ScriptBlock script, Expression expression) {
-        if ( expression instanceof ConstantExpression ) {
-            ConstantExpression constantExpression
-                = (ConstantExpression) expression;
-            Object value = constantExpression.getValue();
-            if ( value != null ) {
-                script.addScript(new TextScript( value.toString() ));
-            }
-        }
-        else
-        if ( expression instanceof CompositeExpression ) {
-            CompositeTextScriptBlock newBlock = new CompositeTextScriptBlock();
-            script.addScript(newBlock);
-
-            CompositeExpression compositeExpression
-                = (CompositeExpression) expression;
-            Iterator iter = compositeExpression.getExpressions().iterator();
-            while (iter.hasNext()) {
-                addExpressionScript( newBlock, (Expression) iter.next() );
-            }
-        }
-        else {
-            script.addScript(new ExpressionScript(expression));
-        }
-    }
-
-    protected Expression createConstantExpression(
-        String tagName,
-        String attributeName,
-        String attributeValue)  {
-        return new ConstantExpression(attributeValue);
-    }
-
-    protected ExpressionFactory createExpressionFactory() {
-        return new JexlExpressionFactory();
-    }
-
-    /**
-     * @return the current context URI as a String or null if there is no
-     * current context defined on the JellyContext
-     */
-    protected String getCurrentURI() {
-        URL url = this.getContext().getCurrentURL();
-        return (url != null) ? url.toString() : null;
-    }
-
-    /**
-     * Create a SAX exception which also understands about the location in
-     * the file where the exception occurs
-     *
-     * @return the new exception
-     */
-    protected SAXException createSAXException(String message, Exception e) {
-        log.warn("Underlying exception: " + e);
-        e.printStackTrace();
-        if (locator != null) {
-            String error =
-                "Error at ("
-                    + locator.getLineNumber()
-                    + ", "
-                    + locator.getColumnNumber()
-                    + "): "
-                    + message;
-            if (e != null) {
-                return new SAXParseException(error, locator, e);
-            }
-            else {
-                return new SAXParseException(error, locator);
-            }
-        }
-        log.error("No Locator!");
-        if (e != null) {
-            return new SAXException(message, e);
-        }
-        else {
-            return new SAXException(message);
-        }
-    }
-
-    /**
-     * Create a SAX exception which also understands about the location in
-     * the digester file where the exception occurs
-     *
-     * @return the new exception
-     */
-    protected SAXException createSAXException(Exception e) {
-        return createSAXException(e.getMessage(), e);
-    }
-    /**
-     * Create a SAX exception which also understands about the location in
-     * the digester file where the exception occurs
-     *
-     * @return the new exception
-     */
-    protected SAXException createSAXException(String message) {
-        return createSAXException(message, null);
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/parser/package.html b/src/java/org/apache/commons/jelly/parser/package.html
deleted file mode 100644
index 6c4be07..0000000
--- a/src/java/org/apache/commons/jelly/parser/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>Jelly parsers both XML syntax and non-XML syntaxes are supported.
-  </p>
-
-</body>
-</html>
diff --git a/src/java/org/apache/commons/jelly/servlet/JellyServlet.java b/src/java/org/apache/commons/jelly/servlet/JellyServlet.java
deleted file mode 100644
index 8510940..0000000
--- a/src/java/org/apache/commons/jelly/servlet/JellyServlet.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.servlet;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Servlet for handling display of Jelly-fied XML files. Modelled after VelocityServlet.
- *
- * @author Kelvin Tan
- * @version $Revision: 1.7 $
- */
-public class JellyServlet extends HttpServlet {
-    /**
-     * The HTTP request object context key.
-     */
-    public static final String REQUEST = "request";
-
-    /**
-     * The HTTP response object context key.
-     */
-    public static final String RESPONSE = "response";
-
-    protected void doGet(
-        HttpServletRequest request,
-        HttpServletResponse response)
-        throws ServletException, IOException {
-
-        doRequest(request, response);
-    }
-
-    protected void doPost(
-        HttpServletRequest request,
-        HttpServletResponse response)
-        throws ServletException, IOException {
-
-        doRequest(request, response);
-    }
-
-    /**
-     * Handles all requests
-     * @param req HttpServletRequest object containing client request
-     * @param res HttpServletResponse object for the response
-     * @throws ServletException
-     * @throws IOException
-     */
-    protected void doRequest(HttpServletRequest req, HttpServletResponse res)
-        throws ServletException, IOException {
-
-        JellyContext context = createContext(req, res);
-        try {
-            URL script = getScript(req);
-            runScript(script, context, req, res);
-        }
-        catch (Exception e) {
-            error(req, res, e);
-        }
-    }
-
-    /**
-     * @see org.apache.velocity.servlet.VelocityServlet#createContext
-     * @param req
-     * @param res
-     * @return
-     */
-    protected JellyContext createContext(
-        HttpServletRequest req,
-        HttpServletResponse res) {
-
-        JellyContext ctx = new JellyServletContext(getServletContext());
-        ctx.setVariable(REQUEST, req);
-        ctx.setVariable(RESPONSE, res);
-        return ctx;
-    }
-
-    /**
-     * <p>
-     * Either use the query parameter "script", or the URI itself
-     * to denote the script to run.
-     * </p>
-     * <p>
-     * Example: script=index.jelly or http://localhost:8080/foo/index.jelly.
-     * </p>
-     *
-     * @see org.apache.velocity.servlet.VelocityServlet#getTemplate
-     * @param req
-     * @return
-     * @throws MalformedURLException
-     */
-    protected URL getScript(HttpServletRequest req)
-        throws MalformedURLException {
-
-        String scriptUrl = req.getParameter("script");
-        if (scriptUrl == null) {
-            scriptUrl = req.getPathInfo();
-        }
-        URL url = getServletContext().getResource(scriptUrl);
-        if (url == null) {
-            throw new IllegalArgumentException("Invalid script url:" + scriptUrl);
-        }
-        return url;
-    }
-
-    /**
-     * @see org.apache.velocity.servlet.VelocityServlet#mergeTemplate
-     * @param script
-     * @param context
-     * @param req
-     * @param res
-     * @throws IOException
-     * @throws UnsupportedEncodingException
-     * @throws JellyException
-     */
-    protected void runScript(
-        URL script,
-        JellyContext context,
-        HttpServletRequest req,
-        HttpServletResponse res)
-        throws IOException, UnsupportedEncodingException, JellyException {
-
-        ServletOutputStream output = res.getOutputStream();
-        XMLOutput xmlOutput = XMLOutput.createXMLOutput(output);
-        context.runScript(script, xmlOutput);
-        xmlOutput.flush();
-        xmlOutput.close();
-        output.flush();
-    }
-
-    /**
-     * Invoked when there is an error thrown in any part of doRequest() processing.
-     * <br><br>
-     * Default will send a simple HTML response indicating there was a problem.
-     *<br><br>
-     * Ripped from VelocityServlet.
-     *
-     * @param request original HttpServletRequest from servlet container.
-     * @param response HttpServletResponse object from servlet container.
-     * @param cause  Exception that was thrown by some other part of process.
-     */
-    protected void error(
-        HttpServletRequest request,
-        HttpServletResponse response,
-        Exception cause)
-        throws ServletException, IOException {
-
-        StringBuffer html = new StringBuffer();
-        html.append("<html>");
-        html.append("<title>Error</title>");
-        html.append("<body bgcolor=\"#ffffff\">");
-        html.append("<h2>JellyServlet : Error processing the script</h2>");
-        html.append("<pre>");
-        String why = cause.getMessage();
-        if (why != null && why.trim().length() > 0) {
-            html.append(why);
-            html.append("<br>");
-        }
-
-        StringWriter sw = new StringWriter();
-        cause.printStackTrace(new PrintWriter(sw));
-
-        html.append(sw.toString());
-        html.append("</pre>");
-        html.append("</body>");
-        html.append("</html>");
-        response.getOutputStream().print(html.toString());
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/servlet/JellyServletContext.java b/src/java/org/apache/commons/jelly/servlet/JellyServletContext.java
deleted file mode 100644
index e10beb9..0000000
--- a/src/java/org/apache/commons/jelly/servlet/JellyServletContext.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.servlet;
-
-import org.apache.commons.jelly.JellyContext;
-
-import javax.servlet.ServletContext;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-/**
- *
- * @author <a href="mailto:kelvint@apache.org">Kelvin Tan</a>
- * @version 1.1
- */
-public class JellyServletContext extends JellyContext {
-
-    private ServletContext ctx;
-
-    public JellyServletContext() {
-    }
-
-    public JellyServletContext(ServletContext ctx) {
-        super();
-        this.ctx = ctx;
-    }
-
-    public JellyServletContext(JellyContext parent, ServletContext ctx) {
-        super(parent);
-        this.ctx = ctx;
-    }
-
-    /**
-     * Allow access of relative URIs when performing &lt;j:include&gt;.
-     * @param s
-     * @return
-     * @throws MalformedURLException
-     */
-    public URL getResource(String s) throws MalformedURLException {
-        return ctx.getResource(s);
-    }
-
-    /**
-     * Allow access of relative URIs when performing &lt;j:include&gt;.
-     * @param s
-     * @return
-     */
-    public InputStream getResourceAsStream(String s) {
-        return ctx.getResourceAsStream(s);
-    }
-
-    protected JellyContext createChildContext()
-    {
-        return new JellyServletContext(this, ctx);
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/servlet/package.html b/src/java/org/apache/commons/jelly/servlet/package.html
deleted file mode 100644
index b1ba98c..0000000
--- a/src/java/org/apache/commons/jelly/servlet/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>Classes for using Jelly on the Servlet platform.
-  </p>
-
-</body>
-</html>
diff --git a/src/java/org/apache/commons/jelly/tags/Resources.java b/src/java/org/apache/commons/jelly/tags/Resources.java
deleted file mode 100644
index d77369f..0000000
--- a/src/java/org/apache/commons/jelly/tags/Resources.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags;
-
-import java.util.*;
-import java.text.*;
-
-/**
- * <p>Provides locale-neutral access to string resources.  Only the
- * documentation and code are in English. :-)
- *
- * <p>The major goal, aside from globalization, is convenience.
- * Access to resources with no parameters is made in the form:</p>
- * <pre>
- *     Resources.getMessage(MESSAGE_NAME);
- * </pre>
- *
- * <p>Access to resources with one parameter works like</p>
- * <pre>
- *     Resources.getMessage(MESSAGE_NAME, arg1);
- * </pre>
- *
- * <p>... and so on.</p>
- *
- * @author Shawn Bayern
- */
-public class Resources {
-
-    //*********************************************************************
-    // Static data
-
-    /** The location of our resources. */
-    private static final String RESOURCE_LOCATION
-    = "org.apache.commons.jelly.tags.Resources";
-
-    /** Our class-wide ResourceBundle. */
-    private static ResourceBundle rb =
-    ResourceBundle.getBundle(RESOURCE_LOCATION);
-
-
-    //*********************************************************************
-    // Public static methods
-
-    /** Retrieves a message with no arguments. */
-    public static String getMessage(String name)
-        throws MissingResourceException {
-    return rb.getString(name);
-    }
-
-    /** Retrieves a message with arbitrarily many arguments. */
-    public static String getMessage(String name, Object[] a)
-        throws MissingResourceException {
-    String res = rb.getString(name);
-    return MessageFormat.format(res, a);
-    }
-
-    /** Retrieves a message with one argument. */
-    public static String getMessage(String name, Object a1)
-        throws MissingResourceException {
-    return getMessage(name, new Object[] { a1 });
-    }
-
-    /** Retrieves a message with two arguments. */
-    public static String getMessage(String name, Object a1, Object a2)
-        throws MissingResourceException {
-    return getMessage(name, new Object[] { a1, a2 });
-    }
-
-    /** Retrieves a message with three arguments. */
-    public static String getMessage(String name,
-                    Object a1,
-                    Object a2,
-                    Object a3)
-        throws MissingResourceException {
-    return getMessage(name, new Object[] { a1, a2, a3 });
-    }
-
-    /** Retrieves a message with four arguments. */
-    public static String getMessage(String name,
-                    Object a1,
-                    Object a2,
-                    Object a3,
-                    Object a4)
-        throws MissingResourceException {
-    return getMessage(name, new Object[] { a1, a2, a3, a4 });
-    }
-
-    /** Retrieves a message with five arguments. */
-    public static String getMessage(String name,
-                    Object a1,
-                    Object a2,
-                    Object a3,
-                    Object a4,
-                    Object a5)
-        throws MissingResourceException {
-    return getMessage(name, new Object[] { a1, a2, a3, a4, a5 });
-    }
-
-    /** Retrieves a message with six arguments. */
-    public static String getMessage(String name,
-                    Object a1,
-                    Object a2,
-                    Object a3,
-                    Object a4,
-                    Object a5,
-                    Object a6)
-        throws MissingResourceException {
-    return getMessage(name, new Object[] { a1, a2, a3, a4, a5, a6 });
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/tags/Resources.properties b/src/java/org/apache/commons/jelly/tags/Resources.properties
deleted file mode 100644
index f7d5e65..0000000
--- a/src/java/org/apache/commons/jelly/tags/Resources.properties
+++ /dev/null
@@ -1,314 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-#########################################################################
-# Conventions:
-# - For error messages from particular tags, the resource should
-#     - (a) have a name beginning with TAGNAME_
-#     - (b) contain the name of the tag within the message
-# - Generic tag messages -- i.e., those used in more than one tag --
-#   should begin with TAG_
-# - Errors for TagLibraryValidators should begin with TLV_
-#########################################################################
-
-
-#########################################################################
-# Generic tag error messages
-#########################################################################
-
-TAG_NULL_ATTRIBUTE=\
-    The "{0}" attribute illegally evaluated to "null" or "" in &lt;{1}&gt;
-
-#########################################################################
-# Specific tag error messages
-#########################################################################
-
-# CORE
-
-CHOOSE_EXCLUSIVITY=\
-    Only one &lt;choose&gt; subtag may evaluate its body
-
-EXPR_BAD_VALUE=\
-    In &lt;expr&gt;, attribute value="{0}" didn't evaluate successfully, \
-    but there was no "default" attribute and no non-whitespace content \
-    for the tag.
-
-FOREACH_STEP_NO_RESULTSET=\
-    Step cannot be > 1 when iterating over a ResultSet with &lt;forEach&gt;
-
-FOREACH_BAD_ITEMS=\
-    Don't know how to iterate over supplied "items" in &lt;forEach&gt;
-
-IMPORT_BAD_RELATIVE=\
-    In URL tags, when the "context" attribute is specified, \
-    values of both "context" and "url" must start with "/".
-
-IMPORT_REL_WITHOUT_HTTP=\
-    Relative &lt;import&gt; from non-HTTP request not allowed
-    
-IMPORT_REL_WITHOUT_DISPATCHER=\
-    Unable to get RequestDispatcher for Context: "{0}" and URL: "{1}". \
-    Verify values and/or enable cross context access.
-
-IMPORT_IO=\
-    I/O error in &lt;import&gt; occurred reading "{0}"
-
-IMPORT_ILLEGAL_STREAM=\
-    Unexpected internal error during &lt;import&gt: \
-    Target servlet called getWriter(), then getOutputStream()
-
-IMPORT_ILLEGAL_WRITER=\
-    Unexpected internal error during &lt;import&gt: \
-    Target servlet called getOutputStream(), then getWriter()
-
-#IMPORT_ILLEGAL_GETSTRING=\
-#    Unexpected internal error during &lt;import&gt: \
-#    Target servlet called neither getOutputStream() nor getWriter()
-
-PARAM_OUTSIDE_PARENT=\
-    &lt;param&gt; outside &lt;import&gt; or &lt;urlEncode&gt;
-
-PARAM_ENCODE_BOOLEAN=\
-    In &lt;param&gt;, "encode" must be "true" or "false".  Got "{0}" instead.
-
-SET_BAD_SCOPE=\
-    Invalid "scope" attribute for &lt;set&gt;:  "{0}"
-
-SET_INVALID_PROPERTY=\
-    Invalid property in &lt;set&gt;:  "{0}"
-
-SET_INVALID_TARGET=\
-    Attempt to set the property of an invalid object in &lt;set&gt;.
-
-SET_NO_VALUE=\
-    Need either non-whitespace body or "value" attribute in &lt;set&gt;
-
-URLENCODE_NO_VALUE=\
-    Need either non-whitespace body or "value" attribute in &lt;urlEncode&gt;
-
-WHEN_OUTSIDE_CHOOSE=\
-    Illegal use of &lt;when&gt;-style tag without &lt;choose&gt; as its \
-    direct parent
-
-# I18N
-
-LOCALE_NO_LANGUAGE=\
-    Missing language component in 'value' attribute in &lt;setLocale&gt; 
-
-LOCALE_EMPTY_COUNTRY=\
-    Empty country component in 'value' attribute in &lt;setLocale&gt;
-
-PARAM_OUTSIDE_MESSAGE=\
-    &lt;param&gt; outside &lt;message&gt;
-
-MESSAGE_NO_KEY=\
-    &lt;message&gt; needs 'key' attribute or non-whitespace body
-
-FORMAT_NUMBER_INVALID_TYPE=\
-    In &lt;formatNumber&gt;, invalid 'type' attribute: "{0}"
-
-FORMAT_NUMBER_NO_VALUE=\
-    &lt;formatNumber&gt; needs 'value' attribute or non-whitespace body
-
-FORMAT_NUMBER_PARSE_ERROR=\
-    In &lt;formatNumber&gt;, 'value' attribute can not be parsed into java.lang.Number: "{0}"
-
-FORMAT_NUMBER_CURRENCY_ERROR=\
-    In &lt;formatNumber&gt;, unable to set currency
-
-PARSE_NUMBER_INVALID_TYPE=\
-    In &lt;parseNumber&gt;, invalid 'type' attribute: "{0}"
-
-PARSE_NUMBER_NO_VALUE=\
-    &lt;parseNumber&gt; needs 'value' attribute or non-whitespace body
-
-PARSE_NUMBER_NO_PARSE_LOCALE=\
-    In &lt;parseNumber&gt;, a parse locale can not be established
-
-PARSE_NUMBER_PARSE_ERROR=\
-    In &lt;parseNumber&gt;, 'value' attribute can not be parsed: "{0}"
-
-FORMAT_DATE_INVALID_TYPE=\
-    In &lt;formatDate&gt;, invalid 'type' attribute: "{0}"
-
-FORMAT_DATE_BAD_TIMEZONE=\
-    In &lt;formatDate&gt;, 'timeZone' must be an instance of java.lang.String or java.util.TimeZone
-
-FORMAT_DATE_INVALID_DATE_STYLE=\
-    In &lt;formatDate&gt;, invalid 'dateStyle' attribute: "{0}"
-
-FORMAT_DATE_INVALID_TIME_STYLE=\
-    In &lt;formatDate&gt;, invalid 'timeStyle' attribute: "{0}"
-
-PARSE_DATE_INVALID_TYPE=\
-    In &lt;parseDate&gt;, invalid 'type' attribute: "{0}"
-
-PARSE_DATE_BAD_TIMEZONE=\
-    In &lt;parseDate&gt;, 'timeZone' must be an instance of java.lang.String or java.util.TimeZone
-
-PARSE_DATE_INVALID_DATE_STYLE=\
-    In &lt;parseDate&gt;, invalid 'dateStyle' attribute: "{0}"
-
-PARSE_DATE_INVALID_TIME_STYLE=\
-    In &lt;parseDate&gt;, invalid 'timeStyle' attribute: "{0}"
-
-PARSE_DATE_NO_VALUE=\
-    &lt;parseDate&gt; needs 'value' attribute or non-whitespace body
-
-PARSE_DATE_PARSE_ERROR=\
-    In &lt;parseDate&gt;, 'value' attribute can not be parsed: "{0}"
-
-PARSE_DATE_NO_PARSE_LOCALE=\
-    In &lt;parseDate&gt;, a parse locale can not be established
-
-UNDEFINED_KEY=\
-    Undefined key "{0}" in resource bundle "{1}"
-
-MISSING_RESOURCE_BUNDLE=\
-    Resource bundle with base name "{0}" not found
-
-# SQL
-
-DRIVER_INVALID_CLASS=\
-    In &lt;driver&gt;, invalid driver class name: "{0}"
-
-DATASOURCE_INVALID=\
-    Unable to get connection, DataSource invalid: "{0}"
- 
-JDBC_PARAM_COUNT=\
-    Invalid number of JDBC parameters specified.
-
-PARAM_BAD_VALUE=\
-    Invalid or out of bounds value specified in parameter.
- 
-TRANSACTION_NO_SUPPORT=\
-    In &lt;transaction&gt;, datasource does not support transactions
-
-TRANSACTION_COMMIT_ERROR=\
-    In &lt;transaction&gt;, error committing transaction: "{0}"
-
-TRANSACTION_INVALID_ISOLATION=\
-    In &lt;transaction&gt;, invalid transaction isolation
-
-NOT_SUPPORTED=\
-    Not supported
-
-ERROR_GET_CONNECTION=\
-    Error getting connection: "{0}"
-
-ERROR_NESTED_DATASOURCE=\
-    It is illegal to specify a DataSource when nested within a &lt;transaction&gt;
-
-SQL_PARAM_OUTSIDE_PARENT=\
-    &lt;param&gt; or &lt;dateParam&gt; must be subtag of SQLExecutionTag actions like &lt;query&gt; or &lt;update&gt;
-
-SQL_NO_STATEMENT=\
-    No SQL statement specified
-
-SQL_PROCESS_ERROR=\
-    Error processing SQL: "{0}"
-
-SQL_DATASOURCE_INVALID_TYPE=\
-    'dataSource' is neither a String nor a javax.sql.DataSource
-
-SQL_DATASOURCE_NULL=\
-    'dataSource' is null
-
-SQL_MAXROWS_PARSE_ERROR=\
-    Error parsing 'javax.servlet.jsp.jstl.sql.maxRows' configuration setting: "{0}"
-
-SQL_MAXROWS_INVALID=\
-    'javax.servlet.jsp.jstl.sql.maxRows' configuration setting neither an Integer nor a String
-
-SQL_DATE_PARAM_INVALID_TYPE=\
-    In &lt;dateParam&gt;, invalid 'type' attribute: "{0}"
-
-# XML
-
-FOREACH_NOT_NODESET=\
-    &lt;forEach&gt; can't iterate over XPath expressions that don't return a node-set
-
-PARAM_NO_VALUE=\
-    &lt;param&gt; needs 'value' attribute or non-whitespace body
-
-PARAM_OUTSIDE_TRANSFORM=\
-    &lt;param&gt; outside &lt;transform&gt;
-
-PARSE_INVALID_SOURCE=\
-    Unrecognized object supplied as 'xmlText' attribute to &lt;parse&gt;
-
-PARSE_NO_SAXTRANSFORMER=\
-    Filter supplied to &lt;parse&gt;, but default TransformerFactory \
-    does not support SAX.
-
-TRANSFORM_NO_TRANSFORMER=\
-    &lt;transform&gt; needs either an 'xslt' attribute or a \
-    'transformer' attribute
-
-TRANSFORM_SOURCE_INVALID_LIST=\
-    &lt;transform&gt; encountered an invalid java.util.List while processing 'xmlText' attribute.  This error is typically caused if you pass a node-set with more than one node to &lt;transform&gt;'s 'xmlText' attribute.
-
-TRANSFORM_SOURCE_UNRECOGNIZED=\
-    &lt;transform&gt; encountered an unknown type while processing 'xmlText' attribute
-
-UNABLE_TO_RESOLVE_ENTITY=\
-    Could not resolve entity reference: "{0}"
-
-#########################################################################
-# JSTL core TLV messages
-#########################################################################
-
-# Parameters 
-
-TLV_PARAMETER_ERROR=\
-    Invalid value for "{0}" validator parameter in TLD
-
-# Generic errors
-
-TLV_ILLEGAL_BODY=\
-    Encountered illegal body of tag "{0}" tag, given its attributes.
-
-TLV_MISSING_BODY=\
-    A body is necessary inside the "{0}" tag, given its attributes.
-
-TLV_ILLEGAL_CHILD_TAG=\
-    Illegal child tag in "{0}:{1}" tag: "{2}" tag
-
-TLV_ILLEGAL_TEXT_BODY=\
-    Illegal text inside "{0}:{1}" tag: "{2}...".
-
-TLV_INVALID_ATTRIBUTE=\
-    Invalid "{0}" attribute in "{1}" tag: "{2}"
-
-TLV_ILLEGAL_ORPHAN=\
-    Invalid use of "{0}" tag outside legitimate parent tag
-
-TLV_PARENT_WITHOUT_SUBTAG=\
-    Illegal "{0}" without child "{1}" tag
-
-# Errors customized to particular tags (sort of)  :-)
-
-TLV_ILLEGAL_ORDER=\
-    Illegal "{0}" after "{1}:{2}" tag in "{1}:{3}" tag.
-
-TLV_ILLEGAL_PARAM=\
-    Illegal "{0}:{1}" tag within "{0}:{2} {3}='...'" tag
-
-TLV_DANGLING_SCOPE=\
-    Illegal 'scope' attribute without 'var' in "{0}" tag.
-
-TLV_EMPTY_VAR=\
-    Empty 'var' attribute in "{0}" tag.
diff --git a/src/java/org/apache/commons/jelly/tags/core/ArgTag.java b/src/java/org/apache/commons/jelly/tags/core/ArgTag.java
deleted file mode 100644
index 1a32be7..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/ArgTag.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.beanutils.ConversionException;
-import org.apache.commons.beanutils.Converter;
-import org.apache.commons.beanutils.converters.BooleanConverter;
-import org.apache.commons.beanutils.converters.ByteConverter;
-import org.apache.commons.beanutils.converters.CharacterConverter;
-import org.apache.commons.beanutils.converters.DoubleConverter;
-import org.apache.commons.beanutils.converters.FloatConverter;
-import org.apache.commons.beanutils.converters.IntegerConverter;
-import org.apache.commons.beanutils.converters.LongConverter;
-import org.apache.commons.beanutils.converters.ShortConverter;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * An argument to a {@link NewTag} or {@link InvokeTag}.
- * This tag MUST be enclosed within an {@link ArgTagParent}
- * implementation.
- *
- * @author Rodney Waldhoff
- * @version $Revision: 1.9 $
- */
-public class ArgTag extends BaseClassLoaderTag {
-
-    // constructors
-    //-------------------------------------------------------------------------
-
-    public ArgTag() {
-    }
-
-    // attribute setters
-    //-------------------------------------------------------------------------
-
-    /**
-     * The name of the argument class or type, if any.
-     * This may be a fully specified class name or
-     * a primitive type name
-     * (<code>boolean<code>, <code>int</code>, <code>double</code>, etc.).
-     */
-    public void setType(String type) {
-        this.typeString = type;
-    }
-
-    /** The (possibly null) value of this argument. */
-    public void setValue(Object value) {
-        this.value= value;
-    }
-
-    // tag methods
-    //-------------------------------------------------------------------------
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-        invokeBody(output);
-
-        Class klass = null;
-        if("boolean".equals(typeString)) {
-            klass = Boolean.TYPE;
-            assertNotNull(value);
-        } else if("byte".equals(typeString)) {
-            klass = Byte.TYPE;
-            assertNotNull(value);
-        } else if("short".equals(typeString)) {
-            klass = Short.TYPE;
-            assertNotNull(value);
-        } else if("int".equals(typeString)) {
-            klass = Integer.TYPE;
-            assertNotNull(value);
-        } else if("char".equals(typeString)) {
-            klass = Character.TYPE;
-            assertNotNull(value);
-        } else if("float".equals(typeString)) {
-            klass = Float.TYPE;
-            assertNotNull(value);
-        } else if("long".equals(typeString)) {
-            klass = Long.TYPE;
-            assertNotNull(value);
-        } else if("double".equals(typeString)) {
-            klass = Double.TYPE;
-            assertNotNull(value);
-        } else if(null != typeString) {
-            try {
-              klass = getClassLoader().loadClass(typeString);
-            } catch (ClassNotFoundException e) {
-                throw new JellyTagException(e);
-            }
-        } else if(null == value) { // and (by construction) null == typeString
-            klass = Object.class;
-        } else {
-            klass = value.getClass();
-        }
-
-        if(!isInstanceOf(klass,value)) {
-            if (klass.equals(Class.class))
-            {
-                try {
-                    value = getClassLoader().loadClass((String) value);
-                } catch (ClassNotFoundException e) {
-                    throw new JellyTagException(e);
-                }
-            }
-            else
-            {
-                value = convert(klass,value);
-            }
-        }
-
-        ArgTagParent parent = (ArgTagParent)findAncestorWithClass(ArgTagParent.class);
-        if(null == parent) {
-            throw new JellyTagException("This tag must be enclosed inside an ArgTagParent implementation (for example, <new> or <invoke>)" );
-        } else {
-            parent.addArgument(klass,value);
-        }
-    }
-
-    // private methods
-    //-------------------------------------------------------------------------
-
-    private void assertNotNull(Object value) throws JellyTagException {
-        if(null == value) {
-            throw new JellyTagException("A " + typeString + " instance cannot be null.");
-        }
-    }
-
-    private boolean isInstanceOf(Class klass, Object value) {
-        return (null == value || (klass.isInstance(value)));
-    }
-
-    // attributes
-    //-------------------------------------------------------------------------
-
-    /** The name of the parameter type, if any. */
-    private String typeString;
-
-    /** The value of the parameter, if any */
-    private Object value;
-
-    // static stuff
-    //-------------------------------------------------------------------------
-
-    private static Object convert(Class klass, Object value) throws JellyTagException {
-        if(null == value) {
-            return null;
-        } else if(!klass.isInstance(value)) {
-            Converter converter = (Converter)(converterMap.get(klass));
-            if(null == converter) {
-                throw new JellyTagException("Can't convert " + value + " to " + klass);
-            } else {
-                try {
-                    return converter.convert(klass,value);
-                } catch(ConversionException e) {
-                    throw new JellyTagException("Can't convert " + value + " to " + klass + " (" + e.toString() + ")",e);
-                }
-            }
-        } else {
-            return value;
-        }
-
-    }
-
-    /** My bag of converters, by target Class */
-    private static Map converterMap = new HashMap();
-    // these inner classes should probably move to beanutils
-    static {
-        {
-            Converter c = new BooleanConverter();
-            converterMap.put(Boolean.TYPE,c);
-            converterMap.put(Boolean.class,c);
-        }
-        {
-            Converter c = new CharacterConverter();
-            converterMap.put(Character.TYPE,c);
-            converterMap.put(Character.class,c);
-        }
-        {
-            Converter c = new Converter() {
-                public Object convert(Class klass, Object value) {
-                    if(value instanceof Number) {
-                        return new Byte(((Number)value).byteValue());
-                    } else {
-                        return inner.convert(klass,value);
-                    }
-                }
-                private Converter inner = new ByteConverter();
-            };
-            converterMap.put(Byte.TYPE,c);
-            converterMap.put(Byte.class,c);
-        }
-        {
-            Converter c = new Converter() {
-                public Object convert(Class klass, Object value) {
-                    if(value instanceof Number) {
-                        return new Short(((Number)value).shortValue());
-                    } else {
-                        return inner.convert(klass,value);
-                    }
-                }
-                private Converter inner = new ShortConverter();
-            };
-            converterMap.put(Short.TYPE,c);
-            converterMap.put(Short.class,c);
-        }
-        {
-            Converter c = new Converter() {
-                public Object convert(Class klass, Object value) {
-                    if(value instanceof Number) {
-                        return new Integer(((Number)value).intValue());
-                    } else {
-                        return inner.convert(klass,value);
-                    }
-                }
-                private Converter inner = new IntegerConverter();
-            };
-            converterMap.put(Integer.TYPE,c);
-            converterMap.put(Integer.class,c);
-        }
-        {
-            Converter c = new Converter() {
-                public Object convert(Class klass, Object value) {
-                    if(value instanceof Number) {
-                        return new Long(((Number)value).longValue());
-                    } else {
-                        return inner.convert(klass,value);
-                    }
-                }
-                private Converter inner = new LongConverter();
-            };
-            converterMap.put(Long.TYPE,c);
-            converterMap.put(Long.class,c);
-        }
-        {
-            Converter c = new Converter() {
-                public Object convert(Class klass, Object value) {
-                    if(value instanceof Number) {
-                        return new Float(((Number)value).floatValue());
-                    } else {
-                        return inner.convert(klass,value);
-                    }
-                }
-                private Converter inner = new FloatConverter();
-            };
-            converterMap.put(Float.TYPE,c);
-            converterMap.put(Float.class,c);
-        }
-        {
-            Converter c = new Converter() {
-                public Object convert(Class klass, Object value) {
-                    if(value instanceof Number) {
-                        return new Double(((Number)value).doubleValue());
-                    } else {
-                        return inner.convert(klass,value);
-                    }
-                }
-                private Converter inner = new DoubleConverter();
-            };
-            converterMap.put(Double.TYPE,c);
-            converterMap.put(Double.class,c);
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/ArgTagParent.java b/src/java/org/apache/commons/jelly/tags/core/ArgTagParent.java
deleted file mode 100644
index 2d66d42..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/ArgTagParent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-/** Interface for classes that support {@link ArgTag} children.
-  * @author Rodney Waldhoff
-  * @version $Revision: 1.4 $
-  */
-public interface ArgTagParent {
-    public void addArgument(Class type, Object value);
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/BaseClassLoaderTag.java b/src/java/org/apache/commons/jelly/tags/core/BaseClassLoaderTag.java
deleted file mode 100644
index a050f0a..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/BaseClassLoaderTag.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-
-/** Abstract base tag providing {@link ClassLoader} support.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @author Rodney Waldhoff
-  * @version $Revision: 1.5 $
-  */
-public abstract class BaseClassLoaderTag extends TagSupport {
-    /**
-     * The class loader to use for instantiating application objects.
-     * If not specified, the context class loader, or the class loader
-     * used to load XMLParser itself, is used, based on the value of the
-     * <code>useContextClassLoader</code> variable.
-     */
-    protected ClassLoader classLoader = null;
-
-    /**
-     * Do we want to use the Context ClassLoader when loading classes
-     * for instantiating new objects?  Default is <code>false</code>.
-     */
-    protected boolean useContextClassLoader = false;
-
-    /**
-     * Return the class loader to be used for instantiating application objects
-     * when required.  This is determined based upon the following rules:
-     * <ul>
-     * <li>The class loader set by <code>setClassLoader()</code>, if any</li>
-     * <li>The thread context class loader, if it exists and the
-     *     <code>useContextClassLoader</code> property is set to true</li>
-     * <li>The class loader used to load the XMLParser class itself.
-     * </ul>
-     */
-    public ClassLoader getClassLoader() {
-        return ClassLoaderUtils.getClassLoader(classLoader, useContextClassLoader, getClass());
-    }
-
-    /**
-     * Set the class loader to be used for instantiating application objects
-     * when required.
-     *
-     * @param classLoader The new class loader to use, or <code>null</code>
-     *  to revert to the standard rules
-     */
-    public void setClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
-    /**
-     * Return the boolean as to whether the context classloader should be used.
-     */
-    public boolean getUseContextClassLoader() {
-        return useContextClassLoader;
-    }
-
-    /**
-     * Determine whether to use the Context ClassLoader (the one found by
-     * calling <code>Thread.currentThread().getContextClassLoader()</code>)
-     * to resolve/load classes.  If not
-     * using Context ClassLoader, then the class-loading defaults to
-     * using the calling-class' ClassLoader.
-     *
-     * @param boolean determines whether to use JellyContext ClassLoader.
-     */
-    public void setUseContextClassLoader(boolean use) {
-        useContextClassLoader = use;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/BreakTag.java b/src/java/org/apache/commons/jelly/tags/core/BreakTag.java
deleted file mode 100644
index 769ab8b..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/BreakTag.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.BreakException;
-import org.apache.commons.jelly.expression.Expression;
-
-/**
- * A tag which terminates the execution of the current &lt;forEach&gt; or &lg;while&gt;
- * loop. This tag can take an optional boolean test attribute which if its true
- * then the break occurs otherwise the loop continues processing.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.9 $
- */
-public class BreakTag extends TagSupport {
-
-    /** The expression to evaluate. */
-    private Expression test;
-
-    /**
-     * If specified, the given variable will hold a true/false value
-     * indicating if the loop was broken.
-     */
-    private String var;
-
-    public BreakTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws BreakException {
-        boolean broken = false;
-        if (test == null || test.evaluateAsBoolean(context)) {
-            broken = true;
-        }
-        if ( var != null ) {
-            context.setVariable( this.var, String.valueOf(broken));
-        }
-        if ( broken ) {
-            throw new BreakException();
-        }
-    }
-
-    /**
-     * Sets the Jelly expression to evaluate (optional).
-     * If this is <code>null</code> or evaluates to
-     * <code>true</code> then the loop is terminated
-     *
-     * @param test the Jelly expression to evaluate
-     */
-    public void setTest(Expression test) {
-        this.test = test;
-    }
-
-    /**
-     * Sets the variable name to export indicating if the item was broken
-     * @param var name of the variable to be exported
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/CaseTag.java b/src/java/org/apache/commons/jelly/tags/core/CaseTag.java
deleted file mode 100644
index 4fed972..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/CaseTag.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-/**
- * A tag which conditionally evaluates its body if
- * my {@link #setValue value} attribute equals my ancestor
- * {@link SwitchTag &lt;switch&gt;} tag's
- * {@link SwitchTag#setOn "on"} attribute.
- *
- * This tag must be contained within the body of some
- * {@link SwitchTag &lt;switch&gt;} tag.
- *
- * @see SwitchTag
- *
- * @author Rodney Waldhoff
- * @version $Revision: 1.8 $ $Date: 2004/09/09 12:27:53 $
- */
-public class CaseTag extends TagSupport {
-
-    public CaseTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void setValue(Expression value) {
-        this.valueExpression = value;
-    }
-
-    public void setFallThru(boolean fallThru) {
-        this.fallThru = fallThru;
-    }
-
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if(null == this.valueExpression) {
-            throw new MissingAttributeException("value");
-        }
-        SwitchTag tag = (SwitchTag)findAncestorWithClass(SwitchTag.class);
-        if(null == tag) {
-            throw new JellyTagException("This tag must be enclosed inside a <switch> tag" );
-        }
-        if(tag.hasDefaultBeenEncountered()) {
-            throw new JellyTagException("<default> should be the last tag within a <switch>" );
-        }
-        Object value = valueExpression.evaluate(context);
-        if(tag.isFallingThru() ||
-           (null == tag.getValue() && null == value) ||
-           (null != tag.getValue() && tag.getValue().equals(value))) {
-            tag.caseMatched();
-            tag.setFallingThru(fallThru);
-            invokeBody(output);
-        }
-    }
-
-    // Attributes
-    //-------------------------------------------------------------------------
-    private Expression valueExpression = null;
-    private boolean fallThru = false;
-
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/CatchTag.java b/src/java/org/apache/commons/jelly/tags/core/CatchTag.java
deleted file mode 100644
index bdc94bb..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/CatchTag.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag which catches exceptions thrown by its body.
- * This allows conditional logic to be performed based on if exceptions
- * are thrown or to do some kind of custom exception logging logic.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class CatchTag extends TagSupport {
-
-    private String var;
-
-    public CatchTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if (var != null) {
-            context.removeVariable(var);
-        }
-        try {
-            invokeBody(output);
-        }
-        catch (Throwable t) {
-            if (var != null) {
-                context.setVariable(var, t);
-            }
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of the variable which is exposed with the Exception that gets
-     * thrown by evaluating the body of this tag or which is set to null if there is
-     * no exception thrown.
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/ChooseTag.java b/src/java/org/apache/commons/jelly/tags/core/ChooseTag.java
deleted file mode 100644
index 809a718..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/ChooseTag.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/** A tag which conditionally evaluates its body based on some condition
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.12 $
-  */
-public class ChooseTag extends TagSupport {
-
-    private boolean blockEvaluated;
-
-    public ChooseTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        setBlockEvaluated(false);
-        invokeBody(output);
-    }
-
-    protected boolean isBlockEvaluated() {
-        return blockEvaluated;
-    }
-
-    protected void setBlockEvaluated(boolean blockEvaluated) {
-        this.blockEvaluated = blockEvaluated;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/CoreTagLibrary.java b/src/java/org/apache/commons/jelly/tags/core/CoreTagLibrary.java
deleted file mode 100644
index 8c10525..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/CoreTagLibrary.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/**
-  * This is the core tag library for jelly and contains commonly
-  * used tags.
-  * This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.33 $
-  */
-public class CoreTagLibrary extends TagLibrary {
-
-    public CoreTagLibrary() {
-        registerTag("jelly", JellyTag.class);
-
-        // core tags
-        registerTag("out", ExprTag.class);
-        registerTag("catch", CatchTag.class);
-        registerTag("forEach", ForEachTag.class);
-        registerTag("set", SetTag.class);
-        registerTag("remove", RemoveTag.class);
-        registerTag("while", WhileTag.class);
-
-        // conditional tags
-        registerTag("if", IfTag.class);
-        registerTag("choose", ChooseTag.class);
-        registerTag("when", WhenTag.class);
-        registerTag("otherwise", OtherwiseTag.class);
-        registerTag("switch", SwitchTag.class);
-        registerTag("case", CaseTag.class);
-        registerTag("default", DefaultTag.class);
-
-        // other tags
-        registerTag("include", IncludeTag.class);
-        registerTag("import", ImportTag.class);
-        registerTag("mute", MuteTag.class);
-
-        // extensions to JSTL
-        registerTag("arg", ArgTag.class);
-        registerTag("break", BreakTag.class);
-        registerTag("expr", ExprTag.class);
-        registerTag("file", FileTag.class);
-        registerTag("getStatic", GetStaticTag.class);
-        registerTag("invoke", InvokeTag.class);
-        registerTag("invokeStatic", InvokeStaticTag.class);
-        registerTag("new", NewTag.class);
-        registerTag("parse", ParseTag.class);
-        registerTag("scope", ScopeTag.class);
-        registerTag("setProperties", SetPropertiesTag.class);
-        registerTag("thread", ThreadTag.class);
-        registerTag("useBean", UseBeanTag.class);
-        registerTag("useList", UseListTag.class);
-        registerTag("whitespace", WhitespaceTag.class);
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/DefaultTag.java b/src/java/org/apache/commons/jelly/tags/core/DefaultTag.java
deleted file mode 100644
index 6e8a099..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/DefaultTag.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-
-/**
- * A tag which conditionally evaluates its body if
- * none of its preceeding sibling {@link CaseTag &lt;case&gt;}
- * tags have been evaluated.
- *
- * This tag must be contained within the body of some
- * {@link SwitchTag &lt;switch&gt;} tag.
- *
- * @see SwitchTag
- *
- * @author Rodney Waldhoff
- * @version $Revision: 1.8 $ $Date: 2004/09/09 12:27:53 $
- */
-public class DefaultTag extends TagSupport {
-
-    public DefaultTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    public void setFallThru(boolean fallThru) {
-        this.fallThru = fallThru;
-    }
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-        SwitchTag tag = (SwitchTag)findAncestorWithClass(SwitchTag.class);
-        if(null == tag) {
-            throw new JellyTagException("This tag must be enclosed inside a <switch> tag" );
-        }
-        if(tag.hasDefaultBeenEncountered()) {
-            throw new JellyTagException("Only one <default> tag is allowed per <switch>.");
-        }
-        tag.defaultEncountered();
-        if(tag.isFallingThru() || (!tag.hasSomeCaseMatched())) {
-            tag.caseMatched();
-            tag.setFallingThru(fallThru);
-            invokeBody(output);
-        }
-    }
-
-    // Attributes
-    //-------------------------------------------------------------------------
-    private boolean fallThru = false;
-
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/ExprTag.java b/src/java/org/apache/commons/jelly/tags/core/ExprTag.java
deleted file mode 100644
index 9c8c4ff..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/ExprTag.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-import org.xml.sax.SAXException;
-
-/** A tag which evaluates an expression
-  *
-  * @tag out
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.16 $
-  */
-public class ExprTag extends TagSupport {
-
-    /** The expression to evaluate. */
-    private Expression value;
-
-    public ExprTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if (value != null) {
-            String text = value.evaluateAsString(context);
-            if (text != null) {
-
-                try {
-                    output.write(text);
-                }
-                catch (SAXException e) {
-                    throw new JellyTagException("could not write the XMLOutput",e);
-                }
-            }
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the Jexl expression to evaluate.
-     *
-     * @required true
-     */
-    public void setValue(Expression value) {
-        this.value = value;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/FileTag.java b/src/java/org/apache/commons/jelly/tags/core/FileTag.java
deleted file mode 100644
index aa390a4..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/FileTag.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.SafeContentHandler;
-import org.dom4j.io.HTMLWriter;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
-import org.xml.sax.SAXException;
-
-/**
- * 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.
- *
- * @author <a href="mailto:vinayc@apache.org">Vinay Chandran</a>
- */
-public class FileTag extends TagSupport {
-    private boolean doAppend = false;
-    private String var;
-    private String name;
-    private boolean omitXmlDeclaration = false;
-    private String outputMode = "xml";
-    private boolean prettyPrint;
-    private String encoding;
-
-    public FileTag(){
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        try {
-            if ( name != null ) {
-                String encoding = (this.encoding != null) ? this.encoding : "UTF-8";
-                Writer writer = new OutputStreamWriter( new FileOutputStream( name, doAppend ), encoding );
-                writeBody(writer);
-            }
-            else if (var != null) {
-                StringWriter writer = new StringWriter();
-                writeBody(writer);
-                context.setVariable(var, writer.toString());
-            }
-            else {
-                throw new JellyTagException( "This tag must have either the 'name' or the 'var' variables defined" );
-            }
-        } catch (FileNotFoundException e) {
-            throw new JellyTagException(e);
-        } catch (UnsupportedEncodingException e) {
-            throw new JellyTagException(e);
-        } catch (SAXException e) {
-            throw new JellyTagException("could not write file",e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the file name for the output
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Sets whether the XML declaration should be output or not
-     */
-    public void setOmitXmlDeclaration(boolean omitXmlDeclaration) {
-        this.omitXmlDeclaration = omitXmlDeclaration;
-    }
-
-
-    /**
-     * Sets the output mode, whether XML or HTML
-     */
-    public void setOutputMode(String outputMode) {
-        this.outputMode = outputMode;
-    }
-
-    /**
-     * Sets whether pretty printing mode is turned on. The default is off so that whitespace is preserved
-     */
-    public void setPrettyPrint(boolean prettyPrint) {
-        this.prettyPrint = prettyPrint;
-    }
-
-    /**
-     * Sets the XML encoding mode, which defaults to UTF-8
-     */
-    public void setEncoding(String encoding) {
-        this.encoding = encoding;
-    }
-    
-    /**
-     * Sets wether to append at the end of the file
-     * (not really something you normally do with an XML file).
-     */
-    public void setAppend(boolean doAppend) {
-        this.doAppend = doAppend;
-    }
-    
-
-    /**
-     * Returns the var.
-     * @return String
-     */
-    public String getVar() {
-        return var;
-    }
-
-    /**
-     * Sets the var.
-     * @param var The var to set
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Writes the body fo this tag to the given Writer
-     */
-    protected void writeBody(Writer writer) throws SAXException, JellyTagException {
-
-        XMLOutput newOutput = createXMLOutput(writer);
-        try {
-            // we need to avoid multiple start/end document events
-            newOutput.setContentHandler(
-                new SafeContentHandler(newOutput.getContentHandler())
-            );
-            newOutput.startDocument();
-            invokeBody(newOutput);
-            newOutput.endDocument();
-        }
-        finally {
-            try { newOutput.close(); } catch (IOException e) {}
-        }
-    }
-
-    /**
-     * A Factory method to create a new XMLOutput from the given Writer.
-     */
-    protected XMLOutput createXMLOutput(Writer writer) {
-
-        OutputFormat format = null;
-        if (prettyPrint) {
-            format = OutputFormat.createPrettyPrint();
-        }
-        else {
-            format = new OutputFormat();
-        }
-        if ( encoding != null ) {
-            format.setEncoding( encoding );
-        }
-        if ( omitXmlDeclaration ) {
-            format.setSuppressDeclaration(true);
-        }
-
-        boolean isHtml = outputMode != null && outputMode.equalsIgnoreCase( "html" );
-        final XMLWriter xmlWriter = (isHtml)
-            ? new HTMLWriter(writer, format)
-            : new XMLWriter(writer, format);
-
-        xmlWriter.setEscapeText(isEscapeText());
-
-        XMLOutput answer = new XMLOutput() {
-            public void close() throws IOException {
-                xmlWriter.close();
-            }
-        };
-        answer.setContentHandler(xmlWriter);
-        answer.setLexicalHandler(xmlWriter);
-        return answer;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/ForEachTag.java b/src/java/org/apache/commons/jelly/tags/core/ForEachTag.java
deleted file mode 100644
index 87e6fb9..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/ForEachTag.java
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.core;
-
-import java.util.Iterator;
-
-import javax.servlet.jsp.jstl.core.LoopTagStatus;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.impl.BreakException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
-  * Iterates over a collection, iterator or an array of objects.
-  * Uses the same syntax as the <a href="http://java.sun.com/products/jsp/jstl/">JSTL</a>
-  * <code>forEach</code> tag does.
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.29 $
-  */
-public class ForEachTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ForEachTag.class);
-
-    /** Holds the variable name to export for the item being iterated over. */
-    private Expression items;
-
-    /**
-     * If specified then the current item iterated through will be defined
-     * as the given variable name.
-     */
-    private String var;
-
-    /**
-     * If specified then the current index counter will be defined
-     * as the given variable name.
-     */
-    private String indexVar;
-    
-    /** variable to hold loop status */
-    private String statusVar;
-
-    /** The starting index value */
-    private int begin;
-
-    /** The ending index value */
-    private int end = Integer.MAX_VALUE;
-
-    /** The index increment step */
-    private int step = 1;
-
-    /** The iteration index */
-    private int index;
-
-    public ForEachTag() {
-    }
-
-    // Tag interface
-
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-
-        if (log.isDebugEnabled()) {
-            log.debug("running with items: " + items);
-        }
-
-        try {
-            if (items != null) {
-                Iterator iter = items.evaluateAsIterator(context);
-             
-                if (log.isDebugEnabled()) {
-                    log.debug("Iterating through: " + iter);
-                }
-
-                // ignore the first items of the iterator
-                for (index = 0; index < begin && iter.hasNext(); index++ ) {
-                    iter.next();
-                }
-                
-                // set up the status
-                LoopStatus status = null;
-                if (statusVar != null)
-                {
-                    // set up statii as required by JSTL
-                    Integer statusBegin = (begin == 0) ? null : new Integer(begin);
-                    Integer statusEnd = (end == Integer.MAX_VALUE) ? null : new Integer(end);
-                    Integer statusStep = (step == 1) ? null : new Integer(step);
-                    status = new LoopStatus(statusBegin, statusEnd, statusStep);
-                    context.setVariable(statusVar, status);
-                }
-
-                boolean firstTime = true;
-                int count = 0;
-                while (iter.hasNext() && index <= end) {
-                    Object value = iter.next();
-                    if (var != null) {
-                        context.setVariable(var, value);
-                    }
-                    if (indexVar != null) {
-                        context.setVariable(indexVar, new Integer(index));
-                    }
-                    // set the status var up
-                    if (statusVar != null) {
-                        count++;
-                        status.setCount(count);
-                        status.setCurrent(value);
-                        status.setFirst(firstTime);
-                        status.setIndex(index);
-                        // set first time up for the next iteration.
-                        if (firstTime) {
-                            firstTime = !firstTime;
-                        }
-                    }
-                    // now we need to work out the next index for status isLast
-                    // and also advance the iterator and index for the loop.
-                    boolean finished = false;
-                    index++;
-                    for ( int i = 1; i < step && !finished; i++, index++ ) {
-                        if ( ! iter.hasNext() ) {
-                           finished = true;
-                        }
-                        else {
-                            iter.next();
-                        }
-                    }
-
-                    if (statusVar != null) {
-                        status.setLast(finished || !iter.hasNext() || index > end);
-                    }
-                    invokeBody(output);
-
-                }
-            }
-            else {
-                if ( end == Integer.MAX_VALUE && begin == 0 ) {
-                    throw new MissingAttributeException( "items" );
-                }
-                else {
-                    String varName = var;
-                    if ( varName == null ) {
-                        varName = indexVar;
-                    }
-                    // set up the status
-                    LoopStatus status = null;
-                    if (statusVar != null)
-                    {
-                        // set up statii as required by JSTL
-                        Integer statusBegin = new Integer(begin);
-                        Integer statusEnd = new Integer(end);
-                        Integer statusStep = new Integer(step);
-                        status = new LoopStatus(statusBegin, statusEnd, statusStep);
-                        context.setVariable(statusVar, status);
-                    }
-
-                    int count = 0;
-                    for (index = begin; index <= end; index += step ) {
-
-                        Object value = new Integer(index);
-                        if (varName != null) {
-                            context.setVariable(varName, value);
-                        }
-                        // set the status var up
-                        if (status != null) {
-                            count++;
-                            status.setIndex(index);
-                            status.setCount(count);
-                            status.setCurrent(value);
-                            status.setFirst(index == begin);
-                            status.setLast(index > end - step);
-                        }
-                        invokeBody(output);
-                    }
-                }
-            }
-        }
-        catch (BreakException e) {
-            if (log.isDebugEnabled()) {
-                log.debug("loop terminated by break: " + e, e);
-            }
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the expression used to iterate over.
-     * This expression could resolve to an Iterator, Collection, Map, Array,
-     * Enumeration or comma separated String.
-     */
-    public void setItems(Expression items) {
-        this.items = items;
-    }
-
-    /** Sets the variable name to export for the item being iterated over
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /** Sets the variable name to export the current index counter to
-     */
-    public void setIndexVar(String indexVar) {
-        this.indexVar = indexVar;
-    }
-
-    /** Sets the starting index value
-     */
-    public void setBegin(int begin) {
-        this.begin = begin;
-    }
-
-    /** Sets the ending index value
-     */
-    public void setEnd(int end) {
-        this.end = end;
-    }
-
-    /** Sets the index increment step
-     */
-    public void setStep(int step) {
-        this.step = step;
-    }
-
-    /**
-     * Sets the variable name to export the current status to.
-     * The status is an implementation of the JSTL LoopTagStatus interface that provides
-     * the following bean properties:
-     * <ul>
-     *   <li>current - the current value of the loop items being iterated</li>
-     *   <li>index   - the current index of the items being iterated</li>
-     *   <li>first   - true if this is the first iteration, false otherwise</li>
-     *   <li>last    - true if this is the last iteration, false otherwise</li>
-     *   <li>begin   - the starting index of the loop</li>
-     *   <li>step    - the stepping value of the loop</li>
-     *   <li>end     - the end index of the loop</li>
-     * </ul>
-     */
-    public void setVarStatus(String var) {
-        this.statusVar = var;
-    }
-    
-    /**
-     * Holds the status of the loop. 
-     */
-    public static final class LoopStatus implements LoopTagStatus
-    {
-        private Integer begin;
-        private int count;
-        private Object current;
-        private Integer end;
-        private int index;
-        private Integer step;
-        private boolean first;
-        private boolean last;
-        
-        public LoopStatus(Integer begin, Integer end, Integer step) {
-            this.begin = begin;
-            this.end = end;
-            this.step = step;
-        }
-        /**
-         * @return Returns the begin.
-         */
-        public Integer getBegin() {
-            return begin;
-        }
-        /**
-         * @return Returns the count.
-         */
-        public int getCount() {
-            return count;
-        }
-        /**
-         * @return Returns the current.
-         */
-        public Object getCurrent() {
-            return current;
-        }
-        /**
-         * @return Returns the end.
-         */
-        public Integer getEnd() {
-            return end;
-        }
-        /**
-         * @return Returns the first.
-         */
-        public boolean isFirst() {
-            return first;
-        }
-        /**
-         * @return Returns the index.
-         */
-        public int getIndex() {
-            return index;
-        }
-        /**
-         * @return Returns the last.
-         */
-        public boolean isLast() {
-            return last;
-        }
-        /**
-         * @return Returns the step.
-         */
-        public Integer getStep() {
-            return step;
-        }
-        /**
-         * @param count The count to set.
-         */
-        public void setCount(int count) {
-            this.count = count;
-        }
-        /**
-         * @param current The current to set.
-         */
-        public void setCurrent(Object current) {
-            this.current = current;
-        }
-        /**
-         * @param first The first to set.
-         */
-        public void setFirst(boolean first) {
-            this.first = first;
-        }
-        /**
-         * @param last The last to set.
-         */
-        public void setLast(boolean last) {
-            this.last = last;
-        }
-        /**
-         * @param index The index to set.
-         */
-        public void setIndex(int index) {
-            this.index = index;
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/GetStaticTag.java b/src/java/org/apache/commons/jelly/tags/core/GetStaticTag.java
deleted file mode 100644
index 5d07188..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/GetStaticTag.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-
-
-/**
- * A tag which can retrieve the value of a static field of a given class.
- * The following attributes are required:<br />
- * <ul>
- *   <li>var - The variable to which to assign the resulting value.</li>
- *   <li>field - The name of the static field to retrieve.</li>
- *   <li>className - The name of the class containing the static field.</li>
- * </ul>
- *
- * Example usage:
- * <pre>
- * &lt;j:getStatic var="closeOperation" className="javax.swing.JFrame"
- *              field="EXIT_ON_CLOSE"/&gt;
- * </pre>
- *
- * @version $Revision: 1.3 $
- */
-
-public class GetStaticTag extends TagSupport {
-
-    /** The variable to which to assign the resulting value. */
-    private String var;
-
-    /** The name of the static field to retrieve. */
-    private String field;
-
-    /** The name of the class containing the static field. */
-    private String className;
-
-
-    /**
-     * Sets the name of the variable exported by this tag.
-     *
-     * @param var The variable name.
-     */
-
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-
-    /**
-     * Sets the name of the field to retrieve.
-     *
-     * @param method The method name
-     */
-
-    public void setField(String field) {
-        this.field = field;
-    }
-
-
-    /**
-     * Sets the fully qualified name of the class containing the static field.
-     *
-     * @param className The name of the class.
-     */
-
-    public void setClassName(String className) {
-        this.className = className;
-    }
-
-
-    // Tag interface
-    //------------------------------------------------------------------------
-
-    public void doTag(XMLOutput output) throws JellyTagException {
-        String message = null;
-
-        if(var == null)
-            message = "var";
-        else if(field == null)
-            message = "field";
-        else if(className == null)
-            message = "className";
-
-        if(message != null)
-            throw new MissingAttributeException(message);
-
-        try {
-            Class type     = ClassLoaderUtils.getClassLoader(getClass()).loadClass(className);
-            Object result  = type.getField(field).get(null);
-            JellyContext context = getContext();
-
-            context.setVariable(var, result);
-
-        } catch(Throwable t) {
-            throw
-                new JellyTagException("Could not access " + className + "." +
-                                      var + ".  Original exception message: " +
-                                      t.getMessage(), t);
-        }
-    }
-
-}
-
-
-/* Emacs configuration
- * Local variables:        **
- * mode:             java  **
- * c-basic-offset:   4     **
- * indent-tabs-mode: nil   **
- * End:                    **
- */
diff --git a/src/java/org/apache/commons/jelly/tags/core/IfTag.java b/src/java/org/apache/commons/jelly/tags/core/IfTag.java
deleted file mode 100644
index aa57cff..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/IfTag.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-/** A tag which conditionally evaluates its body based on some condition
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.14 $
-  */
-public class IfTag extends TagSupport {
-
-    /** The expression to evaluate. */
-    private Expression test;
-
-    public IfTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (test != null) {
-            if (test.evaluateAsBoolean(context)) {
-                invokeBody(output);
-            }
-        }
-        else {
-            throw new MissingAttributeException( "test" );
-        }
-
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the Jelly expression to evaluate. If this returns true, the body of
-     * the tag is evaluated
-     *
-     * @param test the Jelly expression to evaluate
-     */
-    public void setTest(Expression test) {
-        this.test = test;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/ImportTag.java b/src/java/org/apache/commons/jelly/tags/core/ImportTag.java
deleted file mode 100644
index e5a9669..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/ImportTag.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/** Imports another script.
- *
- *  <p>
- *  By default, the imported script does not have access to
- *  the parent script's variable context.  This behaviour
- *  may be modified using the <code>inherit</code> attribute.
- *  </p>
- *
- * @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
- * @version $Revision: 1.10 $
- */
-
-public class ImportTag extends TagSupport {
-
-    /**
-     * the location of the script being imported, relative to the
-     * current script
-     */
-    private String uri;
-
-    /**
-     * Whether the imported script has access to the caller's variables
-     */
-    private boolean inherit;
-
-    /**
-     * The file to be imported. Mutually exclusive with uri.
-     * uri takes precedence.
-     */
-    private String file;
-
-    /**
-     * Create a new Import tag.
-     */
-    public ImportTag() {
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    /**
-     * Perform tag processing
-     * @param output the destination for output
-     * @throws MissingAttributeException if a required attribute is missing
-     * @throws JellyTagException on any other errors
-     */
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (uri == null && file == null) {
-            throw new MissingAttributeException( "uri" );
-        }
-
-        try {
-            if (uri != null) {
-                // we need to create a new JellyContext of the URI
-                // take off the script name from the URL
-                context.runScript(uri, output, true, isInherit() );
-            } else {
-                context.runScript(new java.io.File(file), output, true,
-                  isInherit());
-            }
-        }
-        catch (JellyException e) {
-            throw new JellyTagException("could not import script",e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return whether property inheritence is enabled
-     */
-    public boolean isInherit() {
-        return inherit;
-    }
-
-    /**
-     * Sets whether property inheritence is enabled or disabled
-     */
-    public void setInherit(boolean inherit) {
-        this.inherit = inherit;
-    }
-
-    /**
-     * Sets the URI (relative URI or absolute URL) for the script to evaluate.
-     */
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
-
-
-    /**
-     * Sets the file for the script to evaluate.
-     * @param file The file to set
-     */
-    public void setFile(String file) {
-        this.file = file;
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/IncludeTag.java b/src/java/org/apache/commons/jelly/tags/core/IncludeTag.java
deleted file mode 100644
index 4245365..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/IncludeTag.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.core;
-
-import java.io.File;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/** A tag which conditionally evaluates its body based on some condition
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.16 $
-  */
-
-public class IncludeTag extends TagSupport {
-
-    private String uri;
-    private File file;
-
-    private boolean shouldExport;
-    private boolean shouldInherit;
-
-    public IncludeTag() {
-        this.shouldExport = false;
-        this.shouldInherit = true;
-    }
-
-    public void setInherit(String inherit) {
-        if ("true".equals(inherit)) {
-            this.shouldInherit = true;
-        } else {
-            this.shouldInherit = false;
-        }
-    }
-
-    public void setExport(String export) {
-        if ("true".equals(export)) {
-            this.shouldExport = true;
-        } else {
-            this.shouldExport = false;
-        }
-    }
-
-    public boolean isInherit() {
-        return this.shouldInherit;
-    }
-
-    public boolean isExport() {
-        return this.shouldExport;
-    }
-
-    /**
-     * @return
-     */
-    public File getFile() {
-        return file;
-    }
-
-    /**
-     * Sets the file to be included which is either an absolute file or a file
-     * relative to the current directory
-     */
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output)
-        throws MissingAttributeException, JellyTagException {
-
-        if (uri == null && file == null) {
-            throw new MissingAttributeException("uri");
-        }
-
-        // we need to create a new JellyContext of the URI
-        // take off the script name from the URL
-        String text = null;
-        try {
-            if (uri != null) {
-                text = uri;
-                context.runScript(uri, output, isExport(), isInherit());
-            }
-            else {
-                text = file.toString();
-                context.runScript(file, output, isExport(), isInherit());
-            }
-        }
-        catch (JellyException e) {
-            throw new JellyTagException("could not include jelly script: " + text + ". Reason: " + e, e);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the URI (relative URI or absolute URL) for the script to evaluate. */
-    public void setUri(String uri) {
-        this.uri = uri;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/InvokeStaticTag.java b/src/java/org/apache/commons/jelly/tags/core/InvokeStaticTag.java
deleted file mode 100644
index acb0ad9..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/InvokeStaticTag.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-
-/**
-  * A Tag which can invoke a static method on a class, without an
-  * instance of the class being needed.
-  * <p>
-  * Like the {@link InvokeTag}, this tag can take a set of
-  * arguments using the {@link ArgTag}.
-  * </p>
-  * <p>
-  *  The following attributes are required:<br />
-  * <ul>
-  *   <li>var - The variable to assign the return of the method call to</li>
-  *   <li>method - The name of the static method to invoke</li>
-  *   <li>className - The name of the class containing the static method</li>
-  * </ul>
-  * </p>
-  *
-  * @author <a href="mailto:robert@bull-enterprises.com>Robert McIntosh</a>
-  * @version $Revision: 1.9 $
-  */
-public class InvokeStaticTag extends TagSupport implements ArgTagParent {
-
-    /** the variable exported */
-    private String var;
-
-    /** the variable where the method's exception is exported */
-    private String exceptionVar;
-
-    /** the method to invoke */
-    private String methodName;
-
-    /** the object to invoke the method on */
-    private String className;
-
-    private List paramTypes = new ArrayList();
-    private List paramValues = new ArrayList();
-
-    public InvokeStaticTag() {
-    }
-
-    /**
-     * Sets the name of the variable exported by this tag
-     *
-     * @param var The variable name
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /** Sets the name of a variable that exports the exception thrown by
-     * the method's invocation (if any)
-     */
-    public void setExceptionVar(String var) {
-        this.exceptionVar = var;
-    }
-
-    /**
-     * Sets the name of the method to invoke
-     *
-     * @param method The method name
-     */
-    public void setMethod(String methodName) {
-        this.methodName = methodName;
-    }
-
-    /**
-     * Sets the fully qualified class name containing the static method
-     *
-     * @param className The name of the class
-     */
-    public void setClassName(String className) {
-        this.className = className;
-    }
-
-    /**
-     * Adds an argument to supply to the method
-     *
-     * @param type The Class type of the argument
-     * @param value The value of the argument
-     */
-    public void addArgument(Class type, Object value) {
-        paramTypes.add(type);
-        paramValues.add(value);
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        try {
-            if ( null == methodName) {
-                throw new MissingAttributeException( "method" );
-            }
-            invokeBody(output);
-
-            Object[] values = paramValues.toArray();
-            Class[] types = (Class[])(paramTypes.toArray(new Class[paramTypes.size()]));
-            Method method = loadClass().getMethod( methodName, types );
-            Object result = method.invoke( null, values );
-            if(null != var) {
-                context.setVariable(var, result);
-            }
-
-            ArgTag parentArg = (ArgTag)(findAncestorWithClass(ArgTag.class));
-            if(null != parentArg) {
-                parentArg.setValue(result);
-            }
-        }
-        catch (ClassNotFoundException e) {
-            throw createLoadClassFailedException(e);
-        }
-        catch (NoSuchMethodException e) {
-            throw createLoadClassFailedException(e);
-        }
-        catch (IllegalAccessException e) {
-            throw createLoadClassFailedException(e);
-        }
-        catch (InvocationTargetException e) {
-            if(null != exceptionVar) {
-                context.setVariable(exceptionVar,e.getTargetException());
-            } else {
-                throw new JellyTagException("method " + methodName +
-                    " threw exception: "+ e.getTargetException().getMessage(),
-                    e.getTargetException() );
-            }
-        }
-        finally {
-            paramTypes.clear();
-            paramValues.clear();
-        }
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Loads the class using either the class loader which loaded me or the
-     * current threads context class loader
-     */
-    protected Class loadClass() throws ClassNotFoundException {
-        return ClassLoaderUtils.loadClass(className, getClass());
-    }
-
-    /**
-     * Factory method to create a new JellyTagException instance from a given
-     * failure exception
-     * @param e is the exception which occurred attempting to load the class
-     * @return JellyTagException
-     */
-    protected JellyTagException createLoadClassFailedException(Exception e) {
-        return new JellyTagException(
-            "Could not load class: " + className + ". Reason: " + e, e
-        );
-    }
-}
-
diff --git a/src/java/org/apache/commons/jelly/tags/core/InvokeTag.java b/src/java/org/apache/commons/jelly/tags/core/InvokeTag.java
deleted file mode 100644
index b847523..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/InvokeTag.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.beanutils.MethodUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
-  * A tag which calls a method in an object instantied by core:new
-  *
-  *
-  * @author Rodney Waldhoff
-  * @version $Revision: 1.10 $
-  */
-public class InvokeTag extends TagSupport implements ArgTagParent {
-
-    /** the variable exported */
-    private String var;
-
-    /** the variable where the method's exception is exported */
-    private String exceptionVar;
-
-    /** the method to invoke */
-    private String methodName;
-
-    /** the object to invoke the method on */
-    private Object onInstance;
-
-    private List paramTypes = new ArrayList();
-    private List paramValues = new ArrayList();
-
-    public InvokeTag() {
-    }
-
-    /** Sets the name of the variable exported by this tag */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /** Sets the name of a variable that exports the exception thrown by
-     * the method's invocation (if any)
-     */
-    public void setExceptionVar(String var) {
-        this.exceptionVar = var;
-    }
-
-    public void setMethod(String method) {
-        this.methodName = method;
-    }
-
-    public void setOn(Object instance) {
-        this.onInstance = instance;
-    }
-
-    public void addArgument(Class type, Object value) {
-        paramTypes.add(type);
-        paramValues.add(value);
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if ( null == methodName) {
-            throw new MissingAttributeException( "method" );
-        }
-        if ( null == onInstance ) {
-            throw new MissingAttributeException( "on" );
-        }
-
-        invokeBody(output);
-
-        Object[] values = paramValues.toArray();
-        Class[] types = (Class[])(paramTypes.toArray(new Class[paramTypes.size()]));
-
-        Object result = null;
-        try {
-            result = MethodUtils.invokeMethod(onInstance,methodName,values,types);
-        }
-        catch (NoSuchMethodException e) {
-            throw new JellyTagException(e);
-        }
-        catch (IllegalAccessException e) {
-            throw new JellyTagException(e);
-        }
-        catch (InvocationTargetException e) {
-            if(null != exceptionVar) {
-                context.setVariable(exceptionVar,e.getTargetException());
-            } else {
-                throw new JellyTagException("method " + methodName +
-                    " threw exception: "+ e.getTargetException().getMessage(),
-                    e.getTargetException() );
-            }
-        }
-        finally {
-            paramTypes.clear();
-            paramValues.clear();
-        }
-
-        ArgTag parentArg = (ArgTag)(findAncestorWithClass(ArgTag.class));
-        if(null != parentArg) {
-            parentArg.setValue(result);
-        }
-        if(null != var) {
-            context.setVariable(var, result);
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/JellyTag.java b/src/java/org/apache/commons/jelly/tags/core/JellyTag.java
deleted file mode 100644
index 0c55a99..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/JellyTag.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/** The root Jelly tag which should be evaluated first
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.14 $
-  */
-public class JellyTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog( JellyTag.class );
-
-    public JellyTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        if ( log.isDebugEnabled() ) {
-            log.debug( "Running body: " + getBody() );
-        }
-        invokeBody(output);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-}
-
diff --git a/src/java/org/apache/commons/jelly/tags/core/MuteTag.java b/src/java/org/apache/commons/jelly/tags/core/MuteTag.java
deleted file mode 100644
index 55023a9..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/MuteTag.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.xml.sax.helpers.DefaultHandler;
-
-
-/** A tag which executes its body but passing no output.
- *  <p>
- * Using this tag will still take the time to perform toString on each object
- * returned to the output (but this toString value is discarded.
- * A future version should go more internally so that this is avoided.
- *
- * @author <a href="mailto:paul@activemath.org">Paul Libbrecht</a>
- * @version $Revision: 1.5 $
-  */
-public class MuteTag extends TagSupport {
-
-    /**
-     * Create an instance
-     */
-    public MuteTag() {
-    }
-
-    /**
-     * Invoke the body and produce no output.
-     * @param output tag output, which is ignored.
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        super.invokeBody(new MuteXMLOutput());
-    }
-
-    /**
-     * An XMLOutput which really outputs nothing, in particular, avoids calling
-     * toString() in objects returned...
-     */
-    static class MuteXMLOutput extends XMLOutput {
-        public MuteXMLOutput() {
-            super(new DefaultHandler());
-        }
-       
-        /**
-         * Do nothing, not even invoke the toString!
-         */
-        public void objectData(Object o) {
-        }
-    } // class MuteXMLOutput
-} // class TagSupport
\ No newline at end of file
diff --git a/src/java/org/apache/commons/jelly/tags/core/NewTag.java b/src/java/org/apache/commons/jelly/tags/core/NewTag.java
deleted file mode 100644
index af0d0a6..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/NewTag.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.beanutils.ConstructorUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-
-/** A tag which creates a new object of the given type
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision:$
-  */
-public class NewTag extends BaseClassLoaderTag implements ArgTagParent {
-
-    /** the variable exported */
-    private String var;
-
-    /** the class name of the object to instantiate */
-    private String className;
-
-    private List paramTypes = new ArrayList();
-    private List paramValues = new ArrayList();
-
-    public NewTag() {
-    }
-
-    /** Sets the name of the variable exported by this tag */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /** Sets the class name of the object to instantiate */
-    public void setClassName(String className) {
-        this.className = className;
-    }
-
-    public void addArgument(Class type, Object value) {
-        paramTypes.add(type);
-        paramValues.add(value);
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        ArgTag parentArg = null;
-        if ( var == null ) {
-            parentArg = (ArgTag)(findAncestorWithClass(ArgTag.class));
-            if(null == parentArg) {
-                throw new MissingAttributeException( "var" );
-            }
-        }
-        if ( className == null ) {
-            throw new MissingAttributeException( "className" );
-        }
-        invokeBody(output);
-
-        try {
-            Class theClass = getClassLoader().loadClass( className );
-            Object object = null;
-            if(paramTypes.size() == 0) {
-                object = theClass.newInstance();
-            } else {
-                Object[] values = paramValues.toArray();
-                Class[] types = (Class[])(paramTypes.toArray(new Class[paramTypes.size()]));
-                object = ConstructorUtils.invokeConstructor(theClass,values,types);
-                paramTypes.clear();
-                paramValues.clear();
-            }
-            if(null != var) {
-                context.setVariable(var, object);
-            } else {
-                parentArg.setValue(object);
-            }
-        }
-        catch (ClassNotFoundException e) {
-            throw new JellyTagException(e);
-        }
-        catch (InstantiationException e) {
-            throw new JellyTagException(e);
-        }
-        catch (NoSuchMethodException e) {
-            throw new JellyTagException(e);
-        }
-        catch (IllegalAccessException e) {
-            throw new JellyTagException(e);
-        }
-        catch (InvocationTargetException e) {
-            throw new JellyTagException(e);
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/OtherwiseTag.java b/src/java/org/apache/commons/jelly/tags/core/OtherwiseTag.java
deleted file mode 100644
index 51f68a9..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/OtherwiseTag.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/** The otherwise block of a choose/when/otherwise group of tags
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.13 $
-  */
-public class OtherwiseTag extends TagSupport {
-
-    public OtherwiseTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        ChooseTag tag = (ChooseTag) findAncestorWithClass( ChooseTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException( "This tag must be enclosed inside a <choose> tag" );
-        }
-        if ( ! tag.isBlockEvaluated() ) {
-            tag.setBlockEvaluated(true);
-            invokeBody(output);
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/ParseTag.java b/src/java/org/apache/commons/jelly/tags/core/ParseTag.java
deleted file mode 100644
index 3ba4af5..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/ParseTag.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.io.StringReader;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.parser.XMLParser;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
-/**
- * Parses the output of this tags body or of a given String as a Jelly script
- * then either outputting the Script as a variable or executing the script.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class ParseTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ParseTag.class);
-
-    /** The variable that will be generated for the document */
-    private String var;
-
-    /** The markup text to be parsed */
-    private String text;
-
-    /** The XMLReader used to parser the document */
-    private XMLReader xmlReader;
-
-    /** The Jelly parser */
-    private XMLParser jellyParser;
-
-    public ParseTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
-     */
-    public void doTag(XMLOutput output)
-        throws MissingAttributeException, JellyTagException {
-
-        String text = getText();
-        if (text != null) {
-            parseText(text);
-        }
-        else {
-            parseBody(output);
-        }
-
-        Script script = getJellyParser().getScript();
-        if (var != null) {
-            context.setVariable(var, script);
-        }
-        else {
-            // invoke the script
-            script.run(context, output);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** The variable name that will be used for the Document variable created
-     */
-    public String getVar() {
-        return var;
-    }
-
-    /** Sets the variable name that will be used for the Document variable created
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Returns the text to be parsed
-     * @return String
-     */
-    public String getText() {
-        return text;
-    }
-
-    /**
-     * Sets the text to be parsed by this parser
-     * @param text The text to be parsed by this parser
-     */
-    public void setText(String text) {
-        this.text = text;
-    }
-
-
-    /** @return the XMLReader used for parsing, creating one lazily if need be  */
-    public XMLReader getXMLReader() throws ParserConfigurationException, SAXException {
-        if (xmlReader == null) {
-            xmlReader = createXMLReader();
-        }
-        return xmlReader;
-    }
-
-    /** Sets the XMLReader used for parsing */
-    public void setXMLReader(XMLReader xmlReader) {
-        this.xmlReader = xmlReader;
-    }
-
-
-    /**
-     * @return XMLParser
-     */
-    public XMLParser getJellyParser() {
-        if (jellyParser == null) {
-            jellyParser = createJellyParser();
-        }
-        return jellyParser;
-    }
-
-    /**
-     * Sets the jellyParser.
-     * @param jellyParser The jellyParser to set
-     */
-    public void setJellyParser(XMLParser jellyParser) {
-        this.jellyParser = jellyParser;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new XMLReader
-     */
-    protected XMLReader createXMLReader() throws ParserConfigurationException, SAXException {
-        SAXParserFactory factory = SAXParserFactory.newInstance();
-        factory.setNamespaceAware(true);
-        SAXParser parser = factory.newSAXParser();
-        return parser.getXMLReader();
-    }
-
-
-    /**
-     * Parses the body of this tag and returns the parsed document
-     */
-    protected void parseBody(XMLOutput output) throws JellyTagException {
-        ContentHandler handler = getJellyParser();
-        XMLOutput newOutput = new XMLOutput(handler);
-
-        try {
-            handler.startDocument();
-            invokeBody(newOutput);
-            handler.endDocument();
-        }
-        catch (SAXException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    /**
-     * Parses the give piece of text as being markup
-     */
-    protected void parseText(String text) throws JellyTagException {
-        if ( log.isDebugEnabled() ) {
-            log.debug( "About to parse: " + text );
-        }
-
-        try {
-            getXMLReader().parse( new InputSource( new StringReader( text ) ) );
-        }
-        catch (Exception e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    /**
-     * Factory method to create a new Jelly parser
-     * @return XMLParser
-     */
-    protected XMLParser createJellyParser() {
-        XMLParser answer = new XMLParser();
-        answer.setContext(context);
-        return answer;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/RemoveTag.java b/src/java/org/apache/commons/jelly/tags/core/RemoveTag.java
deleted file mode 100644
index 681ddbd..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/RemoveTag.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-/**
- * A tag which removes the variable of the given name from the current variable scope.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class RemoveTag extends TagSupport {
-
-    private Expression var;
-
-    public RemoveTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException {
-        if (var != null) {
-            context.removeVariable( var.evaluateAsString(context) );
-        }
-        else {
-            throw new MissingAttributeException("var");
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the name of the variable which will be removed by this tag..
-     */
-    public void setVar(Expression var) {
-        this.var = var;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/ScopeTag.java b/src/java/org/apache/commons/jelly/tags/core/ScopeTag.java
deleted file mode 100644
index 54093d8..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/ScopeTag.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A tag which creates a new child variable scope for its body.
- * So any variables defined within its body will no longer be in scope
- * after this tag.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class ScopeTag extends TagSupport {
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        JellyContext newContext = context.newJellyContext();
-        getBody().run(newContext, output);
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/SetPropertiesTag.java b/src/java/org/apache/commons/jelly/tags/core/SetPropertiesTag.java
deleted file mode 100644
index 2e43e5f..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/SetPropertiesTag.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Map;
-
-import org.apache.commons.beanutils.BeanUtils;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.MapTagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.BeanSource;
-
-/**
- * A tag which sets the bean properties on the given bean.
- * So if you used it as follows, for example using the &lt;j:new&gt; tag.
- * <pre>
- * &lt;j:new className="com.acme.Person" var="person"/&gt;
- * &lt;j:setProperties object="${person}" name="James" location="${loc}"/&gt;
- * </pre>
- * Then it would set the name and location properties on the bean denoted by
- * the expression ${person}.
- * <p>
- * This tag can also be nested inside a bean tag such as the &lt;useBean&gt; tag
- * or a JellySwing tag to set one or more properties, maybe inside some conditional
- * logic.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.3 $
- */
-public class SetPropertiesTag extends MapTagSupport  {
-
-    public SetPropertiesTag(){
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        Map attributes = getAttributes();
-        Object bean = attributes.remove( "object" );
-        if ( bean == null ) {
-            // lets try find a parent bean
-            BeanSource tag = (BeanSource) findAncestorWithClass(BeanSource.class);
-            if (tag != null) {
-                try {
-                    bean = tag.getBean();
-                } catch (JellyException e) {
-                    throw new JellyTagException(e);
-                }
-            }
-            if (bean == null) {
-                throw new MissingAttributeException("bean");
-            }
-        }
-        setBeanProperties(bean, attributes);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the properties on the bean. Derived tags could implement some custom
-     * type conversion etc.
-     */
-    protected void setBeanProperties(Object bean, Map attributes) throws JellyTagException {
-        try {
-            BeanUtils.populate(bean, attributes);
-        } catch (IllegalAccessException e) {
-            throw new JellyTagException("could not set the properties on a bean",e);
-        } catch (InvocationTargetException e) {
-            throw new JellyTagException("could not set the properties on a bean",e);
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/SetTag.java b/src/java/org/apache/commons/jelly/tags/core/SetTag.java
deleted file mode 100644
index 3a9fb9f..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/SetTag.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Map;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/** A tag which sets a variable from the result of an expression
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.18 $
-  */
-public class SetTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(SetTag.class);
-
-    /** The variable name to export. */
-    private String var;
-
-    /** The variable scope to export */
-    private String scope;
-
-    /** The expression to evaluate. */
-    private Expression value;
-
-    /** The default value */
-    private Expression defaultValue;
-
-    /** The target object on which to set a property. */
-    private Object target;
-
-    /** The name of the property to set on the target object. */
-    private String property;
-
-    /** Should we XML encode the body of this tag as text? */
-    private boolean encode = true;
-
-    public SetTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        // perform validation up front to fail fast
-        if ( var != null ) {
-            if ( target != null || property != null ) {
-                throw new JellyTagException( "The 'target' and 'property' attributes cannot be used in combination with the 'var' attribute" );
-            }
-        }
-        else {
-            if ( target == null ) {
-                throw new JellyTagException( "Either a 'var' or a 'target' attribute must be defined for this tag" );
-            }
-            if ( property == null ) {
-                throw new JellyTagException( "The 'target' attribute requires the 'property' attribute" );
-            }
-        }
-
-        Object answer = null;
-        if ( value != null ) {
-            answer = value.evaluate(context);
-            if (defaultValue != null && isEmpty(answer)) {
-                answer = defaultValue.evaluate(context);
-            }
-        }
-        else {
-            answer = getBodyText(isEncode());
-        }
-
-        if ( var != null ) {
-            if ( scope != null ) {
-                context.setVariable(var, scope, answer);
-            }
-            else {
-                context.setVariable(var, answer);
-            }
-        }
-        else {
-            setPropertyValue( target, property, answer );
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Sets the variable name to define for this expression
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * Sets the variable scope for this variable. For example setting this value to 'parent' will
-     * set this value in the parent scope. When Jelly is run from inside a Servlet environment
-     * then other scopes will be available such as 'request', 'session' or 'application'.
-     *
-     * Other applications may implement their own custom scopes.
-     */
-    public void setScope(String scope) {
-        this.scope = scope;
-    }
-
-    /** Sets the expression to evaluate. */
-    public void setValue(Expression value) {
-        this.value = value;
-    }
-
-    /**
-     * Sets the default value to be used if the value exprsesion results
-     * in a null value or blank String
-     */
-    public void setDefaultValue(Expression defaultValue) {
-        this.defaultValue = defaultValue;
-    }
-
-    /** Sets the target object on which to set a property. */
-    public void setTarget(Object target) {
-        this.target = target;
-    }
-
-    /** Sets the name of the property to set on the target object. */
-    public void setProperty(String property) {
-        this.property = property;
-    }
-
-    /**
-     * Returns whether the body of this tag will be XML encoded or not.
-     */
-    public boolean isEncode() {
-        return encode;
-    }
-
-    /**
-     * Sets whether the body of the tag should be XML encoded as text (so that &lt; and &gt; are
-     * encoded as &amp;lt; and &amp;gt;) or leave the text as XML which is the default.
-     * This is only used if this tag is specified with no value so that the text body of this
-     * tag is used as the body.
-     */
-    public void setEncode(boolean encode) {
-        this.encode = encode;
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected void setPropertyValue( Object target, String property, Object value ) {
-        try {
-            if ( target instanceof Map ) {
-                Map map = (Map) target;
-                map.put( property, value );
-            }
-            else {
-                BeanUtils.setProperty( target, property, value );
-            }
-        } catch (InvocationTargetException e) {
-            log.error( "Failed to set the property: " + property + " on bean: " + target + " to value: " + value + " due to exception: " + e, e );
-        } catch (IllegalAccessException e) {
-            log.error( "Failed to set the property: " + property + " on bean: " + target + " to value: " + value + " due to exception: " + e, e );
-        }
-    }
-
-    /**
-     * @param value
-     * @return true if the given value is null or an empty String
-     */
-    protected boolean isEmpty(Object value) {
-        if (value == null) {
-            return true;
-        }
-        if (value instanceof String) {
-            String s = (String) value;
-            return s.length() == 0;
-        }
-        return false;
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/SwitchTag.java b/src/java/org/apache/commons/jelly/tags/core/SwitchTag.java
deleted file mode 100644
index ae36c40..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/SwitchTag.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-
-/**
- * Executes the child &lt;case&gt; tag whose value equals my on attribute.
- * Executes a child &lt;default&gt; tag when present and no &lt;case&gt; tag has
- * yet matched.
- *
- * @see CaseTag
- * @see DefaultTag
- *
- * @author Rodney Waldhoff
- * @version $Revision: 1.7 $ $Date: 2004/09/09 12:27:53 $
- */
-public class SwitchTag extends TagSupport {
-
-    public SwitchTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the value to switch on.
-     * Note that the {@link Expression} is evaluated only once, when the
-     * &lt;switch&gt; tag is evaluated.
-     * @param on the value to switch on
-     */
-    public void setOn(Expression on) {
-        this.on = on;
-    }
-
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if(null == on) {
-            throw new MissingAttributeException("on");
-        } else {
-            value = on.evaluate(context);
-            invokeBody(output);
-        }
-    }
-
-    // Protected properties
-    //-------------------------------------------------------------------------
-    protected boolean hasSomeCaseMatched() {
-        return this.someCaseMatched;
-    }
-
-    protected void caseMatched() {
-        this.someCaseMatched = true;
-    }
-
-    protected boolean isFallingThru() {
-        return this.fallingThru;
-    }
-
-    protected void setFallingThru(boolean fallingThru) {
-        this.fallingThru = fallingThru;
-    }
-
-    protected Object getValue() {
-        return value;
-    }
-
-    protected boolean hasDefaultBeenEncountered() {
-        return defaultEncountered;
-    }
-
-    protected void defaultEncountered() {
-        this.defaultEncountered = true;
-    }
-
-    // Attributes
-    //-------------------------------------------------------------------------
-    private boolean someCaseMatched = false;
-    private boolean fallingThru = false;
-    private boolean defaultEncountered = false;
-    private Expression on = null;
-    private Object value = null;
-
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/ThreadTag.java b/src/java/org/apache/commons/jelly/tags/core/ThreadTag.java
deleted file mode 100644
index 8c81de3..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/ThreadTag.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** A tag that spawns the contained script in a separate thread
-  *
-  * @author <a href="mailto:vinayc@apache.org">Vinay Chandran</a>
-  */
-public class ThreadTag extends TagSupport  {
-    /** Thread Name */
-    private String name = null;
-    /** the destination of output */
-    private XMLOutput xmlOutput;
-    /** Should we close the underlying output */
-    private boolean closeOutput;
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(ThreadTag.class);
-
-    public ThreadTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        if ( xmlOutput == null ) {
-            // lets default to system.out
-            try {
-                xmlOutput = XMLOutput.createXMLOutput( System.out );
-            } catch (UnsupportedEncodingException e) {
-                throw new JellyTagException(e);
-            }
-        }
-
-        // lets create a child context
-        final JellyContext newContext = context.newJellyContext();
-
-        Thread thread = new Thread(
-            new Runnable() {
-                public void run() {
-                    try {
-                        getBody().run(newContext, xmlOutput);
-                        if (closeOutput) {
-                            xmlOutput.close();
-                        }
-                        else {
-                            xmlOutput.flush();
-                        }
-                    }
-                    catch (Exception e) {
-                        if (log.isErrorEnabled()) log.error("error running thread tag", e);
-                    }
-                }
-            }
-        );
-        if ( name != null ) {
-            thread.setName( name );
-        }
-        thread.start();
-    }
-
-    /**
-     * Sets the name of the thread.
-     * @param name The name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Sets the destination of output
-     */
-    public void setXmlOutput(XMLOutput xmlOutput) {
-        this.closeOutput = false;
-        this.xmlOutput = xmlOutput;
-    }
-
-    /**
-     * Set the file which is generated from the output
-     * @param name The output file name
-     */
-    public void setFile(String name) throws IOException {
-        this.closeOutput = true;
-        setXmlOutput( XMLOutput.createXMLOutput(new FileOutputStream(name)) );
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/UseBeanTag.java b/src/java/org/apache/commons/jelly/tags/core/UseBeanTag.java
deleted file mode 100644
index 6a21eec..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/UseBeanTag.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.beanutils.PropertyUtils;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MapTagSupport;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.BeanSource;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-
-/**
- * A tag which instantiates an instance of the given class
- * and then sets the properties on the bean.
- * The class can be specified via a {@link java.lang.Class} instance or
- * a String which will be used to load the class using either the current
- * thread's context class loader or the class loader used to load this
- * Jelly library.
- *
- * This tag can be used it as follows,
- * <pre>
- * &lt;j:useBean var="person" class="com.acme.Person" name="James" location="${loc}"/&gt;
- * &lt;j:useBean var="order" class="${orderClass}" amount="12" price="123.456"/&gt;
- * </pre>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.3 $
- */
-public class UseBeanTag extends MapTagSupport implements BeanSource {
-
-    /** the current bean instance */
-    private Object bean;
-
-    /** the default class to use if no Class is specified */
-    private Class defaultClass;
-
-    /**
-     * a Set of Strings of property names to ignore (remove from the
-     * Map of attributes before passing to ConvertUtils)
-     */
-    private Set ignoreProperties;
-
-    /**
-     * If this tag finds an attribute in the XML that's not
-     * ignored by {@link #ignoreProperties} and isn't a
-     * bean property, should it throw an exception?
-     * @see #setIgnoreUnknownProperties(boolean)
-     */
-    private boolean ignoreUnknownProperties = false;
-
-
-    public UseBeanTag() {
-    }
-
-    public UseBeanTag(Class defaultClass) {
-        this.defaultClass = defaultClass;
-    }
-
-    // BeanSource interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the bean that has just been created
-     */
-    public Object getBean() {
-        return bean;
-    }
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Map attributes = getAttributes();
-        String var = (String) attributes.get( "var" );
-        Object classObject = attributes.get( "class" );
-        addIgnoreProperty("class");
-        addIgnoreProperty("var");
-
-        try {
-            // this method could return null in derived classes
-            Class theClass = convertToClass(classObject);
-
-            bean = newInstance(theClass, attributes, output);
-            setBeanProperties(bean, attributes);
-
-            // invoke body which could result in other properties being set
-            invokeBody(output);
-
-            processBean(var, bean);
-        }
-        catch (ClassNotFoundException e) {
-            throw new JellyTagException(e);
-        }
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Allow derived classes to programatically set the bean
-     */
-    protected void setBean(Object bean) {
-        this.bean = bean;
-    }
-
-    /**
-     * Attempts to convert the given object to a Class instance.
-     * If the classObject is already a Class it will be returned
-     * otherwise it will be converted to a String and loaded
-     * using the default class loading mechanism.
-     */
-    protected Class convertToClass(Object classObject)
-    throws MissingAttributeException, ClassNotFoundException {
-        if (classObject instanceof Class) {
-            return (Class) classObject;
-        }
-        else if ( classObject == null ) {
-            Class theClass = getDefaultClass();
-            if (theClass == null) {
-                throw new MissingAttributeException("class");
-            }
-            return theClass;
-        }
-        else {
-            String className = classObject.toString();
-            return loadClass(className);
-        }
-    }
-
-    /**
-     * Loads the given class using the default class loading mechanism
-     * which is to try use the current Thread's context class loader first
-     * otherise use the class loader which loaded this class.
-     */
-    protected Class loadClass(String className) throws ClassNotFoundException {
-        return ClassLoaderUtils.loadClass(className, getClass());
-    }
-
-    /**
-     * Creates a new instance of the given class, which by default will invoke the
-     * default constructor.
-     * Derived tags could do something different here.
-     */
-    protected Object newInstance(Class theClass, Map attributes, XMLOutput output)
-    throws JellyTagException {
-        try {
-            return theClass.newInstance();
-        } catch (IllegalAccessException e) {
-            throw new JellyTagException(e.toString());
-        } catch (InstantiationException e) {
-            throw new JellyTagException(e.toString());
-        }
-    }
-
-    /**
-     * Sets the properties on the bean. Derived tags could implement some custom
-     * type conversion etc.
-     * <p/>
-     * This method ignores all property names in the Set returned by {@link #getIgnorePropertySet()}.
-     */
-    protected void setBeanProperties(Object bean, Map attributes) throws JellyTagException {
-        Map attrsToUse = new HashMap(attributes);
-        attrsToUse.keySet().removeAll(getIgnorePropertySet());
-
-        validateBeanProperties(bean, attrsToUse);
-
-        try {
-            BeanUtils.populate(bean, attrsToUse);
-        } catch (IllegalAccessException e) {
-            throw new JellyTagException("could not set the properties of the bean",e);
-        } catch (InvocationTargetException e) {
-            throw new JellyTagException("could not set the properties of the bean",e);
-        }
-    }
-
-    /**
-     * If {@link #isIgnoreUnknownProperties()} returns true, make sure that
-     * every non-ignored ({@see #addIgnoreProperty(String)}) property
-     * matches a writable property on the target bean.
-     * @param bean the bean to validate
-     * @param attributes the list of properties to validate
-     * @throws JellyTagException when a property is not writeable
-     */
-    protected void validateBeanProperties(Object bean, Map attributes) throws JellyTagException {
-        if (!isIgnoreUnknownProperties()) {
-            for (Iterator i=attributes.keySet().iterator();i.hasNext();) {
-                String attrName = (String)i.next();
-                if (! PropertyUtils.isWriteable(bean, attrName)) {
-                    throw new JellyTagException("No bean property found: " + attrName);
-                }
-            }
-        }
-    }
-
-    /**
-     * By default this will export the bean using the given variable if it is defined.
-     * This Strategy method allows derived tags to process the beans in different ways
-     * such as to register this bean with its parent tag etc.
-     */
-    protected void processBean(String var, Object bean) throws JellyTagException {
-        if (var != null) {
-            context.setVariable(var, bean);
-        }
-        else {
-            ArgTag parentArg = (ArgTag)(findAncestorWithClass(ArgTag.class));
-            if(null != parentArg) {
-                parentArg.setValue(bean);
-            }
-        }
-    }
-
-    /**
-     * Allows derived classes to provide a default bean implementation class
-     */
-    protected Class getDefaultClass() {
-        return defaultClass;
-    }
-
-    /**
-     * Adds a name to the Set of property names that will be skipped when setting
-     * bean properties. In other words, names added here won't be set into the bean
-     * if they're present in the attribute Map.
-     * @param name
-     */
-    protected void addIgnoreProperty(String name) {
-        getIgnorePropertySet().add(name);
-    }
-
-    /**
-     * @return the Set of property names that should be ignored when setting the
-     * properties of the bean.
-     */
-    protected Set getIgnorePropertySet() {
-        if (ignoreProperties == null) {
-            ignoreProperties = new HashSet();
-        }
-
-        return ignoreProperties;
-    }
-
-    /**
-     * @see {@link #setIgnoreUnknownProperties(boolean)}
-     * @return
-     */
-    public boolean isIgnoreUnknownProperties() {
-        return ignoreUnknownProperties;
-    }
-
-    /**
-     * If this tag finds an attribute in the XML that's not
-     * ignored by {@link #ignoreProperties} and isn't a
-     * bean property, should it throw an exception?
-     * @param ignoreUnknownProperties Sets {@link #ignoreUnknownProperties}.
-     */
-    public void setIgnoreUnknownProperties(boolean ignoreUnknownProps) {
-        this.ignoreUnknownProperties = ignoreUnknownProps;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/UseListTag.java b/src/java/org/apache/commons/jelly/tags/core/UseListTag.java
deleted file mode 100644
index 0bc74c7..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/UseListTag.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.impl.CollectionTag;
-
-/**
- * A tag which creates a List implementation and optionally
- * adds all of the elements identified by the items attribute.
- * The exact implementation of List can be specified via the
- * class attribute
- * </pre>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.3 $
- */
-public class UseListTag extends UseBeanTag implements CollectionTag {
-
-    private Expression items;
-
-    public UseListTag(){
-    }
-
-    public List getList() {
-        return (List) getBean();
-    }
-
-
-    // CollectionTag interface
-    //-------------------------------------------------------------------------
-    public void addItem(Object value) {
-        getList().add(value);
-    }
-
-    // DynaTag interface
-    //-------------------------------------------------------------------------
-    public Class getAttributeType(String name) throws JellyTagException {
-        if (name.equals("items")) {
-            return Expression.class;
-        }
-        return super.getAttributeType(name);
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    protected void setBeanProperties(Object bean, Map attributes) throws JellyTagException {
-        items = (Expression) attributes.remove("items");
-        super.setBeanProperties(bean, attributes);
-    }
-
-    protected void processBean(String var, Object bean) throws JellyTagException {
-        super.processBean(var, bean);
-
-        List list = getList();
-
-        // if the items variable is specified lets append all the items
-        if (items != null) {
-            Iterator iter = items.evaluateAsIterator(context);
-            while (iter.hasNext()) {
-                list.add( iter.next() );
-            }
-        }
-    }
-
-    protected Class getDefaultClass() {
-        return ArrayList.class;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/WhenTag.java b/src/java/org/apache/commons/jelly/tags/core/WhenTag.java
deleted file mode 100644
index 44958b9..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/WhenTag.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-/** A tag which conditionally evaluates its body based on some condition
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.15 $
-  */
-public class WhenTag extends TagSupport {
-
-    /** The expression to evaluate. */
-    private Expression test;
-
-    public WhenTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        ChooseTag tag = (ChooseTag) findAncestorWithClass( ChooseTag.class );
-        if ( tag == null ) {
-            throw new JellyTagException( "This tag must be enclosed inside a <choose> tag" );
-        }
-        if ( ! tag.isBlockEvaluated() && test != null ) {
-            if ( test.evaluateAsBoolean( context ) ) {
-                tag.setBlockEvaluated(true);
-                invokeBody(output);
-            }
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** Sets the expression to evaluate. */
-    public void setTest(Expression test) {
-        this.test = test;
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/tags/core/WhileTag.java b/src/java/org/apache/commons/jelly/tags/core/WhileTag.java
deleted file mode 100644
index dc518e8..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/WhileTag.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.impl.BreakException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A tag which performs an iteration while the result of an expression is true.
- *
- * @author <a href="mailto:eric@ericalexander.net">Eric Alexander</a>
- * @author dIon Gillard
- * @version $Revision: 1.15 $
- */
-public class WhileTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(WhileTag.class);
-
-    /** The expression to use to determine if the while should continue */
-    private Expression test;
-
-    /**
-     * Create a new while tag
-     */
-    public WhileTag() {
-    }
-
-    /**
-     * Tag interface
-     * @param output destination for xml output
-     * @throws MissingAttributeException when the test attribute is missing
-     * @throws Exception for anything else
-     */
-    public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
-        if (test != null) {
-            try {
-                while (test.evaluateAsBoolean(getContext())) {
-                    if (log.isDebugEnabled()) {
-                        log.debug("evaluated to true! gonna keep on chuggin!");
-                    }
-                    invokeBody(output);
-                }
-            }
-            catch (BreakException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("loop terminated by break: " + e, e);
-                }
-            }
-        }
-        else {
-            throw new MissingAttributeException("test");
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Setter for the expression
-     * @param e the expression to test
-     */
-    public void setTest(Expression e) {
-        this.test = e;
-    }
-}
-
diff --git a/src/java/org/apache/commons/jelly/tags/core/WhitespaceTag.java b/src/java/org/apache/commons/jelly/tags/core/WhitespaceTag.java
deleted file mode 100644
index 9f34b25..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/WhitespaceTag.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.core;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-/**
- * A simple tag used to preserve whitespace inside its body
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class WhitespaceTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog( WhitespaceTag.class );
-
-    public WhitespaceTag() {
-        setTrim(false);
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-
-        if ( log.isDebugEnabled() ) {
-            log.debug( "Running body: " + getBody() );
-        }
-        invokeBody(output);
-    }
-
-}
-
diff --git a/src/java/org/apache/commons/jelly/tags/core/package.html b/src/java/org/apache/commons/jelly/tags/core/package.html
deleted file mode 100644
index f5335d9..0000000
--- a/src/java/org/apache/commons/jelly/tags/core/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>The core Tags from the JSTL plus Jelly extensions.
-  </p>
-</body>
-</html>
diff --git a/src/java/org/apache/commons/jelly/test/BaseJellyTest.java b/src/java/org/apache/commons/jelly/test/BaseJellyTest.java
deleted file mode 100644
index 7dfb07f..0000000
--- a/src/java/org/apache/commons/jelly/test/BaseJellyTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.test;
-
-import java.net.URL;
-
-import junit.framework.TestCase;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * @author Rodney Waldhoff
- * @version $Revision: 1.1 $ $Date: 2004/10/26 23:54:37 $
- */
-public abstract class BaseJellyTest extends TestCase {
-
-    public BaseJellyTest(String name) {
-        super(name);
-    }
-
-    public void setUp() throws Exception {
-        super.setUp();
-        jelly = new Jelly();
-        context = new JellyContext();
-        xmlOutput = XMLOutput.createDummyXMLOutput();
-    }
-
-    protected void setUpScript(String scriptname) throws Exception {
-        URL url = this.getClass().getResource(scriptname);
-        if(null == url) {
-            throw new Exception(
-                "Could not find Jelly script: " + scriptname
-                + " in package of class: " + getClass().getName()
-            );
-        }
-        jelly.setUrl(url);
-
-        String exturl = url.toExternalForm();
-        int lastSlash = exturl.lastIndexOf("/");
-        String extBase = exturl.substring(0,lastSlash+1);
-        URL baseurl = new URL(extBase);
-        context.setCurrentURL(baseurl);
-    }
-
-    protected Jelly getJelly() {
-        return jelly;
-    }
-
-    protected JellyContext getJellyContext() {
-        return context;
-    }
-
-    protected XMLOutput getXMLOutput() {
-        return xmlOutput;
-    }
-
-    private Jelly jelly = null;
-    private JellyContext context = null;
-    private XMLOutput xmlOutput = null;
-
-}
diff --git a/src/java/org/apache/commons/jelly/util/ClassLoaderUtils.java b/src/java/org/apache/commons/jelly/util/ClassLoaderUtils.java
deleted file mode 100644
index 32d41af..0000000
--- a/src/java/org/apache/commons/jelly/util/ClassLoaderUtils.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.util;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A class to centralize the class loader management code.
- */
-public class ClassLoaderUtils {
-
-    /** log for debug etc output */
-    private static final Log log = LogFactory.getLog(ClassLoaderUtils.class);
-    
-    /**
-     * Return the class loader to be used for instantiating application objects
-     * when required.  This is determined based upon the following rules:
-     * <ul>
-     * <li>The specified class loader, if any</li>
-     * <li>The thread context class loader, if it exists and <code>useContextClassLoader</code> is true</li>
-     * <li>The class loader used to load the calling class.
-     * <li>The System class loader.
-     * </ul>
-     */
-    public static ClassLoader getClassLoader(ClassLoader specifiedLoader, boolean useContextClassLoader, Class callingClass) {
-        if (specifiedLoader != null) {
-            return specifiedLoader;
-        }
-        if (useContextClassLoader) {
-            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-            if (classLoader != null) {
-                return classLoader;
-            }
-        }
-        return getClassLoader(callingClass);
-    }
-
-    /**
-     * Return the class loader to be used for instantiating application objects
-     * when a context class loader is not specified.  This is determined based upon the following rules:
-     * <ul>
-     * <li>The specified class loader, if any</li>
-     * <li>The class loader used to load the calling class.
-     * <li>The System class loader.
-     * </ul>
-     */
-    public static ClassLoader getClassLoader(ClassLoader specifiedLoader, Class callingClass) {
-        if (specifiedLoader != null) {
-            return specifiedLoader;
-        }
-        return getClassLoader(callingClass);
-    }
-
-    /**
-     * Get the loader for the given class. 
-     * @param clazz the class to retrieve the loader for
-     * @return the class loader that loaded the provided class
-     */
-    public static ClassLoader getClassLoader(Class clazz) {
-        ClassLoader callersLoader = clazz.getClassLoader();
-        if (callersLoader == null) {
-            callersLoader = ClassLoader.getSystemClassLoader();
-        }
-        return callersLoader;
-    }
-
-    /**
-     * Loads the given class using the current Thread's context class loader first
-     * otherwise use the class loader which loaded this class.
-     */
-    public static Class loadClass(String className, Class callingClass) throws ClassNotFoundException {
-        ClassLoader loader = Thread.currentThread().getContextClassLoader();
-        if (loader == null) {
-            return getClassLoader(callingClass).loadClass(className);
-        } else {
-            return loader.loadClass(className);
-        }
-    }
-
-    /**
-     * Loads the given class using:
-     * <ol>
-     * <li>the specified classloader,</li>
-     * <li>the current Thread's context class loader first, if asked</li>
-     * <li>otherwise use the class loader which loaded this class.</li>
-     * </ol>
-     */
-    public static Class loadClass(String className, ClassLoader specifiedLoader, boolean useContextLoader, Class callingClass) throws ClassNotFoundException {
-        Class clazz = null;
-        if (specifiedLoader != null) {
-            try {
-                clazz = specifiedLoader.loadClass(className);
-            } catch (ClassNotFoundException e) {
-                log.debug("couldn't find class in specified loader", e);
-            }
-        }
-        if (clazz == null && useContextLoader) {
-            ClassLoader contextLoader = Thread.currentThread().getContextClassLoader();
-            if (contextLoader != null) {
-                try {
-                    clazz = contextLoader.loadClass(className);
-                } catch (ClassNotFoundException e) {
-                    log.debug("couldn't find class in specified loader", e);
-                }
-            }
-        }
-        if (clazz == null) {
-            ClassLoader loader = getClassLoader(callingClass);
-            clazz = loader.loadClass(className);
-        }
-        return clazz;
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/util/CommandLineParser.java b/src/java/org/apache/commons/jelly/util/CommandLineParser.java
deleted file mode 100644
index b227f0d..0000000
--- a/src/java/org/apache/commons/jelly/util/CommandLineParser.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.util;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.GnuParser;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.commons.cli.Parser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Utility class to parse command line options using CLI.
- * Using a separate class allows us to run Jelly without
- * CLI in the classpath when the command line interface
- * is not in use.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author Morgan Delagrange
- * @version $Revision: 1.10 $
- */
-public class CommandLineParser {
-
-    protected static CommandLineParser _instance = new CommandLineParser();
-    
-    private Options cmdLineOptions = null;
-
-    public static CommandLineParser getInstance() {
-        return _instance;
-    }
-
-    /**
-     * Parse out the command line options and configure
-     * the give Jelly instance.
-     *
-     * @param args   options from the command line
-     * @exception JellyException
-     *                   if the command line could not be parsed
-     */
-    public void invokeCommandLineJelly(String[] args) throws JellyException {
-        CommandLine cmdLine = null;
-        try {
-            cmdLine = parseCommandLineOptions(args);
-        } catch (ParseException e) {
-            throw new JellyException(e);
-        }
-        
-        // check for -h or -v
-        if (cmdLine.hasOption("h")) {
-            new HelpFormatter().printHelp("jelly [scriptFile] [-script scriptFile] [-o outputFile] [-Dsysprop=syspropval] [-awt]",
-                cmdLineOptions);
-            System.exit(1);
-        }
-        if (cmdLine.hasOption("v")) {
-            System.err.println("Jelly " + Jelly.getJellyVersion());
-            System.err.println(" compiled: " + Jelly.getJellyBuildDate());
-            System.err.println("");
-            System.exit(1);
-        }
-
-        // get the -script option. If there isn't one then use args[0]
-        String scriptFile = null;
-        if (cmdLine.hasOption("script")) {
-            scriptFile = cmdLine.getOptionValue("script");
-        } else {
-            scriptFile = args[0];
-        }
-        
-        // check the -awt option.
-        boolean runInSwingThread = cmdLine.hasOption("awt") || cmdLine.hasOption("swing");
-
-        //
-        // Use classloader to find file
-        //
-        URL url = ClassLoaderUtils.getClassLoader(getClass()).getResource(scriptFile);
-        // check if the script file exists
-        if (url == null && !(new File(scriptFile)).exists()) {
-            throw new JellyException("Script file " + scriptFile + " not found");
-        }
-
-        try {
-            // extract the -o option for the output file to use
-            final XMLOutput output = cmdLine.hasOption("o") ?
-                    XMLOutput.createXMLOutput(new FileWriter(cmdLine.getOptionValue("o"))) :
-                    XMLOutput.createXMLOutput(System.out);
-
-            Jelly jelly = new Jelly();
-            jelly.setScript(scriptFile);
-
-            final Script script = jelly.compileScript();
-
-            // add the system properties and the command line arguments
-            final JellyContext context = jelly.getJellyContext();
-            context.setVariable("args", args);
-            context.setVariable("commandLine", cmdLine);
-            if (runInSwingThread) {
-                javax.swing.SwingUtilities.invokeAndWait(new Runnable() { public void run() {
-                    try {
-                        script.run(context, output);
-                    } catch (Exception ex) {
-                        ex.printStackTrace();
-                    }
-            } } ); } else {
-                script.run(context, output);
-            }
-
-            // now lets wait for all threads to close
-            Runtime.getRuntime().addShutdownHook(new Thread() {
-                    public void run() {
-                        try {
-                            output.close();
-                        }
-                        catch (Exception e) {
-                            // ignore errors
-                        }
-                    }
-                }
-            );
-
-        } catch (Exception e) {
-            throw new JellyException(e);
-        }
-
-    }
-
-    /**
-     * Parse the command line using CLI. -o and -script are reserved for Jelly.
-     * -Dsysprop=sysval is support on the command line as well.
-     */
-    public CommandLine parseCommandLineOptions(String[] args) throws ParseException {
-        // create the expected options
-        cmdLineOptions = new Options();
-        cmdLineOptions.addOption("o", true, "Output file");
-        cmdLineOptions.addOption("script", true, "Jelly script to run");
-        cmdLineOptions.addOption("h","help", false, "Give this help message");
-        cmdLineOptions.addOption("v","version", false, "prints Jelly's version and exits");
-        cmdLineOptions.addOption("script", true, "Jelly script to run");
-        cmdLineOptions.addOption("awt", false, "Wether to run in the AWT thread.");
-        cmdLineOptions.addOption("swing", false, "Synonym of \"-awt\".");
-        List builtinOptionNames = Arrays.asList(new String[]{
-            "-o","-script","-h","--help","-v","--version","-awt","-swing"});
-        
-        // -D options will be added to the system properties
-        Properties sysProps = System.getProperties();
-
-        // filter the system property setting from the arg list
-        // before passing it to the CLI parser
-        ArrayList filteredArgList = new ArrayList();
-
-        for (int i=0;i<args.length;i++) {
-            String arg = args[i];
-
-            // if this is a -D property parse it and add it to the system properties.
-            // -D args will not be copied into the filteredArgList.
-            if (arg.startsWith("-D") && (arg.length() > 2)) {
-                arg = arg.substring(2);
-                int ePos = arg.indexOf("=");
-                if(ePos==-1 || ePos==0 || ePos==arg.length()-1)
-                    System.err.println("Invalid system property: \"" + arg + "\".");
-                sysProps.setProperty(arg.substring(0,ePos), arg.substring(ePos+1));
-            } else {
-                // add this to the filtered list of arguments
-                filteredArgList.add(arg);
-
-                // add additional "-?" options to the options object. if this is not done
-                // the only options allowed would be the builtin-ones.
-                if (arg.startsWith("-") && arg.length() > 1) {
-                    if (!(builtinOptionNames.contains(arg))) {
-                        cmdLineOptions.addOption(arg.substring(1, arg.length()), true, "dynamic option");
-                    }
-                }
-            }
-        }
-
-        // make the filteredArgList into an array
-        String[] filterArgs = new String[filteredArgList.size()];
-        filteredArgList.toArray(filterArgs);
-
-        // parse the command line
-        Parser parser = new org.apache.commons.cli.GnuParser();
-        return parser.parse(cmdLineOptions, filterArgs);
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/util/NestedRuntimeException.java b/src/java/org/apache/commons/jelly/util/NestedRuntimeException.java
deleted file mode 100644
index 2640b07..0000000
--- a/src/java/org/apache/commons/jelly/util/NestedRuntimeException.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.util;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-/**
- * A {@link RuntimeException} which is nested to preserve stack traces.
- *
- * This class allows the following code to be written to convert a regular
- * Exception into a {@link RuntimeException} without losing the stack trace.
- *
- * <pre>
- *    try {
- *        ...
- *    } catch (Exception e) {
- *        throw new RuntimeException(e);
- *    }
- * </pre>
- *
- * @author James Strachan
- * @version $Revision: 1.2 $
- */
-
-public class NestedRuntimeException extends RuntimeException {
-
-    /**
-     * Holds the reference to the exception or error that caused
-     * this exception to be thrown.
-     */
-    private Throwable cause = null;
-
-    /**
-     * Constructs a new <code>NestedRuntimeException</code> with specified
-     * nested <code>Throwable</code>.
-     *
-     * @param cause the exception or error that caused this exception to be
-     * thrown
-     */
-    public NestedRuntimeException(Throwable cause) {
-        super(cause.getMessage());
-        this.cause = cause;
-    }
-
-    /**
-     * Constructs a new <code>NestedRuntimeException</code> with specified
-     * detail message and nested <code>Throwable</code>.
-     *
-     * @param msg    the error message
-     * @param cause  the exception or error that caused this exception to be
-     * thrown
-     */
-    public NestedRuntimeException(String msg, Throwable cause) {
-        super(msg);
-        this.cause = cause;
-    }
-
-    public Throwable getCause() {
-        return cause;
-    }
-
-    public void printStackTrace() {
-        cause.printStackTrace();
-    }
-
-    public void printStackTrace(PrintStream out) {
-        cause.printStackTrace(out);
-    }
-
-    public void printStackTrace(PrintWriter out) {
-        cause.printStackTrace(out);
-    }
-
-}
diff --git a/src/java/org/apache/commons/jelly/util/SafeContentHandler.java b/src/java/org/apache/commons/jelly/util/SafeContentHandler.java
deleted file mode 100644
index 36d5864..0000000
--- a/src/java/org/apache/commons/jelly/util/SafeContentHandler.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.util;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-
-/**
- * Ensures that only one start and end document event is passed onto the underlying
- * ContentHandler. This object can only be used once and then discarded.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- */
-public class SafeContentHandler implements ContentHandler {
-    private ContentHandler handler;
-    private boolean documentStarted;
-    private boolean documentEnded;
-
-    public SafeContentHandler(ContentHandler handler) {
-        this.handler = handler;
-    }
-
-    /**
-     * @throws org.xml.sax.SAXException
-     */
-    public void startDocument() throws SAXException {
-        if (! documentStarted) {
-            handler.startDocument();
-            documentStarted = true;
-        }
-    }
-
-    /**
-     * @throws org.xml.sax.SAXException
-     */
-    public void endDocument() throws SAXException {
-        if (! documentEnded) {
-            handler.endDocument();
-            documentEnded = true;
-        }
-    }
-
-    /**
-     * @param arg0
-     * @param arg1
-     * @param arg2
-     * @throws org.xml.sax.SAXException
-     */
-    public void characters(char[] arg0, int arg1, int arg2)
-        throws SAXException {
-        handler.characters(arg0, arg1, arg2);
-    }
-
-    /**
-     * @param arg0
-     * @param arg1
-     * @param arg2
-     * @throws org.xml.sax.SAXException
-     */
-    public void endElement(String arg0, String arg1, String arg2)
-        throws SAXException {
-        handler.endElement(arg0, arg1, arg2);
-    }
-
-    /**
-     * @param arg0
-     * @throws org.xml.sax.SAXException
-     */
-    public void endPrefixMapping(String arg0) throws SAXException {
-        handler.endPrefixMapping(arg0);
-    }
-
-    /**
-     * @param arg0
-     * @param arg1
-     * @param arg2
-     * @throws org.xml.sax.SAXException
-     */
-    public void ignorableWhitespace(char[] arg0, int arg1, int arg2)
-        throws SAXException {
-        handler.ignorableWhitespace(arg0, arg1, arg2);
-    }
-
-    /**
-     * @param arg0
-     * @param arg1
-     * @throws org.xml.sax.SAXException
-     */
-    public void processingInstruction(String arg0, String arg1)
-        throws SAXException {
-        handler.processingInstruction(arg0, arg1);
-    }
-
-    /**
-     * @param arg0
-     */
-    public void setDocumentLocator(Locator arg0) {
-        handler.setDocumentLocator(arg0);
-    }
-
-    /**
-     * @param arg0
-     * @throws org.xml.sax.SAXException
-     */
-    public void skippedEntity(String arg0) throws SAXException {
-        handler.skippedEntity(arg0);
-    }
-
-    /**
-     * @param arg0
-     * @param arg1
-     * @param arg2
-     * @param arg3
-     * @throws org.xml.sax.SAXException
-     */
-    public void startElement(
-        String arg0,
-        String arg1,
-        String arg2,
-        Attributes arg3)
-        throws SAXException {
-        handler.startElement(arg0, arg1, arg2, arg3);
-    }
-
-    /**
-     * @param arg0
-     * @param arg1
-     * @throws org.xml.sax.SAXException
-     */
-    public void startPrefixMapping(String arg0, String arg1)
-        throws SAXException {
-        handler.startPrefixMapping(arg0, arg1);
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/util/TagUtils.java b/src/java/org/apache/commons/jelly/util/TagUtils.java
deleted file mode 100644
index 909f87e..0000000
--- a/src/java/org/apache/commons/jelly/util/TagUtils.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.util;
-
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.impl.CompositeTextScriptBlock;
-import org.apache.commons.jelly.impl.ScriptBlock;
-import org.apache.commons.jelly.impl.TextScript;
-
-/** Contains static methods to help tag developers.
- * @author Hans Gilde
- *
- */
-public class TagUtils {
-    private TagUtils() {
-        
-    }
-
-    /** Trims the whitespace from a script and its children.
-     * 
-     */
-    public static void trimScript(Script body) {
-        synchronized(body) {
-            if ( body instanceof CompositeTextScriptBlock ) {
-                CompositeTextScriptBlock block = (CompositeTextScriptBlock) body;
-                block.trimWhitespace();
-            }
-            else
-            if ( body instanceof ScriptBlock ) {
-                ScriptBlock block = (ScriptBlock) body;
-                block.trimWhitespace();
-            }
-            else if ( body instanceof TextScript ) {
-                TextScript textScript = (TextScript) body;
-                textScript.trimWhitespace();
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/src/java/org/apache/commons/jelly/xpath/XPathComparator.java b/src/java/org/apache/commons/jelly/xpath/XPathComparator.java
deleted file mode 100644
index 4178265..0000000
--- a/src/java/org/apache/commons/jelly/xpath/XPathComparator.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.xpath;
-
-import java.util.Comparator;
-import java.util.List;
-
-import org.apache.commons.jelly.util.NestedRuntimeException;
-import org.dom4j.Node;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-
-/**
- * Compares xml nodes by extracting the value at xpath and
- * comparing it.
- *
- * @author <a href="mailto:jason@jhorman.org">Jason Horman</a>
- * @version $Id: XPathComparator.java,v 1.4 2004/09/09 12:29:36 dion Exp $
- */
-
-public class XPathComparator implements Comparator {
-
-    /** The xpath to use to extract value from nodes to compare */
-    private XPath xpath = null;
-
-    /** Sort descending or ascending */
-    private boolean descending = false;
-
-    public XPathComparator() {
-
-    }
-
-    public XPathComparator(XPath xpath, boolean descending) {
-        this.xpath = xpath;
-        this.descending = descending;
-    }
-
-    public void setXpath(XPath xpath) {
-        this.xpath = xpath;
-    }
-
-    public XPath getXpath() {
-        return xpath;
-    }
-
-    public void setDescending(boolean descending) {
-        this.descending = descending;
-    }
-
-    public int compare(Object o1, Object o2) {
-        return compare((Node)o1, (Node)o2);
-    }
-
-    public int compare(Node n1, Node n2) {
-        try {
-
-            // apply the xpaths. not using stringValueOf since I don't
-            // want all of the child nodes appended to the strings
-            Object val1 = xpath.evaluate(n1);
-            Object val2 = xpath.evaluate(n2);
-
-            // return if null
-            if (val1 == null || val2 == null) {
-                return val1 == null ? (val2 == null ? 1 : -1) : 1;
-            }
-
-            Comparable c1 = getComparableValue(val1);
-            Comparable c2 = getComparableValue(val2);
-
-            // compare descending or ascending
-            if (!descending) {
-                return c1.compareTo(c2);
-            } else {
-                return c2.compareTo(c1);
-            }
-
-        } catch (JaxenException e) {
-
-            throw new XPathSortException("error sorting nodes", e);
-
-        }
-    }
-
-    /**
-     * Turns the XPath result value into a Comparable object.
-     */
-    protected Comparable getComparableValue(Object value) {
-        if (value instanceof List) {
-            List list = (List) value;
-            if (list.isEmpty()) {
-                value = "";
-            }
-            value = list.get(0);
-            if (value == null) {
-                value = "";
-            }
-        }
-        if (value instanceof Comparable) {
-            return (Comparable) value;
-        }
-        else if (value instanceof Node) {
-            Node node = (Node) value;
-            return node.getStringValue();
-        }
-        return value.toString();
-    }
-
-    /**
-     * My own runtime exception in case something goes wrong with sort.
-     */
-    public static class XPathSortException extends NestedRuntimeException {
-        public XPathSortException(String message, Throwable cause) {
-            super(message, cause);
-        }
-    }
-}
diff --git a/src/java/org/apache/commons/jelly/xpath/XPathSource.java b/src/java/org/apache/commons/jelly/xpath/XPathSource.java
deleted file mode 100644
index 55953c1..0000000
--- a/src/java/org/apache/commons/jelly/xpath/XPathSource.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.xpath;
-
-
-/**
- * A tag which is capable of producing a source of XPath context objects
- * such as &lt;x:forEach&gt;
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public interface XPathSource {
-
-    public Object getXPathSource();
-
-}
diff --git a/src/java/org/apache/commons/jelly/xpath/XPathTagSupport.java b/src/java/org/apache/commons/jelly/xpath/XPathTagSupport.java
deleted file mode 100644
index da789e6..0000000
--- a/src/java/org/apache/commons/jelly/xpath/XPathTagSupport.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.xpath;
-
-import org.apache.commons.jelly.TagSupport;
-
-/** An abstract base class useful for implementation inheritence
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.4 $
-  */
-public abstract class XPathTagSupport extends TagSupport {
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    protected Object getXPathContext() {
-        XPathSource tag = (XPathSource) findAncestorWithClass( XPathSource.class );
-        if ( tag != null ) {
-            return tag.getXPathSource();
-        }
-        return null;
-    }
-}
diff --git a/src/test/META-INF/services/jelly.test-library b/src/test/META-INF/services/jelly.test-library
deleted file mode 100644
index f433df4..0000000
--- a/src/test/META-INF/services/jelly.test-library
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.commons.jelly.test.impl.DummyTagLibrary
\ No newline at end of file
diff --git a/src/test/log4j.properties b/src/test/log4j.properties
deleted file mode 100644
index 4ff221d..0000000
--- a/src/test/log4j.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-log4j.rootCategory = INFO, console
-
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%m%n
diff --git a/src/test/org/apache/commons/jelly/TestCoreTags.java b/src/test/org/apache/commons/jelly/TestCoreTags.java
deleted file mode 100644
index 6742a7f..0000000
--- a/src/test/org/apache/commons/jelly/TestCoreTags.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly;
-
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.StringWriter;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.impl.TextScript;
-import org.apache.commons.jelly.parser.XMLParser;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Tests the core tags
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.15 $
-  */
-public class TestCoreTags extends TestCase {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(TestCoreTags.class);
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestCoreTags.class);
-    }
-
-    public TestCoreTags(String testName) {
-        super(testName);
-    }
-
-    public void testArgs() throws Exception {
-        InputStream in = new FileInputStream("src/test/org/apache/commons/jelly/test_args.jelly");
-        XMLParser parser = new XMLParser();
-        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("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);
-        }
-        assertEquals("Produces the correct output", "one two three", text);
-    }
-
-    public void testTrimEndWhitespace() throws Exception {
-        TextScript textScript = new TextScript(" ");
-        textScript.trimEndWhitespace();
-        assertEquals("", textScript.getText());
-
-        textScript = new TextScript("");
-        textScript.trimEndWhitespace();
-        assertEquals("", textScript.getText());
-
-        textScript = new TextScript(" foo ");
-        textScript.trimEndWhitespace();
-        assertEquals(" foo", textScript.getText());
-
-        textScript = new TextScript("foo");
-        textScript.trimEndWhitespace();
-        assertEquals("foo", textScript.getText());
-    }
-
-    public void testTrimStartWhitespace() throws Exception {
-        TextScript textScript = new TextScript(" ");
-        textScript.trimStartWhitespace();
-        assertEquals("", textScript.getText());
-
-        textScript = new TextScript("");
-        textScript.trimStartWhitespace();
-        assertEquals("", textScript.getText());
-
-        textScript = new TextScript(" foo ");
-        textScript.trimStartWhitespace();
-        assertEquals("foo ", textScript.getText());
-
-        textScript = new TextScript("foo");
-        textScript.trimStartWhitespace();
-        assertEquals("foo", textScript.getText());
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/TestJelly.java b/src/test/org/apache/commons/jelly/TestJelly.java
deleted file mode 100644
index 561372c..0000000
--- a/src/test/org/apache/commons/jelly/TestJelly.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly;
-
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class TestJelly extends JellyTestSuite {
-
-    public static void main( String[] args ) throws Exception {
-        TestRunner.run( suite() );
-    }
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestJelly.class, "suite.jelly");
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/TestJellyContext.java b/src/test/org/apache/commons/jelly/TestJellyContext.java
deleted file mode 100644
index 75f028c..0000000
--- a/src/test/org/apache/commons/jelly/TestJellyContext.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly;
-
-import java.util.HashMap;
-
-import junit.framework.TestCase;
-
-/**
- *
- * @author <a href="proyal@apache.org">peter royal</a>
- */
-public class TestJellyContext extends TestCase
-{
-    public TestJellyContext( String s )
-    {
-        super( s );
-    }
-
-    public void testSetVariablesAndRetainContextEntry()
-    {
-        final JellyContext jc = new JellyContext();
-
-        assertNotNull( "Initial variable of context", jc.getVariable( "context" ) );
-
-        jc.setVariables( new HashMap() );
-
-        assertNotNull( "Value after setVariables()", jc.getVariable( "context" ) );
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/TestTrim.java b/src/test/org/apache/commons/jelly/TestTrim.java
deleted file mode 100644
index 1cca5dc..0000000
--- a/src/test/org/apache/commons/jelly/TestTrim.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.impl.TextScript;
-
-/**
- * Tests the whitespace triming of scripts.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.9 $
- */
-public class TestTrim extends TestCase {
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestTrim.class);
-    }
-
-    public TestTrim(String testName) {
-        super(testName);
-    }
-
-    public void testTrim() throws Exception {
-        TextScript script = new TextScript( "   foo    " );
-        script.trimWhitespace();
-
-        assertEquals( "foo", script.getText() );
-
-        script = new TextScript( " foo " );
-        script.trimWhitespace();
-
-        assertEquals( "foo", script.getText() );
-
-        script = new TextScript( "foo" );
-        script.trimWhitespace();
-
-        assertEquals( "foo", script.getText() );
-    }
-
-    public void testTrimStart() throws Exception {
-        TextScript script = new TextScript( "   foo    " );
-        script.trimStartWhitespace();
-
-        assertEquals( "foo    ", script.getText() );
-
-        script = new TextScript( " foo " );
-        script.trimStartWhitespace();
-
-        assertEquals( "foo ", script.getText() );
-
-        script = new TextScript( "foo" );
-        script.trimStartWhitespace();
-
-        assertEquals( "foo", script.getText() );
-    }
-
-    public void testTrimEnd() throws Exception {
-        TextScript script = new TextScript( "   foo    " );
-        script.trimEndWhitespace();
-
-        assertEquals( "   foo", script.getText() );
-
-        script = new TextScript( " foo " );
-        script.trimEndWhitespace();
-
-        assertEquals( " foo", script.getText() );
-
-        script = new TextScript( "foo" );
-        script.trimEndWhitespace();
-
-        assertEquals( "foo", script.getText() );
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/TestXMLOutput.java b/src/test/org/apache/commons/jelly/TestXMLOutput.java
deleted file mode 100644
index bd4cfa5..0000000
--- a/src/test/org/apache/commons/jelly/TestXMLOutput.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly;
-
-import java.io.ByteArrayOutputStream;
-
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-/**
- * @author Hans Gilde
- *
- */
-public class TestXMLOutput extends BaseJellyTest {
-
-    /** JUnit constructor
-     * @param name
-     */
-    public TestXMLOutput(String name) {
-        super(name);
-    }
-    
-    public void testOutputGood() throws Exception {
-        setUpScript("outputGood.jelly");
-        Script script = getJelly().compileScript();
-        
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        
-        script.run(getJellyContext(),XMLOutput.createXMLOutput(bos));
-        assertEquals("<html></html>x",bos.toString());
-    }
-    
-    public void testOutputBad() throws Exception {
-        setUpScript("outputBad.jelly");
-        Script script = getJelly().compileScript();
-        
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        
-        script.run(getJellyContext(),XMLOutput.createXMLOutput(bos));
-        assertEquals("<html></html>",bos.toString());
-    }
-    
-    public void testOutputBadGood() throws Exception {
-        setUpScript("outputBad.jelly");
-        Script script = getJelly().compileScript();
-        
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        
-        XMLOutput ouput = XMLOutput.createXMLOutput(bos);
-        
-        script.run(getJellyContext(),ouput);
-        ouput.flush();
-        assertEquals("<html></html>",bos.toString());
-    }
-    
-    public void testOutputData() throws Exception {
-        setUpScript("outputData.jelly");
-        Script script = getJelly().compileScript();
-
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        XMLOutput ouput = XMLOutput.createXMLOutput(bos);
-
-        script.run(getJellyContext(),ouput);
-        ouput.flush();
-        assertEquals("[string]",bos.toString().trim());
-	}
-}
diff --git a/src/test/org/apache/commons/jelly/benchmark/benchmark.jelly b/src/test/org/apache/commons/jelly/benchmark/benchmark.jelly
deleted file mode 100644
index 81ba022..0000000
--- a/src/test/org/apache/commons/jelly/benchmark/benchmark.jelly
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!-- revaluates the same script many times to test performance -->
-
-<j:jelly xmlns:j="jelly:core">
-
-  <j:useBean var="start" class="java.util.Date" />
-  Started at: ${start}
-    
-  <j:forEach begin="1" end="1000">
-      <j:include uri="sample.jelly"/>
-  </j:forEach>
-  
-  <j:useBean var="end" class="java.util.Date" />
-  Finished at: ${end}
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/benchmark/sample.jelly b/src/test/org/apache/commons/jelly/benchmark/sample.jelly
deleted file mode 100644
index 4b6ba1e..0000000
--- a/src/test/org/apache/commons/jelly/benchmark/sample.jelly
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!-- a dummy file-->
-
-<j:jelly xmlns:j="jelly:core">
-
-    <j:if test="${1==2}">    
-        <static>
-            <some id="12">
-                <dummy x="${dummy.whatever}">
-                    this is some static XML
-                </dummy>
-                <dummy x="${dummy.whatever}">
-                    some ${e}
-                </dummy>
-            </some>
-        </static>
-    </j:if>        
-
-  <j:forEach var="i" begin="1" end="100">
-      <j:set var="dummy" value="${i}"/>
-  </j:forEach>
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/core/BaseMemoryLeakTest.java b/src/test/org/apache/commons/jelly/core/BaseMemoryLeakTest.java
deleted file mode 100644
index 3bcd1c0..0000000
--- a/src/test/org/apache/commons/jelly/core/BaseMemoryLeakTest.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import junit.framework.TestCase;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.parser.XMLParser;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * Automates the basic process of testing a tag library for a memory leak.
- * <p>
- * To use it, extend it. Use the {@link runScriptManyTimes(String, int)}
- * method in your unit tests.
- * 
- * @author Hans Gilde
- *  
- */
-public class BaseMemoryLeakTest extends TestCase {
-    private final static Log log = LogFactory.getLog(BaseMemoryLeakTest.class);
-
-    /**
-     * The JUnit constructor
-     * 
-     * @param name
-     */
-    public BaseMemoryLeakTest(String name) {
-        super(name);
-    }
-
-    /** Runs a script count times and reports the number of bytes "leaked".
-     * Note that "leaked" means "not collected by the GC"
-     * and can easily be different between JVM's. This is because all 
-     * freed references may not be available for GC in the short time
-     * between their freeing and the completion of this test.
-     * <p/>
-     * However, running a 
-     * script 10,000 or 100,000 times should be a pretty good test
-     * for a memory leak. If there's not too much memory "leaked",
-     * you're probably OK.
-     * @param scriptName The path to the script, from the classloader of the current class.
-     * @param count The number of times to run the script.
-     * @return The number of bytes "leaked"
-     * @throws IOException
-     * @throws SAXException
-     * @throws JellyException
-     */
-    public long runScriptManyTimes(String scriptName, int count)
-            throws IOException, SAXException, JellyException {
-        Runtime rt = Runtime.getRuntime();
-        JellyContext jc = new JellyContext();
-        jc.setClassLoader(getClass().getClassLoader());
-
-        XMLOutput output = XMLOutput.createDummyXMLOutput();
-        
-        URL url = this.getClass().getResource(scriptName);
-
-        String exturl = url.toExternalForm();
-        int lastSlash = exturl.lastIndexOf("/");
-        String extBase = exturl.substring(0,lastSlash+1);
-        URL baseurl = new URL(extBase);
-        jc.setCurrentURL(baseurl);
-        
-        InputStream is = url.openStream();
-        byte[] bytes = new byte[is.available()];
-        is.read(bytes);
-
-        InputStream scriptIStream = new ByteArrayInputStream(bytes);
-        InputSource scriptISource = new InputSource(scriptIStream);
-
-        is.close();
-        is = null;
-        bytes = null;
-
-        rt.runFinalization();
-        rt.gc();
-
-        long start = rt.totalMemory() - rt.freeMemory();
-        log.info("Starting memory test with used memory of " + start);
-
-        XMLParser parser;
-        Script script;
-
-        int outputEveryXIterations = outputEveryXIterations();
-
-        for (int i = 0; i < count; i++) {
-            scriptIStream.reset();
-            parser = new XMLParser();
-
-            script = parser.parse(scriptISource);
-            script.run(jc, output);
-            // PL: I don't see why but removing the clear here 
-            //     does make the test fail!
-            //     As if the WeakHashMap wasn't weak enough...
-            
-            //Hans: The structure of the relationship
-            //  between TagScript and Tag prevents WeakHashMap
-            //  from working in this case, which is why I removed it.
-            jc.clear();
-
-            if (outputEveryXIterations != 0 && i % outputEveryXIterations == 0) {
-                parser = null;
-                script = null;
-                
-                rt.runFinalization();
-                rt.gc();
-                long middle = rt.totalMemory() - rt.freeMemory();
-                log.info("TagHolderMap has " + jc.getThreadScriptDataMap().size() + " entries.");
-                log.info("Memory test after " + i + " runs: "
-                        + (middle - start));
-            }
-        }
-        
-        rt.gc();
-
-        jc = null;
-        output = null;
-        parser = null;
-        script = null;
-
-        scriptIStream = null;
-        scriptISource = null;
-
-        rt.runFinalization();
-        rt.gc();
-        
-        long nullsDone = rt.totalMemory() - rt.freeMemory();
-        log.info("Memory test completed, memory \"leaked\": " + (nullsDone - start));
-        
-        return nullsDone - start;
-    }
-
-    protected int outputEveryXIterations() {
-        return 1000;
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/Customer.java b/src/test/org/apache/commons/jelly/core/Customer.java
deleted file mode 100644
index 3ca5141..0000000
--- a/src/test/org/apache/commons/jelly/core/Customer.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * A sample bean that we can construct via Jelly tags
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class Customer {
-
-    private String name;
-    private String city;
-    private String location;
-    private List orders = new ArrayList();
-
-
-    public Customer() {
-    }
-
-    public Customer(String name) {
-        setName(name);
-    }
-
-    public Customer(String name, String city) {
-        setName(name);
-        setCity(city);
-    }
-
-    public Customer(String name, String city, Order anOrder) {
-        setName(name);
-        setCity(city);
-        addOrder(anOrder);
-    }
-
-    public Customer(Customer cust) {
-        setName(cust.getName());
-        setCity(cust.getCity());
-        setLocation(cust.getLocation());
-        List list = cust.getOrders();
-        if(null != list) {
-            for(Iterator iter = list.iterator();iter.hasNext();) {
-                addOrder((Order)iter.next());
-            }
-        }
-    }
-
-    public String toString() {
-        return super.toString() + "[name=" + name + ";city=" + city + "]";
-    }
-
-    /**
-     * Creates a new Order object
-     */
-    public Order createOrder() {
-        return new Order();
-    }
-
-    public List getOrders() {
-        return orders;
-    }
-
-    public void addOrder(Order order) {
-        orders.add(order);
-    }
-
-    public void removeOrder(Order order) {
-        orders.remove(order);
-    }
-
-    /**
-     * Returns the city.
-     * @return String
-     */
-    public String getCity() {
-        return city;
-    }
-
-    /**
-     * Returns the location.
-     * @return String
-     */
-    public String getLocation() {
-        return location;
-    }
-
-    /**
-     * Returns the name.
-     * @return String
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the city.
-     * @param city The city to set
-     */
-    public void setCity(String city) {
-        this.city = city;
-    }
-
-    /**
-     * Sets the location.
-     * @param location The location to set
-     */
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    /**
-     * Sets the name.
-     * @param name The name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/ExceptionBean.java b/src/test/org/apache/commons/jelly/core/ExceptionBean.java
deleted file mode 100644
index d58d260..0000000
--- a/src/test/org/apache/commons/jelly/core/ExceptionBean.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-/**
- * A sample bean that throws exceptions when its methods are invoked.
- */
-public class ExceptionBean {
-
-    public ExceptionBean() {
-    }
-
-    public void instanceMethod( String msg) throws Exception {
-        throw new Exception( msg );
-    }
-
-    public static void staticMethod( String msg) throws Exception {
-        throw new Exception( msg );
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/Order.java b/src/test/org/apache/commons/jelly/core/Order.java
deleted file mode 100644
index f9e12bf..0000000
--- a/src/test/org/apache/commons/jelly/core/Order.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-/**
- * A sample bean that we can construct via Jelly tags
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class Order {
-
-    private Product product;
-    private int amount;
-    private double price;
-
-    public Order() {
-    }
-
-    public String toString() {
-        return "Order[amount=" + amount + ";price=" + price + ";product=" + product + "]";
-    }
-
-    /**
-     * Factory method to create a new Product
-     */
-    public Product createProduct() {
-        return new Product();
-    }
-
-    /**
-     * Returns the amount.
-     * @return int
-     */
-    public int getAmount() {
-        return amount;
-    }
-
-    /**
-     * Returns the price.
-     * @return double
-     */
-    public double getPrice() {
-        return price;
-    }
-
-    /**
-     * Sets the amount.
-     * @param amount The amount to set
-     */
-    public void setAmount(int amount) {
-        this.amount = amount;
-    }
-
-    /**
-     * Sets the price.
-     * @param price The price to set
-     */
-    public void setPrice(double price) {
-        this.price = price;
-    }
-
-    /**
-     * Returns the product.
-     * @return Product
-     */
-    public Product getProduct() {
-        return product;
-    }
-
-    /**
-     * Sets the product.
-     * @param product The product to set
-     */
-    public void setProduct(Product product) {
-        this.product = product;
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/Product.java b/src/test/org/apache/commons/jelly/core/Product.java
deleted file mode 100644
index cdbdfc5..0000000
--- a/src/test/org/apache/commons/jelly/core/Product.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-/**
- * A sample bean that we can construct via Jelly tags
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class Product {
-
-    private String id;
-    private String name;
-
-    public Product() {
-    }
-
-    public String toString() {
-        return "Product[id=" + id + ";name=" + name + "]";
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /**
-     * Returns the id.
-     * @return String
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Returns the name.
-     * @return String
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the id.
-     * @param id The id to set
-     */
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    /**
-     * Sets the name.
-     * @param name The name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestArgTag.java b/src/test/org/apache/commons/jelly/core/TestArgTag.java
deleted file mode 100644
index 8b6faf1..0000000
--- a/src/test/org/apache/commons/jelly/core/TestArgTag.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.tags.core.ArgTag;
-import org.apache.commons.jelly.tags.core.ArgTagParent;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-/**
- * @author Rodney Waldhoff
- * @version $Revision: 1.9 $ $Date: 2004/10/26 23:54:37 $
- */
-public class TestArgTag extends BaseJellyTest {
-
-    public TestArgTag(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestArgTag.class);
-    }
-
-    public void setUp() throws Exception {
-        super.setUp();
-        parentTag = new MockArgTagParent();
-        argTag = new ArgTag();
-        argTag.setContext(getJellyContext());
-        argTag.setParent(parentTag);
-        argTag.setBody(new MockScript());
-    }
-
-    public void tearDown() throws Exception {
-        super.tearDown();
-        parentTag = null;
-        argTag = null;
-    }
-
-    public void testToBooleanFromString() throws Exception {
-        argTag.setType("boolean");
-        argTag.setValue("true");
-        argTag.doTag(getXMLOutput());
-        assertEquals(Boolean.TYPE,parentTag.getType(0));
-        assertEquals(Boolean.TRUE,parentTag.getValue(0));
-    }
-
-    public void testToCharFromString() throws Exception {
-        argTag.setType("char");
-        argTag.setValue("X");
-        argTag.doTag(getXMLOutput());
-        assertEquals(Character.TYPE,parentTag.getType(0));
-        assertEquals(new Character('X'),parentTag.getValue(0));
-    }
-
-    public void testToByteFromString() throws Exception {
-        argTag.setType("byte");
-        argTag.setValue("17");
-        argTag.doTag(getXMLOutput());
-        assertEquals(Byte.TYPE,parentTag.getType(0));
-        assertEquals(new Byte((byte)17),parentTag.getValue(0));
-    }
-
-    public void testToByteFromNumber() throws Exception {
-        argTag.setType("byte");
-        argTag.setValue(new Double(17.3d));
-        argTag.doTag(getXMLOutput());
-        assertEquals(Byte.TYPE,parentTag.getType(0));
-        assertEquals(new Byte((byte)17),parentTag.getValue(0));
-    }
-
-    public void testToShortFromString() throws Exception {
-        argTag.setType("short");
-        argTag.setValue("17");
-        argTag.doTag(getXMLOutput());
-        assertEquals(Short.TYPE,parentTag.getType(0));
-        assertEquals(new Short((short)17),parentTag.getValue(0));
-    }
-
-    public void testToShortFromNumber() throws Exception {
-        argTag.setType("short");
-        argTag.setValue(new Double(17.3d));
-        argTag.doTag(getXMLOutput());
-        assertEquals(Short.TYPE,parentTag.getType(0));
-        assertEquals(new Short((short)17),parentTag.getValue(0));
-    }
-
-    public void testToIntFromString() throws Exception {
-        argTag.setType("int");
-        argTag.setValue("17");
-        argTag.doTag(getXMLOutput());
-        assertEquals(Integer.TYPE,parentTag.getType(0));
-        assertEquals(new Integer((int)17),parentTag.getValue(0));
-    }
-
-    public void testToIntFromNumber() throws Exception {
-        argTag.setType("int");
-        argTag.setValue(new Double(17.3d));
-        argTag.doTag(getXMLOutput());
-        assertEquals(Integer.TYPE,parentTag.getType(0));
-        assertEquals(new Integer((int)17),parentTag.getValue(0));
-    }
-
-    public void testToFloatFromString() throws Exception {
-        argTag.setType("float");
-        argTag.setValue("17.3");
-        argTag.doTag(getXMLOutput());
-        assertEquals(Float.TYPE,parentTag.getType(0));
-        assertEquals(new Float((float)17.3),parentTag.getValue(0));
-    }
-
-    public void testToFloatFromNumber() throws Exception {
-        argTag.setType("float");
-        argTag.setValue(new Double(17.3d));
-        argTag.doTag(getXMLOutput());
-        assertEquals(Float.TYPE,parentTag.getType(0));
-        assertEquals(new Float((float)17.3),parentTag.getValue(0));
-    }
-
-    public void testToLongFromString() throws Exception {
-        argTag.setType("long");
-        argTag.setValue("17");
-        argTag.doTag(getXMLOutput());
-        assertEquals(Long.TYPE,parentTag.getType(0));
-        assertEquals(new Long((int)17),parentTag.getValue(0));
-    }
-
-    public void testToLongFromNumber() throws Exception {
-        argTag.setType("long");
-        argTag.setValue(new Double(17.3d));
-        argTag.doTag(getXMLOutput());
-        assertEquals(Long.TYPE,parentTag.getType(0));
-        assertEquals(new Long((long)17),parentTag.getValue(0));
-    }
-
-    public void testToDoubleFromString() throws Exception {
-        argTag.setType("double");
-        argTag.setValue("17.3");
-        argTag.doTag(getXMLOutput());
-        assertEquals(Double.TYPE,parentTag.getType(0));
-        assertEquals(new Double((double)17.3),parentTag.getValue(0));
-    }
-
-    public void testToDoubleFromNumber() throws Exception {
-        argTag.setType("double");
-        argTag.setValue(new Long(17L));
-        argTag.doTag(getXMLOutput());
-        assertEquals(Double.TYPE,parentTag.getType(0));
-        assertEquals(new Double((double)17),parentTag.getValue(0));
-    }
-
-    public void testToPrimitiveFromNull() throws Exception {
-        String[] types = { "boolean", "char", "byte", "short", "int", "float", "long", "double" };
-        for(int i=0;i<types.length;i++) {
-            argTag.setType(types[i]);
-            argTag.setValue(null);
-            try {
-                argTag.doTag(getXMLOutput());
-                fail("Expected JellyException");
-            } catch (JellyException e) {
-                // expected
-            }
-        }
-    }
-
-    public void testFromNull() throws Exception {
-        Class[] types = { Boolean.class, Character.class, Byte.class, Short.class, Integer.class, Float.class, Long.class, Double.class, String.class, Object.class };
-        for(int i=0;i<types.length;i++) {
-            argTag.setType(types[i].getName());
-            argTag.setValue(null);
-            argTag.doTag(getXMLOutput());
-            assertEquals(types[i],parentTag.getType(i));
-            assertNull(parentTag.getValue(i));
-        }
-    }
-
-    private MockArgTagParent parentTag = null;
-    private ArgTag argTag = null;
-
-    class MockArgTagParent extends TagSupport implements ArgTagParent {
-        public void addArgument(Class type, Object value) {
-            typeList.add(type);
-            valueList.add(value);
-        }
-
-        public void doTag(XMLOutput output)  {
-        }
-
-        private Class getType(int i) {
-            return (Class)(typeList.get(i));
-        }
-
-        private Object getValue(int i) {
-            return valueList.get(i);
-        }
-
-        private List typeList = new ArrayList();
-        private List valueList = new ArrayList();
-    }
-
-    class MockScript implements Script {
-        public Script compile() throws JellyException {
-            return this;
-        }
-
-        public void run(JellyContext context, XMLOutput output) throws JellyTagException {
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/core/TestBreakTag.java b/src/test/org/apache/commons/jelly/core/TestBreakTag.java
deleted file mode 100644
index b3dd441..0000000
--- a/src/test/org/apache/commons/jelly/core/TestBreakTag.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-public class TestBreakTag extends BaseJellyTest
-{
-
-    public TestBreakTag(String name)
-    {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception
-    {
-        return new TestSuite(TestBreakTag.class);
-    }
-
-    public void testSimpleBreakTag() throws Exception
-    {
-        setUpScript("testBreakTag.jelly");
-        Script script = getJelly().compileScript();
-
-        script.run(getJellyContext(), getXMLOutput());
-
-        String simpleResult = (String) getJellyContext().getVariable("simpleResult");
-
-        assertEquals("simpleResult", "12345", simpleResult);
-    }
-
-    public void testConditionalBreakTag() throws Exception
-    {
-        setUpScript("testBreakTag.jelly");
-        Script script = getJelly().compileScript();
-
-        script.run(getJellyContext(), getXMLOutput());
-
-        String simpleResult = (String) getJellyContext().getVariable("conditionalResult");
-
-        assertEquals("conditionalResult", "12345", simpleResult);
-    }
-
-    public void testVarBreakTag() throws Exception
-    {
-        setUpScript("testBreakTag.jelly");
-        Script script = getJelly().compileScript();
-
-        script.run(getJellyContext(), getXMLOutput());
-
-        String varBroken = (String) getJellyContext().getVariable("varBroken");
-
-        assertEquals("varBroken", "true", varBroken);
-    }
-
-    public void testVarNoBreakTag() throws Exception
-    {
-        setUpScript("testBreakTag.jelly");
-        Script script = getJelly().compileScript();
-
-        script.run(getJellyContext(), getXMLOutput());
-
-        String varNotBroken = (String) getJellyContext().getVariable("varNotBroken");
-
-        assertEquals("varNotBroken", "false", varNotBroken);
-    }
-
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestChooseTag.java b/src/test/org/apache/commons/jelly/core/TestChooseTag.java
deleted file mode 100644
index b4e0d41..0000000
--- a/src/test/org/apache/commons/jelly/core/TestChooseTag.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-/**
- * @author <a href="mailto:bwalding@apache.org">Ben Walding</a>
- * @version $Revision: 1.5 $
- */
-public class TestChooseTag extends BaseJellyTest
-{
-
-    public TestChooseTag(String name)
-    {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception
-    {
-        return new TestSuite(TestChooseTag.class);
-    }
-
-    public void testSimpleFileTag() throws Exception
-    {
-        setUpScript("testChooseTag.jelly");
-        Script script = getJelly().compileScript();
-
-        script.run(getJellyContext(), getXMLOutput());
-
-        String resultTrue = (String) getJellyContext().getVariable("result.true");
-        String resultFalse = (String) getJellyContext().getVariable("result.false");
-
-        assertEquals("result.true", "AC", resultTrue);
-        assertEquals("result.false", "BC", resultFalse);
-    }
-
-
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestCoreMemoryLeak.java b/src/test/org/apache/commons/jelly/core/TestCoreMemoryLeak.java
deleted file mode 100644
index a68c450..0000000
--- a/src/test/org/apache/commons/jelly/core/TestCoreMemoryLeak.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-/** Tests for basic memory leaking in core tags. Runs a few test scripts many times.
- * @author Hans Gilde
- *
- */
-public class TestCoreMemoryLeak extends BaseMemoryLeakTest {
-
-    /** The JUnit constructor.
-     * @param name
-     */
-    public TestCoreMemoryLeak(String name) {
-        super(name);
-    }
-    
-    public void testBasicScriptForLeak() throws Exception {
-        assertTrue(runScriptManyTimes("c.jelly", 10000) < 200000);
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestFileTag.java b/src/test/org/apache/commons/jelly/core/TestFileTag.java
deleted file mode 100644
index 907e573..0000000
--- a/src/test/org/apache/commons/jelly/core/TestFileTag.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import java.io.StringWriter;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.test.BaseJellyTest;
-import org.dom4j.io.HTMLWriter;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
-import org.xml.sax.SAXException;
-
-/**
- * @author <a href="mailto:robert@bull-enterprises.com">Robert McIntosh</a>
- * @version $Revision: 1.7 $
- */
-public class TestFileTag extends BaseJellyTest
-{
-
-    public TestFileTag(String name)
-    {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception
-    {
-        return new TestSuite(TestFileTag.class);
-    }
-
-    public void testSimpleFileTag() throws Exception
-    {
-        setUpScript("testFileTag.jelly");
-        Script script = getJelly().compileScript();
-
-        script.run(getJellyContext(), getXMLOutput());
-
-        String data = (String)getJellyContext().getVariable("testFileTag");
-
-        //FIXME This doesn't take into account attribute ordering
-        assertEquals("fully qualified attributes not passed",
-                "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\"></html>",
-                data);
-    }
-
-    public void testDom4Xmlns() throws SAXException {
-        StringWriter writer = new StringWriter();
-        OutputFormat format = new OutputFormat();
-        final XMLWriter xmlWriter = new HTMLWriter(writer, format);
-        xmlWriter.setEscapeText(false);
-
-        XMLOutput output = new XMLOutput(xmlWriter, xmlWriter);
-
-        String golden = "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n";
-        golden += "<html>";
-
-        output.startDocument();
-        output.write(golden);
-        output.endDocument();
-        assertEquals("output should contain the namespaces", golden, writer.toString());
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestForEachTag.java b/src/test/org/apache/commons/jelly/core/TestForEachTag.java
deleted file mode 100644
index 974231a..0000000
--- a/src/test/org/apache/commons/jelly/core/TestForEachTag.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.test.BaseJellyTest;
-import org.apache.commons.lang.StringUtils;
-
-/**
- * @author <a href="mailto:benanderson@benanderson.us">Ben Anderson</a>
- * @version $Revision: 1.2 $
- */
-public class TestForEachTag extends BaseJellyTest
-{
-
-    public TestForEachTag(String name)
-    {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception
-    {
-        return new TestSuite(TestForEachTag.class);
-    }
-
-    public void testForEachTag() throws Exception
-    {
-        setUpScript("testForEachTag.jelly");
-        Script script = getJelly().compileScript();
-
-        getJellyContext().setVariable("myList", 
-              new Object[] {"0", "VOID", "1", "VOID", "2", "VOID", 
-                            "3", "VOID", "4", "VOID", "5"});
-        getJellyContext().setVariable("testMyList", Boolean.TRUE);
-        script.run(getJellyContext(), getXMLOutput());
-
-        String resultOrdered = 
-                (String) getJellyContext().getVariable("result.ordered");
-        System.err.println("raw result is '" + resultOrdered + "'");
-        resultOrdered = StringUtils.replace(resultOrdered, " ", "");
-        resultOrdered = StringUtils.replace(resultOrdered, "\n", "");
-
-        assertEquals("result.ordered", 
-                       "FIRST_262_121/MIDDLE_242/LAST_363/",
-                     resultOrdered);
-    }
-    
-    public void testForEachTagNumList() throws Exception
-    {
-        setUpScript("testForEachTag.jelly");
-        Script script = getJelly().compileScript();
-
-        getJellyContext().setVariable("testNumList", Boolean.TRUE);
-        script.run(getJellyContext(), getXMLOutput());
-
-        String resultOrdered = 
-                (String) getJellyContext().getVariable("result.ordered");
-        System.err.println("raw result is '" + resultOrdered + "'");
-        resultOrdered = StringUtils.replace(resultOrdered, " ", "");
-        resultOrdered = StringUtils.replace(resultOrdered, "\n", "");
-
-        assertEquals("result.ordered", 
-                       "FIRST_262_122/MIDDLE_244/LAST_366/",
-                     resultOrdered);
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestGetStaticTag.java b/src/test/org/apache/commons/jelly/core/TestGetStaticTag.java
deleted file mode 100644
index 455b81b..0000000
--- a/src/test/org/apache/commons/jelly/core/TestGetStaticTag.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-/**
- * @version $Revision: 1.3 $
- */
-
-public class TestGetStaticTag extends BaseJellyTest {
-
-    public TestGetStaticTag(String name) {
-        super(name);
-    }
-
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestGetStaticTag.class);
-    }
-
-
-    /**
-     * Retrieves Integer.MAX_VALUE using tag and verifies against direct
-     * access.
-     */
-
-    public void testGetIntegerMaxValue() throws Exception {
-
-        setUpScript( "testGetStaticTag.jelly" );
-
-        Script script = getJelly().compileScript();
-
-        getJellyContext().setVariable( "test.Integer.MAX_VALUE",
-                                       Boolean.TRUE );
-
-        script.run( getJellyContext(), getXMLOutput() );
-
-        assertEquals( new Integer(java.lang.Integer.MAX_VALUE),
-                      getJellyContext().getVariable("value" ) );
-    }
-
-
-
-    /**
-     * Retrieves a non-existent field and verifies exception is thrown.
-     */
-
-    public void testInvalidGet() throws Exception {
-
-        setUpScript( "testGetStaticTag.jelly" );
-
-        Script script = getJelly().compileScript();
-
-        getJellyContext().setVariable( "test.InvalidGet", Boolean.TRUE );
-
-        try {
-            script.run( getJellyContext(), getXMLOutput() );
-        } catch(JellyTagException jte) {
-            return;
-        }
-
-        fail("JellyTagException not thrown.");
-    }
-
-}
-
-/* Emacs configuration
- * Local variables:        **
- * mode:             java  **
- * c-basic-offset:   4     **
- * indent-tabs-mode: nil   **
- * End:                    **
- */
diff --git a/src/test/org/apache/commons/jelly/core/TestIncludeTag.java b/src/test/org/apache/commons/jelly/core/TestIncludeTag.java
deleted file mode 100644
index cbd6992..0000000
--- a/src/test/org/apache/commons/jelly/core/TestIncludeTag.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import java.net.URL;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.TagLibrary;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Makes sure that nested includes work correctly
- *
- * @author Morgan Delagrange
- * @version $Revision: 1.3 $
- */
-public class TestIncludeTag extends TestCase {
-
-    Jelly jelly = null;
-    JellyContext context = null;
-    XMLOutput xmlOutput = null;
-
-    public TestIncludeTag(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestIncludeTag.class);
-    }
-
-    public void setUp(String scriptName) throws Exception {
-        URL url = this.getClass().getResource(scriptName);
-        if ( url == null ) {
-            throw new Exception(
-                "Could not find Jelly script: " + scriptName
-                + " in package of class: " + this.getClass().getName()
-            );
-        }
-        setUpFromURL(url);
-    }
-
-    public void setUpFromURL(URL url) throws Exception {
-        context = new CoreTaglibOnlyContext();
-        xmlOutput = XMLOutput.createDummyXMLOutput();
-
-        jelly = new Jelly();
-
-        jelly.setUrl(url);
-
-        String exturl = url.toExternalForm();
-        int lastSlash = exturl.lastIndexOf("/");
-        String extBase = exturl.substring(0,lastSlash+1);
-        URL baseurl = new URL(extBase);
-        context.setCurrentURL(baseurl);
-    }
-
-    public void testInnermost() throws Exception {
-        // performs no includes
-        setUp("c.jelly");
-        Script script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have set 'c' variable to 'true'",
-                   context.getVariable("c").equals("true"));
-    }
-
-    public void testMiddle() throws Exception {
-        // performs one include
-        setUp("b.jelly");
-        Script script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have set 'c' variable to 'true'",
-                   context.getVariable("c").equals("true"));
-        assertTrue("should have set 'b' variable to 'true'",
-                   context.getVariable("b").equals("true"));
-    }
-
-    public void testOutermost() throws Exception {
-        // performs one nested include
-        setUp("a.jelly");
-        Script script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have set 'c' variable to 'true'",
-                   context.getVariable("c").equals("true"));
-        assertTrue("should have set 'b' variable to 'true'",
-                   context.getVariable("b").equals("true"));
-        assertTrue("should have set 'a' variable to 'true'",
-                   context.getVariable("a").equals("true"));
-    }
-
-    /**
-     * Insure that includes happen correctly when Jelly scripts
-     * are referenced as a file (rather than as a classpath
-     * element).  Specifically checks to make sure includes succeed
-     * when the initial script is not in the user.dir directory.
-     */
-    public void testFileInclude() throws Exception {
-        // testing outermost
-        setUpFromURL(new URL("file:src/test/org/apache/commons/jelly/core/a.jelly"));
-        Script script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have set 'c' variable to 'true'",
-                   context.getVariable("c").equals("true"));
-        assertTrue("should have set 'b' variable to 'true'",
-                   context.getVariable("b").equals("true"));
-        assertTrue("should have set 'a' variable to 'true'",
-                   context.getVariable("a").equals("true"));
-    }
-
-    private class CoreTaglibOnlyContext extends JellyContext {
-
-        /**
-         * This implementations makes sure that only "jelly:core"
-         * taglib is instantiated, insuring that "optional" dependencies
-         * are not inadvertantly called.  Specifically addresses a bug
-         * in older Jelly dev versions where a nested include
-         * would trigger instantiation of all tag libraries.
-         *
-         * @param namespaceURI
-         * @return
-         */
-        public TagLibrary getTagLibrary(String namespaceURI)  {
-            if (namespaceURI.equals("jelly:core")) {
-                return super.getTagLibrary(namespaceURI);
-            } else {
-                throw new NoClassDefFoundError("Unexpected tag library uri: " +
-                                                   namespaceURI);
-            }
-        }
-
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestInvokeStaticTag.java b/src/test/org/apache/commons/jelly/core/TestInvokeStaticTag.java
deleted file mode 100644
index 9af67f8..0000000
--- a/src/test/org/apache/commons/jelly/core/TestInvokeStaticTag.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-/**
- * @author <a href="mailto:robert@bull-enterprises.com">Robert McIntosh</a>
- * @version $Revision: 1.9 $
- */
-public class TestInvokeStaticTag extends BaseJellyTest {
-
-    public TestInvokeStaticTag(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestInvokeStaticTag.class);
-    }
-
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-    public void tearDown() throws Exception {
-        super.tearDown();
-    }
-
-    /**
-     *  Gets the System property 'java.runtime.version' and compares it with,
-     *  well, the same system property
-     */
-     public void testSimpleSystemInvoke() throws Exception {
-        setUpScript( "testInvokeStaticTag.jelly" );
-        Script script = getJelly().compileScript();
-
-        getJellyContext().setVariable( "test.simpleSystemInvoke",Boolean.TRUE );
-
-        getJellyContext().setVariable( "propertyName", "java.runtime.version" );
-        script.run( getJellyContext(),getXMLOutput() );
-
-        assertTrue( System.getProperty( "java.runtime.version" ).equals( getJellyContext().getVariable("propertyName" ) ) );
-    }
-
-     /**
-     *  Sets the System property 'TEST PROPERTY' to the value 'Jelly is cool' and compares it with,
-     *  well, the same system property
-     */
-    public void testSystemInvoke() throws Exception {
-        setUpScript( "testInvokeStaticTag.jelly" );
-        Script script = getJelly().compileScript();
-
-        getJellyContext().setVariable( "test.systemInvoke",Boolean.TRUE );
-
-        getJellyContext().setVariable( "propertyName", "TEST PROPERTY" );
-        getJellyContext().setVariable( "propertyValue", "Jelly is cool" );
-        script.run( getJellyContext(),getXMLOutput() );
-
-        assertTrue( System.getProperty( "TEST PROPERTY" ).equals( "Jelly is cool" ) );
-
-    }
-
-     /**
-     *  Uses the java.text.MessageFormat class to format a text message
-     *  with 3 arguments.
-     */
-    public void testMessageFormatInvoke() throws Exception {
-        System.out.println( System.getProperties() );
-        setUpScript( "testInvokeStaticTag.jelly" );
-        Script script = getJelly().compileScript();
-
-        getJellyContext().setVariable( "test.messageFormatInvoke", Boolean.TRUE );
-
-        Object[] args = new Object[3];
-        args[0] = "Jelly";
-        args[1] = "coolest";
-        args[2] = "used";
-
-        getJellyContext().setVariable( "args", args );
-        getJellyContext().setVariable( "message", "Is not {0} the {1} thing you have ever {2}?" );
-        script.run( getJellyContext(),getXMLOutput() );
-
-        assertNotNull( getJellyContext().getVariable("message") );
-        assertTrue( getJellyContext().getVariable("message").equals("Is not Jelly the coolest thing you have ever used?") );
-
-    }
-
-    public void testInvokeThatThrowsException() throws Exception {
-        setUpScript( "testInvokeStaticTag.jelly" );
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.invokeThatThrowsException",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        String exceptionMessage = (String) getJellyContext().getVariable("exceptionMessage");
-        assertNotNull( exceptionMessage );
-        Exception jellyException = (Exception) getJellyContext().getVariable("jellyException");
-        assertNull( jellyException );
-        Exception exception = (Exception) getJellyContext().getVariable("exceptionThrown");
-        assertNotNull( exception );
-        assertEquals( exceptionMessage, exception.getMessage() );
-    }
-
-    public void testInvokeThatDoesNotHandleException() throws Exception {
-        setUpScript( "testInvokeStaticTag.jelly" );
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.invokeThatDoesNotHandleException",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        String exceptionMessage = (String) getJellyContext().getVariable("exceptionMessage");
-        assertNotNull( exceptionMessage );
-        JellyException jellyException = (JellyException) getJellyContext().getVariable("jellyException");
-        assertNotNull( jellyException );
-        assertTrue( "messages are the same", ! exceptionMessage.equals(jellyException.getMessage()) );
-        assertTrue( "exception '" + jellyException.getMessage() + "' does not ends with '" +
-                exceptionMessage+"'", jellyException.getMessage().endsWith(exceptionMessage) );
-        assertNotNull( jellyException.getCause() );
-        assertEquals( exceptionMessage, jellyException.getCause().getMessage() );
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestInvokeTag.java b/src/test/org/apache/commons/jelly/core/TestInvokeTag.java
deleted file mode 100644
index e329951..0000000
--- a/src/test/org/apache/commons/jelly/core/TestInvokeTag.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.core.Customer;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-/**
- * @author Rodney Waldhoff
- * @version $Revision: 1.9 $ $Date: 2004/10/26 23:54:37 $
- */
-public class TestInvokeTag extends BaseJellyTest {
-
-    public TestInvokeTag(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestInvokeTag.class);
-    }
-
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-    public void tearDown() throws Exception {
-        super.tearDown();
-    }
-
-    public void testSimpleInvoke() throws Exception {
-        setUpScript("testInvokeTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.simpleInvoke",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("foo"));
-        assertTrue(getJellyContext().getVariable("foo") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-        assertEquals("Jane Doe",customer.getName());
-        assertEquals("Chicago",customer.getCity());
-        assertNotNull(customer.getOrders());
-        assertEquals(1,customer.getOrders().size());
-        assertNotNull(customer.getOrders().get(0));
-    }
-
-    public void testInvokeWithVar() throws Exception {
-        setUpScript("testInvokeTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.invokeWithVar",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("size"));
-        assertTrue(getJellyContext().getVariable("size") instanceof Integer);
-        Integer size = (Integer)(getJellyContext().getVariable("size"));
-        assertEquals(3,size.intValue());
-    }
-
-    public void testInvokeWithReturnedValueAsArg() throws Exception {
-        setUpScript("testInvokeTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.invokeWithReturnedValueAsArg",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("customer"));
-        assertTrue(getJellyContext().getVariable("customer") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("customer"));
-        assertEquals("Jane Doe",customer.getName());
-        assertEquals("Chicago",customer.getCity());
-    }
-
-    public void testInvokeWithReturnedValueAsArgAndVar() throws Exception {
-        setUpScript("testInvokeTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.invokeWithReturnedValueAsArgAndVar",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("customer"));
-        assertTrue(getJellyContext().getVariable("customer") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("customer"));
-        assertEquals("Jane Doe",customer.getName());
-        assertEquals("Chicago",customer.getCity());
-        assertNotNull(getJellyContext().getVariable("argtwo"));
-        assertEquals("Chicago",getJellyContext().getVariable("argtwo"));
-    }
-
-    public void testInvokeThatThrowsException() throws Exception {
-        setUpScript("testInvokeTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.invokeThatThrowsException",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        String exceptionMessage = (String) getJellyContext().getVariable("exceptionMessage");
-        assertNotNull( exceptionMessage );
-        assertNotNull( getJellyContext().getVariable("exceptionBean"));
-        Exception jellyException = (Exception) getJellyContext().getVariable("jellyException");
-        assertNull( jellyException );
-        Exception exception = (Exception) getJellyContext().getVariable("exceptionThrown");
-        assertNotNull( exception );
-        assertEquals( exceptionMessage, exception.getMessage() );
-    }
-
-    public void testInvokeThatDoesNotHandleException() throws Exception {
-        setUpScript("testInvokeTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.invokeThatDoesNotHandleException",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        String exceptionMessage = (String) getJellyContext().getVariable("exceptionMessage");
-        assertNotNull( exceptionMessage );
-        assertNotNull( getJellyContext().getVariable("exceptionBean"));
-        JellyException jellyException = (JellyException) getJellyContext().getVariable("jellyException");
-        assertNotNull( jellyException );
-        assertTrue( "messages are the same", ! exceptionMessage.equals(jellyException.getMessage()) );
-        assertTrue( "exception '" + jellyException.getMessage() + "' does not ends with '" +
-                exceptionMessage+"'", jellyException.getMessage().endsWith(exceptionMessage) );
-        assertNotNull( jellyException.getCause() );
-        assertEquals( exceptionMessage, jellyException.getCause().getMessage() );
-    }
-
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestNewTag.java b/src/test/org/apache/commons/jelly/core/TestNewTag.java
deleted file mode 100644
index d5118c8..0000000
--- a/src/test/org/apache/commons/jelly/core/TestNewTag.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import java.util.Date;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.core.Customer;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-/**
- * @author Rodney Waldhoff
- * @version $Revision: 1.8 $ $Date: 2004/10/26 23:54:37 $
- */
-public class TestNewTag extends BaseJellyTest {
-
-    public TestNewTag(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestNewTag.class);
-    }
-
-    public void testSimpleNew() throws Exception {
-        setUpScript("testNewTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.simpleNew",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("foo"));
-        assertTrue(getJellyContext().getVariable("foo") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-        assertNull(customer.getName());
-    }
-
-    public void testNewThenOverwrite() throws Exception {
-        setUpScript("testNewTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.newThenOverwrite",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("foo"));
-        assertTrue(getJellyContext().getVariable("foo") instanceof Date);
-    }
-
-    public void testNewWithLiteralArg() throws Exception {
-        setUpScript("testNewTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.newWithLiteralArg",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("foo"));
-        assertTrue(getJellyContext().getVariable("foo") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-        assertNotNull(customer.getName());
-        assertEquals("Jane Doe",customer.getName());
-    }
-
-    public void testNewWithTwoArgs() throws Exception {
-        setUpScript("testNewTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.newWithTwoArgs",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("foo"));
-        assertTrue(getJellyContext().getVariable("foo") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-        assertNotNull(customer.getName());
-        assertEquals("Jane Doe",customer.getName());
-        assertNotNull(customer.getCity());
-        assertEquals("Chicago",customer.getCity());
-    }
-
-    public void testNewWithExpressionArg() throws Exception {
-        setUpScript("testNewTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.newWithExpressionArg",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("foo"));
-        assertTrue(getJellyContext().getVariable("foo") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-        assertNotNull(customer.getName());
-        assertEquals("Jane Doe",customer.getName());
-    }
-
-    public void testNewWithNullArg() throws Exception {
-        setUpScript("testNewTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.newWithNullArg",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("foo"));
-        assertTrue(getJellyContext().getVariable("foo") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-        assertNull(customer.getName());
-    }
-
-    public void testNewWithNewArg() throws Exception {
-        setUpScript("testNewTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.newWithNewArg",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        {
-            assertNotNull(getJellyContext().getVariable("foo"));
-            assertTrue(getJellyContext().getVariable("foo") instanceof Customer);
-            Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-            assertNotNull(customer.getName());
-            assertEquals("",customer.getName());
-        }
-        {
-            assertNotNull(getJellyContext().getVariable("bar"));
-            assertTrue(getJellyContext().getVariable("bar") instanceof Customer);
-            Customer customer = (Customer)(getJellyContext().getVariable("bar"));
-            assertEquals("Jane Doe",customer.getName());
-            assertEquals("Chicago",customer.getCity());
-            assertNotNull(customer.getOrders());
-            assertEquals(1,customer.getOrders().size());
-            assertNotNull(customer.getOrders().get(0));
-        }
-        {
-            assertNotNull(getJellyContext().getVariable("qux"));
-            assertTrue(getJellyContext().getVariable("qux") instanceof Customer);
-            Customer customer = (Customer)(getJellyContext().getVariable("qux"));
-            assertEquals("Jane Doe",customer.getName());
-            assertEquals("Chicago",customer.getCity());
-            assertNotNull(customer.getOrders());
-            assertEquals(1,customer.getOrders().size());
-            assertNotNull(customer.getOrders().get(0));
-        }
-    }
-
-    public void testNewWithUseBeanArg() throws Exception {
-        setUpScript("testNewTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.newWithUseBeanArg",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("foo"));
-        assertTrue(getJellyContext().getVariable("foo") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-        assertEquals("Jane Doe",customer.getName());
-        assertEquals("Chicago",customer.getCity());
-        assertEquals("Location",customer.getLocation());
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestSwitchTag.java b/src/test/org/apache/commons/jelly/core/TestSwitchTag.java
deleted file mode 100644
index 5ea2f42..0000000
--- a/src/test/org/apache/commons/jelly/core/TestSwitchTag.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-/**
- * @author Rodney Waldhoff
- * @version $Revision: 1.9 $ $Date: 2004/10/26 23:54:37 $
- */
-public class TestSwitchTag extends BaseJellyTest {
-
-    public TestSwitchTag(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestSwitchTag.class);
-    }
-
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-    public void tearDown() throws Exception {
-        super.tearDown();
-    }
-
-    public void testSimpleSwitch() throws Exception {
-        setUpScript("testSwitchTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("switch.on.a","two");
-        script.run(getJellyContext(),getXMLOutput());
-        assertNull("should not have 'a.one' variable set",
-                   getJellyContext().getVariable("a.one"));
-        assertTrue("should have set 'a.two' variable to 'true'",
-                   getJellyContext().getVariable("a.two").equals("true"));
-        assertNull("should not have 'a.three' variable set",
-                   getJellyContext().getVariable("a.three"));
-        assertNull("should not have 'a.null' variable set",
-                   getJellyContext().getVariable("a.null"));
-        assertNull("should not have 'a.default' variable set",
-                   getJellyContext().getVariable("a.default"));
-    }
-
-    public void testFallThru() throws Exception {
-        setUpScript("testSwitchTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("switch.on.a","one");
-        script.run(getJellyContext(),getXMLOutput());
-        assertTrue("should have set 'a.one' variable to 'true'",
-                   getJellyContext().getVariable("a.one").equals("true"));
-        assertTrue("should have set 'a.two' variable to 'true'",
-                   getJellyContext().getVariable("a.two").equals("true"));
-        assertNull("should not have 'a.three' variable set",
-                   getJellyContext().getVariable("a.three"));
-        assertNull("should not have 'a.null' variable set",
-                   getJellyContext().getVariable("a.null"));
-        assertNull("should not have 'a.default' variable set",
-                   getJellyContext().getVariable("a.default"));
-    }
-
-    public void testDefault() throws Exception {
-        setUpScript("testSwitchTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("switch.on.a","negative one");
-        script.run(getJellyContext(),getXMLOutput());
-        assertNull("should not have 'a.one' variable set",
-                   getJellyContext().getVariable("a.one"));
-        assertNull("should not have 'a.two' variable set",
-                   getJellyContext().getVariable("a.two"));
-        assertNull("should not have 'a.three' variable set",
-                   getJellyContext().getVariable("a.three"));
-        assertNull("should not have 'a.null' variable set",
-                   getJellyContext().getVariable("a.null"));
-        assertTrue("should have set 'a.default' variable to 'true'",
-                   getJellyContext().getVariable("a.default").equals("true"));
-    }
-
-    public void testNullCase() throws Exception {
-        setUpScript("testSwitchTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("switch.on.a",null);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNull("should not have 'a.one' variable set",
-                   getJellyContext().getVariable("a.one"));
-        assertNull("should not have 'a.two' variable set",
-                   getJellyContext().getVariable("a.two"));
-        assertNull("should not have 'a.three' variable set",
-                   getJellyContext().getVariable("a.three"));
-        assertTrue("should have set 'a.null' variable to 'true'",
-                   getJellyContext().getVariable("a.null").equals("true"));
-        assertNull("should not have 'a.default' variable set",
-                   getJellyContext().getVariable("a.default"));
-    }
-
-    public void testSwitchWithoutOn() throws Exception {
-        setUpScript("testSwitchTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("switch.without.on",new Boolean(true));
-        try {
-            script.run(getJellyContext(),getXMLOutput());
-            fail("Expected MissingAttributeException");
-        } catch(MissingAttributeException e) {
-            // expected
-        }
-    }
-
-    public void testCaseWithoutSwitch() throws Exception {
-        setUpScript("testSwitchTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("case.without.switch",new Boolean(true));
-        try {
-            script.run(getJellyContext(),getXMLOutput());
-            fail("Expected JellyException");
-        } catch(JellyException e) {
-            // expected
-        }
-    }
-
-    public void testDefaultWithoutSwitch() throws Exception {
-        setUpScript("testSwitchTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("default.without.switch",new Boolean(true));
-        try {
-            script.run(getJellyContext(),getXMLOutput());
-            fail("Expected JellyException");
-        } catch(JellyException e) {
-            // expected
-        }
-    }
-
-    public void testCaseWithoutValue() throws Exception {
-        setUpScript("testSwitchTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("case.without.value",new Boolean(true));
-        try {
-            script.run(getJellyContext(),getXMLOutput());
-            fail("Expected MissingAttributeException");
-        } catch(MissingAttributeException e) {
-            // expected
-        }
-    }
-
-    public void testMultipleDefaults() throws Exception {
-        setUpScript("testSwitchTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("multiple.defaults",new Boolean(true));
-        try {
-            script.run(getJellyContext(),getXMLOutput());
-            fail("Expected JellyException");
-        } catch(JellyException e) {
-            // expected
-        }
-    }
-
-    public void testCaseAfterDefault() throws Exception {
-        setUpScript("testSwitchTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("case.after.default",new Boolean(true));
-        try {
-            script.run(getJellyContext(),getXMLOutput());
-            fail("Expected JellyException");
-        } catch(JellyException e) {
-            // expected
-        }
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/TestUseBeanTag.java b/src/test/org/apache/commons/jelly/core/TestUseBeanTag.java
deleted file mode 100644
index bddeccf..0000000
--- a/src/test/org/apache/commons/jelly/core/TestUseBeanTag.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.test.BaseJellyTest;
-
-/**
- * Tests for UseBean tag
- */
-public class TestUseBeanTag extends BaseJellyTest {
-
-    public TestUseBeanTag(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestUseBeanTag.class);
-    }
-
-    /**
-     * Test a simple useBean tag works ok
-     * @throws Exception
-     */
-    public void testSimple() throws Exception{
-        setUpScript("testUseBeanTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.simple",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("foo"));
-        assertTrue(getJellyContext().getVariable("foo") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-        assertEquals("name not set", "testing", customer.getName());
-        assertEquals("city not set", "sydney", customer.getCity());
-    }
-
-    /**
-     * test extension
-     */
-    public void testExtension() throws Exception {
-        setUpScript("testUseBeanTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.extension",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        assertNotNull(getJellyContext().getVariable("foo"));
-        assertTrue(getJellyContext().getVariable("foo") instanceof Customer);
-        Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-        assertNull("name set wrongly", customer.getName());
-        assertEquals("city not set", "sydney", customer.getCity());
-    }
-
-    /** Test set a bad property name on a bean, should fail.
-     * @throws Exception
-     */
-    public void testBadProperty() throws Exception {
-        setUpScript("testUseBeanTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.badProperty",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        Exception e = (Exception)getJellyContext().getVariable("ex");
-        assertNotNull("Should have failed to set invalid bean property", e);
-    }
-
-    /** Test set a bad property name on a bean, this should be silently ignored.
-     * @throws Exception
-     */
-    public void testIgnoredBadProperty() throws Exception {
-        setUpScript("testUseBeanTag.jelly");
-        Script script = getJelly().compileScript();
-        getJellyContext().setVariable("test.badPropertyIgnored",Boolean.TRUE);
-        script.run(getJellyContext(),getXMLOutput());
-        Customer customer = (Customer)(getJellyContext().getVariable("foo"));
-        assertNotNull("Should have ignored invalid bean property", customer);
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/core/a.jelly b/src/test/org/apache/commons/jelly/core/a.jelly
deleted file mode 100644
index 0279fcf..0000000
--- a/src/test/org/apache/commons/jelly/core/a.jelly
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-
-  <j:set var="a" value="true"/>
-
-  <j:include uri="b.jelly"/>
-
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/core/b.jelly b/src/test/org/apache/commons/jelly/core/b.jelly
deleted file mode 100644
index f8332b2..0000000
--- a/src/test/org/apache/commons/jelly/core/b.jelly
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-
-    <j:set var="b" value="true"/>
-    
-    <j:include uri="c.jelly"/>
-
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/core/c.jelly b/src/test/org/apache/commons/jelly/core/c.jelly
deleted file mode 100644
index 62311a9..0000000
--- a/src/test/org/apache/commons/jelly/core/c.jelly
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-
-    <j:set var="c" value="true"/>
-
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/core/extension/CoreExtensionTagLibrary.java b/src/test/org/apache/commons/jelly/core/extension/CoreExtensionTagLibrary.java
deleted file mode 100644
index fd9e158..0000000
--- a/src/test/org/apache/commons/jelly/core/extension/CoreExtensionTagLibrary.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core.extension;
-
-import org.apache.commons.jelly.tags.core.CoreTagLibrary;
-
-/**
- * Test tag lib for extending core
- */
-public class CoreExtensionTagLibrary extends CoreTagLibrary {
-
-    public CoreExtensionTagLibrary() {
-        super();
-        registerTag("useBeanX", UseBeanExtendedTag.class);
-        registerTag("useBeanXP", UseBeanIgnoreBadProps.class);
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/core/extension/UseBeanExtendedTag.java b/src/test/org/apache/commons/jelly/core/extension/UseBeanExtendedTag.java
deleted file mode 100644
index fda7e28..0000000
--- a/src/test/org/apache/commons/jelly/core/extension/UseBeanExtendedTag.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core.extension;
-
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-
-/**
- * Test tag to check the ignored properties work ok
- */
-public class UseBeanExtendedTag extends UseBeanTag {
-
-    /**
-     * @see UseBeanTag#UseBeanTag()
-     */
-    public UseBeanExtendedTag() {
-        super();
-        addIgnoreProperty("name");
-    }
-
-    /**
-     * @see UseBeanTag#UseBeanTag(Class)
-     */
-    public UseBeanExtendedTag(Class defaultClass) {
-        super(defaultClass);
-        addIgnoreProperty("name");
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/core/extension/UseBeanIgnoreBadProps.java b/src/test/org/apache/commons/jelly/core/extension/UseBeanIgnoreBadProps.java
deleted file mode 100644
index 959dc01..0000000
--- a/src/test/org/apache/commons/jelly/core/extension/UseBeanIgnoreBadProps.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.core.extension;
-
-import org.apache.commons.jelly.tags.core.UseBeanTag;
-
-/**
- * @author Hans Gilde
- */
-public class UseBeanIgnoreBadProps extends UseBeanTag {
-    public UseBeanIgnoreBadProps() {
-        setIgnoreUnknownProperties(true);
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/core/testBreakTag.jelly b/src/test/org/apache/commons/jelly/core/testBreakTag.jelly
deleted file mode 100644
index acda43a..0000000
--- a/src/test/org/apache/commons/jelly/core/testBreakTag.jelly
+++ /dev/null
@@ -1,46 +0,0 @@
-<!--

-  Copyright 2002,2004 The Apache Software Foundation.

-  

-  Licensed under the Apache License, Version 2.0 (the "License");

-  you may not use this file except in compliance with the License.

-  You may obtain a copy of the License at

-  

-       http://www.apache.org/licenses/LICENSE-2.0

-  

-  Unless required by applicable law or agreed to in writing, software

-  distributed under the License is distributed on an "AS IS" BASIS,

-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  See the License for the specific language governing permissions and

-  limitations under the License.

--->

-

-<j:jelly xmlns:j="jelly:core">

-

-    <j:set var="simpleResult" value=""/>

-    <j:forEach var="counter" begin="1" end="10">

-       <j:set var="simpleResult" value="${simpleResult}${counter}"/>

-       <j:if test="${counter==5}">

-          <j:break/>

-       </j:if>

-    </j:forEach>

-      

-    <j:set var="conditionalResult" value=""/>

-    <j:forEach var="counter" begin="1" end="10">

-       <j:set var="conditionalResult" value="${conditionalResult}${counter}"/>

-       <j:break test="${counter==5}"/>

-    </j:forEach>  

-    

-    <j:set var="varBreaksResult" value=""/>

-    <j:forEach var="counter" begin="1" end="10">

-       <j:set var="varBreaksResult" value="${varBreaksResult}${counter}"/>

-       <j:break var="varBroken" test="${counter==5}"/>

-    </j:forEach>  

-

-    <j:set var="varNoBreaksResult" value=""/>

-    <j:forEach var="counter" begin="1" end="10">

-       <j:set var="varNoBreaksResult" value="${varNoBreaksResult}${counter}"/>

-       <j:break var="varNotBroken" test="${counter==11}"/>

-    </j:forEach>  

-    

-    

-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/core/testChooseTag.jelly b/src/test/org/apache/commons/jelly/core/testChooseTag.jelly
deleted file mode 100644
index 6d11167..0000000
--- a/src/test/org/apache/commons/jelly/core/testChooseTag.jelly
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-    <j:set var="result.true">
-      <j:choose>
-        <j:when test="${1 == 1}">
-          A
-        </j:when>
-        <j:otherwise>
-          B
-        </j:otherwise>
-        C        
-      </j:choose>
-    </j:set>
-    
-    <j:set var="result.false">
-      <j:choose>
-        <j:when test="${0 == 1}">
-          A
-        </j:when>
-        <j:otherwise>
-          B
-        </j:otherwise>
-        C        
-      </j:choose>
-    </j:set>
-    
-    
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/core/testFileTag.jelly b/src/test/org/apache/commons/jelly/core/testFileTag.jelly
deleted file mode 100644
index 88b8aea..0000000
--- a/src/test/org/apache/commons/jelly/core/testFileTag.jelly
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-    <j:file var="testFileTag" outputMode="html" escapeText="false">
-      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-      </html>
-    </j:file>
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/core/testForEachTag.jelly b/src/test/org/apache/commons/jelly/core/testForEachTag.jelly
deleted file mode 100644
index bdf6894..0000000
--- a/src/test/org/apache/commons/jelly/core/testForEachTag.jelly
+++ /dev/null
@@ -1,80 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-  <j:if test="${testMyList}">
-    <j:set var="result.ordered">
-      <j:forEach var="item" 
-                 items="${myList}" 
-                 varStatus="status"
-                 begin="2"
-                 end="6"
-                 step="2">
-        <j:choose>
-          <j:when test="${status.first}">
-            FIRST_
-            ${status.begin}
-            ${status.end}
-            ${status.step}_
-          </j:when>
-          <j:when test="${status.last}">
-            LAST_
-          </j:when>
-          <j:otherwise>
-            MIDDLE_
-          </j:otherwise>
-        </j:choose>
-        <j:if test="${not myList[status.index].equals(status.current)}">
-          FAIL
-        </j:if>
-        ${status.count}
-        ${status.index}
-        ${status.current}
-        /
-      </j:forEach>
-    </j:set>
-  </j:if>
-  
-  <!-- next test -->
-  <j:if test="${testNumList}">
-    <j:set var="result.ordered">
-      <j:forEach var="item" 
-                 varStatus="status"
-                 begin="2"
-                 end="6"
-                 step="2">
-        <j:choose>
-          <j:when test="${status.first}">
-            FIRST_
-            ${status.begin}
-            ${status.end}
-            ${status.step}_
-          </j:when>
-          <j:when test="${status.last}">
-            LAST_
-          </j:when>
-          <j:otherwise>
-            MIDDLE_
-          </j:otherwise>
-        </j:choose>
-        ${status.count}
-        ${status.index}
-        ${status.current}
-        /
-      </j:forEach>
-    </j:set>
-  </j:if>
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/core/testGetStaticTag.jelly b/src/test/org/apache/commons/jelly/core/testGetStaticTag.jelly
deleted file mode 100644
index 99e6384..0000000
--- a/src/test/org/apache/commons/jelly/core/testGetStaticTag.jelly
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-
-    <j:if test="${test.Integer.MAX_VALUE}">
-        <j:getStatic var="value" className="java.lang.Integer"
-                     field="MAX_VALUE"/>
-    </j:if>
-
-    <j:if test="${test.InvalidGet}">
-        <j:getStatic var="value" className="java.lang.Integer"
-                     field="FOOBAR"/>
-    </j:if>
-
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/core/testInvokeStaticTag.jelly b/src/test/org/apache/commons/jelly/core/testInvokeStaticTag.jelly
deleted file mode 100644
index df324c3..0000000
--- a/src/test/org/apache/commons/jelly/core/testInvokeStaticTag.jelly
+++ /dev/null
@@ -1,58 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-
-    <j:if test="${test.simpleSystemInvoke}">
-        <j:invokeStatic method="getProperty" className="java.lang.System" var="propertyName">
-            <j:arg value="${propertyName}" />
-        </j:invokeStatic>
-    </j:if>
-    
-    <j:if test="${test.systemInvoke}">
-        <j:invokeStatic method="setProperty" className="java.lang.System" var="result">
-            <j:arg value="${propertyName}" />
-            <j:arg value="${propertyValue}"/>
-        </j:invokeStatic>
-    </j:if>
-
-    <j:if test="${test.messageFormatInvoke}">
-        <j:invokeStatic method="format" className="java.text.MessageFormat" var="message">
-            <j:arg value="${message}" />
-            <j:arg value="${args}" />
-        </j:invokeStatic>
-    </j:if>
-    
-    <j:if test="${test.invokeThatThrowsException}">
-        <j:set var="exceptionMessage" value="method threw an exception"/>
-        <j:catch var="jellyException">
-            <j:invokeStatic className="org.apache.commons.jelly.core.ExceptionBean" method="staticMethod" exceptionVar="exceptionThrown">
-                <j:arg value="${exceptionMessage}"/>
-            </j:invokeStatic>
-        </j:catch>
-    </j:if>
-    <j:if test="${test.invokeThatDoesNotHandleException}">
-        <j:set var="exceptionMessage" value="method threw an exception"/>
-        <j:catch var="jellyException">
-            <j:invokeStatic className="org.apache.commons.jelly.core.ExceptionBean" method="staticMethod">
-                <j:arg value="${exceptionMessage}"/>
-            </j:invokeStatic>
-        </j:catch>
-    </j:if>
-    
-    
-</j:jelly>
-
diff --git a/src/test/org/apache/commons/jelly/core/testInvokeTag.jelly b/src/test/org/apache/commons/jelly/core/testInvokeTag.jelly
deleted file mode 100644
index 038847a..0000000
--- a/src/test/org/apache/commons/jelly/core/testInvokeTag.jelly
+++ /dev/null
@@ -1,82 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-
-    <j:if test="${test.simpleInvoke}">
-        <j:set var="namearg" value="Jane Doe"/>
-        <j:new var="foo" className="org.apache.commons.jelly.core.Customer"/>
-        <j:invoke method="setName" on="${foo}">
-            <j:arg value="${namearg}"/>
-        </j:invoke>
-        <j:invoke method="setCity" on="${foo}">
-            <j:arg value="Chicago"/>
-        </j:invoke>
-        <j:invoke method="addOrder" on="${foo}">
-            <j:arg><j:new className="org.apache.commons.jelly.core.Order"/></j:arg>
-        </j:invoke>
-    </j:if>
-
-    <j:if test="${test.invokeWithVar}">
-        <j:new var="list" className="java.util.ArrayList"/>
-        <j:invoke on="${list}" method="add"><j:arg value="One"/></j:invoke>
-        <j:invoke on="${list}" method="add"><j:arg value="Two"/></j:invoke>
-        <j:invoke on="${list}" method="add"><j:arg value="Three"/></j:invoke>
-        <j:invoke on="${list}" method="size" var="size"/>
-    </j:if>
-
-    <j:if test="${test.invokeWithReturnedValueAsArg}">
-        <j:new var="list" className="java.util.ArrayList"/>
-        <j:invoke on="${list}" method="add"><j:arg value="Jane Doe"/></j:invoke>
-        <j:invoke on="${list}" method="add"><j:arg value="Chicago"/></j:invoke>
-        
-        <j:new var="customer" className="org.apache.commons.jelly.core.Customer">
-            <j:arg><j:invoke on="${list}" method="get"><j:arg type="int" value="0"/></j:invoke></j:arg>
-            <j:arg><j:invoke on="${list}" method="get"><j:arg type="int" value="1"/></j:invoke></j:arg>
-        </j:new>
-    </j:if>
-
-    <j:if test="${test.invokeWithReturnedValueAsArgAndVar}">
-        <j:new var="list" className="java.util.ArrayList"/>
-        <j:invoke on="${list}" method="add"><j:arg value="Jane Doe"/></j:invoke>
-        <j:invoke on="${list}" method="add"><j:arg value="Chicago"/></j:invoke>
-        
-        <j:new var="customer" className="org.apache.commons.jelly.core.Customer">
-            <j:arg><j:invoke on="${list}" method="get"><j:arg type="int" value="0"/></j:invoke></j:arg>
-            <j:arg><j:invoke on="${list}" method="get" var="argtwo"><j:arg type="int" value="1"/></j:invoke></j:arg>
-        </j:new>
-    </j:if>
-    
-    <j:if test="${test.invokeThatThrowsException}">
-        <j:set var="exceptionMessage" value="method threw an exception"/>
-        <j:new var="exceptionBean" className="org.apache.commons.jelly.core.ExceptionBean"/>
-        <j:catch var="jellyException">
-            <j:invoke on="${exceptionBean}" method="instanceMethod" exceptionVar="exceptionThrown">
-                <j:arg value="${exceptionMessage}"/>
-            </j:invoke>
-        </j:catch>
-    </j:if>
-    <j:if test="${test.invokeThatDoesNotHandleException}">
-        <j:set var="exceptionMessage" value="method threw an exception"/>
-        <j:new var="exceptionBean" className="org.apache.commons.jelly.core.ExceptionBean"/>
-        <j:catch var="jellyException">
-            <j:invoke on="${exceptionBean}" method="instanceMethod">
-                <j:arg value="${exceptionMessage}"/>
-            </j:invoke>
-        </j:catch>
-    </j:if>
-
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/core/testNewTag.jelly b/src/test/org/apache/commons/jelly/core/testNewTag.jelly
deleted file mode 100644
index 2741e00..0000000
--- a/src/test/org/apache/commons/jelly/core/testNewTag.jelly
+++ /dev/null
@@ -1,75 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-    <j:if test="${test.simpleNew}">
-        <j:new var="foo" className="org.apache.commons.jelly.core.Customer"/>
-    </j:if>
-    <j:if test="${test.newThenOverwrite}">
-        <j:new var="foo" className="org.apache.commons.jelly.core.Customer"/>
-        <j:new var="foo" className="java.util.Date"/>
-    </j:if>
-    <j:if test="${test.newWithLiteralArg}">
-        <j:new var="foo" className="org.apache.commons.jelly.core.Customer">
-            <j:arg value="Jane Doe"/>
-        </j:new>
-    </j:if>
-    <j:if test="${test.newWithTwoArgs}">
-        <j:new var="foo" className="org.apache.commons.jelly.core.Customer">
-            <j:arg value="Jane Doe"/>
-            <j:arg value="Chicago"/>
-        </j:new>
-    </j:if>
-    <j:if test="${test.newWithExpressionArg}">
-        <j:set var="namearg" value="Jane Doe"/>
-        <j:new var="foo" className="org.apache.commons.jelly.core.Customer">
-            <j:arg value="${namearg}"/>
-        </j:new>
-    </j:if>
-    <j:if test="${test.newWithNullArg}">
-        <j:new var="foo" className="org.apache.commons.jelly.core.Customer">
-            <j:arg type="java.lang.String"/>
-        </j:new>
-    </j:if>
-    <j:if test="${test.newWithNewArg}">
-        <j:new var="foo" className="org.apache.commons.jelly.core.Customer">
-            <j:arg type="java.lang.String">
-                <j:new className="java.lang.String"/>
-            </j:arg>
-        </j:new>
-        <j:new var="bar" className="org.apache.commons.jelly.core.Customer">
-            <j:arg value="Jane Doe"/>
-            <j:arg value="Chicago"/>
-            <j:arg><j:new className="org.apache.commons.jelly.core.Order"/></j:arg>
-        </j:new>
-        <j:new var="qux" className="org.apache.commons.jelly.core.Customer">
-            <j:arg>
-                <j:new className="org.apache.commons.jelly.core.Customer">
-                    <j:arg value="Jane Doe"/>
-                    <j:arg value="Chicago"/>
-                    <j:arg><j:new className="org.apache.commons.jelly.core.Order"/></j:arg>
-                </j:new>
-            </j:arg>
-        </j:new>
-    </j:if>
-    <j:if test="${test.newWithUseBeanArg}">
-        <j:new var="foo" className="org.apache.commons.jelly.core.Customer">
-            <j:arg>
-                <j:useBean class="org.apache.commons.jelly.core.Customer" name="Jane Doe" city="Chicago" location="Location"/>
-            </j:arg>
-        </j:new>
-    </j:if>
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/core/testSwitchTag.jelly b/src/test/org/apache/commons/jelly/core/testSwitchTag.jelly
deleted file mode 100644
index b355f06..0000000
--- a/src/test/org/apache/commons/jelly/core/testSwitchTag.jelly
+++ /dev/null
@@ -1,84 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-    <j:switch on="${switch.on.a}">
-        <j:case value="one" fallThru="true">
-            <j:set var="a.one" value="true"/>
-        </j:case>
-        <j:case value="two">
-            <j:set var="a.two" value="true"/>
-        </j:case>
-        <j:case value="three">
-            <j:set var="a.three" value="true"/>
-        </j:case>
-        <j:case value="${null}">
-            <j:set var="a.null" value="true"/>
-        </j:case>
-        <j:default>
-            <j:set var="a.default" value="true"/>
-        </j:default>
-    </j:switch>
-    
-    <j:if test="${switch.without.on}">
-        <j:switch>
-            <j:case value="one" fallThru="true"/>
-            <j:case value="two"/>
-            <j:case value="three"/>
-            <j:case value="${null}"/>
-            <j:default/>
-        </j:switch>
-    </j:if>
-
-    <j:if test="${case.without.switch}">
-        <j:case value="this tag should cause an exception"/>
-    </j:if>
-    
-    <j:if test="${default.without.switch}">
-        <j:default/>
-    </j:if>
-
-    <j:if test="${case.without.value}">
-        <j:switch on="foo">
-            <j:case>
-                <!-- this should cause an exception (or even better, fail on validation) -->
-            </j:case>
-        </j:switch>
-    </j:if>
-    
-    <j:if test="${multiple.defaults}">
-        <j:switch on="foo">
-            <j:case value="bar">
-            </j:case>
-            <j:default>
-            </j:default>
-            <j:default>
-                <!-- this one should cause an exception (or even better, fail on validation) -->
-            </j:default>
-        </j:switch>
-    </j:if>
-    
-    <j:if test="${case.after.default}">
-        <j:switch on="foo">
-            <j:default>
-            </j:default>
-            <j:case value="bar">
-                <!-- this one should cause an exception (or even better, fail on validation) -->
-            </j:case>
-        </j:switch>
-    </j:if>
-
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/core/testUseBeanTag.jelly b/src/test/org/apache/commons/jelly/core/testUseBeanTag.jelly
deleted file mode 100644
index 8a0ebc6..0000000
--- a/src/test/org/apache/commons/jelly/core/testUseBeanTag.jelly
+++ /dev/null
@@ -1,52 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core"
-    xmlns:jx="jelly:org.apache.commons.jelly.core.extension.CoreExtensionTagLibrary">
-    
-    <j:if test="${test.simple}">
-        <j:useBean var="foo" 
-          class="org.apache.commons.jelly.core.Customer"
-          name="testing"
-          city="sydney"/>
-    </j:if>
-    
-    <j:if test="${test.extension}">
-        <jx:useBeanX var="foo" 
-          class="org.apache.commons.jelly.core.Customer"
-          name="testing"
-          city="sydney"/>
-    </j:if>
-    
-    <j:if test="${test.badProperty}">
-        <j:catch var="ex">
-            <jx:useBean var="foo" 
-              class="org.apache.commons.jelly.core.Customer"
-              name="testing"
-              city="sydney"
-              foo="bar"/>
-        </j:catch>
-    </j:if>
-    
-    <j:if test="${test.badPropertyIgnored}">
-        <jx:useBeanXP var="foo" 
-            class="org.apache.commons.jelly.core.Customer"
-            name="testing"
-            city="sydney"
-            foo="bar"/> 
-    </j:if>
-    
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/dummy.xml b/src/test/org/apache/commons/jelly/dummy.xml
deleted file mode 100644
index 98e5b6f..0000000
--- a/src/test/org/apache/commons/jelly/dummy.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<dummy>
-  <entry id="1">This is some sample XML</entry>
-  <entry id="2">And some more XML</entry>
-  <empty/>
-</dummy>  
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/example3.jelly b/src/test/org/apache/commons/jelly/example3.jelly
deleted file mode 100644
index b6f2081..0000000
--- a/src/test/org/apache/commons/jelly/example3.jelly
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<jelly xmlns="jelly:core">
-
-  <!-- a really silly way to do this but -->
-  <!-- this should test the choose/when/otherwise tags -->
-  <forEach var="iter" items="System.getProperties()">
-    <choose>
-      <when test='iter.key.equals( "java.home" )'>
-        Java Home = <expr value="iter.value"/>
-      </when>
-      <when test='iter.key.equals( "java.version" )'>
-        Java Version = <expr value="iter.value"/>
-      </when>
-      <otherwise>
-        <expr value="iter.key"/> = <expr value="iter.value"/>
-      </otherwise>
-    </choose>
-  </forEach>
-</jelly>
-
-
-
diff --git a/src/test/org/apache/commons/jelly/expression/TestDynaBeans.java b/src/test/org/apache/commons/jelly/expression/TestDynaBeans.java
deleted file mode 100644
index 147b686..0000000
--- a/src/test/org/apache/commons/jelly/expression/TestDynaBeans.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.expression;
-
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.beanutils.BasicDynaClass;
-import org.apache.commons.beanutils.DynaBean;
-import org.apache.commons.beanutils.DynaClass;
-import org.apache.commons.beanutils.DynaProperty;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.expression.jexl.JexlExpressionFactory;
-
-/**
- * Tests the use of Expression parsing
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class TestDynaBeans extends TestCase {
-
-    protected JellyContext context = new JellyContext();
-    protected ExpressionFactory factory = new JexlExpressionFactory();
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestDynaBeans.class);
-    }
-
-    public TestDynaBeans(String testName) {
-        super(testName);
-    }
-
-    public void testDynaBeans() throws Exception {
-        DynaClass dynaClass = createDynaClass();
-        DynaBean dynaBean = dynaClass.newInstance();
-        dynaBean.set( "stringProperty", "foo" );
-        dynaBean.set( "intProperty", new Integer(24) );
-
-        context.setVariable("dbean", dynaBean);
-
-        assertExpression("${dbean.stringProperty}", "foo");
-        assertExpression("${dbean.intProperty}", new Integer(24));
-    }
-
-    protected DynaClass createDynaClass() {
-        DynaProperty[] properties = {
-            new DynaProperty("booleanProperty", Boolean.TYPE),
-            new DynaProperty("booleanSecond", Boolean.TYPE),
-            new DynaProperty("doubleProperty", Double.TYPE),
-            new DynaProperty("floatProperty", Float.TYPE),
-            new DynaProperty("intProperty", Integer.TYPE),
-            new DynaProperty("listIndexed", List.class),
-            new DynaProperty("longProperty", Long.TYPE),
-            new DynaProperty("mappedProperty", Map.class),
-            new DynaProperty("mappedIntProperty", Map.class),
-            new DynaProperty("nullProperty", String.class),
-            new DynaProperty("shortProperty", Short.TYPE),
-            new DynaProperty("stringProperty", String.class),
-        };
-        return new BasicDynaClass("TestDynaClass", null, properties);
-    }
-
-
-    protected void assertExpression(String expressionText, Object expectedValue) throws Exception {
-        Expression expression = CompositeExpression.parse(expressionText, factory);
-        assertTrue( "Created a valid expression for: " + expressionText, expression != null );
-        Object value = expression.evaluate(context);
-        //assertEquals( "Expression for: " + expressionText + " is: " + expression, expectedValue, value );
-        assertEquals( "Wrong result for expression: " + expressionText, expectedValue, value );
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/expression/TestExpressions.java b/src/test/org/apache/commons/jelly/expression/TestExpressions.java
deleted file mode 100644
index 373e07d..0000000
--- a/src/test/org/apache/commons/jelly/expression/TestExpressions.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.expression;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.expression.jexl.JexlExpressionFactory;
-
-/**
- * Tests the use of Expression parsing
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class TestExpressions extends TestCase {
-
-    protected JellyContext context = new JellyContext();
-    protected ExpressionFactory factory = new JexlExpressionFactory();
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestExpressions.class);
-    }
-
-    public TestExpressions(String testName) {
-        super(testName);
-    }
-
-    public void testExpresssions() throws Exception {
-        context.setVariable("topping", "cheese");
-        context.setVariable("type", "deepPan");
-
-
-        assertExpression("foo", "foo");
-        assertExpression("${topping}", "cheese");
-        assertExpression("some${topping}", "somecheese");
-        assertExpression(" some ${topping} ", " some cheese ");
-        assertExpression("${topping}y", "cheesey");
-        assertExpression("A ${topping} ${type} pizza", "A cheese deepPan pizza");
-        assertExpression("${topping}-${type}", "cheese-deepPan");
-    }
-
-    public void testAntExpresssions() throws Exception {
-        context.setVariable("maven.home.foo", "cheese");
-
-        assertExpression("${maven.home.foo}", "cheese");
-        assertExpression("${maven.some.madeup.name}", null);
-        assertExpression("cheese ${maven.some.madeup.name}pizza", "cheese pizza");
-        assertExpression("ham and ${maven.home.foo} pizza", "ham and cheese pizza");
-        assertExpression("${maven.home.foo.length()}", new Integer(6));
-    }
-
-    public void testNotConditions() throws Exception {
-        context.setVariable("a", Boolean.TRUE);
-        context.setVariable("b", Boolean.FALSE);
-        context.setVariable("c", "true");
-        context.setVariable("d", "false");
-
-        assertExpression("${a}", Boolean.TRUE);
-        assertExpression("${!a}", Boolean.FALSE);
-        assertExpression("${b}", Boolean.FALSE);
-        assertExpression("${!b}", Boolean.TRUE);
-
-        assertExpression("${c}", "true");
-        assertExpression("${!c}", Boolean.FALSE);
-        assertExpression("${d}", "false");
-        assertExpression("${!d}", Boolean.TRUE);
-    }
-
-    public void testNotConditionsWithDot() throws Exception {
-        context.setVariable("x.a", Boolean.TRUE);
-        context.setVariable("x.b", Boolean.FALSE);
-        context.setVariable("x.c", "true");
-        context.setVariable("x.d", "false");
-
-        assertExpression("${x.a}", Boolean.TRUE);
-        assertExpression("${!x.a}", Boolean.FALSE);
-        assertExpression("${x.b}", Boolean.FALSE);
-        assertExpression("${!x.b}", Boolean.TRUE);
-
-        assertExpression("${x.c}", "true");
-        assertExpression("${!x.c}", Boolean.FALSE);
-        assertExpression("${x.d}", "false");
-        assertExpression("${!x.d}", Boolean.TRUE);
-    }
-
-    public void testNull() throws Exception {
-        context.setVariable("something.blank", "");
-        context.setVariable("something.ok", "cheese");
-
-        assertExpression("${something.blank.length() == 0}", Boolean.TRUE);
-        assertExpression("${something.blank == ''}", Boolean.TRUE);
-        assertExpression("${something.ok != null}", Boolean.TRUE);
-        assertExpression("${something.ok != ''}", Boolean.TRUE);
-        // null is a reserved word
-        //assertExpression("${something.null != ''}", Boolean.FALSE);
-        assertExpression("${unknown == null}", Boolean.TRUE);
-    }
-
-    protected void assertExpression(String expressionText, Object expectedValue) throws Exception {
-        Expression expression = CompositeExpression.parse(expressionText, factory);
-        assertTrue( "Created a valid expression for: " + expressionText, expression != null );
-        Object value = expression.evaluate(context);
-        assertEquals( "Wrong result for expression: " + expressionText, expectedValue, value );
-
-        String text = expression.getExpressionText();
-        assertEquals( "Wrong textual representation for expression text: ", expressionText, text);
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/hello_world.jelly b/src/test/org/apache/commons/jelly/hello_world.jelly
deleted file mode 100644
index b320ceb..0000000
--- a/src/test/org/apache/commons/jelly/hello_world.jelly
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core">
-
-  Hello World!
-
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/impl/TestTagLibraryResolver.java b/src/test/org/apache/commons/jelly/impl/TestTagLibraryResolver.java
deleted file mode 100644
index 9c38adc..0000000
--- a/src/test/org/apache/commons/jelly/impl/TestTagLibraryResolver.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.impl;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-/** Tests the core tags
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.9 $
-  */
-public class TestTagLibraryResolver extends TestCase {
-
-    public static void main(String[] args) {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestTagLibraryResolver.class);
-    }
-
-    public TestTagLibraryResolver(String testName) {
-        super(testName);
-    }
-
-    public void testResolver() throws Exception {
-        /**
-         * @todo temporary disbled test case until I can figure out how to get
-         * it to work with commons-discovery
-         */
-/*
-        TagLibrary library = resolver.resolveTagLibrary("jelly:test-library" );
-
-        assertTrue( "Found a tag library", library != null );
-        assertEquals( "Tag library is of the correct type", "org.apache.commons.jelly.test.impl.DummyTagLibrary", library.getClass().getName() );
-*/
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/import1.jelly b/src/test/org/apache/commons/jelly/import1.jelly
deleted file mode 100644
index d98454b..0000000
--- a/src/test/org/apache/commons/jelly/import1.jelly
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<jelly xmlns="jelly:core">
-
-  <set var="test1" value="${parentVar}"/>
-  
-</jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/outputBad.jelly b/src/test/org/apache/commons/jelly/outputBad.jelly
deleted file mode 100644
index 24bfcf5..0000000
--- a/src/test/org/apache/commons/jelly/outputBad.jelly
+++ /dev/null
@@ -1,3 +0,0 @@
-<j:jelly xmlns:j="jelly:core">

-	<html/>

-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/outputData.jelly b/src/test/org/apache/commons/jelly/outputData.jelly
deleted file mode 100644
index 0821653..0000000
--- a/src/test/org/apache/commons/jelly/outputData.jelly
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<j:jelly xmlns:j="jelly:core"><j:mute>
-	<!-- this test should output exactly the toString() of a list with one item, string -->
-	<j:new var="o1" className="java.util.LinkedList"/>
-	${o1.add("string")}
-	</j:mute>${o1}</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/outputGood.jelly b/src/test/org/apache/commons/jelly/outputGood.jelly
deleted file mode 100644
index ed9f2ab..0000000
--- a/src/test/org/apache/commons/jelly/outputGood.jelly
+++ /dev/null
@@ -1,3 +0,0 @@
-<j:jelly xmlns:j="jelly:core">

-	<html/>x

-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/run_all.jelly b/src/test/org/apache/commons/jelly/run_all.jelly
deleted file mode 100644
index b920893..0000000
--- a/src/test/org/apache/commons/jelly/run_all.jelly
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-
-  <!-- try an absolute path -->
-  <j:include uri="/src/test/org/apache/commons/jelly/hello_world.jelly"/>
-  
-
-   
-  <!-- now lets try pass in a variable to a child script -->
-  <j:set var="foo">bar</j:set>
-  <j:include uri="testFindVariable.jelly"/>
-  
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/show_args.jelly b/src/test/org/apache/commons/jelly/show_args.jelly
deleted file mode 100644
index 24887fe..0000000
--- a/src/test/org/apache/commons/jelly/show_args.jelly
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!-- displays the current command line arguments -->
-<j:jelly xmlns:j="jelly:core">
-
-<arguments>
-  <j:forEach var="arg" items="${args}" begin="1">
-      <argument>${arg}"</argument>
-  </j:forEach>
-</arguments>
-
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/show_properties.jelly b/src/test/org/apache/commons/jelly/show_properties.jelly
deleted file mode 100644
index 074157b..0000000
--- a/src/test/org/apache/commons/jelly/show_properties.jelly
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:jelly xmlns:j="jelly:core">
-
-<html>
-  <body>
-    <h1>System properties</h1>
-    
-    <table>
-      <tr>
-        <th>Name</th>
-        <th>Value</th>
-      </tr>
-
-      <j:forEach var="iter" items="${systemScope}">
-        <tr>
-          <td>${iter.key}</td>
-          <td>${iter.value}</td>
-        </tr>
-      </j:forEach>
-    </table>
-
-  </body>
-
-</html>
-
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/suite.jelly b/src/test/org/apache/commons/jelly/suite.jelly
deleted file mode 100644
index c0d52f1..0000000
--- a/src/test/org/apache/commons/jelly/suite.jelly
+++ /dev/null
@@ -1,363 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<test:suite 
-    xmlns:j="jelly:core" 
-    xmlns:test="jelly:junit">
-
-  <test:case name="testSetAndRemove">
-    
-        <j:set var="x" value="abc"/>
-        
-        <test:assertEquals expected="abc" actual="${x}"/>
-        
-        <j:remove var="x"/>
-        
-        <test:assert test="${x == null}"/>
-        <test:assert test="${empty x}"/>
-        
-  </test:case>
-
-  <test:case name="testSetWithDefault">
-    
-        <j:set var="foo" value="abc"/>
-        <j:set var="x" value="${doesNotExist}" defaultValue="${foo}"/>
-        
-        <test:assertEquals expected="abc" actual="${x}"/>
-
-        <j:set var="doesNotExist" value="def"/>        
-        <j:set var="x" value="${doesNotExist}" defaultValue="${foo}"/>
-        
-        <test:assertEquals expected="def" actual="${x}"/>
-        
-  </test:case>
-
-  <test:case name="testScope">
-
-        <j:set var="outer" value="def"/>
-
-        <test:assertEquals expected="def" actual="${outer}"/>
-        
-        <j:scope>    
-            <j:set var="x" value="abc"/>
-            
-            <test:assertEquals expected="abc" actual="${x}"/>
-            <test:assertEquals expected="def" actual="${outer}"/>
-        </j:scope>            
-            
-        <test:assert test="${x == null}"/>
-        <test:assert test="${empty x}"/>
-        
-  </test:case>
-        
-  <test:case name="testChoose">
-    
-        <j:set var="x" value="abc"/>
-        
-        <j:choose>
-          <j:when test="${x == 'abc'}">
-            this should always work
-          </j:when>
-          <j:when test="${x == 'xyz'}">
-            <fail>This should never fail</fail>
-          </j:when>
-          <j:otherwise>
-            <fail>This should never fail</fail>
-          </j:otherwise>
-        </j:choose>
-                    
-        <j:choose>
-          <j:when test="${x == 'xyz'}">
-            <fail>This should never fail</fail>
-          </j:when>
-          <j:when test="${x == 'abc'}">
-            this should always work
-          </j:when>
-          <j:otherwise>
-            <fail>This should never fail</fail>
-          </j:otherwise>
-        </j:choose>
-                    
-                    
-        <j:choose>
-          <j:when test="${x == 'xyz'}">
-            <fail>This should never fail</fail>
-          </j:when>
-          <j:when test="${x == 'zzz'}">
-            <fail>This should never fail</fail>
-          </j:when>
-          <j:otherwise>
-            this should always work
-          </j:otherwise>
-        </j:choose>
-                
-  </test:case>
-
-
-    <test:case name="testIf">
-    
-        <j:set var="x" value="abc"/>
-        <j:set var="worked" value="f"/>
-        
-        <j:if test="${x == 'abc'}">
-          this should always work
-          <j:set var="worked" value="t"/>
-        </j:if>
-        
-        <test:assertEquals expected="t" actual="${worked}"/>
-    
-        <j:if test="${x == 'zzz'}">
-          <fail>This should never fail</fail>
-        </j:if>
-                
-  </test:case>
-
-    <test:case name="testNewAndSetProperties">
-        <j:new className="org.apache.commons.jelly.core.Customer" var="customer"/>
-        <j:setProperties object="${customer}" name="James" city="London" />
-
-        Created a new bean: ${customer}
-            
-        <test:assert test="${customer != null}">Created a customer bean</test:assert>
-        
-        <test:assertEquals 
-            expected="James" 
-            actual="${customer.name}"/>
-            
-        <test:assertEquals 
-            expected="London" 
-            actual="${customer.city}"/>
-            
-        <test:assertEquals 
-            expected="org.apache.commons.jelly.core.Customer" 
-            actual="${customer.class.name}"/>
-  </test:case>
-
-    <test:case name="testUseBean">
-        <j:useBean var="customer" class="org.apache.commons.jelly.core.Customer" name="James" city="London" />
-
-        Created a new bean: ${customer}
-            
-        <test:assert test="${customer != null}">Created a customer bean</test:assert>
-        
-        <test:assertEquals 
-            expected="James" 
-            actual="${customer.name}"/>
-            
-        <test:assertEquals 
-            expected="London" 
-            actual="${customer.city}"/>
-            
-        <test:assertEquals 
-            expected="org.apache.commons.jelly.core.Customer" 
-            actual="${customer.class.name}"/>
-  </test:case>
-
-    <test:case name="testUseBeanWithSetProperties">
-        <j:useBean var="customer" class="org.apache.commons.jelly.core.Customer" name="James">
-
-            <!-- typically the following tag might be nested inside some conditional logic -->
-            <j:setProperties name="Bob" city="Atlanta"/>
-        </j:useBean>            
-                                        
-        Created a new bean: ${customer}
-            
-        <test:assert test="${customer != null}">Created a customer bean</test:assert>
-        
-        <test:assertEquals 
-            expected="Bob" 
-            actual="${customer.name}"/>
-            
-        <test:assertEquals 
-            expected="Atlanta" 
-            actual="${customer.city}"/>
-            
-        <test:assertEquals 
-            expected="org.apache.commons.jelly.core.Customer" 
-            actual="${customer.class.name}"/>
-  </test:case>
-
-    <test:case name="testSetWithNoEncoding">
-        <j:set var="foo" encode="false">
-            <foo x="1">hello</foo>
-        </j:set>
-
-        <test:assertEquals 
-            expected='&lt;foo x="1"&gt;hello&lt;/foo&gt;' 
-            actual="${foo}"/>
-  </test:case>
-
-    <test:case name="testFileToVar">
-        <j:file var="foo" omitXmlDeclaration="true">
-            <foo x="1">hello</foo>
-        </j:file>
-
-        <test:assertEquals 
-            expected='&lt;foo x="1"&gt;hello&lt;/foo&gt;' 
-            actual="${foo}"/>
-  </test:case>
-
-
-    <!-- whitespace trimming tests -->
-    <test:case name="testTrim">
-        
-        <j:set var="foo">
-            <j:forEach var="i" begin="1" end="3" trim="false">  ${i} </j:forEach>
-        </j:set>
-
-        <test:assertEquals 
-            expected="  1   2   3 "
-            actual="${foo}"/>
-        
-        <j:set var="foo">
-            <j:forEach var="i" begin="1" end="3" trim="true">  ${i} </j:forEach>
-        </j:set>
-
-        <test:assertEquals 
-            expected="123"
-            actual="${foo}"/>
-        
-        <j:set var="foo">
-            <j:forEach var="i" begin="1" end="3" trim="true">  foo ${i} </j:forEach>
-        </j:set>
-
-        <test:assertEquals 
-            expected="foo 1foo 2foo 3"
-            actual="${foo}"/>
-
-        <j:set var="foo">
-            <j:forEach var="i" begin="1" end="3" trim="true">  foo ${i} bar </j:forEach>
-        </j:set>
-
-        <test:assertEquals 
-            expected="foo 1 barfoo 2 barfoo 3 bar"
-            actual="${foo}"/>
-  </test:case>
-  
-    <test:case name="testBreak">
-        
-        <j:forEach var="i" begin="1" end="10">
-            <j:if test="${i==4}">
-                <j:break/>
-            </j:if>
-        </j:forEach>
-
-        <test:assert test="${i==4}"/> 
-
-        <j:while test="${i != 10}">
-            <j:if test="${i==6}">
-                <j:break/>
-            </j:if>
-            <j:set var="i" value="${i+1}"/>
-        </j:while>
-
-        <test:assert test="${i==6}"/> 
-        
-  </test:case>
-  
-    <test:case name="testBreakWithIf">
-        
-        <j:forEach var="i" begin="1" end="10">
-            <j:break test="${i==4}"/>
-        </j:forEach>
-
-        <test:assert test="${i==4}"/> 
-
-        <j:while test="${i != 10}">
-            <j:break test="${i==6}"/>
-            <j:set var="i" value="${i+1}"/>
-        </j:while>
-
-        <test:assert test="${i==6}"/> 
-        
-  </test:case>
-
-  <test:case name="testVariablesWithDots">
-        
-        <j:set var="page.name" value="a"/>
-        <j:set var="page.foo" value="b"/>
-        
-        
-        <test:assertEquals expected="a" actual="${page.name}"/> 
-        <test:assertEquals expected="b" actual="${page.foo}"/> 
-
-        <j:set var="outer" value="def"/>
-
-        <test:assertEquals expected="def" actual="${outer}"/>
-        
-        <j:scope>    
-            <test:assertEquals expected="a" actual="${page.name}"/> 
-            <test:assertEquals expected="b" actual="${page.foo}"/> 
-        </j:scope>            
-        
-  </test:case>
-
-  <!-- tests to make sure import works -->
-  <test:case name="testImport">
-
-    <j:set var="parentVar" value="12" />
-    
-    <!-- imported scripts by default do not inherit parent vars,
-         but export to them -->
-    <j:set var="test1" value="original"/>
-    <j:import uri="import1.jelly"/>
-    <test:assert test="${test1 == null}"/> 
-
-    <!-- inherit parent vars, and export to them -->
-    <j:set var="test1" value="original"/>
-    <j:import uri="import1.jelly" inherit="true"/>
-    <test:assertEquals expected="12" actual="${test1}"/> 
-
-    <!-- explicitly do not inherit parent vars,
-         but export to them -->
-    <j:set var="test1" value="original"/>
-    <j:import uri="import1.jelly" inherit="false"/>
-    <test:assert test="${test1 == null}"/> 
-
-  </test:case>
-
-  <!-- tests whether the mute tag indeed outputs nothing -->
-  <test:case name="testMuteTag">
-    <j:set var="shouldBeNothing"><j:mute>blop</j:mute></j:set>
-    <test:assertEquals expected="" actual="${shouldBeNothing}"/>
-  </test:case>
-
-  <test:case name="testForEachWithString">
-    <j:set var="j" value=""/>
-        
-    <j:forEach var="i" items="a,b,c">
-      <j:set var="j" value="${j}${i}"/>
-    </j:forEach>
-
-    <test:assertEquals expected="abc" actual="${j}"/>
-  </test:case>
-  
-  <!-- tests the file output provided by j:file -->
-  <test:case name="testFileTag">
-    <j:file name="target/test_iso.xml" encoding="ISO-8859-1" omitXmlDeclaration="true">
-      <l>é#\ü</l></j:file>
-    <!-- how to check result without xml-unit ? -->
-    <j:new var="f" className="java.io.File"><j:arg value="target/test_iso.xml"/></j:new>
-    <j:set var="singleSize" value="${f.length()}"/>
-    <!-- try outputting a second time -->
-    <j:file name="target/test_iso.xml" encoding="ISO-8859-1" 
-       omitXmlDeclaration="true" append="true">
-      <l>é#\ü</l></j:file>
-    <j:set var="doubleSize" value="${f.length()}"/>
-    <test:assertEquals expected="${singleSize*2}" actual="${doubleSize}"/>
-    </test:case>
-</test:suite>
diff --git a/src/test/org/apache/commons/jelly/tags/junit/AssertEqualsTag.java b/src/test/org/apache/commons/jelly/tags/junit/AssertEqualsTag.java
deleted file mode 100644
index a4ec4fa..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/AssertEqualsTag.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.expression.Expression;
-
-/**
- * Compares an actual object against an expected object and if they are different
- * then the test will fail.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class AssertEqualsTag extends AssertTagSupport {
-
-    private Expression actual;
-    private Expression expected;
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        String message = getBodyText();
-
-        Object expectedValue = expected.evaluate(context);
-        Object actualValue = actual.evaluate(context);
-
-        if (expectedValue == null && actualValue == null) {
-            return;
-        }
-        if (actualValue != null && expectedValue.equals(actualValue)) {
-            return;
-        }
-
-        String expressions = "\nExpected expression: "
-            + expected.getExpressionText()
-            + "\nActual expression: "
-            + actual.getExpressionText();
-
-        failNotEquals(message, expectedValue, actualValue, expressions);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the actual value which will be compared against the
-     * expected value.
-     */
-    public void setActual(Expression actual) {
-        this.actual = actual;
-    }
-
-    /**
-     * Sets the expected value to be tested against
-     */
-    public void setExpected(Expression expected) {
-        this.expected = expected;
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/tags/junit/AssertTag.java b/src/test/org/apache/commons/jelly/tags/junit/AssertTag.java
deleted file mode 100644
index 4c5c5f5..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/AssertTag.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.expression.Expression;
-
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-
-/**
- * Performs an assertion that a given boolean expression, or XPath expression is
- * true. If the expression returns false then this test fails.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class AssertTag extends AssertTagSupport {
-
-    /** The expression to evaluate. */
-    private Expression test;
-
-    /** The XPath expression to evaluate */
-    private XPath xpath;
-
-    public AssertTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if (test == null && xpath == null) {
-            throw new MissingAttributeException( "test" );
-        }
-        if (test != null) {
-            if (! test.evaluateAsBoolean(context)) {
-                fail( getBodyText(), "evaluating test: "+ test.getExpressionText() );
-            }
-        }
-        else {
-            try {
-                Object xpathContext = getXPathContext();
-                if (! xpath.booleanValueOf(xpathContext)) {
-                    fail( getBodyText(), "evaluating xpath: "+ xpath );
-                }
-            } catch (JaxenException anException) {
-                throw new JellyTagException("Error evaluating xpath", anException);
-            }
-
-        }
-
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the boolean expression to evaluate. If this expression returns true
-     * then the test succeeds otherwise if it returns false then the text will
-     * fail with the content of the tag being the error message.
-     */
-    public void setTest(Expression test) {
-        this.test = test;
-    }
-
-    /**
-     * Sets the boolean XPath expression to evaluate. If this expression returns true
-     * then the test succeeds otherwise if it returns false then the text will
-     * fail with the content of the tag being the error message.
-     */
-    public void setXpath(XPath xpath) {
-        this.xpath = xpath;
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/tags/junit/AssertTagSupport.java b/src/test/org/apache/commons/jelly/tags/junit/AssertTagSupport.java
deleted file mode 100644
index 6190752..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/AssertTagSupport.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.xpath.XPathTagSupport;
-
-/**
- * The abstract base class of any assertion tag which is
- * useful for implementation inheritence.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public abstract class AssertTagSupport extends XPathTagSupport {
-
-    public AssertTagSupport() {
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Produces a failure assertion with the given message
-     */
-    protected void fail(String message) throws JellyAssertionFailedError {
-        throw new JellyAssertionFailedError(message);
-    }
-
-    /**
-     * Produces a failure assertion with the given message and added detail.
-     */
-    protected void fail(String message, String detail) throws JellyAssertionFailedError {
-        if (message == null || message.length() == 0) {
-            fail(detail);
-        }
-        else {
-            fail(message + ". Assertion failed while " + detail);
-        }
-    }
-
-    /**
-     * Produces a failure if the actual value was not equal to the expected value
-     */
-    protected void failNotEquals(String message, Object expected, Object actual, String expressions) throws JellyAssertionFailedError {
-        String formatted= "";
-        if (message != null) {
-            formatted = message +" ";
-        }
-        fail(formatted + "expected:[" + expected + "] but was:[" + actual + "]" + expressions);
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/tags/junit/AssertThrowsTag.java b/src/test/org/apache/commons/jelly/tags/junit/AssertThrowsTag.java
deleted file mode 100644
index 12df20b..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/AssertThrowsTag.java
+++ /dev/null
Binary files differ
diff --git a/src/test/org/apache/commons/jelly/tags/junit/CaseTag.java b/src/test/org/apache/commons/jelly/tags/junit/CaseTag.java
deleted file mode 100644
index bf1166d..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/CaseTag.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Represents a single test case in a test suite; this tag is analagous to
- * JUnit's TestCase class.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class CaseTag extends TagSupport {
-
-    private String name;
-
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(final XMLOutput output) throws JellyTagException {
-        String name = getName();
-        if ( name == null ) {
-            name = toString();
-        }
-
-        // #### we need to redirect the output to a TestListener
-        // or something?
-        TestCase testCase = new TestCase(name) {
-            protected void runTest() throws Throwable {
-                // create a new child context so that each test case
-                // will have its own variable scopes
-                JellyContext newContext = new JellyContext( context );
-
-                // disable inheritence of variables and tag libraries
-                newContext.setExportLibraries(false);
-                newContext.setExport(false);
-
-                // invoke the test case
-                getBody().run(newContext, output);
-            }
-        };
-
-        // lets find the test suite
-        TestSuite suite = getSuite();
-        if ( suite == null ) {
-            throw new JellyTagException( "Could not find a TestSuite to add this test to. This tag should be inside a <test:suite> tag" );
-        }
-        suite.addTest(testCase);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the name of this test case
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the name of this test case
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Strategy method to find the corrent TestSuite to add a new Test case to
-     */
-    protected TestSuite getSuite() {
-        SuiteTag tag = (SuiteTag) findAncestorWithClass( SuiteTag.class );
-        if ( tag != null ) {
-            return tag.getSuite();
-        }
-        return (TestSuite) context.getVariable( "org.apache.commons.jelly.junit.suite" );
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/tags/junit/FailTag.java b/src/test/org/apache/commons/jelly/tags/junit/FailTag.java
deleted file mode 100644
index 9955d2a..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/FailTag.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * This tag causes a failure message. The message can either
- * be specified in the tags body or via the message attribute.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class FailTag extends AssertTagSupport {
-
-    private String message;
-
-    public FailTag() {
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        String message = getMessage();
-        if ( message == null ) {
-            message = getBodyText();
-        }
-        fail( message );
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * @return the failure message
-     */
-    public String getMessage() {
-        return message;
-    }
-
-
-    /**
-     * Sets the failure message. If this attribute is not specified then the
-     * body of this tag will be used instead.
-     */
-    public void setMessage(String message) {
-        this.message = message;
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java b/src/test/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java
deleted file mode 100644
index b5f2483..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/JUnitTagLibrary.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import org.apache.commons.jelly.TagLibrary;
-
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.expression.Expression;
-import org.apache.commons.jelly.expression.ExpressionFactory;
-import org.apache.commons.jelly.impl.TagScript;
-import org.apache.commons.jelly.expression.xpath.XPathExpression;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Describes the Taglib. This class could be generated by XDoclet
-  *
-  * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
-  * @version $Revision: 1.7 $
-  */
-public class JUnitTagLibrary extends TagLibrary {
-
-    /** The Log to which logging calls will be made. */
-    private Log log = LogFactory.getLog(JUnitTagLibrary.class);
-
-    public JUnitTagLibrary() {
-        registerTag("assert", AssertTag.class);
-        registerTag("assertEquals", AssertEqualsTag.class);
-        registerTag("assertThrows", AssertThrowsTag.class);
-        registerTag("fail", FailTag.class);
-        registerTag("run", RunTag.class );
-        registerTag("case", CaseTag.class );
-        registerTag("suite", SuiteTag.class );
-    }
-
-    public Expression createExpression(
-        ExpressionFactory factory,
-        TagScript tagScript,
-        String attributeName,
-        String attributeValue) throws JellyException {
-
-        // #### may need to include some namespace URI information in the XPath instance?
-
-        if (attributeName.equals("xpath")) {
-            if ( log.isDebugEnabled() ) {
-                log.debug( "Parsing XPath expression: " + attributeValue );
-            }
-
-            // XPath xpath = new Dom4jXPath(attributeValue);
-            Expression xpathExpr = super.createExpression( factory,
-                                                           tagScript,
-                                                           attributeName,
-                                                           attributeValue );
-
-            return new XPathExpression(attributeValue, xpathExpr, tagScript);
-        }
-
-        // will use the default expression instead
-        return super.createExpression(factory, tagScript, attributeName, attributeValue);
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/tags/junit/JellyAssertionFailedError.java b/src/test/org/apache/commons/jelly/tags/junit/JellyAssertionFailedError.java
deleted file mode 100644
index 28d8797..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/JellyAssertionFailedError.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.tags.junit;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-import junit.framework.AssertionFailedError;
-
-import org.apache.commons.jelly.LocationAware;
-
-/**
- * <p><code>JellyAssertionFailedError</code> is
- * a JUnit AssertionFailedError which is LocationAware so that it can include
- * details of where in the JellyUnit test case that the failure occurred.</p>
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-
-public class JellyAssertionFailedError extends AssertionFailedError implements LocationAware {
-
-    /** the underlying cause of the exception */
-    private Throwable cause;
-
-    /** the Jelly file which caused the problem */
-    private String fileName;
-
-    /** the tag name which caused the problem */
-    private String elementName;
-
-    /** the line number in the script of the error */
-    private int lineNumber = -1;
-
-    /** the column number in the script of the error */
-    private int columnNumber = -1;
-
-    public JellyAssertionFailedError() {
-    }
-
-    public JellyAssertionFailedError(String message) {
-        super(message);
-    }
-
-    public JellyAssertionFailedError(String message, Throwable cause) {
-        super(message);
-        this.cause = cause;
-    }
-
-    public JellyAssertionFailedError(Throwable cause) {
-        super(cause.getLocalizedMessage());
-        this.cause = cause;
-    }
-
-    public Throwable getCause() {
-        return cause;
-    }
-
-
-    /**
-     * @return the line number of the tag
-     */
-    public int getLineNumber() {
-        return lineNumber;
-    }
-
-    /**
-     * Sets the line number of the tag
-     */
-    public void setLineNumber(int lineNumber) {
-        this.lineNumber = lineNumber;
-    }
-
-    /**
-     * @return the column number of the tag
-     */
-    public int getColumnNumber() {
-        return columnNumber;
-    }
-
-    /**
-     * Sets the column number of the tag
-     */
-    public void setColumnNumber(int columnNumber) {
-        this.columnNumber = columnNumber;
-    }
-
-    /**
-     * @return the Jelly file which caused the problem
-     */
-    public String getFileName() {
-        return fileName;
-    }
-
-    /**
-     * Sets the Jelly file which caused the problem
-     */
-    public void setFileName(String fileName) {
-        this.fileName = fileName;
-    }
-
-
-    /**
-     * @return the element name which caused the problem
-     */
-    public String getElementName() {
-        return elementName;
-    }
-
-    /**
-     * Sets the element name which caused the problem
-     */
-    public void setElementName(String elementName) {
-        this.elementName = elementName;
-    }
-
-
-    public String getMessage() {
-        return super.getMessage() + " File: " + fileName + " At tag <" + elementName + ">: line: "
-            + lineNumber + " column: " + columnNumber;
-    }
-
-    public String getReason() {
-        return super.getMessage();
-    }
-
-    // #### overload the printStackTrace methods...
-    public void printStackTrace(PrintWriter s) {
-        synchronized (s) {
-            super.printStackTrace(s);
-            if  (cause != null) {
-                s.println("Root cause");
-                cause.printStackTrace(s);
-            }
-        }
-    }
-
-    public void printStackTrace(PrintStream s) {
-        synchronized (s) {
-            super.printStackTrace(s);
-            if  (cause != null) {
-                s.println("Root cause");
-                cause.printStackTrace(s);
-            }
-        }
-    }
-
-    public void printStackTrace() {
-        super.printStackTrace();
-        if (cause != null) {
-            System.out.println("Root cause");
-            cause.printStackTrace();
-        }
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/tags/junit/JellyTestSuite.java b/src/test/org/apache/commons/jelly/tags/junit/JellyTestSuite.java
deleted file mode 100644
index c38ca63..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/JellyTestSuite.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import java.net.URL;
-
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * An abstract base class for creating a TestSuite via a Jelly script.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.4 $
- */
-public abstract class JellyTestSuite {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(JellyTestSuite.class);
-
-
-    /**
-     * Helper method to create a test suite from a file name on the class path
-     * in the package of the given class.
-     * For example a test could call
-     * <code>
-     * createTestSuite( Foo.class, "suite.jelly" );
-     * </code>
-     * which would loaad the 'suite.jelly script from the same package as the Foo
-     * class on the classpath.
-     *
-     * @param testClass is the test class used to load the script via the classpath
-     * @param script is the name of the script, which is typically just a name, no directory.
-     * @return a newly created TestSuite
-     */
-    public static TestSuite createTestSuite(Class testClass, String script) throws Exception {
-        URL url = testClass.getResource(script);
-        if ( url == null ) {
-            throw new Exception(
-                "Could not find Jelly script: " + script
-                + " in package of class: " + testClass.getName()
-            );
-        }
-        return createTestSuite( url );
-    }
-
-    /**
-     * Helper method to create a test suite from the given Jelly script
-     *
-     * @param script is the URL to the script which should create a TestSuite
-     * @return a newly created TestSuite
-     */
-    public static TestSuite createTestSuite(URL script) throws Exception {
-        JellyContext context = new JellyContext(script);
-        XMLOutput output = XMLOutput.createXMLOutput(System.out);
-        context = context.runScript(script, output);
-        TestSuite answer = (TestSuite) context.getVariable("org.apache.commons.jelly.junit.suite");
-        if ( answer == null ) {
-            log.warn( "Could not find a TestSuite created by Jelly for the script:" + script );
-            // return an empty test suite
-            return new TestSuite();
-        }
-        return answer;
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/tags/junit/RunTag.java b/src/test/org/apache/commons/jelly/tags/junit/RunTag.java
deleted file mode 100644
index 8302154..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/RunTag.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestListener;
-import junit.framework.TestResult;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.MissingAttributeException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * This tag will run the given Test which could be an individual TestCase or a TestSuite.
- * The TestResult can be specified to capture the output, otherwise the results are output
- * as XML so that they can be formatted in some custom manner.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class RunTag extends TagSupport {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(RunTag.class);
-
-    private Test test;
-    private TestResult result;
-    private TestListener listener;
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        Test test = getTest();
-        if ( test == null ) {
-            test = (Test) context.getVariable("org.apache.commons.jelly.junit.suite");
-        }
-        if ( test == null ) {
-            throw new MissingAttributeException( "test" );
-        }
-        TestResult result = getResult();
-        if ( result == null ) {
-            result = createResult(output);
-        }
-        TestListener listener = getListener();
-        if ( listener == null ) {
-            listener = createTestListener(output);
-        }
-        result.addListener(listener);
-        test.run(result);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the TestResult used to capture the output of the test.
-     * @return TestResult
-     */
-    public TestResult getResult() {
-        return result;
-    }
-
-    /**
-     * Returns the Test to be ran.
-     * @return Test
-     */
-    public Test getTest() {
-        return test;
-    }
-
-    /**
-     * Sets the JUnit TestResult used to capture the results of the tst
-     * @param result The TestResult to use
-     */
-    public void setResult(TestResult result) {
-        this.result = result;
-    }
-
-    /**
-     * Sets the JUnit Test to run which could be an individual test or a TestSuite
-     * @param test The test to run
-     */
-    public void setTest(Test test) {
-        this.test = test;
-    }
-
-    /**
-     * Returns the listener.
-     * @return TestListener
-     */
-    public TestListener getListener() {
-        return listener;
-    }
-
-    /**
-     * Sets the TestListener.to be used to format the output of running the unit test cases
-     * @param listener The listener to set
-     */
-    public void setListener(TestListener listener) {
-        this.listener = listener;
-    }
-
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new TestResult to capture the output of
-     * the test cases
-     */
-    protected TestResult createResult(XMLOutput output) {
-        return new TestResult();
-    }
-
-    /**
-     * Factory method to create a new TestListener to capture the output of
-     * the test cases
-     */
-    protected TestListener createTestListener(final XMLOutput output) {
-        return new TestListener() {
-            public void addError(Test test, Throwable t) {
-                try {
-                    output.startElement("error");
-
-                    output.startElement("message");
-                    output.write(t.getMessage());
-                    output.endElement("message");
-
-                    output.startElement("stack");
-                    output.write( stackTraceToString(t) );
-                    output.endElement("stack");
-
-                    output.endElement("error");
-                }
-                catch (SAXException e) {
-                    handleSAXException(e);
-                }
-            }
-
-            public void addFailure(Test test, AssertionFailedError t) {
-                try {
-                    output.startElement("failure");
-
-                    output.startElement("message");
-                    output.write(t.getMessage());
-                    output.endElement("message");
-
-                    output.startElement("stack");
-                    output.write( stackTraceToString(t) );
-                    output.endElement("stack");
-
-                    output.endElement("failure");
-                }
-                catch (SAXException e) {
-                    handleSAXException(e);
-                }
-            }
-
-            public void endTest(Test test) {
-                try {
-                    output.endElement("test");
-                }
-                catch (SAXException e) {
-                    handleSAXException(e);
-                }
-            }
-
-            public void startTest(Test test) {
-                try {
-                    String name = test.toString();
-                    AttributesImpl attributes = new AttributesImpl();
-                    attributes.addAttribute("", "name", "name", "CDATA", name);
-
-                    output.startElement("test", attributes);
-                }
-                catch (SAXException e) {
-                    handleSAXException(e);
-                }
-            }
-        };
-    }
-
-    /**
-     * @return the stack trace as a String
-     */
-    protected String stackTraceToString(Throwable t) {
-        StringWriter writer = new StringWriter();
-        t.printStackTrace(new PrintWriter(writer));
-        return writer.toString();
-    }
-
-    /**
-     * Handles SAX Exceptions
-     */
-    protected void handleSAXException(SAXException e) {
-        log.error( "Caught: " + e, e );
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/tags/junit/SuiteTag.java b/src/test/org/apache/commons/jelly/tags/junit/SuiteTag.java
deleted file mode 100644
index 8707c94..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/SuiteTag.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.tags.junit;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Represents a collection of TestCases.. This tag is analagous to
- * JUnit's TestSuite class.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.5 $
- */
-public class SuiteTag extends TagSupport {
-
-    /** the test suite this tag created */
-    private TestSuite suite;
-
-    /** the name of the variable of the test suite */
-    private String var;
-
-    /** the name of the test suite to create */
-    private String name;
-
-    public SuiteTag() {
-    }
-
-    /**
-     * Adds a new Test to this suite
-     */
-    public void addTest(Test test) {
-        getSuite().addTest(test);
-    }
-
-    // Tag interface
-    //-------------------------------------------------------------------------
-    public void doTag(XMLOutput output) throws JellyTagException {
-        suite = createSuite();
-
-        TestSuite parent = (TestSuite) context.getVariable("org.apache.commons.jelly.junit.suite");
-        if ( parent == null ) {
-            context.setVariable("org.apache.commons.jelly.junit.suite", suite );
-        }
-        else {
-            parent.addTest( suite );
-        }
-
-        invokeBody(output);
-
-        if ( var != null ) {
-            context.setVariable(var, suite);
-        }
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    public TestSuite getSuite() {
-        return suite;
-    }
-
-    /**
-     * Sets the name of the test suite whichi is exported
-     */
-    public void setVar(String var) {
-        this.var = var;
-    }
-
-    /**
-     * @return the name of this test suite
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the name of this test suite
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Factory method to create a new TestSuite
-     */
-    protected TestSuite createSuite() {
-        if ( name == null ) {
-            return new TestSuite();
-        }
-        else {
-            return new TestSuite(name);
-        }
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/tags/junit/package.html b/src/test/org/apache/commons/jelly/tags/junit/package.html
deleted file mode 100644
index 2f19768..0000000
--- a/src/test/org/apache/commons/jelly/tags/junit/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html>
-<head>
-</head>
-<body>
-
-  <p>A collection of <a href="http://www.junit.org">JUnit</a> tags for 
-  	performing unit tests written in Jelly script.
-  </p>
-  
-  <p>
-    The &lt;suite&gt; tag allows a test suite to be created and then test cases can either 
-    be individually ran or the whole suite ran.
-  </p>
-  <p>
-    The &lt;case&gt; tag allows a single test case to be created as part of a suite.
-  </p>
-  <p>
-    The &lt;run&gt; tag can be used to run a given Test, TestCase or TestSuite
-  </p>
-  
-  <p>There is an example of these tags in action 
-	<a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly?rev=HEAD&content-type=text/vnd.viewcvs-markup">here</a>
-  </p>
-</body>
-</html>
diff --git a/src/test/org/apache/commons/jelly/test/impl/DummyTag.java b/src/test/org/apache/commons/jelly/test/impl/DummyTag.java
deleted file mode 100644
index be6d566..0000000
--- a/src/test/org/apache/commons/jelly/test/impl/DummyTag.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.test.impl;
-
-import org.apache.commons.jelly.JellyTagException;
-import org.apache.commons.jelly.TagSupport;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.util.ClassLoaderUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Simple Test Tag
- *
- * @author <a href="mailto:vinayc@apache.org">Vinay Chandran</a>
- */
-public class DummyTag extends TagSupport {
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(DummyTag.class);
-    /** A test class to be loaded by the Tag*/
-    private String m_classToBeLoaded = null;
-
-    /**
-     *
-     * @see org.apache.commons.jelly.Tag#doTag(XMLOutput)
-     * @see org.apache.commons.jelly.tags.core.JellyTag
-     */
-    public void doTag(XMLOutput output) throws JellyTagException {
-        if (log.isDebugEnabled())
-            log.debug("********Executing DummyTag Body*********");
-        if (m_classToBeLoaded != null) {
-            try {
-                Class clazz = ClassLoaderUtils.loadClass(m_classToBeLoaded, getClass());
-                if (log.isDebugEnabled())
-                    log.debug("Class[" + m_classToBeLoaded + "] FOUND");
-            }
-            catch (ClassNotFoundException cnfe) {
-                if (log.isWarnEnabled())
-                    log.warn("Class[" + m_classToBeLoaded + "] NOT FOUND");
-            }
-
-        }
-        invokeBody(output);
-    }
-
-    /**
-     * A Test Variable(Used for testing the TagLibraryClassloader)
-     */
-    public void setLoadClass(String extraClass) {
-        m_classToBeLoaded = extraClass;
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/test/impl/DummyTagLibrary.java b/src/test/org/apache/commons/jelly/test/impl/DummyTagLibrary.java
deleted file mode 100644
index adc4989..0000000
--- a/src/test/org/apache/commons/jelly/test/impl/DummyTagLibrary.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.test.impl;
-
-import org.apache.commons.jelly.TagLibrary;
-
-/**
- * Test taglibrary
- *
- * @author <a href="mailto:vinayc@apache.org">Vinay Chandran</a>
- */
-public class DummyTagLibrary extends TagLibrary {
-    public DummyTagLibrary() {
-        registerTag("dummy", DummyTag.class);
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/test/impl/TestEmbedded.java b/src/test/org/apache/commons/jelly/test/impl/TestEmbedded.java
deleted file mode 100644
index e40f32f..0000000
--- a/src/test/org/apache/commons/jelly/test/impl/TestEmbedded.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.test.impl;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.StringReader;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.XMLOutput;
-import org.apache.commons.jelly.impl.Embedded;
-import org.xml.sax.InputSource;
-
-/**
- *  Unit case  of Embedded
- *
- * @author <a href="mailto:vinayc@apache.org">Vinay Chandran</a>
- */
-public class TestEmbedded extends TestCase
-{
-
-    public static void main(String[] args)
-    {
-        TestRunner.run(suite());
-    }
-
-    public static Test suite()
-    {
-        return new TestSuite(TestEmbedded.class);
-    }
-
-    public TestEmbedded(String testName)
-    {
-        super(testName);
-    }
-
-    /**
-     *  test Script input as a java.lang.String object
-     */
-    public void testStringAsScript()
-    {
-        Embedded embedded = new Embedded();
-        String jellyScript =
-            "<?xml version=\"1.0\"?>"
-                + " <j:jelly xmlns:j=\"jelly:core\">"
-                + "jelly-test-case"
-                + " </j:jelly>";
-        embedded.setScript(jellyScript);
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        embedded.setOutputStream(baos);
-        boolean status = embedded.execute();
-        //executed properly without script errors
-        assertEquals(status, true);
-        //check that the output  confirms the exepected
-        assertEquals("jelly-test-case", new String(baos.toByteArray()));
-        //test generation of error
-        embedded.setScript(jellyScript + "obnoxious-part");
-        status = embedded.execute();
-        //test failure of execution
-        assertEquals(false, status);
-        //Asserting the parser generated a errorMsg
-        assertNotNull(embedded.getErrorMsg());
-    }
-
-    /**
-     *  test Script input as a InputStream
-     */
-    public void testInputStreamAsScript()
-    {
-        Embedded embedded = new Embedded();
-        String jellyScript =
-            "<?xml version=\"1.0\"?>"
-                + " <j:jelly xmlns:j=\"jelly:core\">"
-                + "jelly-test-case"
-                + " </j:jelly>";
-        embedded.setScript(new ByteArrayInputStream(jellyScript.getBytes()));
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        embedded.setOutputStream(baos);
-        boolean status = embedded.execute();
-        //executed properly without script errors
-        assertEquals(status, true);
-        //check that the output confirms the expected
-        assertEquals("jelly-test-case", new String(baos.toByteArray()));
-    }
-    
-    /**
-     * Test simple 'raw' execution of a string. See JELLY-189.
-     */
-    public void testRawExecuteAsString() throws Exception
-    {
-        String message =
-            "<?xml version=\"1.0\"?>"
-                + " <j:jelly xmlns:j=\"jelly:core\">"
-                + "jelly-test-case"
-                + " </j:jelly>";
-       ByteArrayOutputStream output = new ByteArrayOutputStream();
-       XMLOutput xmlOutput = XMLOutput.createXMLOutput(output);
-       InputSource script = new InputSource( new StringReader(message.toString()) );
-       JellyContext context = new JellyContext();
-       context.runScript( script, xmlOutput);
-       output.close();
-       //check that the output confirms the expected
-       assertEquals("jelly-test-case", new String(output.toByteArray()));
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/test/xml/TestCData.java b/src/test/org/apache/commons/jelly/test/xml/TestCData.java
deleted file mode 100644
index 03bfbeb..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/TestCData.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.test.xml;
-
-import java.io.StringWriter;
-
-import junit.framework.TestCase;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
-import org.xml.sax.SAXException;
-
-/**
- * @author mdelagrange
- *
- */
-public class TestCData extends TestCase {
-
-    public TestCData(String arg) {
-        super(arg);
-    }
-
-    /**
-     * CDATA sections should be retained in the output.
-     *
-     * @throws Exception
-     */
-    public void testCData() throws Exception {
-        Jelly jelly = new Jelly();
-        jelly.setScript("file:src/test/org/apache/commons/jelly/test/xml/testCData.jelly");
-        Script script = jelly.compileScript();
-        JellyContext context = new JellyContext();
-        script.run(context, XMLOutput.createDummyXMLOutput());
-
-        String output = (String) context.getVariable("foo");
-        assertTrue("'foo' is not null", output != null);
-
-        String golden = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
-        golden += "<!DOCTYPE foo [\n";
-        golden += "  <!ELEMENT foo (#PCDATA)>\n";
-        golden += "]><foo></foo>";
-
-        assertEquals("output should contain the CDATA section", golden, output);
-    }
-
-    public void testDom4JCData() throws SAXException {
-        StringWriter writer = new StringWriter();
-        OutputFormat format = new OutputFormat();
-        final XMLWriter xmlWriter = new XMLWriter(writer, format);
-        xmlWriter.setEscapeText(false);
-
-        XMLOutput output = new XMLOutput(xmlWriter, xmlWriter);
-
-        String decl = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
-        String golden = "<!DOCTYPE foo [\n";
-        golden += "  <!ELEMENT foo (#PCDATA)>\n";
-        golden += "]><foo></foo>";
-
-        output.startDocument();
-        output.write(golden);
-        output.endDocument();
-        System.err.println("output was: '" + writer.toString() +"'");
-        System.err.println("golden is : '" + golden +"'");
-        assertEquals("output should contain the CDATA section",
-                decl + golden, writer.toString());
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/test/xml/TestDefaultNamespaceFilter.java b/src/test/org/apache/commons/jelly/test/xml/TestDefaultNamespaceFilter.java
deleted file mode 100644
index f4ebb3e..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/TestDefaultNamespaceFilter.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.test.xml;
-
-import java.io.StringWriter;
-import java.net.URL;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A helper class to run jelly test cases as part of Ant's JUnit tests
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class TestDefaultNamespaceFilter extends TestCase {
-
-    Jelly jelly = null;
-    JellyContext context = null;
-    XMLOutput xmlOutput = null;
-
-    public TestDefaultNamespaceFilter(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestDefaultNamespaceFilter.class);
-    }
-
-    public void setUp() throws Exception {
-        context = new JellyContext();
-        xmlOutput = XMLOutput.createXMLOutput(new StringWriter());
-
-        jelly = new Jelly();
-
-        String script = "nsFilterTest.jelly";
-        URL url = this.getClass().getResource(script);
-        if ( url == null ) {
-            throw new Exception(
-                "Could not find Jelly script: " + script
-                + " in package of class: " + this.getClass().getName()
-            );
-        }
-        jelly.setUrl(url);
-    }
-
-    public void testNamespaceDefined() throws Exception {
-        jelly.setDefaultNamespaceURI("jelly:core");
-        Script script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have set 'usedDefaultNamespace' variable",
-                   context.getVariable("usedDefaultNamespace") != null);
-    }
-
-    public void testNamespaceNotDefined() throws Exception {
-        Script script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should not have set 'usedDefaultNamespace' variable",
-                   context.getVariable("usedDefaultNamespace") == null);
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/test/xml/TestDummyXMLOutput.java b/src/test/org/apache/commons/jelly/test/xml/TestDummyXMLOutput.java
deleted file mode 100644
index e49879f..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/TestDummyXMLOutput.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.test.xml;
-
-import java.net.URL;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * Confirm that <i>XMLOutput.createDummyXMLOutput()</i>
- * doesn't do anything funky.
- *
- * @author Morgan Delagrange
- * @version $Revision: 1.7 $
- */
-public class TestDummyXMLOutput extends TestCase {
-
-    Jelly jelly = null;
-    JellyContext context = null;
-    XMLOutput xmlOutput = null;
-
-    public TestDummyXMLOutput(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestDummyXMLOutput.class);
-    }
-
-    public void setUp(String scriptName) throws Exception {
-        this.context = new JellyContext();
-        this.xmlOutput = XMLOutput.createDummyXMLOutput();
-
-        this.jelly = new Jelly();
-
-        String script = scriptName;
-        URL url = this.getClass().getResource(script);
-        if ( url == null ) {
-            throw new Exception(
-                "Could not find Jelly script: " + script
-                + " in package of class: " + this.getClass().getName()
-            );
-        }
-        this.jelly.setUrl(url);
-    }
-
-    public void testDummyXMLOutput() throws Exception {
-        // without validation
-        setUp("producesOutput.jelly");
-        Script script = this.jelly.compileScript();
-        script.run(this.context,this.xmlOutput);
-        assertTrue("should have set 'foo' variable to 'bar'",
-                   this.context.getVariable("foo").equals("bar"));
-
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/test/xml/TestNonexistentTags.java b/src/test/org/apache/commons/jelly/test/xml/TestNonexistentTags.java
deleted file mode 100644
index c3bf242..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/TestNonexistentTags.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jelly.test.xml;
-
-import java.net.URL;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A test to confirm that Jelly scripts fail to parse if they declare tags
- * that do not exist
- *
- * @author Morgan Delagrange
- * @version $Revision: 1.6 $
- */
-public class TestNonexistentTags extends TestCase {
-     Jelly jelly = null;
-    JellyContext context = null;
-    XMLOutput xmlOutput = null;
-
-    public TestNonexistentTags(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestNonexistentTags.class);
-    }
-
-    public void setUp(String scriptName) throws Exception {
-        context = new JellyContext();
-        xmlOutput = XMLOutput.createDummyXMLOutput();
-
-        jelly = new Jelly();
-
-        String script = scriptName;
-        URL url = this.getClass().getResource(script);
-        if ( url == null ) {
-            throw new Exception(
-                "Could not find Jelly script: " + script
-                + " in package of class: " + this.getClass().getName()
-            );
-        }
-        jelly.setUrl(url);
-    }
-
-    /**
-     * A script should fail to parse if it declares tags that don't exist.
-     */
-    public void testNonexistentTags() throws Exception {
-        setUp("nonexistentTags1.jelly");
-        try {
-            Script script = jelly.compileScript();
-            fail("Scripts should throw JellyException when it declares a nonexistent tag.");
-        } catch (JellyException e) {
-        }
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/test/xml/TestXMLParserCache.java b/src/test/org/apache/commons/jelly/test/xml/TestXMLParserCache.java
deleted file mode 100644
index d6e15c2..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/TestXMLParserCache.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.test.xml;
-
-import java.io.StringWriter;
-import java.net.URL;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A test to confirm that invalid documents are
- * reject iff jelly.setValidateXML(true)
- *
- * @author Morgan Delagrange
- * @version $Revision: 1.9 $
- */
-public class TestXMLParserCache extends TestCase {
-
-    Jelly jelly = null;
-    JellyContext context = null;
-    XMLOutput xmlOutput = null;
-
-    public TestXMLParserCache(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestXMLParserCache.class);
-    }
-
-    public void setUp(String scriptName) throws Exception {
-        context = new JellyContext();
-        xmlOutput = XMLOutput.createXMLOutput(new StringWriter());
-
-        jelly = new Jelly();
-
-        String script = scriptName;
-        URL url = this.getClass().getResource(script);
-        if ( url == null ) {
-            throw new Exception(
-                "Could not find Jelly script: " + script
-                + " in package of class: " + this.getClass().getName()
-            );
-        }
-        jelly.setUrl(url);
-    }
-
-    public void testParserCache1() throws Exception {
-        // without validation, should
-        // not fail because validation is disabled
-        setUp("invalidScript1.jelly");
-        jelly.setValidateXML(false);
-        Script script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have set 'foo' variable to 'bar'",
-                   context.getVariable("foo").equals("bar"));
-
-        // if I enable xml validation, the script should fail
-        // despite the cache
-        jelly.setValidateXML(true);
-        try {
-            script = jelly.compileScript();
-            fail("Invalid scripts should throw JellyException on parse, despite the cache");
-        } catch (JellyException e) {
-        }
-    }
-
-    public void testParserCache2() throws Exception {
-        // no default namespace
-        setUp("nsFilterTest.jelly");
-        Script script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have no var when default namspace is not set",
-                   context.getVariable("usedDefaultNamespace") == null);
-
-        // now we have a default namespace, so we
-        // should see a variable, despite the XMLParser cache
-        jelly.setDefaultNamespaceURI("jelly:core");
-        script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have var when default namspace is set",
-                   context.getVariable("usedDefaultNamespace").equals("true"));
-    }
-}
diff --git a/src/test/org/apache/commons/jelly/test/xml/TestXMLValidation.java b/src/test/org/apache/commons/jelly/test/xml/TestXMLValidation.java
deleted file mode 100644
index 1338428..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/TestXMLValidation.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2002,2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.jelly.test.xml;
-
-import java.io.StringWriter;
-import java.net.URL;
-
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.Jelly;
-import org.apache.commons.jelly.JellyContext;
-import org.apache.commons.jelly.JellyException;
-import org.apache.commons.jelly.Script;
-import org.apache.commons.jelly.XMLOutput;
-
-/**
- * A test to confirm that invalid documents are
- * reject iff jelly.setValidateXML(true)
- *
- * @author Morgan Delagrange
- * @version $Revision: 1.9 $
- */
-public class TestXMLValidation extends TestCase {
-
-    Jelly jelly = null;
-    JellyContext context = null;
-    XMLOutput xmlOutput = null;
-
-    public TestXMLValidation(String name) {
-        super(name);
-    }
-
-    public static TestSuite suite() throws Exception {
-        return new TestSuite(TestXMLValidation.class);
-    }
-
-    public void setUp(String scriptName) throws Exception {
-        context = new JellyContext();
-        xmlOutput = XMLOutput.createXMLOutput(new StringWriter());
-
-        jelly = new Jelly();
-
-        String script = scriptName;
-        URL url = this.getClass().getResource(script);
-        if ( url == null ) {
-            throw new Exception(
-                "Could not find Jelly script: " + script
-                + " in package of class: " + this.getClass().getName()
-            );
-        }
-        jelly.setUrl(url);
-    }
-
-    public void testInvalidXML1NoValidation() throws Exception {
-        // without validation
-        setUp("invalidScript1.jelly");
-        Script script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have set 'foo' variable to 'bar'",
-                   context.getVariable("foo").equals("bar"));
-
-        // do it again, explicitly setting the validateXML variable
-        setUp("invalidScript1.jelly");
-        jelly.setValidateXML(false);
-        script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have set 'foo' variable to 'bar'",
-                   context.getVariable("foo").equals("bar"));
-    }
-
-    public void testInvalidXML1Validation() throws Exception {
-        // with validation
-        setUp("invalidScript1.jelly");
-        jelly.setValidateXML(true);
-        try {
-            Script script = jelly.compileScript();
-            fail("Invalid scripts should throw JellyException on parse");
-        } catch (JellyException e) {
-        }
-    }
-
-    public void testValidXML1Validation()throws Exception {
-        // with validation
-        setUp("validScript1.jelly");
-        jelly.setValidateXML(true);
-        Script script = jelly.compileScript();
-        script.run(context,xmlOutput);
-        assertTrue("should have set 'foo' variable to 'bar'",
-                   context.getVariable("foo").equals("bar"));
-    }
-
-}
diff --git a/src/test/org/apache/commons/jelly/test/xml/invalidScript1.jelly b/src/test/org/apache/commons/jelly/test/xml/invalidScript1.jelly
deleted file mode 100644
index b4509eb..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/invalidScript1.jelly
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE j:jelly [
-
-  <!-- document is not valid -->
-  <!ELEMENT j:jelly (j:set)>
-  <!ATTLIST j:jelly xmlns:j CDATA 'jelly:core'>
-  
-  <!ELEMENT j:set EMPTY>
-  <!ATTLIST j:set varicose   CDATA #REQUIRED
-                  value CDATA #REQUIRED>
-
-]>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core">
-  
-  <j:set var="foo" value="bar"/>
-  
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/test/xml/nonexistentTags1.jelly b/src/test/org/apache/commons/jelly/test/xml/nonexistentTags1.jelly
deleted file mode 100644
index 1264f72..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/nonexistentTags1.jelly
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core" xmlns:x="jelly:xml">
-  
-  <j:set var="foo" value="bar"/>
-  
-  <!-- should fail, because xml tags are not in the classpath -->
-  <x:parse var="foo" xml="nonexistentTags1.jelly"/>
-  
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/test/xml/nsFilterTest.jelly b/src/test/org/apache/commons/jelly/test/xml/nsFilterTest.jelly
deleted file mode 100644
index 24f0d0c..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/nsFilterTest.jelly
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core">
-  
-  <set var="foo" value="bar"/>
-  
-  <j:if test="${foo != null}">
-      <j:set var="usedDefaultNamespace">true</j:set>
-  </j:if>            
-
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/test/xml/producesOutput.jelly b/src/test/org/apache/commons/jelly/test/xml/producesOutput.jelly
deleted file mode 100644
index a2e3b95..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/producesOutput.jelly
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE j:jelly [
-
-  <!-- document is valid -->
-  <!ELEMENT j:jelly (j:set)>
-  <!ATTLIST j:jelly xmlns:j CDATA 'jelly:core'>
-  
-  <!ELEMENT j:set EMPTY>
-  <!ATTLIST j:set var   CDATA #REQUIRED
-                  value CDATA #REQUIRED>
-
-]>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core">
-        
-  <ignoreThisOutput/>
-  
-  <j:set var="foo" value="bar"/>
-  
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/test/xml/testCData.jelly b/src/test/org/apache/commons/jelly/test/xml/testCData.jelly
deleted file mode 100644
index 2001ebb..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/testCData.jelly
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<j:file xmlns:j="jelly:core" var="foo" escapeText="false">
-    
-<![CDATA[
-<!DOCTYPE foo [
-  <!ELEMENT foo (#PCDATA)>
-]>
-]]>
-
-<foo/>
-    
-</j:file>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/test/xml/validScript1.jelly b/src/test/org/apache/commons/jelly/test/xml/validScript1.jelly
deleted file mode 100644
index b0194c7..0000000
--- a/src/test/org/apache/commons/jelly/test/xml/validScript1.jelly
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE j:jelly [
-
-  <!-- document is valid -->
-  <!ELEMENT j:jelly (j:set)>
-  <!ATTLIST j:jelly xmlns:j CDATA 'jelly:core'>
-  
-  <!ELEMENT j:set EMPTY>
-  <!ATTLIST j:set var   CDATA #REQUIRED
-                  value CDATA #REQUIRED>
-
-]>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly 
-    xmlns:j="jelly:core">
-  
-  <j:set var="foo" value="bar"/>
-  
-</j:jelly>
diff --git a/src/test/org/apache/commons/jelly/testCmdLineOptions.jelly b/src/test/org/apache/commons/jelly/testCmdLineOptions.jelly
deleted file mode 100644
index c9454b9..0000000
--- a/src/test/org/apache/commons/jelly/testCmdLineOptions.jelly
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<jelly xmlns="jelly:core" >
--a option = ${commandLine.getOptionValue("a")}
--b option = ${commandLine.getOptionValue("b")}
--c option = ${commandLine.getOptionValue("c")}
--testsysprop = ${systemScope['testsysprop']}
-</jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/testFindVariable.jelly b/src/test/org/apache/commons/jelly/testFindVariable.jelly
deleted file mode 100644
index f158cea..0000000
--- a/src/test/org/apache/commons/jelly/testFindVariable.jelly
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly xmlns:j="jelly:core">
-  <j:if test='${context.findVariable("foo") != "bar"}'>
-      <fail>The value of foo in a parent scope does not equal to 'bar'</fail>
-  </j:if>
-  
-  The value of foo is <j:expr value='${context.findVariable("foo")}'/>
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/org/apache/commons/jelly/testStatic.jelly b/src/test/org/apache/commons/jelly/testStatic.jelly
deleted file mode 100644
index e3c71c2..0000000
--- a/src/test/org/apache/commons/jelly/testStatic.jelly
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<j:jelly trim="false" xmlns:j="jelly:core">
-  <x:foo xmlns:x="http://www.acme.com/foo">
-      <a cheese="cheddar"/>
-    <y:bar xmlns:y="something">
-      <x:topping y:type="ham"/>
-    </y:bar>
-  </x:foo>                          
-</j:jelly>
-
-
-
-
diff --git a/src/test/org/apache/commons/jelly/test_args.jelly b/src/test/org/apache/commons/jelly/test_args.jelly
deleted file mode 100644
index 4d5f1f6..0000000
--- a/src/test/org/apache/commons/jelly/test_args.jelly
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!-- displays the current command line arguments -->
-
-<j:jelly xmlns:j="jelly:core">
-
-  <j:forEach var="arg" items="${args}">
-      <!-- use the <whitespace> tag to have careful control over whitespace -->
-      <j:whitespace><j:expr value="${arg}"/> </j:whitespace>
-  </j:forEach>
-  
-</j:jelly>
\ No newline at end of file
diff --git a/src/test/simplelog.properties b/src/test/simplelog.properties
deleted file mode 100644
index b3ba501..0000000
--- a/src/test/simplelog.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Copyright 2002,2004 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#      http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# uncomment these lines to turn on debugging
-
-#org.apache.commons.logging.simplelog.defaultlog = info
-#org.apache.commons.logging.simplelog.log.org.apache.commons.jelly = debug
\ No newline at end of file
diff --git a/xdocs/.cvsignore b/xdocs/.cvsignore
deleted file mode 100644
index cb6131b..0000000
--- a/xdocs/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-stylesheets
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
deleted file mode 100644
index 9fbd631..0000000
--- a/xdocs/changes.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-  <properties>
-    <title>Changes</title>
-    <author email="dion@apache.org">dIon Gillard</author>
-  </properties>
-  <body>
-    <release version="1.0-RC2" date="in CVS">
-      <action dev="polx" type="fix" issue="JELLY-85">Removed instance-based ThreadLocal substituting a JellyContext-based tag-caching.</action>
-      <action dev="polx" type="add" issue="JELLY-145">jelly -h or --help responds a help and jelly -v or --version responds the version.</action>
-      </release>
-    <release version="1.0-RC1" date="2004-11-22">
-      <action dev="dion" type="fix" issue="JELLY-148" due-to="Hans Gilde">Huge memory leak resulting from the use of ThreadLocal.</action>
-      <action dev="dion" type="fix" issue="JELLY-138">Character data is flushed by XMLOuput while XML data isn't.</action>
-      <action dev="dion" type="update">Move to beanutils 1.7.0.</action>
-      <action dev="dion" type="fix" issue="JELLY-45">Scripts set the context URL when executing so that resources are found relative to the current script.</action>
-      <action dev="dion" type="add" issue="JELLY-49">Add Regexp taglib</action>
-    </release>
-    <release version="1.0-beta-4" date="2004-09-09">
-      <action dev="dion" type="add" issue="JELLY-134">Handle JVMs that return null for getClass().getClassLoader()</action>
-      <action dev="dion" type="fix" issue="JELLY-66" due-to="Knut Wannheden">Default XMLOutput to not escape XML</action>
-      <action dev="dion" type="fix" issue="JELLY-87">jelly can't resolve vars with dots (.) in the name, in function calls</action>
-      <action dev="dion" type="fix">Source compiles with JDK 1.5</action>
-      <action dev="dion" type="fix" issue="JELLY-25">No exceptions silently swallowed</action>
-      <action dev="dion" type="fix" issue="JELLY-47">Attribute corruption when dealing with converting attributes that include namespaces</action>
-      <action dev="dion" type="fix" issue="JELLY-103" due-to="Ralph Apel">Windows path in build.xml</action>
-      <action dev="dion" type="fix" issue="JELLY-71" due-to="David Eric Pugh">Mention swing directory in docs</action>
-      <action dev="dion" type="fix" issue="JELLY-98" due-to="Joerg Schaible">The "items" attribute of a "forEach" tag can contain a comma-separated String</action>
-      <action dev="dion" type="fix" issue="JELLY-120">Allow useBean subclasses to ignore certain properties and ignore bad properties</action>
-      <action dev="dion" type="fix" issue="JELLY-58">Documentation fixes for Invoke and ForEach</action>
-      <action dev="dion" type="fix" issue="JELLY-28" due-to="Hans Gilde">Bad entity processing</action>
-      <action dev="dion" type="fix" issue="JELLY-73" due-to="Scott Howlett">Can't set inherit or export to false for Include tag</action>
-      <action dev="dion" type="add" issue="JELLY-108" due-to="Maarten Coene">Run a script from an input source</action>
-      <action dev="dion" type="add" issue="JELLY-113" due-to="Gary Franklin">Thread safety of tag support</action>
-      <action dev="dion" type="add" issue="JELLY-115" due-to="Felipe Leme">Add var to break tag</action>
-      <action dev="dion" type="add" issue="JELLY-116" due-to="Felipe Leme">Add exceptionVar to invoke and invokeStatic</action>
-      <action dev="dion" type="remove" issue="JELLY-85">Back out patch as it breaks define taglibs</action>
-      <action dev="dion" type="fix" issue="JELLY-117" due-to="Dennis Lundberg">Remove sandbox and fix some dependencies to use groupId/artifactId</action>
-    </release>
-  </body>
-</document>
diff --git a/xdocs/faq.xml b/xdocs/faq.xml
deleted file mode 100644
index bec5aed..0000000
--- a/xdocs/faq.xml
+++ /dev/null
@@ -1,378 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<document>
-
-  <properties>
-    <title>Jelly FAQ</title>
-    <author email="jstrachan@apache.org">James Strachan</author>
-  </properties>
-
-  <body>
-
-  <section name="Frequently Asked Questions">
-    <p>
-      This document attempts to answer some of the more frequently asked
-      questions regarding various aspects of Jelly.  These questions are
-      typically asked over and over again on the mailing lists, as a
-      courtesy to the developers, we ask that you read this document
-      before posting to the mailing lists.
-    </p>
-    <p><strong>General</strong></p>
-    <ol>
-      <li>
-        <a href="#what-is-jelly">
-          What is Jelly?
-        </a>
-      </li>
-      <li>
-        <a href="#why-called-jelly">
-          Why is this called Jelly?
-        </a>
-      </li>
-    </ol>
-    <p><strong>Using Jelly</strong></p>
-    <ol>
-      <li>
-        <a href="#calling-jelly">
-          How do I call Jelly from Java code?
-        </a>
-      </li>
-      <li>
-        <a href="#command-line">
-          How do I invoke Jelly from the command line?
-        </a>
-      </li>
-      <li>
-        <a href="#invoke-ant">
-          How do I invoke Jelly from inside Ant?
-        </a>
-      </li>
-      <li>
-        <a href="#invoke-maven">
-          How do I invoke Jelly from inside Maven?
-        </a>
-      </li>
-      <li>
-        <a href="#adding-taglibs">
-          How do I add my own tag libraries to Jelly?
-        </a>
-      </li>
-      <li>
-        <a href="#tag-attributes">
-          How do I use expressions and tag attributes?
-        </a>
-      </li>
-      <li>
-        <a href="#cdata">
-          How do Jelly scripts handle CDATA sections?
-        </a>
-      </li>
-    </ol>
-    <p><strong>Building Jelly</strong></p>
-    <ol>
-      <li>
-        <a href="#how-to-build">
-          How do I build Jelly?
-        </a>
-      </li>
-    </ol>
-
-    <section name="General">
-      <dl>
-        <dt>
-          <a name="what-is-jelly">
-            What is Jelly?
-          </a>
-        </dt>
-        <dd>
-          Jelly is an open and customizable XML processing engine.
-          Please see the <a href="index.html">Home page</a> and <a
-          href="overview.html">Overview</a> documents for more detail.
-        </dd>
-      </dl>
-
-      <dl>
-        <dt>
-          <a name="why-called-jelly">
-            Why is this called Jelly?
-          </a>
-        </dt>
-        <dd>
-          The name started out as 'Jele' as in Java ELEments but then I thought Jelly was a nicer spelling :-).
-          The basic idea behind Jelly that Java code is bound on to XML elements.
-        </dd>
-        <dd>
-          Also Jelly (in British or Jello in American) can be molded to fit any shape required which kinda fits
-          with Jelly's main aim to be a flexible Java and XML based scripting engine that can do anything.
-        </dd>
-        <dd>
-          There are many different specific frameworks that take an XML document, bind it to some kind of bean or object
-          and then evaluate it in some kind of script or process, so Jelly was an attempt at a generic engine
-          using ideas from JSP, JSTL, Velocity, Cocoon and Ant.
-        </dd>
-      </dl>
-
-
-    </section>
-    <section name="Using Jelly">
-      <dl>
-        <dt>
-                    <a name="calling-jelly">
-                        How do I call Jelly from Java code?
-                    </a>
-        </dt>
-        <dd>
-            Try the following code. Note that the runScript() method below is overloaded and can take a File, URL etc.
-<code>
-<source>
-// pass the output of the script somewhere
-Writer someWriter = new FileWriter( "output.xml" );
-XMLOutput output = XMLOutput.createXMLOutput( someWriter );
-
-// now run a script using a URL
-JellyContext context = new JellyContext();
-context.runScript( "foo.jelly", output );</source>
-</code>
-        </dd>
-      </dl>
-
-      <dl>
-        <dt>
-                    <a name="command-line">
-                        How do I invoke Jelly from the command line?
-                    </a>
-        </dt>
-        <dd>
-            When you build a binary disitribution of Jelly, 
-            there is a jelly script which works on Windows and Unixes to run Jelly.
-            You can create a binary distribution of Jelly via
-            <code>
-                maven dist
-            </code>
-        </dd>
-        <dd>
-            All you really need to do is to invoke the 
-            <i>org.apache.commons.jelly.Jelly</i> class from the command line
-            with a correct classpath.
-        </dd>
-      </dl>
-      <dl>
-        <dt>
-                    <a name="invoke-ant">
-                        How do I invoke Jelly from inside Ant?
-                    </a>
-        </dt>
-        <dd>
-            There is an Ant task that comes with the Ant library called
-            <i>org.apache.commons.task.JellyTask</i> which can be taskdef'd in any Ant script.
-        </dd>
-      </dl>
-
-      <dl>
-        <dt>
-                    <a name="invoke-maven">
-                        How do I invoke Jelly from inside Maven?
-                    </a>
-        </dt>
-        <dd>
-            Maven's maven.xml file is actually a Jelly script; so you can include any Jelly script
-            inside any of the Maven goals. So if you want to execute a specific Jelly script you can
-            just &lt;j:include uri="foo.jelly" &gt; it inside the maven.xml.
-        </dd>
-      </dl>
-
-      <dl>
-        <dt>
-          <a name="adding-taglibs">
-            How do I add my own tag libraries to Jelly?
-          </a>
-        </dt>
-        <dd>
-          Firstly you need to create one or more tags, by deriving from TagSupport.
-          Then create a TagLibrary class for your tags; typically all this does
-          is register all the tags in your tag library and give them names.
-          Then you can use your new tag library by specifying the classname in
-          a namespace URI. For example
-        </dd>
-        <dd>
-<code>
-<source>
-&lt;j:jelly xmlns:j="jelly:core" xmlns:foo="jelly:com.acme.something.MyTagLibrary"&gt;
-
-  &lt;foo:bar x="12&gt;
-    something goes here
-  &lt;/foo:bar&gt;
-
-&lt;/j:jelly&gt;
-</source>
-</code>
-        </dd>
-        <dd>
-          Going forward we hope to provide an alias mechanism using the jar-extension
-          mechanism used by JAXP so that a file could be placed on the classpath
-          called <code>META-INF/services/org.apache.commons.jelly.foo</code> which
-          would contain the class name of the tag library (com.acme.something.MyTagLibrary)
-          then you could use it as follows, which would avoid using the class name in your scripts.
-        </dd>
-        <dd>
-<code>
-<source>
-&lt;j:jelly xmlns:j="jelly:core" xmlns:foo="jelly:foo"&gt;
-
-  &lt;foo:bar x="12&gt;
-    something goes here
-  &lt;/foo:bar&gt;
-
-&lt;/j:jelly&gt;
-</source>
-</code>
-        </dd>
-      </dl>
-
-      <dl>
-        <dt>
-          <a name="tag-attributes">
-            How do I use expressions and tag attributes?
-          </a>
-        </dt>
-        <dd>
-          Jelly uses introspection to set the properties on a Tag from the XML attribute
-          values. If the attribute value in XML uses an expression, it will be evaluated
-          and the result of the expression will be passed into your Tag's setter method.
-          For example if you had the following Tag...
-        </dd>
-        <dd>
-<code>
-<source>
-public class FooTag extends TagSupport {
-  private String value;
-
-  public void setValue(String value) {
-    this.value = value;
-
-
-  .
-}</source>
-</code>
-                </dd>
-        <dd>
-        Then if you were to use it like this...
-<code>
-<source>
-  &lt;my:foo value="${customer.fullName}"/&gt;
-</source>
-</code>
-        Then this would be equivalent in pseudocode to
-<code>
-<source>
-FooTag tag = FooTag();
-...
-tag.setValue( ((Customer) context.getVariable("customer")).getFullName() );
-...
-tag.doTag(output);
-</source>
-</code>
-             </dd>
-        <dd>
-            If ever you find that your Tag's bean property is not being set it could be that your Tag is
-            not properly following the bean introspection naming conventions.
-            For example do you have a method called getValue() or isValue() with the wrong return type?
-            (In this discussion substitute 'value' for the name of your own property, it doesn't have to be called 'value' :).
-            For more details of the introspection rules, please checkout the Java Bean specification.
-             </dd>
-        <dd>
-          It could be that you want to coerce the value of an expression to some special type.
-          For example if you want to evaluate the expression as an Iterator you can use a property
-          on your Tag of type Expression so that in your Tag you can use the Expression.evaluateAsIterator()
-          method. This is how the &lt;x:forEach&gt; tag currently is implemented for example.
-<source>
-public class FooTag extends TagSupport {
-  private Expression value;
-
-  public void setValue(Expression value) {
-    this.value = value;
-  }
-
-  public void doTag(XMLOutput output) {
-    Iterator iter = expression.evaluateAsIterator();
-            ...
-  }
-}</source>
-        </dd>
-      </dl>
-            <dl>
-        <dt>
-          <a name="cdata">
-            How do Jelly scripts handle CDATA sections?
-          </a>
-        </dt>
-        <dd>
-          Jelly outputs the <i>content</i> of a CDATA section directly.  You can use CDATA sections
-          to create output that otherwise cannot be described in XML.  For example, you can use
-          a CDATA section to create a DTD.  The following Jelly script:
-        </dd>
-                <dd>
-
-<source>
-&lt;?xml version="1.0"?>
-
-&lt;j:file xmlns:j="jelly:core" var="foo" escapeText="false">
-    
-    &lt;![CDATA[
-        &lt;!DOCTYPE foo [
-            &lt;!ELEMENT foo (#PCDATA)>
-        ]>
-    ]]&gt;
-    
-    &lt;foo/>
-    
-&lt;/j:file>
-</source>
-</dd>
-<dd>
-   will produce this output:
-        </dd>
-<dd>
-<source>
-&lt;?xml version="1.0" encoding="UTF-8"?>
-&lt;!DOCTYPE foo [
-    &lt;!ELEMENT foo (#PCDATA)>
-]>
-
-&lt;foo/>
-</source>
-</dd>
-      </dl>
-    </section>
-    <section name="Building Jelly">
-      <dl>
-        <dt>
-          <a name="how-to-build">
-            How do I build Jelly?
-          </a>
-        </dt>
-        <dd>
-          Jelly uses Maven for its build system. So you should be able to build Jelly just like
-          any other Maven enabled project. Please see the
-          <a href="http://maven.apache.org/start/index.html">Maven</a>
-          documentation for details.
-        </dd>
-      </dl>
-    </section>
-  </section>
-</body>
-</document>
diff --git a/xdocs/gettingstarted.xml b/xdocs/gettingstarted.xml
deleted file mode 100644
index 093f5b9..0000000
--- a/xdocs/gettingstarted.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Getting Started</title>
-  <author email="jstrachan@apache.org">James Strachan</author>
- </properties>
-
-<body>
-
-<section name="Getting Started">
-
-
-<p>
-The easiest way to get started with Jelly is to try out the <a href="tutorial.html">tutorials</a>.    
-Before you try out any of the tutorials, you'll need to install Maven first.
-For more details on how to install Maven please refer to the 
-<a href="http://maven.apache.org/">Maven documentation</a>
-</p>
-
-<p>
-Here's a brief overview of what you need to do. 
-
-<ul>
-<li>
-Download a binary distribution of Maven.
-</li>
-<li>
-Set the environment variable MAVEN_HOME to point to where you installed Maven
-</li>
-<li>
-Change your PATH environment variable so that it points to MAVEN_HOME/bin
-</li>
-<li>
-Get a source distribution of Jelly. 
-The easiest way to do this is (until we have nightly builds working) is to grab a CVS checkout.
-Jelly currently resides in the jelly directory inside jakarta-commons.
-There are instructions on performing CVS checkouts 
-<a href="http://jakarta.apache.org/site/cvsindex.html">here</a>
-</li>
-</ul>
-</p>
-
-<p>
-To verify that your Maven installation is working, change directory into your <i>jelly</i> directory 
-which should contain a <i>project.xml</i> file required by Maven. Then type
-</p>
-
-<source>maven jar</source>
-
-<p>
-This should download all the required jars required to build and run the core jelly,
-compile all the code and build and run the unit test cases. 
-</p>
-
-</section>
-
-<section name="Tag-libraries">
-<p> 
-  Your next task is to choose the tag-libraries you are interested to and to
-  build them. For all of them, you can build using <code>maven jar</code>.
-  </p>
-<p>
-  Beware that some tag-libraries have dependencies that cannot be distributed
-  by the maven repository distribution for license reasons. The tag-libraries
-    <a href="libs/email/index.html">email</a>,
-    <a href="libs/soap/index.html"></a>, and
-    <a href="libs/jetty/index.html"></a>
-  are known to require such.
-  Please browse to their dependency-list in order to download the
-  named jars, rename-them, and put them at the appropriate place
-  in the maven repository. (you could also delete these directories)
-  </p>
-  <p>
-    Once all dependencies are honoured, you can also build it all using
-    <code>maven dist</code>, however, maven may become out of resources;
-    changing the environment variable MAVEN_OPTS (e.g. to -Xmx768m...) might help.
-    </p>
-<p>
-Once you've got this far, it might be time to try out one of the <a href="tutorial.html">tutorials</a>    
-</p>
-</section>
-
-
-</body>
-
-</document>
\ No newline at end of file
diff --git a/xdocs/images/logo.gif b/xdocs/images/logo.gif
deleted file mode 100644
index b5b67e4..0000000
--- a/xdocs/images/logo.gif
+++ /dev/null
Binary files differ
diff --git a/xdocs/images/logo.jpg b/xdocs/images/logo.jpg
deleted file mode 100644
index 397a70a..0000000
--- a/xdocs/images/logo.jpg
+++ /dev/null
Binary files differ
diff --git a/xdocs/index.xml b/xdocs/index.xml
deleted file mode 100644
index d6e2579..0000000
--- a/xdocs/index.xml
+++ /dev/null
@@ -1,285 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly : Executable XML</title>
-  <author email="jstrachan@apache.org">James Strachan</author>
- </properties>
-
-<body>
-
-<section name="Jelly : Executable XML">
-
-<p><em>Jelly</em> is a tool for turning XML into executable code.
-So Jelly is a Java and XML based scripting and processing engine. 
-Jelly can be used as a more flexible and powerful front end 
-to <a href="http://jakarta.apache.org/ant/">Ant</a> 
-such as in the <a href="http://maven.apache.org/">Maven</a>
-project, as a testing framework such as <a href="jellyunit.html">JellyUnit</a>, 
-in an intergration or workflow
-system such as <a href="http://werkflow.werken.com/">werkflow</a> 
-or as a page templating system inside engines like 
-<a href="http://cocoon.apache.org/">Cocoon</a>.
-</p>
-
-<p>
-Jelly borrows many good ideas from both JSP custom tags, Velocity, Cocoon, Ant. 
-Jelly can be used from the command line, inside Ant and 
-Maven or inside a Servlet, Web Service, JMS MessageListener or embedded directly into your software. 
-</p>
-
-<p>
-Jelly has native support for a Velocity-like expression language called
-<a href="http://jakarta.apache.org/commons/jexl/">Jexl</a> 
-which is a superset of the JSP, JSTL and JSF expression languages
-as  well as support for other pluggable expression languages like XPath via 
-<a href="http://jaxen.org">Jaxen</a>, JavaScript, beanshell and Jython.
-</p>
-
-<p>
-Jelly is completely extendable via custom tags in a similar way to JSP custom tags or Ant tasks.
-Though Jelly is really simple and has no dependencies either Servlets or JSP.
-So you could think of Jelly as similar to an XML-ized Velocity where the directives are XML tags.
-Or you could think of Jelly as a more flexible engine for processing Ant tasks with better expression, 
-logic and looping support.
-</p>
-
-<p>
-Jelly is also based on an XML pipeline architecture, like Cocoon, so that it is ideal for processing XML,
-scripting web services, generating dynamic web content or being part of a content generation 
-system such as Cocoon.
-</p>
-
-</section>
-
-
-<section name="How it works">
-
-<p>A Jelly script is an XML document which gets parsed into a Script. The script can then be ran to produce
-dynamic XML events which can then be turned into text, XML, HTML etc.
-</p>
- 
-<p>
-Rather like Velocity, the XML can contain expressions to make the output dynamic and can work with a variable 
-context.
-</p> 
-
-
-<source>
-&lt;document time="${now}"&gt;
-  Welcome ${user.name} to Jelly!
-&lt;/document&gt;
-</source>
-
-
-<p> 
-XML elements can be bound to some Java code to implement some kind of dynamic processing.
-The default way to do this is to implement Jelly <i>Tags</i> which are Java Beans which also implement Jelly's 
-<a href="apidocs/org/apache/commons/jelly/Tag.html">Tag</a> interface. 
-</p>
-
-<p>
-When a Jelly script is run, the properties of the Jelly Bean are configured using the XML attributes.
-Then the tag is run by calling its <i>doTag()</i> method. 
-The Tag can then perform some processing and invoke its body (the contents of the XML element) 
-if it wishes, however many times it wants. So Jelly Tags are very like JSP custom tags and analogous 
-to <i>directives</i> in Velocity..
-</p>
-
-<p>
-There is an Ant Tag Library which allows all Ant tasks to be used inside a Jelly script.
-</p>
-
-<p>
-Also Jelly Tags can be defined at runtime in dynamic Jelly script using the 
-<a href="libs/define/tags.html">define</a> tag 
-library so that simple yet powerful macros can be made very easily using just Jelly script.
-</p>
-
-<p>
-<i>Jelly Beans</i> can be created with the define tag library. A Jelly Bean is where a regular 
-Java Bean can be bound to a Jelly tag. If the bean implements the Runnable interface or has some kind
-of invokable method, like run(), invoke() or execute() then the bean will also be invoked by the tag.
-</p>
-
-<p>
-For example imagine if you had written the following bean
-</p>
-
-<source>
-public class MyTask {
-
-    // 'doIt' method that does some function/task...
-    public void run() throws SomeException {
-        // do something...
-    }
-
-    // Properties, can be any type
-    public void setX(int x) {
-        this.x = x;
-    }
-    public void setY(String y) {
-        this.y = y;
-    }
-}
-</source>
-
-<p>
-Then you can use this bean in a script by defining a new tag library and
-then using the new tag as follows...
-</p>
-
-<source>
-&lt;j:jelly xmlns:j="jelly:core" xmlns:define="jelly:define" xmlns:my="myTagLib"&gt;
-
-  &lt;define:taglib uri="myTagLib"&gt;
-    &lt;define:jellybean name="foo" className="MyTask"/&gt;
-  &lt;/define:taglib&gt;
-
-  Now lets use the new tag
-  
-  &lt;my:foo x="2" y="cheese"/&gt;
-
-&lt;/j:jelly&gt;
-</source>
-
-<p>
-This mechanism is kinda similar to using a &lt;taskdef&gt; in Ant except that the
-bean can be anything, it doesn't need to derive from Ant's Task - it can be
-any java object with some kind of 'doIt' method which takes no arguments.
-Indeed the method name can be set via &lt;define:jellybean method="doIt"/&gt;
-</p>
-
-
-
-</section>
-
-<section name="JSTL">
-<p>
-<a href="http://java.sun.com/products/jsp/jstl/">JSTL</a> 
-is the JSP Standard Tag Library which is standardized through the JCP process.
-</p>
-
-<p>
-Jelly implements a collection of JSTL tags to perform core features like 
-expression evaluation, conditional branching and looping, as well the processing of beans, XML, XPath and SQL. 
-</p>
-
-<p>
-Jelly can act as a stand alone lightweight engine for running JSTL 
-scripts which can be run from the command line or from Ant or that can be easily 
-embedded into SOAP services, Servlet engines, JMS MessageListeners or your own software.
-</p>
-
-<p>
-In addition Jelly allows the JSTL tags to be used to create unit testing scripts 
-for web applications and web services.
-</p>
-</section>
-
-
-<section name="Ant">
-<p>
-There is a JellyTask for calling Jelly from 
-<a href="http://jakarta.apache.org/ant/">Ant</a> 
-as well as a Jelly tag library for using any Ant Tasks inside a Jelly script!
-</p>
-
-<p>
-Jelly's support the Jexl expression language which is a superset of the expression language in JSTL 
-and Ant's expression language, means that Ant properties can be used inside Jelly scripts seamlessly
-while also working with beans, properties, collections, method calls etc.
-</p>
-
-<p>
-So Jelly can be thought of as a more flexible scripting and processing engine for Ant, kinda like 
-a combination of Ant, Velocity and JSP.
-</p>
-</section>
-
-
-<section name="XML and Web Services">
-<p>
-Jelly is based on an XML event pipeline architecture (SAX), like Cocoon, rather than being purely text
-based like JSP and Velocity. This means that Jelly tags can consume XML events and emit them. Each
-Jelly Tag can then act as an XML source, result, filter or transformation.
-</p>
-
-<p>
-Also because Jelly works on an XML event pipeline, XML can be processed very efficiently without redundant
-runtime parsing. 
-Once a Jelly script is parsed, it can be cached so that whenever it is run, no XML parsing is usually necessary of the input or the output.
-</p>
-
-<p>
-In addition there is a tag library called the Jelly Stylesheet Library (
-<a href="libs/jsl/tags.html">JSL</a>) for
-performing XSLT-style declarative processing of XML documents using a pattern match approach.
-</p>
-
-<p>
-Using the dynamic tag creation features of the <i>define</i> tag library we can easily script SOAP services using
-a simple tag based macro language. 
-</p>
-
-<p>
-For example the following piece of Jelly script could evaluate its dynamic 
-body (which can contain any Jelly tags, JSTL or Ant tasks) then convert the body into the correct SOAP message, call a SOAP service
-then format the results neatly as XML.
-</p>
-
-<source>
-&lt;babelfish:translate from="en" to="fr"&gt;
-  Welcome ${user.name} to Jelly!
-&lt;/babelfish:translate&gt;
-</source>
-
-<p>
-A Jelly script is an XML document, which means that Jelly can process itself.
-All of these things make Jelly a good choice for for working with XML and Web Services.
-</p>
-
-</section>
-
-
-<section name="Other uses">
-<p>
-We hope Jelly can be both generic and powerful XML processing and transformation engine, 
-a web and XML based scripting engine as well as a unit testing framework for 
-testing web applications and web services.
-</p>
-
-<p>
-Currently Jelly is being used inside <a href="http://maven.apache.org/">Maven</a>
-to provide more flexible and powerful build mechanism while still preserving investment in Ant tasks.
-</p>
-
-</section>
-
-<section name="JSTL References">
-  <ul>
-    <li><a href="http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html">JSTL Tag reference</a></li>
-    <li><a href="http://java.sun.com/products/jsp/jstl/1.1/docs/api/index.html">JSTL API</a></li>
-    <li><a href="http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html">Apache JSTL Implementation</a></li>
-  </ul>
-</section>
-
-</body>
-</document>
-
diff --git a/xdocs/irc.xml b/xdocs/irc.xml
deleted file mode 100644
index 056af5c..0000000
--- a/xdocs/irc.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
-  <properties>
-    <title>IRC</title>
-    <author email="jstrachan@apache.org">James Strachan</author>
-  </properties>
-
-  <body>
-
-    <section name="IRC">
-
-      <p>
-      The CodeHaus runs an IRC server to support the interactive
-      efforts of project members.
-      </p>
-
-      <p>
-      To access the IRC server, point an appropriate IRC client at:
-      </p>
-
-      <blockquote>
-            server: <b>irc.codehaus.org</b>
-              port: <b>6667</b>
-      </blockquote>
-
-      <p>
-      If you have <a href="http://www.mozilla.org/">Mozilla</a> installed you can point your browser at
-      <a href="irc://irc.codehaus.org:6667/#jelly">#jelly</a>.
-      </p>
-
-      <p>
-      You may find folks hanging out in either <code><b>#jelly</b></code>
-      or <code><b>#maven</b></code>.
-      </p>
-
-      <!-- PL: sadly disabled archives...
-      <subsection name="Logs">
-        <p>
-        Many of the channels hosted by The Werken Company are archived
-        and available through the 
-        <a href="http://irc.werken.com/channels/">Werken IRC Archives</a>.
-        </p>
-
-        <p>
-        <a href="http://irc.werken.com/channels/jelly/">#jelly archive</a>
-        </p>
-      </subsection>
-      -->
-
-    </section>
-    
-  </body>
-</document>
diff --git a/xdocs/jellydoc.xml b/xdocs/jellydoc.xml
deleted file mode 100644
index f78dcad..0000000
--- a/xdocs/jellydoc.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>A Guide To JellyDoc</title>
-    <author email="commons-dev@jakarta.apache.org">Jakarta Commons Development Team</author>
-  </properties>
-
-    <body>
-        <section name='Introduction'>
-            <subsection name="But What Is JellyDoc?"> 
-                <p>
-<strong>JellyDoc</strong> generates documentation for <strong>Jelly</strong> 
-tag libraries from their javadoc. An example of JellyDoc generated content can be viewed 
-<a href='http://jakarta.apache.org/commons/jelly/libs/betwixt/tags.html'>here</a>.
-            </p>
-        </subsection>
-            <subsection name='So What Is The Document?'>
-                <p>
-This document is a brief (and non-normative) 
-guide written by developers using JellyDoc to document their tag libraries and is
-aimed at helping developers use JellyDoc. Please help to improve this resource
-by <a href='http://jakarta.apache.org/commons/patches.html'>contributing patches</a>.
-            </p>
-                <p>
-<strong>Note</strong> that this document is based on the maven build script used by
-the Jakarta Commons Jelly build. Details may vary for other builds.
-            </p>
-        </subsection>
-    </section>
-        <section name='An Anatomy Of A Tag Library Description'>
-            <p>
-The content generated by JellyDoc can be divided into different sections. These sections
-are then arranged into the document presented to the user. Understanding where each
-of these sections comes from is key to writing javadocs for tag libraries aimed at use
-by JellyDoc.
-        </p>
-            <subsection name='Tag Library Short Description'>
-                <p>
-This is not strictly part of the main JellyDoc generated document but it is related
-(and this seems like a good place to discuss it). This appears in the generated overview
-document as the content paragraph.
-            </p>
-                <p>
-This is taken from the <code>&lt;description&gt;</code> tag in the <code>project.xml</code>
-for the tag library.
-            </p>
-        </subsection>
-            <subsection name='Tag Library Long Description'>
-                <p>
-This appears in the main generated JellyDoc content as the description associated with
-the library in the library table and also within the descriptive subsection below.
-            </p>
-                <p>
-This is the contents of the body of the <code>package.html</code> file for the package
-containing the tag library.
-            </p>
-        </subsection>
-            <subsection name='Tag Description'>
-                <p>
-This appears in the main generated JellyDoc content as the description associated with
-the tag in the tags table and also within the descriptive subsection for the tag.
-            </p>
-                <p>
-This is the contents of the class level javadocs for the class implementing the class.
-            </p>
-        </subsection>    
-            <subsection name='Attribute Description'>
-                <p>
-This appears in the main generated JellyDoc content as the description associated with
-the attribute in the tag attributes table.
-            </p>
-                <p>
-This is the contents of the javadocs for the setter property mapped to the attribute.
-Note that this includes the contents of the <code>@return</code> tag and so care
-is needed to ensure that the generated output scans.
-            </p>
-        </subsection>         
-    </section>
-  </body>
-</document>
-
diff --git a/xdocs/jellyswing.xml b/xdocs/jellyswing.xml
deleted file mode 100644
index af625ba..0000000
--- a/xdocs/jellyswing.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>JellySwing</title>
-    <author email="jstrachan@apache.org">James Strachan</author>
-  </properties>
-
-  <body>
-    <section name="JellySwing"> 
-      <p>
-        JellySwing is a simple Jelly library which can be used to create Swing user interfaces.
-        It allows XML documents (Jelly scripts) to be used to define the layout and rendering of Swing 
-        front ends which avoids lots of mundane Java coding, using markup to define the view 
-        of your front end and allowing you to bind to Java code for the business objects and models. 
-      </p>
-      <p>
-        This mechanism uses seperation of concerns and MVC ideas from web applications, allowing the rendering
-        of your Swing front end to be easily transformed (since its XML) into different styles while leaving your
-        model and business objects untouched. It also allows different views to be constructed independently of your models.
-      </p>
-      <p>
-        There is an example JellySwing script
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/swing/example.jelly?rev=HEAD">here</a>
-      </p>
-      <p>
-        To run the example type the following command (from within the <code>jelly-tags/swing</code>
-        directory) and then you should see a full Swing user interface 
-        appear with pull down menus, a splitter pane, a form, entry fields, buttons and a table.
-      </p>
-      <source>
-    maven demo:swing
-      </source>
-      <p>
-        This example even shows that simple actions can be coded in Jelly script too! Though typically most
-        complex logic and models (such as TableModel, TreeModel) should be written in Java code.
-        Then Jelly script can be used to create the view and bind in the models.
-      </p>
-    </section>
-    
-    <section name="JellyRunner"> 
-      <p>
-        JellyRunner is a simple example Swing user interface written with JellySwing.
-        You can view the source to it
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/swing/run.jelly?rev=HEAD">here</a>
-      </p>
-      <p>
-        If you invoke it via the following command you will get a small Swing UI that allows you to
-        choose Jelly scripts to invoke, within the current JVM. Again run this within the
-        <code>jelly-tags/swing</code> directory.
-      </p>
-      <source>
-    maven jelly:runner
-      </source>
-      <p>
-        This makes developing Jelly scripts and JellySwing scripts in particular, much more RAD-like.
-        You can keep JellyRunner open, edit a Jelly script and just hit the 'Run' button and the
-        script executes instantaneously, there's no waiting for a JVM to startup.
-      </p>
-    </section>
-    
-    <section name="Comparing JellySwing with Java code for Swing"> 
-      <p>
-        There's a simple demo written by Otto von Wachter which demonstrates how Jelly can be used
-        for templating HTML.
-      </p>
-      <p>
-        The demo was orignally written in
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/demos/HomepageBuilder.java?rev=HEAD">Java code</a>
-         
-        to implement a simple Swing UI
-        As an experiment the same Swing user interface has been written 
-       <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/demos/homepageBuilder.jelly?rev=HEAD">as a JellyScript</a>
-        as well.
-        While this is a fairly simple Swing UI and not a particularly great example of the power of JellySwing,
-        it does highlight the main difference between the two appraches.
-      </p>
-    </section>
-    
-  </body>
-</document>
-
diff --git a/xdocs/jellyswt.xml b/xdocs/jellyswt.xml
deleted file mode 100644
index 64567ae..0000000
--- a/xdocs/jellyswt.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>JellySWT</title>
-    <author email="jstrachan@apache.org">James Strachan</author>
-  </properties>
-
-  <body>
-    <section name="JellySWT"> 
-      <p>
-        JellySWT is a simple Jelly library which can be used to create SWT user interfaces.
-        It allows XML documents (Jelly scripts) to be used to define the layout and rendering of SWT
-        front ends which avoids lots of mundane Java coding, using markup to define the view 
-        of your front end and allowing you to bind to Java code for the business objects and models. 
-      </p>
-      <p>
-        This mechanism uses seperation of concerns and MVC ideas from web applications, allowing the rendering
-        of your SWT front end to be easily transformed (since its XML) into different styles while leaving your
-        model and business objects untouched. It also allows different views to be constructed independently of your models.
-      </p>
-      <p>
-        There is an example JellySWT script
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/swt/src/test/org/apache/commons/jelly/tags/swt/example.jelly?rev=HEAD">here</a>
-      </p>
-      <p>
-        To try running the example, cd into the <i>[jelly-home]/jelly-tags/swt</i> directory 
-        and type the following command, you should see a full SWT user interface 
-        appear with pull down menus, a simple form, a table, toolbar buttons, tooltip etc.
-      </p>
-      <source>maven demo</source>
-    </section>
-    
-    <section name="Running SWT"> 
-      <p>
-        Please be aware that SWT uses JNI and so requires a runtime library to be on your PATH for any SWT application to run.
-        You can refer to this <a href="http://eclipsewiki.swiki.net/26">FAQ</a> entry for more details.
-      </p>
-      <p>
-        For example on my windows laptop I copied the <i>swt-win32-2116.dll</i> from Eclipse into my PATH before running the examples.
-      </p>
-    </section>
-    
-    <section name="Useful SWT Links"> 
-        <ul>
-      <li>
-        <a href="http://www.eclipse.org/documentation/html/plugins/org.eclipse.platform.doc.isv/doc/reference/api/index.html">SWT Javadoc</a> 
-        is very handy. Its mostly the widgets package thats of most interest.
-      </li>
-      <li>
-        This <a href="http://eclipsewiki.swiki.net/2">SWT Wiki</a> has lots of good examples and documentation.
-      </li>
-      <li>
-          This <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html">page</a> also has a list of lots of little example SWT applications.
-      </li>
-        </ul>
-    </section>
-    
-  </body>
-</document>
-
diff --git a/xdocs/jellyunit.xml b/xdocs/jellyunit.xml
deleted file mode 100644
index 842e017..0000000
--- a/xdocs/jellyunit.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>JellyUnit</title>
-    <author email="jstrachan@apache.org">James Strachan</author>
-  </properties>
-
-  <body>
-    <section name="JellyUnit"> 
-      <p>
-        JellyUnit is a Jelly based JUnit testing mechanism. 
-        This allows Jelly scripts to be used to perform unit testing which can be particularly useful
-        if you wish to test XML, XPath, SQL, HTTP, JMS or SOAP interactions.
-      </p>
-      <p>
-        JellyUnit works by using the <a href="libs/junit/tags.html">JUnit library </a> in a Jelly script
-        to create JUnit TestSuite and TestCase objects. 
-        There are all the usual JUnit assertion tests available such as &lt;assert&gt; 
-        &lt;assertEquals&gt; and &lt;fail&gt;. You can use both Jexl and XPath expressions in the 
-        &lt;assert&gt; tag via either the <i>test</i> or the <i>xpath</i> attributes.
-      </p>
-      <p>
-        Inside these test scripts you can use the full range of Jelly tags such as navigating over
-        XML test data creating multiple test cases based on sample data, performing SQL operations, SOAP calls, 
-        HTTP or JMS requests etc. 
-      </p>
-      <p>
-        You can also use Ant FileSets and the &lt;fileScanner&gt; tag to iterate over collections of 
-        Jelly scripts or XML data files and use this data to define new test cases.
-      </p>
-    </section>
-    
-    <section name="Examples"> 
-      <p>
-        There is a simple example JellyUnit script
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/junit/src/test/org/apache/commons/jelly/tags/junit/suite.jelly?rev=HEAD">here</a>
-      </p>
-      <p>
-        An example demonstrating the use of the <a href="libs/betwixt/tags.html">Betwixt</a> library is 
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/suite.jelly?rev=HEAD">here</a>
-        along with a common shared test script
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/betwixt/src/test/org/apache/commons/jelly/betwixt/common.jelly?rev=HEAD">here</a>
-      </p>
-      <p>
-          The <a href="libs/validate/tags.html">validate</a> library can be used to perform XML validation inside JellyUnit.
-          For example there's an example JellyUnit script validating XML 
-          <a href="http://cvs.apache.org/viewcvs/jakarta-commons/jelly/jelly-tags/validate/src/test/org/apache/commons/jelly/tags/validate/suite.jelly?rev=HEAD">here</a>
-      </p>
-    </section>
-
-    <section name="Mock Tags"> 
-      <p>
-        In unit testing scenarios its often useful to use 
-        <a href="http://c2.com/cgi/wiki?MockObject">Mock Objects</a> to test application logic and stub the behaviour
-        of other service
-      </p>
-      <p>
-        JellyUnit supports a feature called <i>Mock Tags</i> which are very similar to Mock Objects. 
-        Mock Tags were invented by by Joe Walnes.
-      </p>
-      <p>
-        Essentially the technique is to mock, or stub the behaviour of Jelly tags so that they give the results that you expect
-        from services.
-        For example imagine you had a Jelly script with tags which worked with databases or web services.
-        You could use mock tags to stub what the tags are meant to do, to test your script invokes them correctly
-        without requiring the underlying services
-      </p>
-      <p>
-        There's an and example of using Mock Tags via the <a href="libs/define/tags.html">define</a> library 
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/suite.jelly?rev=HEAD">here</a>
-        which creates the mock tags, inside a JellyUnit test case and then invokes this example 
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/define/src/test/org/apache/commons/jelly/tags/mock/service.jelly?rev=HEAD">service</a>
-        using the mock tags rather than the underlying SQL and web service tags.
-        Running the same service from outside of the Mock Tags JellyUnit test case would use the real tag implementations.
-      </p>
-    </section>
-    
-
-    <section name="Integration with TestRunners"> 
-      <p>
-        To integrate cleanly inside JUnit TestRunner frameworks there is a helper class,
-        <a href="libs/junit/apidocs/org/apache/commons/jelly/tags/junit/JellyTestSuite.html">JellyTestSuite</a>
-        which you can derive from
-        to produce a single Java class which has a static <i>suite()</i> method to create a TestSuite object 
-        containing all the test cases created by the JellyUnit files.
-        There is an 
-        <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/junit/src/test/org/apache/commons/jelly/junit/TestJUnit.java?rev=HEAD">example</a>
-        of this in action.
-      </p>
-      <p>So if you had a test suite defined in a jelly script <a>suite.jelly</a> in a package com.acme.foo
-          then you could create a class, capable of being ran inside any JUnit test runner framework as follows
-      </p>
-<source>
-package com.acme.foo;
-      
-import junit.framework.TestSuite;
-
-import org.apache.commons.jelly.tags.junit.JellyTestSuite;
-
-/** 
- * A helper class to run jelly test cases in a JUnit TestRunner
- */
-public class TestFoo extends JellyTestSuite {
-
-    public static TestSuite suite() throws Exception {
-        return createTestSuite(TestFoo.class, "suite.jelly");        
-    }
-}
-</source>
-    </section>
-  </body>
-</document>
-
diff --git a/xdocs/navigation.xml b/xdocs/navigation.xml
deleted file mode 100644
index 1e236a2..0000000
--- a/xdocs/navigation.xml
+++ /dev/null
@@ -1,288 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!DOCTYPE org.apache.commons.menus SYSTEM '../../commons-build/menus/menus.dtd'>
-<project name="Jelly">
-
-  <title>Jelly</title>
-
-  <body>
-    <menu name="Jelly">
-      <item name="Overview"                href="/index.html"/>
-      <item name="FAQ"                     href="/faq.html"/>
-      <item name="Getting Started"         href="/gettingstarted.html"/>
-      <item name="Tutorial"                href="/tutorial.html"/>
-      <item name="Detail"                  href="/overview.html"/>
-      <item name="JellyDoc"                  href="/jellydoc.html"/>
-      <item name="Download"                href="http://www.ibiblio.org/maven/commons-jelly/distributions/"/>
-      <item name="Tag Reference" href="/tag-reference/index.html" collapse="true">
-        <item name="All tags" href="/tag-reference/all.html" collapse="true">
-	        <item name="ant:ant"                     href="/tag-reference/ant_ant.html"/>
-	        <item name="ant:fileScanner"             href="/tag-reference/ant_fileScanner.html"/>
-	        <item name="ant:setProperty"             href="/tag-reference/ant_setProperty.html"/>
-	        <item name="antlr:antlr"                 href="/tag-reference/antlr_antlr.html"/>
-	        <item name="antlr:grammar"               href="/tag-reference/antlr_grammar.html"/>
-	        <item name="bean:bean"                   href="/tag-reference/example.html"/>
-	        <item name="bean:beanProperty"           href="/tag-reference/example.html"/>
-	        <item name="bean:beandef"                href="/tag-reference/example.html"/>
-	        <item name="beanshell:script"            href="/tag-reference/example.html"/>
-	        <item name="betwixt:introspector"        href="/tag-reference/example.html"/>
-	        <item name="betwixt:parse"               href="/tag-reference/example.html"/>
-	        <item name="bsf:script"                  href="/tag-reference/example.html"/>
-	        <item name="define:attribute"            href="/tag-reference/example.html"/>
-	        <item name="define:bean"                 href="/tag-reference/example.html"/>
-	        <item name="define:classLoader"          href="/tag-reference/example.html"/>
-	        <item name="define:dynaBean"             href="/tag-reference/example.html"/>
-	        <item name="define:extend"               href="/tag-reference/example.html"/>
-	        <item name="define:invoke"               href="/tag-reference/example.html"/>
-	        <item name="define:invokeBody"           href="/tag-reference/example.html"/>
-	        <item name="define:jellyBean"            href="/tag-reference/example.html"/>
-	        <item name="define:script"               href="/tag-reference/example.html"/>
-	        <item name="define:super"                href="/tag-reference/example.html"/>
-	        <item name="define:tag"                  href="/tag-reference/example.html"/>
-	        <item name="define:taglib"               href="/tag-reference/example.html"/>
-	        <item name="dynabean:dynabean"           href="/tag-reference/example.html"/>
-	        <item name="dynabean:dynaclass"          href="/tag-reference/example.html"/>
-	        <item name="dynabean:property"           href="/tag-reference/example.html"/>
-	        <item name="dynabean:set"                href="/tag-reference/example.html"/>
-	        <item name="email:email"                 href="/tag-reference/example.html"/>
-	        <item name="fmt:bundle"                  href="/tag-reference/example.html"/>
-	        <item name="fmt:formatDate"              href="/tag-reference/example.html"/>
-	        <item name="fmt:message"                 href="/tag-reference/example.html"/>
-	        <item name="fmt:param"                   href="/tag-reference/example.html"/>
-	        <item name="fmt:setBundle"               href="/tag-reference/example.html"/>
-	        <item name="fmt:setLocale"               href="/tag-reference/example.html"/>
-	        <item name="fmt:setTimeZone"             href="/tag-reference/example.html"/>
-	        <item name="fmt:timeZone"                href="/tag-reference/example.html"/>
-	        <item name="html:parse"                  href="/tag-reference/example.html"/>
-	        <item name="http:body"                   href="/tag-reference/example.html"/>
-	        <item name="http:delete"                   href="/tag-reference/example.html"/>
-	        <item name="http:get"                   href="/tag-reference/example.html"/>
-	        <item name="http:head"                   href="/tag-reference/example.html"/>
-	        <item name="http:header"                   href="/tag-reference/example.html"/>
-	        <item name="http:multipartPost"                   href="/tag-reference/example.html"/>
-	        <item name="http:options"                   href="/tag-reference/example.html"/>
-	        <item name="http:parameter"                   href="/tag-reference/example.html"/>
-	        <item name="http:part"                   href="/tag-reference/example.html"/>
-	        <item name="http:post"                   href="/tag-reference/example.html"/>
-	        <item name="http:put"                   href="/tag-reference/example.html"/>
-	        <item name="http:session"                   href="/tag-reference/example.html"/>
-	        <item name="interaction:ask"                   href="/tag-reference/example.html"/>
-	        <item name="jaxme:generator"                   href="/tag-reference/example.html"/>
-	        <item name="jaxme:marshall"                   href="/tag-reference/example.html"/>
-	        <item name="jaxme:unmarshall"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:deleteRequest"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:getRequest"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:httpContext"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:jellyResourceHandler"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:jettyHttpServer"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:notFoundHandler"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:postRequest"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:putRequest"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:realm"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:resourceHandler"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:responseBody"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:responseCode"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:responseHeader"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:securityHandler"                   href="/tag-reference/example.html"/>
-	        <item name="jetty:socketListener"                   href="/tag-reference/example.html"/>
-	        <item name="jface:action"                   href="/tag-reference/example.html"/>
-	        <item name="jface:applicationWindow"                   href="/tag-reference/example.html"/>
-	        <item name="jface:contributionItem"                   href="/tag-reference/example.html"/>
-	        <item name="jface:doubleClickListener"                   href="/tag-reference/example.html"/>
-	        <item name="jface:fieldEditor"                   href="/tag-reference/example.html"/>
-	        <item name="jface:menuManager"                   href="/tag-reference/example.html"/>
-	        <item name="jface:preferenceDialog"                   href="/tag-reference/example.html"/>
-	        <item name="jface:preferencePage"                   href="/tag-reference/example.html"/>
-	        <item name="jface:selectionChangedListener"                   href="/tag-reference/example.html"/>
-	        <item name="jface:viewer"                   href="/tag-reference/example.html"/>
-	        <item name="jface:wizardDialog"                   href="/tag-reference/example.html"/>
-	        <item name="jface:wizardPage"                   href="/tag-reference/example.html"/>
-	        <item name="jms:connection"                   href="/tag-reference/example.html"/>
-	        <item name="jms:destination"                   href="/tag-reference/example.html"/>
-	        <item name="jms:mapEntry"                   href="/tag-reference/example.html"/>
-	        <item name="jms:mapMessage"                   href="/tag-reference/example.html"/>
-	        <item name="jms:message"                   href="/tag-reference/example.html"/>
-	        <item name="jms:objectMessage"                   href="/tag-reference/example.html"/>
-	        <item name="jms:onMessage"                   href="/tag-reference/example.html"/>
-	        <item name="jms:property"                   href="/tag-reference/example.html"/>
-	        <item name="jms:receive"                   href="/tag-reference/example.html"/>
-	        <item name="jms:send"                   href="/tag-reference/example.html"/>
-	        <item name="jms:stopWatch"                   href="/tag-reference/example.html"/>
-	        <item name="jms:subscribe"                   href="/tag-reference/example.html"/>
-	        <item name="jms:textMessage"                   href="/tag-reference/example.html"/>
-	        <item name="jmx:operation"                   href="/tag-reference/example.html"/>
-	        <item name="jmx:register"                   href="/tag-reference/example.html"/>
-	        <item name="jmx:server"                   href="/tag-reference/example.html"/>
-	        <item name="jsl:applyTemplates"                   href="/tag-reference/example.html"/>
-	        <item name="jsl:style"                   href="/tag-reference/example.html"/>
-	        <item name="jsl:stylesheet"                   href="/tag-reference/example.html"/>
-	        <item name="jsl:template"                   href="/tag-reference/example.html"/>
-	        <item name="junit:assert"                   href="/tag-reference/example.html"/>
-	        <item name="junit:assertEquals"                   href="/tag-reference/example.html"/>
-	        <item name="junit:assertThrows"                   href="/tag-reference/example.html"/>
-	        <item name="junit:case"                   href="/tag-reference/example.html"/>
-	        <item name="junit:fail"                   href="/tag-reference/example.html"/>
-	        <item name="junit:run"                   href="/tag-reference/example.html"/>
-	        <item name="junit:suite"                   href="/tag-reference/example.html"/>
-	        <item name="log:debug"                   href="/tag-reference/example.html"/>
-	        <item name="log:error"                   href="/tag-reference/example.html"/>
-	        <item name="log:fatal"                   href="/tag-reference/example.html"/>
-	        <item name="log:info"                   href="/tag-reference/example.html"/>
-	        <item name="log:trace"                   href="/tag-reference/example.html"/>
-	        <item name="log:warn"                   href="/tag-reference/example.html"/>
-	        <item name="ojb:broker"                   href="/tag-reference/example.html"/>
-	        <item name="ojb:store"                   href="/tag-reference/example.html"/>
-	        <item name="quartz:cronTrigger"                   href="/tag-reference/example.html"/>
-	        <item name="quartz:job"                   href="/tag-reference/example.html"/>
-	        <item name="quartz:waitForScheduler"                   href="/tag-reference/example.html"/>
-	        <item name="regexp:contains"                   href="/tag-reference/example.html"/>
-	        <item name="regexp:match"                   href="/tag-reference/example.html"/>
-	        <item name="soap:invoke"                   href="/tag-reference/example.html"/>
-	        <item name="soap:invokeRaw"                   href="/tag-reference/example.html"/>
-	        <item name="sql:dateParam"                   href="/tag-reference/example.html"/>
-	        <item name="sql:driver"                   href="/tag-reference/example.html"/>
-	        <item name="sql:param"                   href="/tag-reference/example.html"/>
-	        <item name="sql:query"                   href="/tag-reference/example.html"/>
-	        <item name="sql:resultSet"                   href="/tag-reference/example.html"/>
-	        <item name="sql:row"                   href="/tag-reference/example.html"/>
-	        <item name="sql:setDataSource"                   href="/tag-reference/example.html"/>
-	        <item name="sql:transaction"                   href="/tag-reference/example.html"/>
-	        <item name="sql:update"                   href="/tag-reference/example.html"/>
-	        <item name="swing:action"                   href="/tag-reference/example.html"/>
-	        <item name="swing:borderAlign"                   href="/tag-reference/example.html"/>
-	        <item name="swing:borderLayout"                   href="/tag-reference/example.html"/>
-	        <item name="swing:buttonGroup"                   href="/tag-reference/example.html"/>
-	        <item name="swing:component"                   href="/tag-reference/example.html"/>
-	        <item name="swing:constraint"                   href="/tag-reference/example.html"/>
-	        <item name="swing:dialog"                   href="/tag-reference/example.html"/>
-	        <item name="swing:emptyBorder"                   href="/tag-reference/example.html"/>
-	        <item name="swing:etchedBorder"                   href="/tag-reference/example.html"/>
-	        <item name="swing:focusListener"                   href="/tag-reference/example.html"/>
-	        <item name="swing:font"                   href="/tag-reference/example.html"/>
-	        <item name="swing:gbc"                   href="/tag-reference/example.html"/>
-	        <item name="swing:gridBagLayout"                   href="/tag-reference/example.html"/>
-	        <item name="swing:keyListener"                   href="/tag-reference/example.html"/>
-	        <item name="swing:tableLayout"                   href="/tag-reference/example.html"/>
-	        <item name="swing:tableModel"                   href="/tag-reference/example.html"/>
-	        <item name="swing:tableModelColumn"                   href="/tag-reference/example.html"/>
-	        <item name="swing:td"                   href="/tag-reference/example.html"/>
-	        <item name="swing:titledBorder"                   href="/tag-reference/example.html"/>
-	        <item name="swing:tr"                   href="/tag-reference/example.html"/>
-	        <item name="swing:windowListener"                   href="/tag-reference/example.html"/>
-	        <item name="swt:GC"                   href="/tag-reference/example.html"/>
-	        <item name="swt:color"                   href="/tag-reference/example.html"/>
-	        <item name="swt:dialog"                   href="/tag-reference/example.html"/>
-	        <item name="swt:font"                   href="/tag-reference/example.html"/>
-	        <item name="swt:image"                   href="/tag-reference/example.html"/>
-	        <item name="swt:layout"                   href="/tag-reference/example.html"/>
-	        <item name="swt:layoutData"                   href="/tag-reference/example.html"/>
-	        <item name="swt:menu"                   href="/tag-reference/example.html"/>
-	        <item name="swt:onEvent"                   href="/tag-reference/example.html"/>
-	        <item name="swt:swtHelper"                   href="/tag-reference/example.html"/>
-	        <item name="swt:widget"                  href="/tag-reference/example.html"/>
-	        <item name="threads:group"                   href="/tag-reference/example.html"/>
-	        <item name="threads:interrupt"                   href="/tag-reference/example.html"/>
-	        <item name="threads:join"                   href="/tag-reference/example.html"/>
-	        <item name="threads:mutex"                   href="/tag-reference/example.html"/>
-	        <item name="threads:notify"                   href="/tag-reference/example.html"/>
-	        <item name="threads:sleep"                   href="/tag-reference/example.html"/>
-	        <item name="threads:synchronize"                   href="/tag-reference/example.html"/>
-	        <item name="threads:thread"                   href="/tag-reference/example.html"/>
-	        <item name="threads:wait"                   href="/tag-reference/example.html"/>
-	        <item name="threads:waitFor"                   href="/tag-reference/example.html"/>
-	        <item name="util:available"                   href="/tag-reference/example.html"/>
-	        <item name="util:file"                   href="/tag-reference/example.html"/>
-	        <item name="util:loadText"                   href="/tag-reference/example.html"/>
-	        <item name="util:properties"                   href="/tag-reference/example.html"/>
-	        <item name="util:replace"                   href="/tag-reference/example.html"/>
-	        <item name="util:sleep"                   href="/tag-reference/example.html"/>
-	        <item name="util:sort"                   href="/tag-reference/example.html"/>
-	        <item name="util:tokenize"                   href="/tag-reference/example.html"/>
-	        <item name="validate:assertValid"                   href="/tag-reference/example.html"/>
-	        <item name="validate:validate"                   href="/tag-reference/example.html"/>
-	        <item name="validate:verifier"                   href="/tag-reference/example.html"/>
-	        <item name="velocity:merge"                   href="/tag-reference/example.html"/>
-	        <item name="xml:attribute"                   href="/tag-reference/example.html"/>
-	        <item name="xml:comment"                   href="/tag-reference/example.html"/>
-	        <item name="xml:copy"                   href="/tag-reference/example.html"/>
-	        <item name="xml:copyOf"                   href="/tag-reference/example.html"/>
-	        <item name="xml:docType"                   href="/tag-reference/example.html"/>
-	        <item name="xml:element"                   href="/tag-reference/example.html"/>
-	        <item name="xml:expr"                   href="/tag-reference/example.html"/>
-	        <item name="xml:forEach"                   href="/tag-reference/example.html"/>
-	        <item name="xml:if"                   href="/tag-reference/example.html"/>
-	        <item name="xml:param"                   href="/tag-reference/example.html"/>
-	        <item name="xml:parse"                   href="/tag-reference/example.html"/>
-	        <item name="xml:set"                   href="/tag-reference/example.html"/>
-	        <item name="xml:sort"                   href="/tag-reference/example.html"/>
-	        <item name="xml:transform"                   href="/tag-reference/example.html"/>
-	        <item name="xmlunit:actual"                   href="/tag-reference/example.html"/>
-	        <item name="xmlunit:assertDocumentsEqual"                   href="/tag-reference/example.html"/>
-	        <item name="xmlunit:expected"                   href="/tag-reference/example.html"/>
-	      </item>
-	      <item name="Ant" href="/tag-reference/ant.html"/>
-	      <item name="Antlr" href="/tag-reference/antlr.html"/>
-	      <item name="Bean" href="/tag-reference/bean.html"/>
-	      <item name="BeanShell" href="/tag-reference/beanshell.html"/>
-	      <item name="Betwixt" href="/tag-reference/betwixt.html"/>
-	      <item name="BSF" href="/tag-reference/bsf.html"/>
-	      <item name="Define" href="/tag-reference/define.html"/>
-	      <item name="DynaBean" href="/tag-reference/dynabean.html"/>
-	      <item name="Email" href="/tag-reference/email.html"/>
-	      <item name="Format" href="/tag-reference/fmt.html"/>
-	      <item name="HTML" href="/tag-reference/html.html"/>
-	      <item name="HTTP" href="/tag-reference/http.html"/>
-	      <item name="Interaction" href="/tag-reference/interaction.html"/>
-	      <item name="JaxMe" href="/tag-reference/jaxme.html"/>
-	      <item name="Jetty" href="/tag-reference/jetty.html"/>
-	      <item name="JFace" href="/tag-reference/jface.html"/>
-	      <item name="JMS" href="/tag-reference/jms.html"/>
-	      <item name="JMX" href="/tag-reference/jmx.html"/>
-	      <item name="JUnit" href="/tag-reference/junit.html"/>
-	      <item name="Log" href="/tag-reference/log.html"/>
-	      <item name="OJB" href="/tag-reference/ojb.html"/>
-	      <item name="Quartz" href="/tag-reference/quartz.html"/>
-	      <item name="Regexp" href="/tag-reference/regexp.html"/>
-	      <item name="SOAP" href="/tag-reference/soap.html"/>
-	      <item name="SQL" href="/tag-reference/sql.html"/>
-	      <item name="Swing" href="/tag-reference/swing.html"/>
-	      <item name="SWT" href="/tag-reference/swt.html"/>
-	      <item name="Threads" href="/tag-reference/threads.html"/>
-	      <item name="Utility" href="/tag-reference/util.html"/>
-	      <item name="Validate" href="/tag-reference/validate.html"/>
-	      <item name="Velocity" href="/tag-reference/velocity.html"/>
-	      <item name="XML" href="/tag-reference/xml.html"/>
-	      <item name="XMLUnit" href="/tag-reference/xmlunit.html"/>
-      </item>
-    </menu>
-    <menu name="Community">
-      <!-- <item name="News Blog"               href="http://blogs.werken.com/projects/jelly/"/>-->
-      <item name="IRC"                      href="/irc.html"/>
-      <item name="Powered By"              href="/powered.html"/>
-      <item name="To Do List"              href="/todo.html"/>
-    </menu>
-    <menu name="Features">
-      <item name="JellyUnit"               href="/jellyunit.html"/>
-      <item name="JellySwing"              href="/libs/swing/index.html"/>
-      <item name="JellySWT"                href="/jellyswt.html"/>
-      <item name="XML Pipeline"            href="/pipeline.html"/>
-      <item name="Core Tags"               href="/tags.html"/>
-      <item name="Tag Libraries"           href="/libs/index.html"/>
-    </menu>
-    &common-menus;
-  </body>
-</project>
\ No newline at end of file
diff --git a/xdocs/overview.xml b/xdocs/overview.xml
deleted file mode 100644
index 33910c0..0000000
--- a/xdocs/overview.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly Overview</title>
-  <author email="jstrachan@apache.org">James Strachan</author>
- </properties>
-
-<body>
-
-<section name="Jelly Overview">
-
-<p>Jelly is an XML based scripting engine. The basic idea is that XML 
-elements can be bound to a Java <i>Tag</i> which is a Java bean that performs 
-some function. Here's an example action</p>
-
-<source>
-public class FooTag extends TagSupport {    
-    private int count;
-    public void setCount(int count) {
-        this.count = count;
-    }
-    public void doTag(XMLOutput output) throws Exception {
-        for ( int i = 0; i &lt; count; i++ ) {
-            // evaluate body
-            getBody().run( context, output );
-        }
-    }
-}</source>
-
-<p>Then in a Jelly script this tag could be used as follows:-</p>
-
-<source>
-&lt;f:foo count=&quot;123&quot;&gt;
-    something...
-&lt;/f:foo&gt;</source>
-
-<p>Jelly is totally extendable 
-via custom actions (in a similar way to JSP custom tags) as well as cleanly integrating with scripting 
-languages such as Jexl, Velocity, pnuts, beanshell and via BSF (Bean Scripting Framework) 
-languages like JavaScript &amp; JPython</p>
-
-<p>Also notice that Jelly uses an <i>XMLOutput</i> class which extends SAX ContentHandler
-to output XML events.
-This makes Jelly ideal for XML content generation, SOAP scripting or dynamic web site generation.
-A single Jelly tag can produce, consume, filter or transform XML events. This leads to a powerful
-XML pipeline engine similar in some ways to Cocoon.
-</p>
-
-</section>
-
-<section name="Background">
-
-<p>It seems quite common these days to define custom XML languages to perform 
-some kind of processing. Here are a few examples</p>
-
-<ul>
-  <li><a href="http://jakarta.apache.org/ant/">Ant</a></li>
-  <li>XSLT</li>
-  <li><a href="http://www.w3.org/TR/xml-pipeline/">XML Pipeline language</a></li>
-  <li>JSTL and JSP custom tags</li>
-  <li>Latka,  AntEater &amp; other similar XML based unit testing frameworks</li>
-  <li>commons-workflow</li>
-</ul>
-
-<p>So the motivation behind Jelly was to create a simple XML based processing 
-engine that could be extended to support various custom actions. A fully 
-qualified XML element name can be mapped to a Java Bean (or DynaBean), the 
-attributes map to bean properties, once the bean is constructed and the 
-properties set it is executed via the Tag interfaces doTag() method. So custom 
-actions can perform all kinds of processing from lower level looping, 
-conditional logic and expression evaluations to higher level actions like post 
-processing their bodies, making 
-a HTTP, SOAP or JMS call, querying SQL databases etc.</p>
-
-</section>
-
-<section name="Comparisons">
-
-<p>To try give you a better feel for what Jelly is, we'll compare and contrast 
-Jelly with other scripting engines and templating technologies.</p>
-
-<section name="Jelly versus JSP">
-
-<p>Similarities</p>
-<ul>
-  <li>Jelly uses the concept of custom tag libraries from JSP and follows many 
-  of the lessons learnt from the JSTL (JSP Standard Tag Library). Indeed JSTL 
-  could be implemented in Jelly.</li>
-</ul>
-
-<p>Differences</p>
-<ul>
-  <li>Jelly has no dependency on Servlets or JSP so Jelly can be run from the 
-  command line, inside Ant, inside an applet or anywhere that Java code can be 
-  ran.</li>
-  <li>Jelly tags are much simpler to write and use than JSP tags. Because JSP 
-  must support scriptlets due to backwards compatibility issues, they are 
-  implemented 'inside out' with 3 different interfaces (Tag, BodyTag, 
-  IterationTag) to implement based on the kind of tag you are writing, together 
-  with a fairly complex set of event-based methods that are called by the page 
-  container. Jelly tags are very easy - just derive from TagSupport and 
-  implement the doTag() method. Really simple!</li>
-  <li>Jelly is XML native both as the format of the scripts and the output 
-  format, so its ideal for work with XML and XML based applications and web 
-  services</li>
-  <li>Jelly tags can parse and compile their bodies for more optimal performance 
-  and easier validation. So a tag can ignore whitespace, iterate over its body, 
-  transform its body at compile time etc. So a Jelly tag can be a simple macro, preprocessing 
-  its body at compile time, such as to build smart HTML forms or to make SOAP 
-  macros etc.</li>
-</ul>
-
-</section>
-
-<section name="Jelly versus Velocity">
-
-<p>Velocity could actually be used inside Jelly via custom tags which support 
-Velocity expressions, directives and scripts. However here's a head to head 
-comparison anyways.</p>
-
-<p>Similarities</p>
-<ul>
-  <li>Jelly allows Java objects to be manipulated in a Java-like manner just 
-  like Velocity.</li>
-  <li>Jelly could have a <i>surface syntax</i> that looks similar to Velocity. 
-  i.e. someone could make a parser of Jelly that had a look-and-feel of Velocity 
-  for common directives and expressions.</li>
-</ul>
-
-<p>Differences</p>
-<ul>
-  <li>Jelly provides an extensible tag mechanism to provide more powerful 
-  scripting such as by supporting JSTL, XML, XPath, XSLT, SQL or SOAP service 
-  scripting. In essence, Jelly uses XML tags to denote 'directives'.</li>
-  <li>Jelly has integrated support for other scripting languages such as 
-  JavaScript, NetRexx, Jython etc.</li>
-</ul>
-
-</section>
-
-
-<section name="Jelly versus Ant">
-
-<p>
-Ant is a truly awesome build system which has always resisted 'scripting'. 
-Jelly has never tried to be a build system but instead has just focussed on 'scripting'.
-However Jelly is a lot like Ant in many ways. 
-</p>
-<p>
-The two can work hand in hand together very nicely. 
-Jelly could be thought of as a scripting plugin for Ant. 
-Jelly can be called from inside Ant as an Ant Task, then the Jelly script can script other Ant tasks,
-access Ant properties and use all other Jelly tags such as for logic, looping, working with beans, XPath, SQL etc.
-</p>
-
-<p>Similarities</p>
-<ul>
-  <li>Both use an XML format for the script with an expression language like ${foo.bar}</li>
-  <li>XML elements are mapped to a Java object, so its easy to extend both Ant and Jelly with simple Java code.</li>
-</ul>
-
-<p>Differences</p>
-<ul>
-  <li>Jelly has full support for pluggable expression languages. The default expression language is a superset of the one
-      used in JSP, JSTL and JSF which supports conditional expressions, navigating bean properties, 
-      and working with Maps, Collections, Lists, arrays etc. 
-      Jexl is the current implementation which adds some Velocity-like enhancements like method calls on beans etc.
-      Jelly supports other expression and scripting languages like Velocity, beanshell, JavaScript, Jython, pnuts, BSF etc in separate tag libraries
-  </li>
-  <li>Jelly has native XML support. Jelly can parse XML and process it using XPath expressions (via the JSTL tags). 
-      Also Jelly supports a declarative model of processing XML (via the JSL tags) which is similar to XSLT 
-      but can use Jelly tags, beans and Ant tasks inside the XML template in a similar way to DVSL.</li>
-  <li>
-      Jelly has a much more powerful collaboration mechanism for passing information between tags/tasks. 
-      In Jelly variables can be any object plus variable scopes can be nested to allow nested scripts to work together neatly.
-      A tag/task can be customized with beans as well as being able to consume, emit, filter and transform XML.
-      So Jelly tags can be configured from and can collaborate with beans and XML.
-  </li>
-  <li>Jelly supports dynamic tags. Tags can be defined in Jelly script to avoid repetitive typing 
-    such as to wrap up most of the complexity of making a SOAP call. So Jelly has an integrated tag based macro facility.
-  </li>
-  <li>
-      Jelly uses XML namespaces to allow lots of different tag libraries to work together seamlessly in the same 
-      XML document. This means you can mix and match Ant tasks with JSTL and Jelly tag libraries. 
-      All can use their own expression languages, so one script could mix and match the expression languages 
-      from Ant and JSTL as well as XPath and Jython.
-  </li>
-  <li>There is a clear difference of emphasis. Ant is a build system, Jelly is a scripting engine.
-  </li>
-</ul>
-
-</section>
-</section>
-
-<section name="Possible uses for Jelly">
-
-<p>Jelly has various possible uses. Here's a few to think about</p>
-<ul>
-  <li>An additional tool for Ant users to provide more flexible Ant scripting. 
-      Indeed Jelly is already used in Maven to provide a more flexible build system 
-      while still preserving existing investment in Ant tasks.
-  </li>
-  <li>HTTP, JMS, SOAP, XML and SQL based unit testing framework similar to Latka and AntEater</li>
-  <li>SOAP scripting or XML processing engine</li>
-  <li>XML or page templating system, possibly a Generator for Cocoon</li>
-  <li>Alternative (very lightweight) implementation of JSTL that can be run from 
-      Ant to generate static content</li>
-  <li>A workflow, EAI or integration, maybe integrated into commons-workflow</li>
-  <li>Code generation system, maybe an enhanced scripting engine for XDoclet</li>
-</ul>
-
-</section>
-
-
-</body>
-</document>
diff --git a/xdocs/pipeline.xml b/xdocs/pipeline.xml
deleted file mode 100644
index 77ab938..0000000
--- a/xdocs/pipeline.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>XML Pipelines</title>
-  <author email="jstrachan@apache.org">James Strachan</author>
- </properties>
-
-<body>
-
-<section name="XML Pipelines">
-
-<p>
-Rather like the Cocoon project, Jelly also supports the concept of <i>XML pipelines</i>.
-The idea in an XML pipeline is for XML events to be created by some generator and then
-flow through multiple filters, transformers or processors to some ultimate output.
-Currently XML events are implemented via <a href="http://sax.sf.net/">SAX</a>. 
-</p>
-
-
-<subsection name="A Jelly script is a compiled SAX stream">
-<p>
-Jelly compiles XML into a <a href="apidocs/org/apache/commons/jelly/Script.html">Script</a>.
-This mechanism works just the same whether the document is totally static, partially dynamic, 
-with just a few dynamic expressions inside it, or its totally dynamic using XML pipelines or invoking SOAP services etc.
-</p>
-<p>
-Jelly effectively turns XML into an executable Script that when its run will output XML events. 
-So this is effectively a dynamic XML event cache. The Script can contain dynamic fragments.
-This means that at runtime, there is no need to parse the script as the compiled Script can be cached which avoids unnecessary 
-XML parsers while still keeping content dynamic.
-</p>
-
-</subsection>
-    
-<subsection name="Using Tags as source, filter, transformation or destination in a pipeline">
-
-<p>
-Each Jelly <a href="apidocs/org/apache/commons/jelly/Tag.html">Tag</a> 
-is given an <a href="apidocs/org/apache/commons/jelly/XMLOutput.html">XMLOutput</a> 
-instance when it is invoked via the doTag() method. 
-The XMLOutput instance is a simple lightweigtht wrapper around SAX 
-ContentHandler and LexicalHandler instances allowing a Tag to take part in any 
-kind of SAX based processing of XML events.
-</p>
-
-<p>
-A Jelly Tag can choose how to invoke its body. So it could 
-</p>
-
-<ul>
-    <li>
-        optionally evaluate its body based on some condition
-    </li>
-    <li>
-        loop over its body via some iteration
-    </li>
-    <li>
-        parse its body into some DOM model or turn the XML events into some kind of Java objects 
-        or other kind of data structure
-    </li>
-    <li>
-        perform some arbitrary XML event transformation, like XSLT or apply some SAX Filter etc.
-    </li>
-    <li>
-        output the XML events to some destination
-    </li>
-</ul>
-
-<p>
-This means that by nesting Jelly tags together its possible to create simple or complex XML pipelines 
-which can be easily integrated with expression languages (like Jexl and XPath) 
-or scripting languages (like JavaScript, Jython etc) as well as using other technologies such as
-</p>
-
-<ul>
-    <li>
-        parsing XML, transforming it with XSLT or using XPath via the <a href="libs/xml/tags.html">xml</a> library
-    </li>
-    <li>
-        parsing HTML via the <a href="libs/html/tags.html">html</a> library
-    </li>
-    <li>
-        performing XML validation against DTD, XML Schema or RelaxNG using the <a href="libs/validate/tags.html">validate</a> library
-    </li>
-    <li>
-        performing SOAP operations via Apache Axis with the <a href="libs/soap/tags.html">soap</a> library
-    </li>
-    <li>
-        mixing and matching the processing of XML in pipelines with support for other libraries like 
-        Ant, SQL, HTTP, JMS etc.
-    </li>
-</ul>
-
-<p>
-It should be noted that highly complex, yet easy to use XML pipelines can be created since the 
-pipelines don't have to be linear. At any point in the chain, custom logic can decide what to do next.
-</p>
-
-<source><![CDATA[
-  <j:if test="${myBean.fooEnabled('uk')}>
-    <j:file name="${userdir}/results.html">
-      <x:transform xslt="asHTML.xsl">
-        <soap:invoke endpoint="http://com.myserver/...">
-          <x:transform xslt="foo.xsl">
-            <x:parse xml="${myBean.getSomeURL()}"/>
-          <x:transform>
-        </soap:invoke>
-      </x:transform>
-    </j:file>
-  </j:if>        
-]]>
-</source>
-
-</subsection>.
-
-
-</section>
-
-</body>
-
-</document>
\ No newline at end of file
diff --git a/xdocs/powered.xml b/xdocs/powered.xml
deleted file mode 100644
index 318b29c..0000000
--- a/xdocs/powered.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
-  <properties>
-    <title>Powered By Jelly</title>
-    <author email="jstrachan@apache.org">James Strachan</author>
-  </properties>
-
-  <body>
-    <section name="Powered By Jelly">
-      <p>
-        This page contains a list of known projects successfully using
-        Jelly.  We would be very interested if you would drop us a note
-        if you are using Jelly with your project and would like to be
-        added to this list.
-      </p>
-      <subsection name="Projects Using Jelly">
-      <table>
-        <tr><th>Project</th><th>Overview</th></tr>
-        <tr>
-          <td><a href="http://aft.sourceforge.net/">Anteater</a></td>
-          <td>
-            A testing framework which provides an easy way to write tests for checking the functionality of a 
-            Web application or of an XML Web service.
-          </td>
-        </tr>
-        <tr>
-          <td><a href="http://drools.org/">Drools</a></td>
-          <td>
-            A Java rules engine.
-          </td>
-        </tr>
-        <tr>
-          <td><a href="http://blissed.werken.com/">Blissed</a></td>
-          <td>
-            A Java process and state framework.
-          </td>
-        </tr>
-        <tr>
-          <td><a href="http://jakarta.apache.org/commons/latka/">Latka</a></td>
-          <td>
-            A functional (end-to-end) testing tool implemented in Java, and using an XML syntax to 
-            define a series of HTTP (or HTTPS) requests and a set of validations used to verify that 
-            the request was processed correctly. 
-          </td>
-        </tr>
-        <tr>
-          <td><a href="http://maven.apache.org/">Maven</a></td>
-          <td>
-            A java project management and project comprehension tool.
-          </td>
-        </tr>
-        <tr>
-          <td><a href="http://nanning.sourceforge.net/">Nanning</a></td>
-          <td>
-            A simple yet scaleable aspect-oriented framework for Java
-          </td>
-        </tr>
-        <tr>
-          <td><a href="http://seedling.sourceforge.net">Seedling</a></td>
-          <td>
-            A generic application platform that enables streamlined development of Java applications from 
-            reusable components. In particular JellyUnit and JellySwing are used to implement Swing based
-            unit testing.
-          </td>
-        </tr>
-        <tr>
-          <td><a href="http://werkflow.werken.com/">Werkflow</a></td>
-          <td>
-            A Java workflow system.
-          </td>
-        </tr>
-      </table>
-    </subsection>
-    </section>
-  </body>
-</document>
diff --git a/xdocs/tag-reference/all.xml b/xdocs/tag-reference/all.xml
deleted file mode 100644
index 4b8d490..0000000
--- a/xdocs/tag-reference/all.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly Tag Reference</title>
- </properties>
-
-  <body>
-
-    <section name="Overview">
-      <p>
-        This tag reference details all tags available for Jelly along with
-        an example of it's usage.
-      </p>
-      <p>
-        <!--  insert hans or other list here -->
-        Please select a tag on the navigation list for more information about that tag.
-      </p>
-    </section>
-  </body>
-</document>
\ No newline at end of file
diff --git a/xdocs/tag-reference/ant_ant.xml b/xdocs/tag-reference/ant_ant.xml
deleted file mode 100644
index 6f7faf9..0000000
--- a/xdocs/tag-reference/ant_ant.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly Tag Reference (ant:ant)</title>
-  <author email="dion@apache.org">Dion Gillard</author>
- </properties>
-
-  <body>
-
-    <section name="Home Page">
-      <p>See 
-        <a href="http://jakarta.apache.org/commons/jelly/libs/ant/">http://jakarta.apache.org/commons/jelly/libs/ant/</a>
-      </p>
-    </section>
-
-    <section name="Description">
-      <p>
-        This tag represents all <a href="http://ant.apache.org/manual/anttaskslist.html">Ant tasks</a>, and 
-        can create any <a href="http://ant.apache.org/">Ant</a> task, target or datatype dynamically from the
-        tag name you use, e.g. &lt;copy&gt;
-      </p>
-      <p>
-        Any tag <strong>not</strong> defined in the Jelly tag library for Ant, but defined to the Ant namespace,
-        is assumed to be an Ant task, target or datatype. When Jelly tries to execute this unknown Ant tag, 
-        it looks for a real Ant element to match the tag name, and if found, matches the tag's attributes 
-        to the Ant element's attributes, as Ant would.
-      </p>
-    </section>
-
-    <section name="Attributes">
-      <p>As per the ant task, target or datatype you are using.</p>
-    </section>
-    
-    <section name="Nested Elements">
-      <p>As per the ant task, target or datatype you are using.</p>
-    </section>
-
-    <section name="Examples">
-      <p>
-        You never code this tag directly, instead you use it by defining the ant tag library namespace 
-        and the using an Ant element. For example,
-        to use the <a href="http://ant.apache.org/manual/CoreTasks/copy.html">Ant copy task</a> you would code something similar
-        to this:
-      </p>
-      <source><![CDATA[
-<jelly xmlns:ant="jelly:ant">
-  <ant:copy file="myfile.txt" tofile="mycopy.txt"/>
-<jelly>
-]]></source>
-    </section>
-  </body>
-</document>
diff --git a/xdocs/tag-reference/ant_fileScanner.xml b/xdocs/tag-reference/ant_fileScanner.xml
deleted file mode 100644
index e1547a4..0000000
--- a/xdocs/tag-reference/ant_fileScanner.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly Tag Reference (ant:fileScanner)</title>
-  <author email="dion@apache.org">Dion Gillard</author>
- </properties>
-
-  <body>
-
-    <section name="Home Page">
-      <p>See 
-        <a href="http://jakarta.apache.org/commons/jelly/libs/ant/">http://jakarta.apache.org/commons/jelly/libs/ant/</a>
-      </p>
-    </section>
-
-    <section name="Description">
-      <p>
-        This tag creates a <code>FileScanner</code> object so that you can loop over the contents of an Ant
-        <a href="http://ant.apache.org/manual/CoreTypes/fileset.html">fileset</a>.
-      </p>
-      <p>
-        The <code>FileScanner</code> object has the following useful methods:
-        <ul>
-          <li><code>Iterator iterator()</code>: returns an iterator of the files in the nested filesets.</li>
-          <li><code>Iterator directories()</code>: returns an iterator of the directories in the nested filesets.</li>
-          <li><code>boolean hasFiles()</code>: returns true if there are files in the nested filesets..</li>
-        </ul>
-      </p>
-    </section>
-    
-    <section name="Attributes">
-      <table>
-        <tr>
-          <th>Name</th>
-          <th>Description</th>
-          <th>Required</th>
-        </tr>
-        <tr>
-          <td>var</td>
-          <td>The variable name for the <code>FileScanner</code> object</td>
-          <td>Yes</td>
-        </tr>
-      </table>
-    </section>
-    
-    <section name="Nested Elements">
-      <table>
-        <tr>
-          <th>Name</th>
-          <th>Description</th>
-          <th>Required</th>
-        </tr>
-        <tr>
-          <td>fileset</td>
-          <td>Any valid ant <a href="http://ant.apache.org/manual/CoreTypes/fileset.html">fileset</a>.</td>
-          <td>No</td>
-        </tr>
-      </table>
-    </section>
-
-    <section name="Examples">
-      <source><![CDATA[
-<j:jelly xmlns:j="jelly:core" xmlns:ant="jelly:ant">
-  <ant:fileScanner var="pluginProjects">
-    <ant:fileset dir="${basedir}">
-      <ant:include name="jelly-tags/*/project.xml" />
-    </ant:fileset>
-  </ant:fileScanner>
-
-  <j:forEach items="${pluginProjects.iterator()}" var="plugin">
-    <!-- process using ${plugin} variable -->
-  </j:forEach>
-</j:jelly>
-]]></source>
-    </section>
-    
-  </body>
-</document>
\ No newline at end of file
diff --git a/xdocs/tag-reference/ant_setProperty.xml b/xdocs/tag-reference/ant_setProperty.xml
deleted file mode 100644
index ad75184..0000000
--- a/xdocs/tag-reference/ant_setProperty.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly Tag Reference (ant:setProperty)</title>
- </properties>
-
-  <body>
-
-    <section name="Home Page">
-      <p>See 
-        <a href="http://jakarta.apache.org/commons/jelly/libs/ant/">http://jakarta.apache.org/commons/jelly/libs/ant/</a>
-      </p>
-    </section>
-
-    <section name="Description">
-      <p>
-        This tag sets an attribute of an Ant task or datatype if the given value is not null. This is very useful in
-        allowing attributes of ant tasks to be set conditionally without ugly if/then/else logic.
-      </p>
-    </section>
-    
-    <section name="Attributes">
-      <table>
-        <tr>
-          <th>Name</th>
-          <th>Description</th>
-          <th>Required</th>
-        </tr>
-        <tr>
-          <td>name</td>
-          <td>The name of the attribute of the ant task to set</td>
-          <td>Yes</td>
-        </tr>
-        <tr>
-          <td>value</td>
-          <td>The value to give the attribute of the ant task</td>
-          <td>Yes.</td>
-        </tr>
-        <tr>
-          <td>default</td>
-          <td>The default value to give the attribute of the ant task, if the <code>value</code> provided is null.</td>
-          <td>No</td>
-        </tr>
-      </table>
-    </section>
-    
-    <section name="Nested Elements">
-      <p>None</p>
-    </section>
-
-    <section name="Examples">
-      <p>
-        This tag is <strong>always</strong> nested inside of another Ant task, target or datatype.
-      </p>
-      <source><![CDATA[
-<j:jelly xmlns:j="jelly:core" xmlns:ant="jelly:ant">
-  <ant:javac
-    destdir="${maven.build.dest}"
-    excludes="**/package.html"
-    debug="${maven.compile.debug}"
-    deprecation="${maven.compile.deprecation}"
-    optimize="${maven.compile.optimize}">
-  
-    <ant:setProperty name="encoding" value="${maven.compile.encoding}" />
-          
-    <ant:setProperty name="executable" value="${maven.compile.executable}" />
-
-  </ant:javac>
-</j:jelly>
-      ]]></source>
-    
-    </section>
-    
-  </body>
-</document>
\ No newline at end of file
diff --git a/xdocs/tag-reference/antlr_antlr.xml b/xdocs/tag-reference/antlr_antlr.xml
deleted file mode 100644
index 36c100a..0000000
--- a/xdocs/tag-reference/antlr_antlr.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly Tag Reference (antlr:antlr)</title>
- </properties>
-
-  <body>
-
-    <section name="Home Page">
-      <p>See 
-        <a href="http://jakarta.apache.org/commons/jelly/libs/antlr/">http://jakarta.apache.org/commons/jelly/libs/antlr/</a>
-      </p>
-    </section>
-
-    <section name="Description">
-      <p>
-        This tag generates java code based on <a href="http://www.antlr.org/">Antlr</a>
-        grammar files. 
-      </p>
-      <p>
-        The grammars to generate are specified using nested <a href="antlr_grammar.html">grammar</a>
-        tags.
-      </p>
-      <p>
-        <strong>Warning</strong>: The grammar files must be placed in the directory
-        specified by the <code>maven.antlr.src.dir</code> variable. This hard coding
-        should be removed in a future release.
-      </p>
-    </section>
-    
-    <section name="Attributes">
-      <table>
-        <tr>
-          <th>Name</th>
-          <th>Description</th>
-          <th>Required</th>
-        </tr>
-        <tr>
-          <td>outputDir</td>
-          <td>The directory to place generated code into.</td>
-          <td>Yes</td>
-        </tr>
-      </table>
-    </section>
-    
-    <section name="Nested Elements">
-      <table>
-        <tr>
-          <th>Name</th>
-          <th>Description</th>
-          <th>Required</th>
-        </tr>
-        <tr>
-          <td>grammar</td>
-          <td>
-            The file name (within <code>maven.antlr.src.dir</code>) to use
-            in code generation.
-          .</td>
-          <td>No</td>
-        </tr>
-      </table>
-    </section>
-
-    <section name="Examples">
-      <source><![CDATA[
-<j:jelly xmlns:j="jelly:core" xmlns:antlr="jelly:antlr">
-  <j:set var="maven.antlr.src.dir" value="${basedir}/grammars"/>
-
-  <antlr:antlr outputDir="${maven.antlr.target.dir}">
-    <antlr:grammar>file1.antlr</antlr:grammar>
-  </antlr:antlr>
-
-</j:jelly>
-      ]]></source>
-    </section>
-    
-  </body>
-</document>
\ No newline at end of file
diff --git a/xdocs/tag-reference/antlr_grammar.xml b/xdocs/tag-reference/antlr_grammar.xml
deleted file mode 100644
index 4ec465d..0000000
--- a/xdocs/tag-reference/antlr_grammar.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly Tag Reference (taglib:tag)</title>
- </properties>
-
-  <body>
-
-    <section name="Home Page">
-      <p>See 
-        <a href="http://jakarta.apache.org/commons/jelly/libs/antlr/">http://jakarta.apache.org/commons/jelly/libs/antlr/</a>
-      </p>
-    </section>
-
-    <section name="Description">
-      <p>
-        This tag specifies grammars to add to an <a href="antlr_antlr.html">antlr</a> tag
-        for it's processing.
-      </p>
-      <p>
-        The body of this tag must be a file name to be found in the parent tag's source directory.
-      </p>
-    </section>
-    
-    <section name="Attributes">
-      <p>None</p>
-    </section>
-    
-    <section name="Nested Elements">
-      <p>None</p>
-    </section>
-
-    <section name="Examples">
-      <source><![CDATA[
-<j:jelly xmlns:j="jelly:core" xmlns:antlr="jelly:antlr">
-  <j:set var="maven.antlr.src.dir" value="${basedir}/grammars"/>
-
-  <antlr:antlr outputDir="${maven.antlr.target.dir}">
-    <antlr:grammar>file1.antlr</antlr:grammar>
-    <antlr:grammar>file2.antlr</antlr:grammar>
-  </antlr:antlr>
-
-</j:jelly>
-      ]]></source>
-    </section>
-    
-  </body>
-</document>
\ No newline at end of file
diff --git a/xdocs/tag-reference/example.xml b/xdocs/tag-reference/example.xml
deleted file mode 100644
index 4ac12a9..0000000
--- a/xdocs/tag-reference/example.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly Tag Reference (taglib:tag)</title>
- </properties>
-
-  <body>
-
-    <section name="Home Page">
-      <p>See 
-        <a href="http://jakarta.apache.org/commons/jelly/libs/xxx/">http://jakarta.apache.org/commons/jelly/libs/xxx/</a>
-      </p>
-    </section>
-
-    <section name="Description">
-      <p>
-        This tag ...
-      </p>
-    </section>
-    
-    <section name="Attributes">
-      <table>
-        <tr>
-          <th>Name</th>
-          <th>Description</th>
-          <th>Required</th>
-        </tr>
-        <tr>
-          <td>...</td>
-          <td>...</td>
-          <td>...</td>
-        </tr>
-      </table>
-    </section>
-    
-    <section name="Nested Elements">
-      <table>
-        <tr>
-          <th>Name</th>
-          <th>Description</th>
-          <th>Required</th>
-        </tr>
-        <tr>
-          <td>...</td>
-          <td>...</td>
-          <td>...</td>
-        </tr>
-      </table>
-    </section>
-
-    <section name="Examples">
-      <source><![CDATA[
-...
-      ]]></source>
-    </section>
-    
-  </body>
-</document>
\ No newline at end of file
diff --git a/xdocs/tag-reference/index.xml b/xdocs/tag-reference/index.xml
deleted file mode 100644
index ead8c4b..0000000
--- a/xdocs/tag-reference/index.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly Tag Reference</title>
- </properties>
-
-  <body>
-
-    <section name="Overview">
-      <p>
-        This tag reference details all tags available for Jelly along with
-        an example of it's usage.
-      </p>
-      <p>
-        <!--  insert hans or other list here -->
-        Please choose either <strong>All Tags</strong> or an individual tag library for more information.
-      </p>
-    </section>
-  </body>
-</document>
\ No newline at end of file
diff --git a/xdocs/todo.xml b/xdocs/todo.xml
deleted file mode 100644
index 8fb3c26..0000000
--- a/xdocs/todo.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-  <properties>
-    <title>TODO</title>
-    <author email="jstrachan@apache.org">James Strachan</author>
-  </properties>
-
-  <body>
-    <section name="TODO"> 
-      <p>
-        The following is a list of items that need to be completed in
-        Jelly.  Contributions are welcome!.
-      </p>
-      
-      
-    <section name="Core tasks"> 
-      <ul>
-        <li>Implementa a META-INF/services mechanism for mapping Jelly libraries to namespace URIs
-            in a similar way to how the commons-discovery and JAXP libraries work.
-            This would allow Jelly libraries to be distributed in a self contained JAR then just put
-            on the classpath and they'd be usable.                
-        </li>
-        <li>
-            Implement a JJAR/Maven mechanism so that using a new Jelly library via a namespace URI would
-            automatically download the jar and its dependencies from some local/remote repository.
-        </li>
-        <li>Maybe add a Scope class to make it easier to plugin custom scopes such as 
-            request, session, applicaiton, initParams, params, transation etc.
-            In a workflow setting this could also include transient and persistent scopes
-        </li>
-        <li>Write a JellyServlet so that Jelly can be used as a page templating system.
-        </li>
-        <li>Implement a HTML parser for Jelly, probably using NeckoHTML so that non-XML can be parsed
-            and tags with prefixes can be bound to Jelly tags.
-        </li>
-        <li>write a Cocoon JellyGenerator so that Jelly scripts can be used easily inside Cocoon</li>
-        <li>consider implementing a Jelly Doclet so that Jelly can be used to code generate
-            stuff from javadoc tags in a similar way to XDoclet but making use of the JSTL tags and
-            the Velocity like expression language (Jexl) which will avoid the need to use huge numbers 
-            of tags.                
-        </li>
-        <li>Rename the DynaTag interface to be DynamicAttributes along with JSP1.3, 
-            also add a namespace URI parameter
-        </li>
-        <li>Add support for namespace URI use inside XPath expressions.</li>
-        <li>When defining new tags using &lt;define:tag&gt;, we should allow attributes to be named,<br/>
-            specified as required, specify the optional conditions and so forth for validating instances.<br/> 
-            I guess this could just be normal script though.
-        </li>
-        <li>The org.apache.commons.jelly.impl package doesn't have a great name - <br/>
-            Can we think of a better one? <br/>
-            Also some of the classes in this package could maybe do with a rename? <br/>
-            ScriptBlock for example - should we just call it a Block or maybe a CompositeScript?
-        </li>
-        <li>Add an adapter to run JSP tag libraries inside Jelly when Jelly is used in a 
-            Servlet / JSP environment?
-        </li>
-        <li>Document much more!</li>
-      </ul>
-    </section>
-      
-    <section name="Ideas for new tag libraries"> 
-      <ul>
-        <li>
-            An XSD tag library that can be used to parse XSD documents and create DynaBeans from the complex types.
-<pre>
-&lt;xsd:element name="MyDynamicClass"&gt;
-  &lt;xsd:complexType&gt;
-      ...
-  &lt;/xsd:complexType&gt;
-&lt;/xsd:element&gt;</pre>
-
-            Also we could consider using class names or XSD type names to do conversions of values, maybe using
-            the ConvertUtils class in beanutils.
-        </li>
-        <li>conside a tag library which implements the <a href="http://stx.gingerall.cz/stx/index.html">STX</a>
-            specification for the SAX based transformation of XML. This is kinda like XPath and XSLT but is based
-            purely on a SAX stream. Maybe we could wrap <a href="http://www.obqo.de/joost">Joost</a>
-            in a Jelly tag library
-        </li>
-        <li>Implement a Schematron tag library for validing XML using a path based approach, rather than schema based.</li>
-        <li>
-            Provide support for running a piece of Jelly script remotely. This would be particularly useful for distributed
-            testing. Maybe integrating or enhancing something like 
-            <a href="http://sourceforge.net/projects/remoteant">rant</a>
-        </li>
-      </ul>
-    </section>
-
-    <section name="Changes to existing tag libraries"> 
-      <ul>
-        <li>Add JSL test cases to test for ordering of patterns and that the correct output comes out.</li>
-      </ul>
-    </section>
-
-    <section name="Ponder about"> 
-      <p>
-        The following is a list of things that might be good to add to Jelly, maybe after more thought.
-      </p>
-      <ul>
-        <li>
-            maybe consider a tag which will switch the default EL to XPath; then XPath and EL can be peers. Then ${foo}
-            can be used as an XPath expression anywhere
-        </li>
-        <li>We could autogenerate XML Schemas or RelaxNG docs for tag libraries to help validate scripts</li>
-        <li>Patch TagLibrary to alias all &lt;mixedCase&gt; tags to &lt;mixed-case&gt;  tags</li>
-      </ul>
-    </section>
-    
-    </section>
-  </body>
-</document>
-
diff --git a/xdocs/tutorial.xml b/xdocs/tutorial.xml
deleted file mode 100644
index b89c75d..0000000
--- a/xdocs/tutorial.xml
+++ /dev/null
@@ -1,353 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Copyright 2002,2004 The Apache Software Foundation.
-  
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-  
-       http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<document>
-
- <properties>
-  <title>Jelly Tutorial</title>
-  <author email="vonwao@yahoo.com">Otto von Wachter</author>
- </properties>
-
-<body>
-
-<section name="Jelly Tutorial">
-
-<p>
-The best way to get acquainted with Jelly, and get an idea what it can be
-used for, is to see it in action. So you want to get started as quickly as
-possible? Luckily for you Jelly comes with several demos that can be run
-from the command line using Maven.
-</p>
-
-<p>
-If you don't have Maven installed, you should check out the
-<a href="gettingstarted.html">Getting Started</a> guide first.
-</p>
-
-<p>
-The goal of the tutorial is to guide you through running some of the Jelly
-demos and give you some ideas of other potential uses of Jelly (and
-hopefully make your first experience with Jelly enjoyable and fun).
-</p>
-
-<p>
-Once you have tried a few of demos, you can explore Jelly further by writing
-some Jelly scripts on your own, or by modifying some of the demos provided.
-You may also want to define your own Jelly taglib, and in some cases
-you may want to know how to embed Jelly into your own Java program (tutorials
-on how to do these things are in the works).
-</p>
-
-<p>
-To see a list of the Jelly demos that you can run, type "maven -g" in the
-Jelly root directory (there should be a project.xml file there). Among the
-other maven goals, you will see the the demos available under the "demo"
-goal (incidentally, Maven is a project automation tool that uses Jelly as
-its xml processing engine, and Jelly in turn uses Maven as its build tool.
-Neat!)
-</p>
-
-<p>
-The following tutorials are currently available:
-</p>
-<ul>
-<li>
-<a href="#jellyswing">JellySwing</a>
-</li>
-<li>
-<a href="#embeddingjelly">Embedding Jelly</a>
-</li>
-<li>
-<a href="#jsl">Transforming XML with JSL</a>
-</li>
-<li>
-<a href="#html">Parsing HTML</a>
-</li>
-</ul>
-<br/>
-
-<a name="jellyswing"/>
-<section name="JellySwing">
-
-
-<p>
-The JellySwing demo shows how you can use Jelly (using the <a href="libs/swing/tags.html">JellySwing</a> library) to build the UI for a Swing java program.
-</p>
-
-<p>
-Why would you want to do this? If you have ever written a large Swing
-application, you will probably agree that coding a GUI in java can be a tedious task.
-Jelly allows you to define the View (in an MVC approach)
-in XML and bind it to a Model and Controller written in Java. Or you can
-define actions (Controller) directly in Jelly by using the &lt;action&gt; tag.
-</p>
-
-<p>
-Jelly is also a great way for a designer to prototype a UI and avoid the
-learning curve of Java. In fact, a designer could develop a full-featured
-application using a rich set of functions and beans exposed via jelly tags.
-</p>
-
-<p>
-To run the swing demo, go to directory jelly-tags/swing and  type "maven demo:swing"
-(View the <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/src/test/org/apache/commons/jelly/tags/swing/example.jelly?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup">demo script</a>). You should see a window open with
-some swing components. You can test the actions by selecting a menu item or
-pressing the button. The actions in this demo simply output a message to the
-console. A more practical action could be to invoke a bean, call a script
-that opens another window, etc.
-</p>
-
-<p>
-If you look at the <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/src/test/org/apache/commons/jelly/tags/swing/example.jelly?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup">jelly code for this demo</a>, you will see
-that building a UI is pretty simple. For example, a menu bar is simply:
-</p>
-
-<source>
-    &lt;menuBar&gt;
-      &lt;menu text="File"&gt;
-        &lt;menuItem&gt;
-          &lt;action name="New"&gt;
-           ... some action ...
-          &lt;/action&gt;
-        &lt;/menuItem&gt;
-      &lt;/menu&gt;
-      ... more menus/menu items
-    &lt;/menuBar&gt;
-</source>
-
-<p>
-As you can see, nested elements are automatically added to parent components
-(unlike Java, where you have to call parent.add(child) ).
-</p>
-
-<p>
-For the table, you can see that it was added to the scrollPane using the
-"new" tag (from the jelly:core taglib):
-</p>
-
-<source>
-    &lt;scrollPane&gt;
-      &lt;j:new className="org.apache.commons.jelly.swing.MyTableModel" var="tableModel"/&gt;
-      &lt;table model="${tableModel}"/&gt;
-    &lt;/scrollPane&gt;
-</source>
-
-<p>
-The nice thing about this is that any component (or model in this case) that
-is not available in the JellySwing taglib or is too complex to express using
-Jelly, can be written in java and added by this method.
-</p>
-
-
-<subsection name="Jelly Runner">
-
-<p>
-The Jelly Runner is a JellySwing interface that lets you run other Jelly scripts. Just select a file in the file dialog and click the Run Script button
-</p>
-
-<p>
-To start the JellyRunner type "maven jelly:runner" (View the <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/src/test/org/apache/commons/jelly/tags/swing/run.jelly?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup">demo source</a>).
-</p>
-
-</subsection>
-
-<subsection name="Homepage Builder (JellySwing Edition)">
-
-<p>
-This is a good chance to use the Jelly Runner. Find HomepageBuilder.jelly, which is located in /src/test/org/apache/commons/jelly/demos/ (View the <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/homepageBuilder.jelly?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup">demo source</a>).
-</p>
-
-<p>
-As you can see, the HomepageBuilder is a (mini) fully-functional swing application, and it's entirely written in Jelly!  This example uses Jelly on two levels: 1) For the actual application/UI and 2) As a templating engine to build homepages.This shows how you can use different taglibs together to build sophisticated applications.
-</p>
-
-<p>
-See the section on Embedding Jelly to find out more about the Homepage Builder demo. This is also a good way to compare a Java implementation (HomepageBuilder.java) with a Jelly implementation (HomepageBuilder.jelly).
-</p>
-
-</subsection>
-
-<subsection name="Other Ideas for JellySwing">
-
-<ul>
-<li>
-You could write a taglib to allow you to bind data to various models
-(TreeModel, TableModel, etc) using Jelly.
-</li>
-<li>
-You could allow the end user of an application to easily customize (or localize) the UI, and even add
-custom actions from a library of possible actions!
-</li>
-<li>
-You could you use JellySwing implement a "thin client", so that the entire UI of an application
-can be downloaded from a web server at runtime. In some applications, this would provide a lot of flexibility.
-</li>
-</ul>
-
-</subsection>
-
-</section>
-
-<a name="embeddingjelly"/>
-<section name="Embedding Jelly">
-
-<p>
-There are cases where you may want to execute Jelly scripts from within a java program (as opposed to doing it from Maven or the command line). This tutorial presents a simple example of a program that does this.
-</p>
-
-<p>
-This example is another "Home Page Builder". Previously, we used JellySwing to create the Home Page Builder. This time we will create the Swing controls in Java and only use Jelly to output the HTML.
-</p>
-
-<p>
-When you run the program, it will open a window where you can choose a template, and specify a few paramters. Then you simply click on "build page" and voila, your home page is generated by Jelly.
-</p>
-
-<p>
-To run the demo type "maven demo:embed" (View the <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/swing/src/test/org/apache/commons/jelly/demos/HomepageBuilder.java?rev=HEAD">demo source</a>).
-</p>
-
-<p>
-The code that actually runs Jelly is the following.
-</p>
-
-<source>
-    OutputStream output = new FileOutputStream("demopage.html");
-    JellyContext context = new JellyContext();
-
-        context.setVariable("name",nameField.getText());
-        context.setVariable("background",colorField.getText());
-        context.setVariable("url",urlField.getText());
-          // Set the hobby list
-        Vector v = new Vector();
-        Enumeration enum= listModel.elements();
-        while (enum.hasMoreElements()) {
-            v.add(enum.nextElement());
-        }
-        context.setVariable("hobbies", v);
-
-    XMLOutput xmlOutput = XMLOutput.createXMLOutput(output);
-    context.runScript("src/test/org/apache/commons/jelly/demos/"+template), xmlOutput);
-        xmlOutput.flush();
-</source>
-
-<p>
-The Jelly template looks like this:
-</p>
-
-<source>
-   &lt;?xml version="1.0"?&gt;
-   &lt;j:jelly trim="false" xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:html="jelly:html"&gt;
-     &lt;html&gt;
-       &lt;head&gt;
-         &lt;title&gt;${name}'s Page&lt;/title&gt;
-       &lt;/head&gt;
-       &lt;body bgcolor="${background}" text="#FFFFFF"&gt;
-         &lt;h1&gt;${name}'s Homepage&lt;/h1&gt;
-         &lt;img src="${url}"/&gt;
-         &lt;h2&gt;My Hobbies&lt;/h2&gt;
-         &lt;ul&gt;
-           &lt;j:forEach items="${hobbies}" var="i"&gt;
-             &lt;li&gt;${i}&lt;/li&gt;
-           &lt;/j:forEach&gt;
-         &lt;/ul&gt;
-       &lt;/body&gt;
-     &lt;/html&gt;
-   &lt;/j:jelly&gt;
-</source>
-
-<p>
-As you can see, it's pretty straighforward to call a Jelly script programatically. First you need a context to run the script in. You can think of the context as the "environment" in which the script runs. The script can use and modify variables in the context however it wishes. Then you need an XML output stream where the output of the script will be sent. In some cases, like this one, the XML output is the essential product of the script. In other cases, it may just be a "byproduct" of running the script, used for logging, etc. This is the case when you are running a maven build, for example.
-</p>
-
-<p>
-After you have explored this demo and its implementation, you may want to compare it with the same example implemented using the JellySwing library, above (if you haven't already done so).
-</p>
-
-</section>
-
-<a name="jsl"/>
-
-<section name="Transforming XML With JSL">
-
-<p>
-With the <a href="libs/jsl/tags.html">JSL tag library</a>, you can transform XML documents in an XSLT-like manner.
-</p>
-
-<p>
-To run the demo type "maven demo:jsl" (View the <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/jsl/src/test/org/apache/commons/jelly/tags/jsl/example.jelly?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup">demo source</a>). The demo transforms the demo source into HTML and ouputs it to the command line, like this:
-</p>
-
-<source>
-   &lt;html&gt;
-     &lt;body&gt;
-       &lt;h1&gt;Output&lt;/h1&gt;
-       &lt;small&gt;James Elson
-         &lt;h2&gt;I am a title!&lt;/h2&gt;
-         &lt;small&gt;Twas a dark, rainy night...&lt;/small&gt;
-         &lt;p&gt;dfjsdfjsdf&lt;/p&gt;
-         &lt;p&gt;fdsfsdfhdsff gyuf uysgf ds&lt;/p&gt;
-       &lt;/small&gt;
-     &lt;/body&gt;
-   &lt;/html&gt;
-</source>
-
-<p>
-Of course, this HTML could just as easly be going to a file or out to a browser in a HTTP response.
-</p>
-
-<p>
-If you look at the <a href="libs/jsl/tags.html">JSL tag library</a> documentation, you'll see that the JSL taglib consists of a mere four tags: style, template, stylesheet, and applyTemplates. Since many of the standard XSLT tags are already part of other Jelly taglibs, such as forEach and choose, these are the only others we really need. Moreover, much of the power of XSLT comes with using XPath expressions, which are natively supported by Jelly.
-</p>
-
-<p>
-There are many good books and tutorials on XSLT, and since the concepts are the same, I won't waste Jelly documentation space and time on this subject.
-</p>
-
-
-</section>
-
-<a name="html"/>
-<section name="Parsing HTML">
-
-<p>
-This demo demonstrates the use the handy parse tag in the <A HREF="libs/html/tags.html">HTML tag library</A>
-</p>
-
-<p>
-To run the demo type "maven demo:html" (View the <a href="http://cvs.apache.org/viewcvs.cgi/jakarta-commons/jelly/jelly-tags/html/src/test/org/apache/commons/jelly/tags/html/example.jelly?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup">demo source</a>).
-</p>
-
-<p>
-As you can see in the demo script, parsing an HTML file is simple:
-</p>
-
-<source>
-    &lt;html:parse var="doc" html="index.html"/&gt;
-</source>
-
-<p>
-Once you have parsed the document you can treat it the same way as a parsed XML document, i.e. applying JSL transformations, querying the document with XPath expressions, and so on.
-</p>
-
-</section>
-
-</section>
-
-</body>
-
-</document>
\ No newline at end of file