This commit was manufactured by cvs2svn to create tag
'ANT_MAIN_13_MERGE1'.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/tags/ANT_MAIN_13_MERGE1@268628 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index c3f7ac8..0000000
--- a/.cvsignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.ant.properties
-dist
-build
-bootstrap
-distribution
-prj.el
-emacs-jprj.el
-bootstrap.bat.pif
-
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 032be14..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * ============================================================================
- *                   The Apache Software License, Version 1.1
- * ============================================================================
- * 
- *    Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without modifica-
- * tion, are permitted provided that the following conditions are met:
- * 
- * 1. Redistributions of  source code must  retain the above copyright  notice,
- *    this list of conditions and the following disclaimer.
- * 
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 
- * 3. The end-user documentation included with the redistribution, if any, must
- *    include  the following  acknowledgment:  "This product includes  software
- *    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
- *    Alternately, this  acknowledgment may  appear in the software itself,  if
- *    and wherever such third-party acknowledgments normally appear.
- * 
- * 4. The names "Ant" and  "Apache Software Foundation"  must not be used to
- *    endorse  or promote  products derived  from this  software without  prior
- *    written permission. For written permission, please contact
- *    apache@apache.org.
- * 
- * 5. Products  derived from this software may not  be called "Apache", nor may
- *    "Apache" appear  in their name,  without prior written permission  of the
- *    Apache Software Foundation.
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
- * APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
- * DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
- * ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
- * (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
- * This software  consists of voluntary contributions made  by many individuals
- * on behalf of the  Apache Software Foundation.  For more  information  on the 
- * Apache Software Foundation, please see <http://www.apache.org/>.
- *
- */
diff --git a/README b/README
deleted file mode 100644
index 4420f2d..0000000
--- a/README
+++ /dev/null
@@ -1,70 +0,0 @@
-
-                                 A     N     T
- 
-
-  What is it? 
-  -----------
-  
-  Ant is a Java based build tool. In theory it is kind of like "make" 
-  without makes wrinkles and with the full portability of pure java code.
-
-  
-  Why?
-  ----
-  
-  Why another build tool when there is already make, gnumake, nmake, jam, 
-  and others? Because all of those tools have limitations that its original 
-  author couldn't live with when developing software across multiple platforms. 
-  
-  Make-like tools are inherently shell based. They evaluate a set of 
-  dependencies and then execute commands not unlike what you would issue on a 
-  shell. This means that you can easily extend these tools by using or writing 
-  any program for the OS that you are working on. However, this also means that 
-  you limit yourself to the OS, or at least the OS type such as Unix, that you 
-  are working on.
-  
-  Makefiles are inherently evil as well. Anybody who has worked on them for any 
-  time has run into the dreaded tab problem. "Is my command not executing 
-  because I have a space in front of my tab!!!" said the original author of Ant 
-  way too many times. Tools like Jam took care of this to a great degree, but 
-  still use yet another format to use and remember.
-  
-  Ant is different. Instead a model where it is extended with shell based 
-  commands, it is extended using Java classes. Instead of writing shell 
-  commands, the configuration files are XML based calling out a target tree 
-  where various tasks get executed. Each task is run by an object which 
-  implements a particular Task interface.
-  
-  Granted, this removes some of the expressive power that is inherent by being 
-  able to construct a shell command such as `find . -name foo -exec rm {}` but 
-  it gives you the ability to be cross platform. To work anywhere and 
-  everywhere. And hey, if you really need to execute a shell command, Ant has 
-  an exec rule that allows different commands to be executed based on the OS 
-  that it is executing on.
-
-  The Latest Version
-  ------------------
-
-  Details of the latest version can be found on the Apache Jakarta
-  Project web site <http://jakarta.apache.org/>.
-
-
-  Documentation
-  -------------
-
-  Documentation is available in HTML format, in the docs/ directory.
-  For building see docs/index.html#buildingant.
-  For installing see docs/index.html#installing.
-
-
-  Licensing
-  ---------
-
-  This software is licensed under the terms you may find in the file 
-  named "LICENSE" in this directory.
-  
-
-  Thanks for using Ant.
-
-                                          The Apache Jakarta Project
-                                         <http://jakarta.apache.org/>
diff --git a/TODO b/TODO
deleted file mode 100644
index b9faeb9..0000000
--- a/TODO
+++ /dev/null
@@ -1,17 +0,0 @@
-TODO List:
-
-  * Provide an AbstractFileCompareTask class with prebuilt "srcfile"
-    and "destfile" setter methods and whose execute method calls a
-    "updateNeeded" method.
-
-  * Investigate some sort of command line "execute an instance of a
-    task with these parameters" entry point. Maybe a
-    `org.apache.ant.TaskMain task org.foo.BarTask attrib1=foo
-    attrib2=bar` type entry point?
-
-  * GUI front end -- examine tasks, add task properties, etc. Also,
-    one button push build of a particular target.
-
-  * Test harness. All software projects should have an automatable
-    test suite. Ant is no exception to this rule.
-
diff --git a/WHATSNEW b/WHATSNEW
deleted file mode 100644
index 6ffa91b..0000000
--- a/WHATSNEW
+++ /dev/null
@@ -1,229 +0,0 @@
-Changes from Ant 1.2 to the current sources
-===========================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* Ant doesn't search for the buildfile anymore, unless you use the new
-  -find argument.
-
-* <perforce> has been replaced by a number of new tasks.
-
-* <javac> is now implemented using a factory. This makes extending
-  javac to use a new compiler a lot easier but may break custom
-  versions of this task that rely on the old implementation.
-
-* The output generated by the xml formatter for <junit> has changed a
-  little, it doesn't append " sec" in the time attribute anymore.
-
-Other changes:
---------------
-
-* A GUI Frontend: Antidote. This is currently in development.
-
-* New tasks: stylebook, propertyfile, depend, antlr, telnet, csc,
-  ilasm, apply, javah, several clearcase tasks, junitreport
-
-* Added output attribute to <java>.
-
-* Added nested zipfileset element to <zip>
-
-* Changed <sql> so that printing is at the task level rather than 
-  the statement level.
-  
-* javadoc task will pass -d flag to any doclet if the destDir attribute is
-  given. If the doclet does not accept the -d flag then omit the destdir
-  attribute.
-
-* <cab> can work on non-Windows platforms with the help of libcabinet. 
-  See http://trill.cis.fordham.edu/~barbacha/cabinet_library/.
-
-* <ftp> now supports passive mode.
-
-* New <mapper> data type that can be used to get influence on the
-  target files for some tasks like <copy> or enable new types of tasks
-  like <apply>.
-
-* <execon> provides more control over the command line now, the names
-  of the source files are no longer required to be at the end of the
-  command.
-
-* Style tasks will now support TraX compliant XSL processors if one is present
-  in your classpath.  
-
-* Ant now prints a warning when an attempt is made to use a property which has
-  not been set. Any build files which rely on non-set properties being passed
-  through untranslated will now break.
-  
-* Added a failonerror to the javac task. If set to false, the build will 
-  continue even if there are compilation errors.
-  
-* Added nested format elements to the tstamp task allowing additional time 
-  formats to be defined for arbitrary properties.   
-
-* Added classpath attribute and nested classpath element to <property>
-  to make the resource attribute more powerful.
-
-* ${} property expansion will now be performed on the patterns read
-  from files specified as includesfile or excludesfile attributes.
-
-Fixed bugs:
------------
-
-* <signjar> doesn't use deprectated methods anymore.
-
-* javadoc's failonerror attribute works again
-
-* Changed <sql> task so that printing result sets works on Oracle
-
-* Changes to ddcreator and ejbc helper to respect the descriptor hierarchy
-  keppgenerated in ejbc can now be turned off
-  
-* ejbjar now correctly ignores <ejb-ref> elements in the deployment descriptor.
-  CMP files are included by parsing the weblogic deployment descriptor rather 
-  than relying on the naming convention used in ant 1.2
-  Include super classes and super interfaces into the generated ejb jar files
-  <support> nested element allows support classes to be included in the EJB jar
-
-* <vssget> now correctly deals with spaces in arguments
-
-* <jar> fails early if a given manifest file doesn't exist
-
-* <rmic> doesn't search for the _Skel file anymore when stubversion is
-  set to 1.2.
-
-* <rmic> uses the the same classpath to verify a class can be rmic'd
-  as it passes to the compiler. 
-
-* org.apache.tools.mail.MailMessage (and therefore <mail>) can now
-  handle SMTP servers sending multi line responses.
-
-* nested <classpath> elements of <taskdef> now work for <taskdef>s not
-  nested into <target> as well.
-
-* <property> and <available> will search for the resource "foo" instead
-  of "/org/apache/tools/ant/taskdefs/foo" when given a relative resource
-  name foo.
-  
-* Handle build files in directories whose name contained a "#" character
-
-* <junit> can now log to files whose name contains a comma as well. 
-
-Changes from Ant 1.1 to Ant 1.2
-===============================
-
-Changes that could break older environments:
---------------------------------------------
-
-* Semantics of <property> has changed again in the hope to be more
-intuitive. ${} expansion now happens at runtime and <property> tags
-living inside of targets only take effect if they are visited at
-runtime.
-
-As a side effect of this change, task's attributes get set at runtime
-not at parser time as well, which might change the results of
-<script>s or other custom tasks that reference other tasks by their id
-attribute.
-
-* copying of support files in <javac> has been removed - as well as
-the filtering attribute.
-
-* the <expand> and <keysubst> tasks have been removed.
-
-* the ignore and items attributes of directory based tasks have been removed.
-
-* the command line switches _not_ starting with - have been removed.
-
-* Path and EnumeratedAttribute have been moved from
-org.apache.tools.ant to org.apache.tools.ant.types.
-
-* the class attributes of <available>, <java>, <rmic> and <taskdef>
-have been removed.
-
-* the src attribute of <chmod> has been removed.
-
-* <patch> and <javadoc> have lost some of their attributes.
-
-* <java> and <cvs> have lost some undocumented attributes.
-
-* the Unix antRun script would search for command.sh in the directory
-it changed to and invoke this instead of command if present. This
-behavior has been dropped.
-
-* <ejbjar> task syntax has been changed significantly
-
-* <exec> is no longer implemented by org.apache.tool.ant.taskdefs.Exec. 
-Custom tasks that rely on Project.createTask("exec") to return an
-instance of this class are going to fail.
-
-* nested <include> and <exclude> elements expect the value of their
-name attribute to be a single pattern, they don't accept multiple
-patterns anymore. Split them into multiple elements of the same type.
-
-* <delete dir="somedir" /> will now delete the directory itself as
-well as all included files. If you just want to clean out the
-directory and keep the empty one, use a nested fileset.
-
-Other changes:
---------------
-
-* New tasks: antstructure, cab, execon, fail, ftp, genkey, jlink,
-junit, sql, javacc, jjtree, starteam, war, unwar, uptodate,
-native2ascii, copy, move, mparse.
-
-* copydir, copyfile, deltree and rename are now deprecated. They
-should be replaced with the new copy, delete and move tasks.
-
-* <java> uses a ClassLoader of its own in no-fork mode if a classpath is
-specified.
-
-* <style> will create the necessary target directories and reprocess
-all files if the stylesheet changes.
-
-* New data types fileset and patternset - expected to get a broader use.
-They, as well as PATH like structures, can now be defined on a global
-level and later be referenced by their id attribute.
-
-* You can specify environment variables to <exec>.
-
-* <get> can check whether a remote file is actually newer than a local
-copy before it starts a download (HTTP only).
-
-* Added a -logger option to allow the class which performs logging to be 
-specified on the command line.
-
-* Added a -emacs option to tell the logger to leave out taskname adornments
-on log output.
-
-* <chmod> works on all files in parallel and supports multiple filesets.
-
-* <replace> can now use tokens and/or values that cross line boundaries.
-
-* build.compiler supports now jvc as well.
-
-* project specific help can now be obtained with the -projecthelp option.
-
-* Added a -debug option to make -verbose less verbose (and more useful)
-
-* Ant will now search for a file named build.xml in the parent directory
-and above (towards the root of the filesystem) if you didn't specify
--buildfile and there is no build.xml in the current directory.
-
-* <echo> can now write to a file and accepts nested text.
-
-Fixed bugs:
------------
-
-* <chmod> didn't work when used as a directory based task.
-
-* Path, Available, Property didn't resolve relative filenames with
-respect to the Project's basedir.
-
-* Project didn't interpret the basedir attribute correctly in all
-cases.
-
-* Nested <src> in <javac> caused NullPointerException.
-
-* Corrupt Zip- and Jar-files ar now deleted if the task fails.
-
-* many more fixes we've forgotten to document here ...
diff --git a/ant.properties.sample b/ant.properties.sample
deleted file mode 100644
index 5be65b5..0000000
--- a/ant.properties.sample
+++ /dev/null
@@ -1,14 +0,0 @@
-# This file is a sample .ant.properties file used for building ant.
-# Modify it for your own needs and copy it to .ant.properties 
-#
-# <-- starts a comment
-
-# If you wanted to use the better than average jikes compiler uncomment next line
-# build.compiler=jikes
-# build.compiler.warnings=true
-# build.compiler.pedantic=true
-# build.compiler.depend=true
-
-# If you want to use non-standard jars then edit following lines
-# jar.junit=/path/to/my/junit.jar
-
diff --git a/bootstrap.bat b/bootstrap.bat
deleted file mode 100755
index d406255..0000000
--- a/bootstrap.bat
+++ /dev/null
@@ -1,83 +0,0 @@
-@echo off
-
-REM You will need to specify JAVA_HOME if compiling with 1.2 or later.
-
-set OLDJAVA=%JAVA%
-set OLDJAVAC=%JAVAC%
-set OLDCLASSPATH=%CLASSPATH%
-set OLDANTHOME=%ANT_HOME%
-
-set ANT_HOME=.
-
-if "" == "%JAVA%"  if "" == "%JAVA_HOME%" set JAVA=java
-if "" == "%JAVA%"                         set JAVA=%JAVA_HOME%\bin\java
-
-if "" == "%JAVAC%" if "" == "%JAVA_HOME%" set JAVAC=javac
-if "" == "%JAVAC%"                        set JAVAC=%JAVA_HOME%\bin\javac
-
-echo.
-echo ... Bootstrapping Ant Distribution
-
-if     "%OS%" == "Windows_NT" if exist bootstrap rmdir/s/q bootstrap
-if not "%OS%" == "Windows_NT" if exist bootstrap deltree/y bootstrap
-
-SET LOCALCLASSPATH=lib\parser.jar;lib\jaxp.jar
-
-if exist %JAVA_HOME%\lib\tools.jar call src\script\lcp.bat %JAVA_HOME%\lib\tools.jar
-if exist %JAVA_HOME%\lib\classes.zip call src\script\lcp.bat %JAVA_HOME%\lib\classes.zip
-
-set TOOLS=src\main\org\apache\tools
-set CLASSDIR=classes
-
-SET CLASSPATH=%LOCALCLASSPATH%;%CLASSDIR%;src\main;
-
-echo JAVA_HOME=%JAVA_HOME%
-echo JAVA=%JAVA%
-echo JAVAC=%JAVAC%
-echo CLASSPATH=%CLASSPATH%
-
-if     "%OS%" == "Windows_NT" if exist %CLASSDIR%\nul rmdir/s/q %CLASSDIR%
-if not "%OS%" == "Windows_NT" if exist %CLASSDIR%\nul deltree/y %CLASSDIR%
-
-if not exist %CLASSDIR% mkdir %CLASSDIR%
-if not exist build mkdir build
-if not exist build\classes mkdir build\classes
-
-echo.
-echo ... Compiling Ant Classes
-
-%JAVAC% -d %CLASSDIR% %TOOLS%\tar\*.java %TOOLS%\ant\*.java %TOOLS%\ant\types\*.java %TOOLS%\ant\taskdefs\*.java %TOOLS%\ant\util\*.java %TOOLS%\ant\util\regexp\RegexpMatcher.java %TOOLS%\ant\util\regexp\RegexpMatcherFactory.java
-
-echo.
-echo ... Copying Required Files
-
-copy %TOOLS%\ant\taskdefs\*.properties %CLASSDIR%\org\apache\tools\ant\taskdefs
-copy %TOOLS%\ant\types\*.properties %CLASSDIR%\org\apache\tools\ant\types
-
-echo.
-echo ... Building Ant Distribution
-
-xcopy /s/q %CLASSDIR% build\classes
-
-%JAVA% %ANT_OPTS% org.apache.tools.ant.Main bootstrap
-
-echo.
-echo ... Cleaning Up Build Directories
-
-if     "%OS%" == "Windows_NT" if exist %CLASSDIR%\nul rmdir/s/q %CLASSDIR%
-if not "%OS%" == "Windows_NT" if exist %CLASSDIR%\nul deltree/y %CLASSDIR%
-
-echo.
-echo ... Done Bootstrapping Ant Distribution
-
-set JAVA=%OLDJAVA%
-set JAVAC=%OLDJAVAC%
-set CLASSPATH=%OLDCLASSPATH%
-set ANT_HOME=%OLDANTHOME%
-set OLDJAVA=
-set OLDJAVAC=
-set OLDCLASSPATH=
-set LOCALCLASSPATH=
-set OLDANTHOME=
-set TOOLS=
-
diff --git a/bootstrap.sh b/bootstrap.sh
deleted file mode 100755
index 2767698..0000000
--- a/bootstrap.sh
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/bin/sh
-
-# You will need to specify JAVA_HOME if compiling with 1.2 or later.
-
-unset CLASSPATH
-
-if [ "$JAVA_HOME" != "" ] ; then
-  if [ -f $JAVA_HOME/lib/tools.jar ] ; then
-    CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar
-  fi
- 
-  if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
-    CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/classes.zip
-  fi
-else
-  echo "Warning: JAVA_HOME environment variable not set."
-  echo "  If build fails because sun.* classes could not be found"
-  echo "  you will need to set the JAVA_HOME environment variable"
-  echo "  to the installation directory of java."
-fi
-
-if [ ! -x "$JAVA_HOME/bin/java" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly."
-  echo "  We cannot execute JAVA_HOME/bin/java"
-  exit
-fi
-
-# More Cygwin support
-if [ "$OSTYPE" = "cygwin32" ] || [ "$OSTYPE" = "cygwin" ] ; then
-  CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-ANT_HOME=.
-export ANT_HOME
-
-if [ -z "$JAVAC" ] ; then
-  JAVAC=${JAVA_HOME}/bin/javac;
-fi
-
-echo ... Bootstrapping Ant Distribution
-
-if [ -d "bootstrap" ] ; then
-  rm -r bootstrap
-fi
-
-CLASSPATH=lib/parser.jar:lib/jaxp.jar:${CLASSPATH}
-
-TOOLS=src/main/org/apache/tools
-CLASSDIR=classes
-
-CLASSPATH=${CLASSDIR}:src/main:${CLASSPATH}
-
-# convert the unix path to windows
-if [ "$OSTYPE" = "cygwin32" ] || [ "$OSTYPE" = "cygwin" ] ; then
-   CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-fi
-
-export CLASSPATH
-
-mkdir -p ${CLASSDIR}
-mkdir -p build
-
-echo ... Compiling Ant Classes
-
-${JAVAC} -d ${CLASSDIR} ${TOOLS}/tar/*.java \
-    ${TOOLS}/ant/util/regexp/RegexpMatcher.java \
-    ${TOOLS}/ant/util/regexp/RegexpMatcherFactory.java \
-    ${TOOLS}/ant/util/*.java ${TOOLS}/ant/types/*.java \
-    ${TOOLS}/ant/*.java ${TOOLS}/ant/taskdefs/*.java
-
-echo ... Copying Required Files
-
-cp src/main/org/apache/tools/ant/taskdefs/defaults.properties \
-    ${CLASSDIR}/org/apache/tools/ant/taskdefs
-cp src/main/org/apache/tools/ant/types/defaults.properties \
-    ${CLASSDIR}/org/apache/tools/ant/types
-
-echo ... Building Ant Distribution
-
-cp -r ${CLASSDIR} build
-
-${JAVA_HOME}/bin/java -classpath ${CLASSPATH} org.apache.tools.ant.Main \
-                      -buildfile build.xml bootstrap
-
-echo ... Cleaning Up Build Directories
-
-chmod +x bootstrap/bin/ant bootstrap/bin/antRun
-
-rm -rf ${CLASSDIR}
-
-echo ... Done Bootstrapping Ant Distribution
diff --git a/build.bat b/build.bat
deleted file mode 100755
index 512ee74..0000000
--- a/build.bat
+++ /dev/null
@@ -1,27 +0,0 @@
-@echo off
-
-set OLDCLASSPATH=%CLASSPATH%
-set REAL_ANT_HOME=%ANT_HOME%
-set ANT_HOME=bootstrap
-if exist bootstrap\lib\ant.jar if exist bootstrap\bin\ant.bat if exist bootstrap\bin\lcp.bat if exist bootstrap\bin\antRun.bat goto runAnt
-call bootstrap.bat
-
-:runAnt
-set LOCALCLASSPATH=lib\parser.jar;lib\jaxp.jar;bootstrap\lib\ant.jar
-for %%i in (lib\optional\*.jar) do call bootstrap\bin\lcp.bat "%%i"
-set CLASSPATH=%LOCALCLASSPATH%;%CLASSPATH%
-set LOCALCLASSPATH=
-
-if not "%REAL_ANT_HOME%" == "" goto install_ant
-call bootstrap\bin\ant.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
-goto cleanup
-
-:install_ant
-call bootstrap\bin\ant.bat -Dant.install="%REAL_ANT_HOME%" %1 %2 %3 %4 %5 %6 %7 %8 %9
-
-rem clean up
-:cleanup
-set ANT_HOME=%REAL_ANT_HOME%
-set REAL_ANT_HOME=
-set CLASSPATH=%OLDCLASSPATH%
-set OLDCLASSPATH=
diff --git a/build.sh b/build.sh
deleted file mode 100755
index 9e17257..0000000
--- a/build.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-REALANTHOME=$ANT_HOME
-ANT_HOME=bootstrap
-export ANT_HOME
-
-if test ! -f bootstrap/lib/ant.jar -o  ! -x bootstrap/bin/ant -o ! -x bootstrap/bin/antRun ; then
-  /bin/sh ./bootstrap.sh
-fi    
-
-LOCALCLASSPATH=lib/parser.jar:lib/jaxp.jar
-# add in the dependency .jar files
-DIRLIBS=lib/optional/*.jar
-for i in ${DIRLIBS}
-do
-    if [ "$i" != "${DIRLIBS}" ] ; then
-        LOCALCLASSPATH=$LOCALCLASSPATH:"$i"
-    fi
-done
-
-CLASSPATH=$LOCALCLASSPATH:$CLASSPATH
-export CLASSPATH
-
-
-if [ "$REALANTHOME" != "" ] ; then
-  ANT_INSTALL="-Dant.install=$REALANTHOME"
-fi
-
-bootstrap/bin/ant $ANT_INSTALL $*
-
diff --git a/build.xml b/build.xml
deleted file mode 100644
index e1e8c89..0000000
--- a/build.xml
+++ /dev/null
@@ -1,607 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- 
-  =======================================================================
-    Ant own build file                                                      
-  ======================================================================= 
--->
-<project name="Ant" default="main" basedir=".">
-
-  <!-- Give user a chance to override without editing this file 
-       (and without typing -D each time it compiles it) -->
-  <property file=".ant.properties" />
-  <property file="${user.home}/.ant.properties" />
-
-  <property name="Name" value="Ant"/>
-  <property name="name" value="ant"/>
-  <property name="version" value="1.4alpha"/>
-  <property name="version" value="1.3beta1"/>
-
-  <property name="debug" value="false" />
-  <property name="deprecation" value="false" />
-  <property name="optimize" value="true" />
-  <property name="junit.fork" value="false" />
-
-  <!-- 
-       ===================================================================
-         Set the properties related to the source tree
-       =================================================================== 
-  -->
-  <property name="src.dir" value="src"/>
-  <property name="java.dir" value="${src.dir}/main"/>
-  <property name="script.dir" value="${src.dir}/script"/>
-  <property name="lib.dir" value="lib"/>
-  <property name="docs.dir" value="docs"/>
-  <property name="tests.dir" value="src/testcases"/>
-  <property name="tests.etc.dir" value="src/etc/testcases"/>
-  
-  <property name="ant.package" value="org/apache/tools/ant"/>
-  <property name="optional.package" value="${ant.package}/taskdefs/optional"/>
-
-  <property name="manifest" value="src/etc/manifest"/>
-
-
-  <!-- 
-       ===================================================================
-         Set the properties for the build area
-       =================================================================== 
-  -->
-  <property name="build.dir" value="build"/>
-  <property name="bootstrap.dir" value="bootstrap"/>
-  <property name="build.classes" value="${build.dir}/classes"/>
-  <property name="build.lib" value="${build.dir}/lib"/>
-  <property name="build.javadocs" value="${build.dir}/javadocs"/>
-  <property name="build.tests" value="${build.dir}/testcases"/>
-
-  <path id="classpath">
-  </path>
-
-  <path id="tests-classpath">
-    <pathelement location="${build.classes}" />
-    <pathelement location="${build.tests}" />
-    <path refid="classpath" />
-  </path>
-
- <!-- 
-       ===================================================================
-         Set up properties for the distribution area
-       =================================================================== 
-  -->
-  <property name="dist.name" value="jakarta-${name}-${version}"/>
-  <property name="dist.base" value="distribution"/>
-  <property name="defaultdist.dir" value="dist"/>
-
-  <target name="setup-distproperties">
-
-    <property name="dist.dir" value="${defaultdist.dir}"/>
-    <property name="dist.bin" value="${dist.dir}/bin"/>
-    <property name="dist.lib" value="${dist.dir}/lib"/>
-    <property name="dist.docs" value="${dist.dir}/docs"/>
-    <property name="dist.javadocs" value="${dist.dir}/docs/api"/>
-
-    <property name="src.dist.dir" value="dist-src"/>
-    <property name="src.dist.src" value="${src.dist.dir}/src"/>
-    <property name="src.dist.docs" value="${src.dist.dir}/docs"/>
-    <property name="src.dist.lib" value="${src.dist.dir}/lib"/>
-  </target>
-
-  <!-- 
-       ===================================================================
-         Check to see what optional dependencies are available              
-       =================================================================== 
-  -->
-  <target name="check_for_optional_packages">
-    <available property="jdk1.2+" classname="java.lang.ThreadLocal" />
-    <available property="jdk1.3+" classname="java.lang.StrictMath" />
-    <available property="bsf.present" 
-               classname="com.ibm.bsf.BSFManager" 
-               classpathref="classpath" />
-    <available property="netrexx.present" 
-               classname="netrexx.lang.Rexx"
-               classpathref="classpath" />
-    <available property="xslp.present" 
-               classname="com.kvisco.xsl.XSLProcessor" 
-               classpathref="classpath" />
-    <available property="trax.present" 
-               classname="javax.xml.transform.Transformer" 
-               classpathref="classpath" />
-    <available property="xalan.present" 
-               classname="org.apache.xalan.xslt.XSLTProcessorFactory" 
-               classpathref="classpath" />
-    <available property="ejb.ejbc.present" 
-               classname="weblogic.ejbc" 
-               classpathref="classpath" />
-    <available property="ejb.DDCreator.present" 
-               classname="weblogic.ejb.utils.DDCreator" 
-               classpathref="classpath" />
-    <available property="ejb.wls.present" 
-               classname="weblogic.Server" 
-               classpathref="classpath" />
-    <available property="junit.present" 
-               classname="junit.framework.TestCase" 
-               classpathref="classpath" />
-    <available property="netcomp.present" 
-               classname="com.oroinc.net.ftp.FTPClient" 
-               classpathref="classpath" />
-    <available property="starteam.present" 
-               classname="com.starbase.util.Platform" 
-               classpathref="classpath" />
-    <available property="antlr.present" 
-               classname="antlr.Tool" 
-               classpathref="classpath"/>
-    <available property="vaj.present" 
-               classname="com.ibm.ivj.util.base.Workspace"  
-               classpathref="classpath"/>
-    <available property="stylebook.present" 
-               classname="org.apache.stylebook.Engine"  
-               classpathref="classpath"/>
-    <available property="jakarta.regexp.present" 
-               classname="org.apache.regexp.RE"  
-               classpathref="classpath"/>
-    <available property="jakarta.oro.present" 
-               classname="org.apache.oro.text.regex.Perl5Matcher"  
-               classpathref="classpath" />
-    <available property="jmf.present" 
-               classname="javax.sound.sampled.Clip"  
-               classpathref="classpath"/>
-  </target>
-
-  <!-- 
-       ===================================================================
-         Prepare the build              
-       =================================================================== 
-  -->
-  <target name="prepare">
-    <tstamp />
-  </target>
-
-  <!-- 
-       ===================================================================
-         Build the code           
-       =================================================================== 
-  -->
-  <target name="build" depends="prepare, check_for_optional_packages">
-    <mkdir dir="${build.dir}"/>
-    <mkdir dir="${build.classes}"/>
-    <mkdir dir="${build.lib}"/>
-    
-    <javac srcdir="${java.dir}"
-           destdir="${build.classes}"
-           debug="${debug}"
-           deprecation="${deprecation}"
-           optimize="${optimize}" >
-      <classpath refid="classpath" />
-      <exclude name="${ant.package}/util/regexp/JakartaRegexpMatcher.java" 
-               unless="jakarta.regexp.present" />
-      <exclude name="${ant.package}/util/regexp/JakartaOroMatcher.java" 
-               unless="jakarta.oro.present" />
-      <exclude name="${optional.package}/Script.java" unless="bsf.present" />
-      <exclude name="${optional.package}/StyleBook.java" unless="stylebook.present" />
-      <exclude name="${optional.package}/NetRexxC.java" unless="netrexx.present" />
-      <exclude name="${optional.package}/XslpLiaison.java" unless="xslp.present" />
-      <exclude name="${optional.package}/XalanLiaison.java" unless="xalan.present" />
-      <exclude name="${optional.package}/TraXLiaison.java" unless="trax.present" />
-      <exclude name="${optional.package}/ejb/Ejbc*.java" unless="ejb.ejbc.present" />
-      <exclude name="${optional.package}/ejb/DDCreator*.java" unless="ejb.DDCreator.present" />
-      <exclude name="${optional.package}/ejb/WLRun.java" unless="ejb.wls.present" />
-      <exclude name="${optional.package}/ejb/WLStop.java" unless="ejb.wls.present" />
-      <exclude name="${optional.package}/ejb/EjbJar.java" unless="jdk1.2+" />
-      <exclude name="${optional.package}/ejb/*DeploymentTool.java" unless="jdk1.2+" />
-      <exclude name="${optional.package}/Javah.java" unless="jdk1.2+" />
-      <exclude name="${optional.package}/junit/*" unless="junit.present" />
-      <exclude name="${optional.package}/net/*.java" unless="netcomp.present" />
-      <exclude name="${optional.package}/scm/AntStarTeam*.java" unless="starteam.present" />
-      <exclude name="${optional.package}/ANTLR.java" unless="antlr.present" />
-      <exclude name="${optional.package}/ide/VAJ*.java" unless="vaj.present" />
-      <exclude name="${optional.package}/perforce/*.java" unless="jakarta.oro.present" />
-      <exclude name="${optional.package}/sound/*.java" unless="jmf.present" />
-      <exclude name="${optional.package}/junit/XMLResultAggregator.java"
-               unless="trax.present" />
-      <exclude name="${optional.package}/junit/AggregateTransformer.java"
-               unless="trax.present" />
-    </javac>
-    
-    <copy todir="${build.classes}">
-      <fileset dir="${java.dir}">
-        <include name="**/*.properties" />
-      </fileset>
-    </copy>
-
-    <filter token="VERSION" value="${version}" />
-    <filter token="DATE" value="${TODAY}" />
-    <filter token="TIME" value="${TSTAMP}" />
-    <copy    todir="${build.classes}" 
-             overwrite="true"
-             filtering="on">
-      <fileset dir="${java.dir}">
-        <include name="**/version.txt" />
-        <include name="**/defaultManifest.mf" />
-      </fileset>
-    </copy>
-
-    <copy todir="${build.classes}/${optional.package}/junit">
-       <fileset dir="${java.dir}/${optional.package}/junit">
-         <include name="html/**" />
-         <include name="xsl/**" />
-       </fileset>
-    </copy>
-
-  </target>
-  
-  <!-- 
-       =================================================================== 
-         Create the ant jars: ant.jar and optional.jar                                                 
-       =================================================================== 
-  -->
-  <target name="jars" depends="build">
-
-    <jar jarfile="${build.lib}/${name}.jar" 
-         basedir="${build.classes}" 
-         manifest="${manifest}">
-      <exclude name="org/apache/tools/ant/taskdefs/optional/**" />
-    </jar>
-
-    <jar jarfile="${build.lib}/optional.jar" 
-         basedir="${build.classes}" 
-         manifest="${manifest}">
-      <include name="org/apache/tools/ant/taskdefs/optional/**" />
-    </jar>
-
-  </target>
-
-  <!--
-       ===================================================================
-         Create the essential distribution that can run ant
-       ===================================================================
-  -->
-  <target name="dist-lite" depends="jars, setup-distproperties">
-
-    <mkdir dir="${dist.dir}"/>
-    <mkdir dir="${dist.bin}"/>
-    <mkdir dir="${dist.lib}"/>
-
-    <copy todir="${dist.lib}">
-      <fileset dir="${build.lib}"/>
-    </copy>
-    
-    <copy todir="${dist.bin}">
-      <fileset dir="${script.dir}/" />
-    </copy>
-
-    <chmod dir="${dist.dir}" perm="go-rwx" />
-    <chmod perm="u+x">
-       <fileset dir="${dist.bin}">
-         <include name="**/ant" />
-         <include name="**/antRun" />
-       </fileset>
-     </chmod>
-
-    <fixcrlf srcdir="${dist.bin}" cr="add" includes="*.bat" />
-    <fixcrlf srcdir="${dist.bin}" cr="remove" includes="*.sh" />
-    <fixcrlf srcdir="${dist.bin}" cr="remove" includes="ant" />
-  </target>
-
- <!--
-       ===================================================================
-         Create the complete distribution
-       ===================================================================
-  -->
-  <target name="dist" depends="dist-lite,javadocs">
-    <mkdir dir="${dist.docs}"/>
-    <mkdir dir="${dist.javadocs}"/>
-
-    <copy todir="${dist.lib}">
-      <fileset dir="${lib.dir}">
-        <include name="*.jar" />
-        <include name="*.zip" />
-        <exclude name="ant.jar"/>
-        <exclude name="optional.jar"/>
-      </fileset>
-    </copy>
-
-    <copy todir="${dist.docs}">
-      <fileset dir="${docs.dir}"/>
-    </copy>
-
-    <copy todir="${dist.javadocs}">
-      <fileset dir="${build.javadocs}"/>
-    </copy>
-
-    <copy todir="${dist.dir}">
-      <fileset dir=".">
-        <include name="README"/>
-        <include name="LICENSE"/>
-        <include name="TODO"/>
-        <include name="WHATSNEW"/>
-      </fileset>
-    </copy>
-
-    <chmod dir="${dist.dir}" perm="go-rwx" />
-
-  </target>
-
-
-  <!--
-       ===================================================================
-         Target to create bootstrap build
-       ===================================================================
-  -->
-  <target name="bootstrap">
-    <antcall target="dist-lite">
-      <param name="dist.dir" value="${bootstrap.dir}" />
-    </antcall>
-  </target>
-
-
-  <!--
-       ===================================================================
-         Create the source distribution
-       ===================================================================
-  -->
-  <target name="src-dist" depends="setup-distproperties">
-
-    <mkdir dir="${src.dist.dir}" />
- 
-    <copy todir="${src.dist.lib}">
-      <fileset dir="${lib.dir}">
-        <include name="*.jar" />
-        <include name="*.zip" />
-      </fileset>
-    </copy>
-
-    <copy todir="${src.dist.src}">
-      <fileset dir="${src.dir}"/>
-    </copy>
-
-    <copy todir="${src.dist.docs}">
-      <fileset dir="${docs.dir}"/>
-    </copy>
-
-    <copy todir="${src.dist.dir}">
-      <fileset dir=".">
-        <include name="README"/>
-        <include name="LICENSE"/>
-        <include name="TODO"/>
-        <include name="WHATSNEW"/>
-        <include name="build.bat"/>
-        <include name="build.sh"/>
-        <include name="bootstrap.bat"/>
-        <include name="bootstrap.sh"/>
-        <include name="build.xml"/>
-      </fileset>
-    </copy>
-
-    <fixcrlf srcdir="${src.dist.dir}" includes="*.sh" cr="remove"/>
-    <fixcrlf srcdir="${src.dist.dir}" includes="*.bat" cr="add"/>
-    <chmod perm="+x">
-      <fileset dir="${src.dist.dir}">
-        <include name="*.sh" />
-      </fileset>
-    </chmod>
-
-    <fixcrlf srcdir="${src.dist.src}" includes="**/*.java" cr="remove"/>
-    
-  </target>
-
-  <!--
-       ===================================================================
-         Create the binary distribution
-       ===================================================================
-  -->
-  <target name="distribution">
-    <mkdir dir="${dist.base}"/>
-
-    <antcall target="dist">
-      <param name="dist.dir" value="${dist.name}" />
-    </antcall>
-    <zip zipfile="${dist.base}/${dist.name}-bin.zip" 
-         basedir="${dist.name}/.." 
-         includes="${dist.name}/**"
-         excludes="${dist.name}/lib/optional.jar"/>
-    <tar longfile="gnu"
-         tarfile="${dist.base}/${dist.name}-bin.tar">
-      <fileset dir="${dist.name}/.." mode="755" username="ant" group="ant">
-        <include name="${dist.name}/bin/ant"/>
-        <include name="${dist.name}/bin/antRun"/>
-      </fileset> 
-      <fileset dir="${dist.name}/.." username="ant" group="ant"> 
-        <include name="${dist.name}/**"/>
-        <exclude name="${dist.name}/bin/ant"/>
-        <exclude name="${dist.name}/bin/antRun"/>
-        <exclude name="${dist.name}/lib/optional.jar"/>
-      </fileset> 
-    </tar>
-    <gzip zipfile="${dist.base}/${dist.name}-bin.tar.gz" 
-          src="${dist.base}/${dist.name}-bin.tar"/>
-    <delete file="${dist.base}/${dist.name}-bin.tar"/>
-    <copy file="${dist.name}/lib/optional.jar" tofile="${dist.base}/${dist.name}-optional.jar"/>
-    <delete dir="${dist.name}" />
-
-
-    <antcall target="src-dist">
-      <param name="src.dist.dir" value="${dist.name}" />
-    </antcall>
-    <zip zipfile="${dist.base}/${dist.name}-src.zip" 
-         basedir="${dist.name}/.." 
-         includes="${dist.name}/**"/>
-    <tar longfile="gnu"
-         tarfile="${dist.base}/${dist.name}-src.tar" >
-      <fileset dir="${dist.name}/.." mode="755" username="ant" group="ant">
-        <include name="${dist.name}/bootstrap.sh"/>
-        <include name="${dist.name}/build.sh"/>
-      </fileset> 
-      <fileset dir="${dist.name}/.." username="ant" group="ant"> 
-        <include name="${dist.name}/**"/>
-        <exclude name="${dist.name}/bootstrap.sh"/>
-        <exclude name="${dist.name}/build.sh"/>
-      </fileset>
-    </tar> 
-    <gzip zipfile="${dist.base}/${dist.name}-src.tar.gz" 
-          src="${dist.base}/${dist.name}-src.tar"/>
-    <delete file="${dist.base}/${dist.name}-src.tar"/>
-    <delete dir="${dist.name}" />
-  </target>
-
-  <!--
-       ===================================================================
-         Cleans up build and distribution directories
-       ===================================================================
-  -->
-  <target name="clean">
-    <delete dir="${build.dir}" />
-    <delete dir="${dist.base}" />
-    <delete dir="${defaultdist.dir}" />
-    <delete> 
-      <fileset dir="." includes="**/*~" defaultexcludes="no"/>
-    </delete>
-  </target> 
-
-  <!--
-       ===================================================================
-         Cleans everything
-       ===================================================================
-  -->
-  <target name="allclean" depends="clean">
-    <delete file="${bootstrap.dir}/bin/antRun" />
-    <delete file="${bootstrap.dir}/bin/antRun.bat" />
-  </target> 
-
-  <!--
-       ===================================================================
-         Installs ant
-       ===================================================================
-  -->
-  <target name="install" if="ant.install">
-    <antcall target="dist">
-      <param name="dist.dir" value="${ant.install}" />
-    </antcall>
-  </target>
-
-  <target name="install-lite" if="ant.install">
-    <antcall target="dist-lite">
-      <param name="dist.dir" value="${ant.install}" />
-    </antcall>
-  </target>
-
-  <!-- 
-       ===================================================================
-         Creates the API documentation                             
-       =================================================================== 
-  -->
-  
-  <target name="javadoc_check">
-    <uptodate property="javadoc.notrequired" targetfile="${build.javadocs}/packages.html" >
-        <srcfiles dir= "${java.dir}" includes="**/*.java"/>
-    </uptodate>
-  </target>
-
-  <target name="javadocs" depends="prepare, javadoc_check" 
-          unless="javadoc.notrequired"
-          description="Creates the API documentation">
-    <mkdir dir="${build.javadocs}"/>
-    <javadoc packagenames="org.apache.*"
-             sourcepath="${java.dir}"
-             destdir="${build.javadocs}"
-             author="true"
-             version="true"
-             windowtitle="${Name} API"
-             doctitle="${Name}"
-             bottom="Copyright &#169; 2000 Apache Software Foundation. All Rights Reserved.">
-      <group title="Ant Core" packages="org.apache.tools.ant*" />
-      <group title="Core Tasks" packages="org.apache.tools.ant.taskdefs*" />
-      <group title="Optional Tasks" packages="org.apache.tools.ant.taskdefs.optional*" />
-    </javadoc>
-  </target>
-  
-  <!-- 
-       =================================================================== 
-         Compile testcases                                                   
-       =================================================================== 
-  -->
-  <target name="compile-tests" depends="build" if="junit.present">
-    <mkdir dir="${build.tests}"/>
-
-    <javac srcdir="${tests.dir}"
-           destdir="${build.tests}"
-           debug="${debug}"
-           deprecation="${deprecation}" >
-      <classpath refid="tests-classpath" />
-
-      <exclude name="org/apache/tools/ant/taskdefs/optional/ANTLRTest.java" 
-               unless="antlr.present" />
-      <exclude name="org/apache/tools/ant/util/regexp/JakartaRegexpMatcherTest.java" 
-               unless="jakarta.regexp.present" />
-      <exclude name="org/apache/tools/ant/util/regexp/JakartaOroMatcherTest.java" 
-               unless="jakarta.oro.present" />
-    </javac>
-  </target>
-
-  <!-- 
-       =================================================================== 
-         Run testcase                                                        
-       =================================================================== 
-  -->
-  <target name="run-tests" depends="compile-tests" if="junit.present">
-
-    <junit printsummary="no" haltonfailure="yes" fork="${junit.fork}">
-      <jvmarg value="-classic"/>
-      <classpath refid="tests-classpath"/>
-
-      <sysproperty key="build.tests" value="${build.tests}"/>
-
-      <formatter type="plain" usefile="false" />
-
-      <batchtest>
-        <fileset dir="${tests.dir}">
-          <include name="**/*Test*" />
-          <!-- abstract class, not a testcase -->
-          <exclude name="org/apache/tools/ant/taskdefs/TaskdefsTest.java" />
-          <exclude name="org/apache/tools/ant/util/regexp/RegexpMatcherTest.java" />
-
-          <!-- currently fails - will be sorted out soon -->
-          <exclude name="org/apache/tools/ant/types/CommandlineJavaTest.java" />
-
-          <!-- these depend on order -->
-          <exclude name="org/apache/tools/ant/taskdefs/GUnzipTest.java" />
-          <exclude name="org/apache/tools/ant/taskdefs/GzipTest.java" />
-
-          <!-- only run this test if ANTLR is installed -->
-          <exclude name="org/apache/tools/ant/taskdefs/optional/ANTLRTest.java" 
-                   unless="antlr.present" />
-          <exclude name="org/apache/tools/ant/util/regexp/JakartaRegexpMatcherTest.java" 
-                   unless="jakarta.regexp.present" />
-          <exclude name="org/apache/tools/ant/util/regexp/JakartaOroMatcherTest.java" 
-                   unless="jakarta.oro.present" />
-        </fileset>
-      </batchtest>
-
-      <test name="org.apache.tools.ant.taskdefs.GzipTest" />
-      <test name="org.apache.tools.ant.taskdefs.GUnzipTest" />
-    </junit>
-
-    <!-- clean up again -->
-    <delete dir="${tests.etc.dir}/taskdefs/optional/antlr/antlr.tmp" />
-    <delete dir="${tests.etc.dir}/taskdefs/taskdefs.tmp" />
-    <delete dir="${tests.etc.dir}/taskdefs.tmp" />
-    <delete file="${tests.etc.dir}/taskdefs/tmp.jar" />
-  </target>
-
-  <target name="run-single-test" if="testcase" depends="compile-tests">
-
-    <junit printsummary="no" haltonfailure="yes" fork="${junit.fork}">
-      <jvmarg value="-classic"/>
-      <sysproperty key="build.tests" value="${build.tests}"/>
-      <classpath refid="tests-classpath"/>
-      <formatter type="plain" usefile="false" />
-      <test name="${testcase}" />
-    </junit>
-  </target>
-
-  <!-- 
-       =================================================================== 
-         Main target - runs dist-lite by default                                               
-       =================================================================== 
-  -->
-  <target name="main" depends="dist-lite"/>
-
-</project>
\ No newline at end of file
diff --git a/docs/ant2/FunctionalRequirements.html b/docs/ant2/FunctionalRequirements.html
deleted file mode 100644
index 46ba380..0000000
--- a/docs/ant2/FunctionalRequirements.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-  <title>Ant Functional Requirements Document</title>
-</head>
-<body>
-<h2>Ant Functional Requirements</h2>
-<h3>Roles</h3>
-<p><b>User: </b>runs Ant with a complete build specification and/or
-writes Ant build specifications.</p>
-<p><b>Task Developer: </b>writes/modifies Ant tasks.</p>
-<p><b>Extensions Developer: </b>develops extensions like a GUI, IDE plugin,
- (scripting extension?)</p>
-<p><b>Core Developer: </b>works on the Ant core</p>
-<h3>Requirements from the Ant User perspective</h3>
-<p>It should be easy to write a build file for small Java programs. It should
- be possible to write a build file set for large Java systems. Maintenance
- of such a set should be easy (e.g. no duplication of information).</p>
-<p>Every build process contains dependencies (e.g. item A needs B to be available
- before its own build can start). It should be possible to specify these
- dependencies in a declarative way.</p>
-<p>Suppose a working build specification for system A is available. It should
- be possible for system B to declare dependencies to <i>(modules of?)</i> system
- A without touching the build specification of A. Ant should be able to handle
- dependencies between modules which form a DAG.</p>
-<p>It should be possible to modify details of the actual build (e.g. classpath,
- used compiler) without the need to change the build specification. This
- feature is needed when starting Ant (e.g. configuration with command line
- parameters) and for a subproject build driven by the build of a dependent
- project.</p>
-<p>Often similar items have to be built. Therefore it should be possible
- to provide general <i>(template?)</i> build specifications, and to declare for
- a concrete item that it should be built according to such a general specification.</p>
-<p>One result of the build process should be a log which shows what has been done.</p>
-<h3>Requirements from the task developer perspective</h3>
-<p>A task should not need to know the structure of a build specification.
- It would have to provide an interface (not necessarily in the Java language
- sense) for the Ant core to input the necessary configuration attributes
- and to execute the task). There should be a standard functionality to allow
- a task doing log output.</p>
-<p>An interface (again not necessarily in the Java language sense) should
- be provided which allows a task to get <i>(and set?)</i> information about it's
- context in the build process.</p>
-<h3>Requirements from the extensions developer perspective</h3>
-<p>The Ant core should be independent from a specific representation of the
- build specification. It should be possible to create a specification programmatically
- (thereby allowing the introduction of new representations). The core should
- do no in- or output itself. Build errors should always lead to throwing
- an Exception.</p>
-<p>Access to the current state of a build should be available, and its modification
- possible.</p>
-</body>
-</html>
-
diff --git a/docs/ant2/original-specification.html b/docs/ant2/original-specification.html
deleted file mode 100644
index 882659e..0000000
--- a/docs/ant2/original-specification.html
+++ /dev/null
@@ -1,278 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "strict.dtd">
-<HTML> 
-  <HEAD> 
-	 <TITLE>Ant Specification, version 0.5</TITLE> 
-  </HEAD> 
-  <BODY> 
-	 <H1>Ant Specification</H1> 
-	 <P>Version 0.5 (2000/04/20)</P> 
-	 <P>This document specifies the behavior of Ant. At this time, this is a
-		working document with no implementation. It is hoped that this specification
-		will lead to a simplier and more consistent implementation of Ant.</P> 
-	 <P>This document is not intended to be used as an end user manual or user
-		guide to Ant. To adequatly explain the concepts herein in a way appropriate to
-		such a use would potentially complicate this document.</P> 
-	 <H2>Design Goals</H2> 
-	 <P>The following are the overall design goals of Ant:</P> 
-	 <UL> 
-		<LI>Simplicity</LI> 
-		<LI>Understandability</LI> 
-		<LI>Extensibility</LI> 
-	 </UL> 
-	 <H3>Simplicity</H3> 
-	 <P>Ant must be simple to use. Of course, as the definition of simple varies
-		according to the audience of the program. For Ant, since it is a build tool
-		aimed at programmers, the goal is to be simple to use for a competent
-		programmer.</P> 
-	 <H3>Understandability</H3> 
-	 <P>Ant must be clearly understandible for a first time as well as a veteran
-		user. This means that a new user should be able to use Ant comfortably the
-		first time and understand how to modify a build file by looking at it. And it
-		should not require much experience with Ant to understand how it works and how
-		to configure it for particular situtations.</P> 
-	 <H3>Extensibility</H3> 
-	 <P>Ant must be easy to extend. The API used to extend Ant must be easy to
-		use and the way in which these extensions are located and used by the core
-		runtime should be clear.</P> 
-	 <H2>Conceptual Overview</H2> 
-	 <P>This is a conceptual overview of the components used by Ant. Full APIs
-		will be defined later.</P> 
-	 <H3>Project</H3> 
-	 <P>The base unit of work in Ant is the <STRONG>Project</STRONG>. A Project
-		is defined by an editable text file and is represented by an object of type
-		<CODE>org.apache.ant.Project</CODE> at runtime.</P> 
-	 <P>A Project is a collection of <STRONG>Properties</STRONG> and
-		<STRONG>Targets</STRONG>.</P> 
-	 <H3>Properties</H3> 
-	 <P>Properties are mutable name-value pairs that are scoped to the Project
-		and held in a table. Only one pair is allowed per name. It is anticipated that
-		this data structure would be of type <CODE>java.util.Properties</CODE> or a type that has approximatly
-		the same contract.</P> 
-	 <P>Properties can be defined in a hierarchical manner. The order of
-		precidence in this hiearchy is:</P> 
-	 <UL> 
-		<LI>Properties defined on the command line or via a GUI tool</LI> 
-		<LI>Properties defined in the text file which defines the project.</LI> 
-		<LI>Properties defined in a file in the users <CODE>user.home</CODE> directory</LI> 
-		<LI>Properties defined in the installation directory that can be shared
-		  by multiple users.</LI> 
-	 </UL> 
-	 <P>Note: The current version of Ant allows the System property list to be
-		consulted for a return value if the property list doesn't satisfy the requested
-		property name. As all Java code has access to the system property list via the
-		<CODE>java.lang.System</CODE> class, this functionality is considered to be confusing and to be
-		removed.</P> 
-	 <P>Note: The current version of Ant allows property substitution to be
-		performed in the project file. This functionality is being removed.</P> 
-	 <H3>Targets</H3> 
-	 <P>Targets are ordered collections of <STRONG>Tasks</STRONG>, units of work
-		to be performed if a Target is executed. </P> 
-	 <P>Targets can define dependancies on other Targets within the Project. If
-		a Target is deemed to be executed, either directly on the command line, or via
-		a dependancy from some other Target, then all of its dependencies must first be
-		executed. Circular depenancies are resolved by examination of the dependancy
-		stack when a Target is evaluated. If a dependancy is already on the stack of
-		targets to be executed, then the dependancy is considered to have been
-		satisfied.</P> 
-	 <P>After all dependancies of a Target have been satisfied, all of the Tasks
-		contained by the target are configured and executed in sequential order. </P> 
-	 <H3>Tasks</H3> 
-	 <P>A Task is a unit of work. When a Task is to be executed, an instance of
-		the class that defines the behavior of the particular task specified is
-		instantiated and then configured. This class implements the <CODE>org.apache.ant.Task</CODE> interface.
-		It is then executed so that it may be able to perform its function. It is
-		important to note that this configuration occurs just before execution of the
-		task, and after execution of any previous tasks, so that configuration
-		information that was modified by any other Task can be properly set.</P> 
-	 <P>When a Task is executed, it is provided access to the object
-		representing the Project it is running in allowing it to examine the Property
-		list of the project and access to various methods needed to operate.</P> 
-	 <H2>Task Jar Layout</H2> 
-	 <P>Tasks are defined within Java Archive files. The name of the JAR
-		determines the name under which the task is known by in the system. For
-		example, if a Task JAR is named mvdir.jar, the task is known to the system as
-		<CODE>&quot;mvdir&quot;</CODE>.</P> 
-	 <P><EM>Question: Should we say that tasks belong in a JAR file with the
-		.tsk extension?</EM></P> 
-	 <P>The class within the Jar file that implements the <CODE>org.apache.ant.Task</CODE> interface is
-		specified by a manifest attribute named <CODE>Ant-Task-Class</CODE> in the Jar manifest. An example
-		manifest would look like:</P> 
-	 <PRE>    Manifest-Version: 1.0
-    Ant-Task-Class: org.apache.ant.task.javac.JavacTask</PRE> 
-	 <P>When the task is used by Ant, a class loader is created that reads
-		classes from the JAR file. This ensures that there is no chance of namespace
-		collision in the classes of various task JAR files.</P> 
-	 <H2>Installation</H2> 
-	 <P>When Ant is installed on a user system, it installs a directory
-		structure with the following form:</P> 
-	 <PRE>&lt;installdir&gt;/ant      (unix shell script)
-            /ant.bat
-            /ant.jar
-            /ant.properties
-            /tasks/[task jar files]
-            /docs/[documentation]
-            /README</PRE> 
-	 <P>Note: Current Jakarta practice is to name the Unix shell script with a
-		.sh extension. This goes against Unix conventions and is unecessary. Testing
-		has shown that the leaving the extension off on Unix will not interfere with
-		the working of the Windows batch file.</P>
-	 <P>Note: The ant.jar file has been moved from the lib/ directory and placed
-		alongside the shell startup scripts (which have also been moved out of the bin/
-		directory). This is because on windows platforms, the .jar file is an
-		executable file of sorts.</P> 
-	 <H3>Ant Properties</H3> 
-	 <P>The <CODE>ant.properties</CODE> file contains a list of all the properties that should be
-		set by default when ant is run. In addition there are a few special properties
-		that are used directly by ant. An example of these properties in use is:</P> 
-	 <PRE>    system.taskdir=tasks/
-    user.taskdir=anttasks/</PRE> 
-	 <P>The <CODE>system.taskdir</CODE> property sets where the system looks for Java ARchive files
-		containing tasks. If this property defines a relative path, then the path is
-		taken as relative from the installation directory.</P> 
-	 <P>The <CODE>user.taskdir</CODE> property defines where users can locate Java Archive files
-		containing tasks. If this property defines a realtive path, then the path is
-		taken as relative from the users home directory (as defined by the <CODE>user.home</CODE>
-		system property). Task JAR files in this directory take precendence of those in
-		the system directory.</P>
-	 <P>Note: <EM>It has been suggested to add a properties file hook to the
-		command line to roll in props. Pending investigation.</EM></P> 
-	 <H3>User Preferences</H3> 
-	 <P>In addition to the Ant installation directory, an <CODE>ant.properties</CODE> file can be
-		located in the user's home directory (as found by the system property <CODE>user.home</CODE>)
-		which can define user preferences such as the location of a user tasks
-		directory. Properties defined in this file take precidence over those set in
-		the installation's <CODE>ant.properties</CODE> file. Such a file could look like:</P> 
-	 <PRE>    user.taskdir=anttasks/
-    javac.debug=off</PRE> 
-	 <P>Properties starting with <CODE>&quot;system.&quot;</CODE> in the user's <CODE>ant.properties</CODE> file are not
-		allowed and must cause a warning to be thrown.</P> 
-	 <H2>Project Configuration</H2> 
-	 <P>Ant's Project text file is structured using XML and reflects the
-		structure of the various components described in the Conceptual Overview.</P> 
-	 <P>A sample Project file:</P> 
-	 <PRE>&lt;project name=&quot;projectname&quot; defaulttarget=&quot;main&quot; taskdir=&quot;tasks/&quot;&gt;
-  &lt;property name=&quot;javac.debug&quot; value=&quot;on&quot;/&gt;
-  &lt;target name=&quot;main&quot;&gt;
-    &lt;taskimpl ...&gt;
-       ...
-    &lt;/taskimpl&gt;
-  &lt;/target&gt;
-&lt;/project&gt;</PRE> 
-	 <H3>The Project Element</H3> 
-	 <P>The <CODE>project</CODE> element has the following required attributes:</P> 
-	 <UL> 
-		<LI><CODE><STRONG>defaulttarget</STRONG></CODE> defining the default target to be executed if no other target
-		  is specified when Ant is run</LI> 
-	 </UL> 
-	 <P>It also has the following optional allowed attributes:</P> 
-	 <UL> 
-		<LI><CODE><CODE><STRONG>name</STRONG></CODE></CODE> defining a name for this project</LI> 
-		<LI><CODE><STRONG>taskdir</STRONG></CODE> defining a directory in which project specific tasks can be
-		  located. Tasks in this directory take precedence over those in the either the
-		  user taskdir or the installation taskdir.</LI> 
-	 </UL> 
-	 <P>The following elements are allowed as children of the project
-		element:</P> 
-	 <UL> 
-		<LI><CODE><STRONG>property</STRONG></CODE> defining a property scoped to the project</LI> 
-		<LI><CODE><STRONG>target</STRONG></CODE> defining a target</LI>
-	 </UL>
-	 <H3>The Property Element</H3>
-	 <P>asdf</P>
-	 <H3>The Target Element</H3>
-	 <P>asfd</P> 
-	 <H2>Configuration of Tasks</H2> 
-	 <P>The Task section of the configuration file is structured as such:</P> 
-	 <PRE>  &lt;[taskname] [attname=value] [attname=value]...]&gt;
-    [&lt;[elementname] [attname=value] ...&gt; ... &lt;/[elementname]&gt;]
-  &lt;/[taskname]&gt;</PRE> 
-	 <P>The taskname is used to find the class of the Task. Once the class has
-		been located and an instance of it created, all of the attributes of the Task
-		are reflected into the task instance using bean patterns. For example, if a
-		Task contains an attribute named &quot;directory&quot;, the method named
-		setDirectory would be called with the attribute value cast to the appropriate
-		type desired by the method. <EM>(What to do if the type isn't a file or a
-		simple type, look for the class and see if it has a setString method?)</EM></P>
-	 
-	 <P>Text blocks contained by the element are added to task using an addText
-		method. <EM>Place an example...</EM></P> 
-	 <P>For each element contained in the Task definition, an addElementname
-		method is found on the task. The parameter type of the method defines an object
-		that will be loaded and instantiated. The attributes of the element are
-		reflected into the object using bean methods. Any text is set using the addText
-		method. Any elements are recursed in the same fashion.</P>
-	 <P>Search order of tasks.... project/user/system</P> 
-	 <H2>Command Line</H2> 
-	 <P>The command line utility provided with Ant must support the following
-		allowable syntax:</P> 
-	 <P><CODE>ant projectfile [prop=value [prop=value...]] [target]</CODE></P>
-	 <P>Internally, the command line shell scripts should call the <CODE>org.apache.ant.Main</CODE> class
-		with the following arguments:</P>
-	 <PRE>java -Dant.home=installdir org.apache.ant.Main $*</PRE>
-	 <P>or its equivalent on the host platform. Note that the ant installation
-		directory is a System property. The above syntax results in ant.home being
-		placed in the System property list.</P>
-	 <P>Note: <EM>On unix, finding the directory of the script that was launched
-		is relatively easy. However on Windows, I'm not sure the best way of handling
-		this.</EM></P> 
-	 <H2>File Naming Conventions</H2> 
-	 <P>File naming in a cross platform tool is tricky. For maximum portability
-		and understandiblity it is recommended that project files use the following
-		conventions:</P> 
-	 <UL> 
-		<LI>The '/' character is used as a directory seperator</LI> 
-		<LI>The ':' character is used as a path seperator</LI> 
-		<LI>Only relative paths are used</LI> 
-	 </UL> 
-	 <P>However, to allow for maximum flexibility and to allow project authors
-		to use conventions that make sense on their native platform, Ant allows for a
-		representation of file names which has the following rules:</P> 
-	 <UL> 
-		<LI>Directories are seperated by the forward slash ('/') or backwards
-		  slash ('\') character.</LI> 
-		<LI>File names starting with either of the above directory seperators are
-		  considered to be absolute paths.</LI> 
-		<LI>On systems that support multiple file roots (e.g. Windows), a file
-		  name that starts with a single alphabetical character followed by a colon (':')
-		  followed by a directory seperator defines an absolute path where the letter
-		  corresponds with a directory root.</LI> 
-		<LI>File names starting with any other character are considered to be
-		  relative paths. In project files, all relative paths are resolved relative to
-		  the directory in which the project file is located.</LI> 
-	 </UL> 
-	 <P>Absolute paths are not recommended for build files as they reduce the
-		ability to share a project between u sers or machines.</P> 
-	 <P>In situtations where a set of filenames need to be specified, such as
-		defining a classpath, both the colon (':') andsemicolon (';') are allowable
-		characters to seperate each filename. The only case that has to be
-		disambiguated is if a user specifies paths that contain windows style absolute
-		paths. In this case, the colon is not treated as a path seperator if the
-		following rules are met:</P> 
-	 <UL> 
-		<LI>The character two places before the colon is either of the allowable
-		  path seperators (':' or ';') or if the colon is the second character of the
-		  string.</LI> 
-		<LI>The character immediately before the colon is a alphabetic character
-		  in the range a-z or A-Z.</LI> 
-		<LI>The character immediately after the colon is either of the allowable
-		  directory seperators ('/' or '\').</LI> 
-	 </UL> 
-	 <H2>Scripting Model</H2> 
-	 <P>Sam, I'm leaving this to you. </P>
-	 <H2>Runtime Requirements</H2>
-	 <P>The following requirements are system requirements that Ant should have
-		in order to run correctly. We should not bundle in any of these into the
-		distribution of ant.</P>
-	 <UL>
-		<LI>JDK 1.1 or greater</LI>
-		<LI>A JAXP compliant parser on the classpath</LI>
-	 </UL>
-	 <P>Note: <EM>When running on JDK 1.2 or greater, the tools.jar isn't on the
-		classpath by default. There's a few different ways we can take care of this.
-		One is to put it on the classpath in the execute script (I don't like this
-		one). Another is to find the location of tools.jar at runtime and put it on the
-		classpath of class loaders that load in task.jars so that, at least in the
-		scope of the Tasks, the relevant classes are there. </EM></P>
-	 <P></P> 
-	 <P></P> </BODY>
-</HTML>
diff --git a/docs/ant2/requested-features.txt b/docs/ant2/requested-features.txt
deleted file mode 100644
index 39e68a2..0000000
--- a/docs/ant2/requested-features.txt
+++ /dev/null
@@ -1,122 +0,0 @@
-Brainstormed and unordered list of requested features of Ant2:
-
-* namespace support so different concerns can occupy different namespaces
-  from ant (thus SAX2/JAXP1.1)
-
-* Java2
-
-* The ability for GUI/IDE tools to integrate easily with object model
-  without reinventing the wheel and writing their own parser (which
-  antidote was forced to do). Two suggested solutions were allowing GUI
-  developers to extend object model (ie GUITask extends Task) or to have
-  Task as interface (ie GUITask implements Task). This way the GUI tasks
-  could be W3C DOM Elements, have property vetoers/listeners etc.
-
-* Fully interpreted at runtime. This almost requires some form of
-  abstraction/proxy that stands in place of tasks till it is
-  interpreted.  This can be hashtables/simple dom-like model/whatever
-
-* provide utility classes to aid in building tasks. ie like up-to-date
-  functionality abstracted
-
-* make ant-call a low cost operations so it can certain
-  optional/template-like operations
-
-* allow facilities to build projects from multiple sources. ie CSS+xml
-  or XSLT+ XML or database or from inside jars or normal build.xmls
-  etc.
-
-* remove magic properties if at all humanly possible
-
-* make all tasks consistent and remove all deprecated methods
-
-* move to a system that allows docs to be generated - doc snippets
-  should be included with the tasks they document.
-
-* allow documentation to be stored in .tsk jars
-
-* allow tasks to be loaded from jars. tasks should be indicated by
-  either xml file in TSK-INF/taskdefs.xml or manifest file.
-
-* remove as much dependency on native scripts as possible.
-
-* clean object model (ie Project/Target/Task)
-
-* good event model to integrate well with IDE/GUI/whatever
-
-* better scripting/notification support so the hooks are available to
-  send notifications at certain times.
-
-* allow all datatypes to be defined anywhere
-
-* make usage of particular filters/filtersets explicit in copy tasks
-
-* make facade tasks for things like javac (JikesImpl, ModernImpl etc)
-
-* seperate tasks into .tsk jars somehow. (Probably via function - ie
-  java tasks, file tasks, ejb tasks).
-
-* unify multiple similar tasks to use similar forms (ie all the javacc
-  type tools)
-
-* support for numerous frontends - from command line over GUI to servlets
-
-* make properties fully dynamic, i.e. allow their value to be reassigned
-
-Now there is a bunch of "controvertial" points. By controvertial I mean not
-everyone agrees or else there has not been enough comments to to judge
-reception
-
-* unify the namespace of all data types (ie properties + filesets +
-  patternset + filtersets).
-
-* provide datatypes through property tag and remove need for seperate free
-  standing entities. ie
-  <property name="foo">
-    <fileset dir="blah">
-     <include name="*/**.java" />
-    </fileset>
-  </property>
-
-
-* make it possible to reuse taskengine for other things. ie
-  Installshield type app, my cron-server and other task based
-  operations. Currently no committer other than me has expressed
-  positive or negative thoughts about this
-
-* make separate build files easy (ala AntFarm) and importing different
-  projects a breeze
-
-* create the concept of workspace so that projects can be built in a
-  DAG and thus enable projects like catalina/tomcat to have an easy
-  build process. It also helps CJAN to a lesser degree and would
-  partially solve the JARs in CVS thing.
-
-* provide support for CJAN
-
-* provide support for non-hardwired (ie loadable) converters.
-
-* provide support for non-hardwired (ie loadable) datatypes.
-
-* generate docs by anakia/XSLT
-
-* provide support for user defined task configurations - i.e. give
-  users the ability to specify a default value for attributes (always
-  use debug="true" in <javac> unless something else has been
-  specified). Could be a CSS like language, could be a <taskconfig>
-  element ...
-
-* support more control over the properties that are going to be passed
-  to subprojects (modules)
-
-* keep build file syntax as compatible to Ant1 as possible -
-  i.e. don't break something just because we can.
-
-* keep the interface for Tasks as similar to the one of Ant1 as
-  possible - i.e. don't break something just because we can.
-
-* tasks provide some way to identify their attributes from the
-  outside. Possible solutions include a special method like
-  getProperties(), an external describing file shipping with the task
-  class or special javadoc comments parsed by a custom doclet.
-
diff --git a/docs/ant_in_anger.html b/docs/ant_in_anger.html
deleted file mode 100644
index bd43631..0000000
--- a/docs/ant_in_anger.html
+++ /dev/null
@@ -1,816 +0,0 @@
-<head>
-<title>
-	Ant in Anger
-</title>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000">
-<h1 align="center">Ant in Anger:
-</h1>
-<h2 align="center">
-	Using Ant in a Production Development System
-</h2>
-
-<h4  align="center">
-Steve Loughran (<a href="mailto:steve_l@iseran.com">steve_l@iseran.com</a>)
-</h4>
-
-<a name="introduction">
-
-<h2>Introduction</h2>
-</a>
-
-<a href="http://jakarta.apache.org/ant/">Ant</a>
- can be an invaluable tool in a team development process -or it can
-be yet another source of problems in that ongoing crises we call
-development . This
-document contains some strategies and tactics for making the most of
-ant. It is moderately frivolous in places, and lacks almost any actual
-examples of ant xml. The lack of examples is entirely deliberate -it
-keeps document maintenance costs down. Most of the concepts covered
-don't need the detail about XML representations, as it is processes we
-are concerned about, not syntax. Finally, please be aware that the
-comments here are only suggestions which need to be customised to meet
-your own needs, not strict rules about what should and should not be
-done.
-
-<p>
-Firstly, here are some assumptions about the projects which this
-document covers
-<ul>
-<li> Pretty much pure Java.
-
-<li> Team efforts, usually with the petulant prima-donnas all us Java
-programmers become once we realise how much in demand we are.
-
-<li> A fairly distributed development team -spread across locations and
-maybe time zones.
-
-<li> Separate sub projects -from separate beans in a big
-enterprise application to separate enterprise applications which need to
-be vaguely aware of each other.
-
-<li> Significant mismatch between expectations and time available to
-deliver. 'Last Week' is the ideal delivery date handed down from above,
-next century the date coming up from below.
-
-<li> Everyone is struggling to keep up with platform and tool evolution.
-
-<li> Extensive use of external libraries, both open and closed source.
-
-</ul>
-
-What that all means is that there is no time to spend getting things
-right, you don't have that tight control on how the rest of the team
-works and the development process is often more one of chaos minimisation
-than anything else. The role of ant in such projects is to ensure that
-the build, test and deploy processes run smoothly, leaving you with all
-the other problems.
-
-<a name="core">
-<h2>Core Practices</h2>
-</a>
-<h3>
-Clarify what you want ant to do</h3>
-
-
-Ant is not a silver bullet. It is just another rusty bullet in the armory of
-development tools available at your disposal. Its primary purpose is to
-accelerate the construction and deployment of Java projects. You could certainly
-extend ant to do anything Java makes possible -it is easy to imagine writing an
-image processing task to help in web site deployment by shrinking and
-recompressing jpeg files, for example. But that would be pushing the boundary of
-what ant is really intended to do -so should be considered with care.
-
-<P>
-
-Ant is also a great adjunct to an IDE -a way of doing all the housekeeping of
-deployment and for clean, automated builds. But a good modern IDE is a
-productivity tool in its own right -one you should consider keeping using. Ant
-just lets you give the teams somewhat more freedom in IDE choice -&quot;you can
-use whatever you want in development, but ant for the deployment
-builds&quot;
-
-<h3>
-Define standard targets
-</h3>
-
-
-When you have multiple sub projects, define a standard set of targets.
-Projects with a split between interface and implementation jar files
-could consider <b>impl</b> and <b>intf</b> targets -with separate
-<b>debug-impl</b>and <b>debug-intf</b> targets for the debug version.
-And of course, the ubiquitous <b>clean</b> target.
-
-<P>
-
-With standard target names, it is easy to build encompassing ant build
-files which just hand off the work to the classes below using the
-<a href="index.html#ant">ant</a>
-task. For example. the clean target could be handed down to the intf and
-impl subdirectories from a parent directory
-
-<pre>&lt;target name=&quot;clean&quot;  depends=&quot;clean-intf, clean-impl&quot;&gt;
-&lt;/target&gt;
-
-&lt;target name=&quot;clean-intf&quot; &gt;
-	&lt;ant dir=&quot;intf&quot; target=&quot;clean&quot; /&gt;
-&lt;/target&gt;
-
-&lt;target name=&quot;clean-impl&quot;&gt;
-	&lt;ant dir=&quot;impl&quot; target=&quot;clean&quot; /&gt;
-&lt;/target&gt;  </pre>
-
-<h3>
-	Extend ant through new tasks
-</h3>
-
-If ant does not do what you want, you can use the
-<a href="index.html#exec">exec</a> and
-<a href="index.html#java">java</a> tasks or
-<a href="index.html#script">inline scripting</a> to extend it. In a
-project with many build.xml files, you soon find that having a single
-central place for implementing the functionality keeps maintenance
-overhead down. Implementing task extensions through java code seems
-extra effort at first, but gives extra benefits:-
-
- <ul>
-
-<li>Cross platform support can be added later without changing any
-build.xml files</li>
-
-<li>The code can be submitted to the ant project itself, for other
-people to use and maintain</li>
-
-<li>It keeps the build files simpler</li>
-
-</ul>
-
-<h3>
-Embrace Automated Testing
-</h3>
-
-<b>(alternatively "recriminate early, recriminate often")</b>
-<p>
-
-Ant lets you call <a href="junit.html">JUnit</a> tasks, which unit test
-the code your team has written. Automated testing may seem like extra
-work at first, but JUnit makes writing unit tests so easy that you have
-almost no reason not to. Invest the time in learning how to use
-JUnit, write the test cases, and integrate them in a 'test' target from
-ant so that your daily or hourly team build can have the tests applied
-automatically.
-
-<p>
-
-Once code fetches from the code control system are added as another ant
-target, the integration test code can be a pure ant task run on any box
-dedicated to the task. This is ideal for verifying that the build and
-unit tests work on different targets from the usual development
-machines. For example, a Win95/Java1.1 combination could be used even
-though no developer would willingly use that configuration given the
-choice.
-
-<p>
-
-System tests are harder to automate than unit tests, but if you can
-write java code to stress large portions of the system -even if the code
-can not run as JUnit tasks- then the <a href= "index.html#java">java</a>
-task can be used to invoke them. It is best to specify that you want a
-new JVM for these tests, so that a significant crash does not break the
-full build.
-
-
-<a name="crossplatform">
-<h2>
-Cross Platform Ant
-</h2>
-</a>
-
-Ant is the best foundation for cross platform Java development and
-testing to date. But if you are not paying attention, it is possible to
-produce build files which only work on one platform -or indeed, one
-single workstation.
-
-<p>
-
-The common barriers to cross-platform ant are the use of command line
-tools (exec tasks) which are not portable, path issues, and hard coding
-in the location of things.
-
-<h3>Command Line apps: <a href="index.html#exec">Exec</a>/ <a href=
-"index.html#execon">ExecOn</a></h3>
-
-The trouble with external invocation is that not all functions are found
-cross platform, and those that are often have different names -DOS
-descendants often expect .exe or .bat at the end of files. That can be
-bad if you explicitly include the extension in the naming of the command
-(don't!), good when it lets you keep the unix and DOS versions of an
-executable in the same bin directory of the project without name
-clashes arising.
-
-<p>
-
-Both the command line invocation tasks let you specify which platform
-you want the code to run on, so you could write different tasks for each
-platform you are targeting. Alternatively, the platform differences
-could be handled inside some external code which ant calls. This can be
-some compiled down java in a new task, or an external script file.
-
-<h3>Cross platform paths</h3>
-
-Unix paths use forward slashes between directories and a colon to
-split entries. Thus
-<i>"/bin/java/lib/xerces.jar:/bin/java/lib/ant.jar"</i> is
-a path in unix. In Windows the path must use semicolon separators,
-colons being used to specify disk drives, and backslash separators
-<i>"c:\bin\java\lib\xerces.jar;c:\bin\java\lib\ant.jar"</i>.
-
-This difference between platforms (indeed, the whole java classpath
-paradigm) can cause hours of fun.
-
-<p>
-
-Ant reduces path problems; but does not eliminate them entirely. You
-need to put in some effort too. The rules for handling path names are
-that 'DOS-like pathnames are handled', 'Unix like paths are handled'.
-Disk drives -'C:'- are handled on DOS-based boxes, but placing them in
-the build.xml file ruins all chances of portability. Relative file paths
-are much more portable. Semicolons work as path separators -a fact which
-is useful if your ant invocation wrapper includes a list of jars as a
-defined property in the command line. In the build files you may find it
-better to build a classpath by listing individual files (using location=
-attributes), or by including a fileset of *.jar in the classpath
-definition.
-
-
-<p>
-Note that DOS descended file systems are case insensitive (apart from
-the obscure aberration of the WinNT posix subsystem run against NTFS),
-and that Windows pretends that all file extensions with four or more
-letters are also three letter extensions (try DELETE *.jav in your java
-directories to see a disastrous example of this).
-
-<p>
-
-Ant's policy on case sensitivity is whatever the underlying file system
-implements *VERIFY*, and its handling of file extensions is that *.jav does not
-find any .java files. The Java compiler is of course case sensitive -you can
-not have a class 'ExampleThree' implemented in "examplethree.java".
-
-<p>
-
-Some tasks only work on one platform -<a href= "index.html#chmod">
-Chmod</a> being a classic example. These tasks usually result in just a
-warning message on an unsupported platform -the rest of the target's
-tasks will still be called. Other tasks degrade their functionality on
-platforms or Java versions. In particular, any task which adjusts the
-timestamp of files can not do so properly on Java 1.1. Tasks which can
-do that - <a href="index.html#get">Get<a>, <a
-href="index.html#touch">Touch</a> and <A href="index.html#unzip">
-Unjar/Unwar/Unzip</a> for example, degrade their functionality on
-Java1.1, usually resorting to the current timestamp instead.
-
-
-<p>
-
-Finally, Perl makes a good place to wrap up Java invocations cross
-platform, rather than batch files. It is included in most Unix
-distributions, and is a simple download for <a href=
-"http://www.activestate.com/Products/ActivePerl/"> Win32 platforms from
-ActiveState</a>. A Perl file with .pl extension, with the usual Unix
-path to perl on the line 1 comment and marked as executable can be run
-on Windows, OS/2 and Unix and hence called from Ant without issues. The
-perl code can be left to resolve its own platform issues.
-
-<a name="team">
-<h2>Team Development Processes</h2>
-</a>
-
-Even if each team member is allowed their choice of IDE/editor, or even
-OS, you need to set a baseline of functionality on each box. In
-particular, the JDKs and jars need to be in perfect sync. Ideally pick
-the latest stable Java/JDK version available on all developer/target
-systems and stick with it for a while. Consider assigning one person to
-be the contact point for all tools coming in -particularly open source
-tools when a new build is available on a nightly basis. Unless needed,
-these tools should only really be updated monthly, or when a formal
-release is made.
-
-<p>
-
-Another good tactic is to use a unified directory tree, and add on extra
-tools inside that tree. All references can be made relative to the tree.
-If team members are expected to add a directory in the project to their
-path, then command line tools can be included there -including those
-invoked by ant exec tasks. Put everything under source code control and
-you have a one stop shop for getting a build/execute environment purely
-from CVS or your equivalent.
-
-
-<a name="deploying">
-<h2>Deploying with Ant</h2>
-</a>
-
-One big difference between ant and older tools such as make is that the
-processes for deploying java to remote sites are reasonably well
-evolved in ant. That is because we all have to do it these days, so
-many people have put in the effort to make the tasks easier.
-<p>
-
-Ant can <a href="index.html#jar">Jar</a>, <a href= "index.html#tar">
-Tar</a> or <a href="index.html#zip">Zip</a> files for deployment, while
-the <a href="index.html#war">War</a> task extends the jar task for
-better servlet deployment. <a href = "jlink.html" >Jlink</a> is a jar
-generation file which lets you merge multiple sub jars. This is ideal
-for a build process in which separate jars are generated by sub
-projects, yet the final output is a merged jar. <a href=
-"index.html#cab">Cab</a> can be used on Win32 boxes to build a cab file
-which is useful if you have to target IE deployment.
-
-<p>
-
-The <a href = "index.html#ftp">ftp</a> task lets you move stuff up to a
-server. Beware of putting the ftp password in the build file -a property
-file with tight access control is slightly better. The <a href=
-"index.html#fixcrlf">FixCRLF task</a> is often a useful interim step if
-you need to ensure that files have unix file extensions before upload. A
-WebDav task has long been discussed, which would provide a more secure
-upload to web servers, but it is still in the todo list. If DAV is your
-required upload mechanism, why not take up the challenge?
-
-<p>
-
-EJB deployment is aided by the <a href="ejb.html">ejb tasks</a>. At the
-time of writing, only WebLogic was supported with these tasks -if your
-EJB server is not supported, extending the ejb tasks would benefit your
-project and the rest of the ant community.
-
-<p>
-
-Finally, there are of course the fallbacks of just copying files to a
-destination using <a href="index.html#copy">Copy</a> and <a href =
-"index.html#copydir">Copydir</a> , or just sending them to a person or
-process using <a href= "index.html#mail">Mail</a>.
-
-<a name="directories">
-<h2> Directory Structures</h2>
-</a>
-
-How you structure your directory tree is very dependent upon the
-project. Here are some directory layout patterns which can be used as
-starting points.
-
-<h3>Simple Project</h3>
-
-The project contains sub directories
-<table width="100%">
-<tr>
-	<td><b>bin</b>
-	</td>
-	<td>common binaries, scripts -put this on the path.
-	</td>
-</tr>
-
-<tr>
-	<td><b>build</b>
-	</td>
-	<td>This is the tree for building; ant creates it and can empty it
-	in the 'clean' project.
-	</td>
-</tr>
-<tr>
-	<td><b>dist</b>
-	</td>
-	<td>Distribution outputs go in here; the directory is created in ant
-	and clean empties it out
-	</td>
-</tr>
-<tr>
-	<td><b>doc</b>
-	</td>
-	<td>Hand crafted documentation
-	</td>
-</tr>
-<tr>
-	<td><b>lib</b>
-	</td>
-	<td>Imported Java libraries go in to this directory
-	</td>
-</tr>
-<tr>
-	<td><b>src</b>
-	</td>
-	<td>source goes in under this tree
-	</td>
-</tr>
-</table>
-
-The bin, lib, doc and src directories should be under source code control.
-Slight variations include an extra tree of content to be included in the
-distribution jars -inf files, images, etc. Javadoc output can be
-directed to a doc/ folder beneath build/, or to doc/javadoc.
-
-<h3>Interface and Implementation split</h3>
-
-If the interface is split from the implementation code then this can be
-supported with minor changes just by having a separate build path for
-the interface directory -or better still just in the jar construction:
-one jar for interface and one jar for implementation.
-
-
-<h3>Loosely Coupled Sub Projects</h3>
-
-In the loosely coupled approach multiple projects can have their own
-copy of the tree, with their own source code access rights.
-One difference to consider is only having one instance of the bin and
-lib directories across all projects. This is sometimes good -it helps
-keep copies of xerces.jar in sync, and sometimes bad -it can update
-foundational jar files before unit testing is complete.
-
-<p>
-
-To still have a single build across the sub projects, use parent
-build.xml files which call down into the sub projects.
-
-<p>
-
-This style works well if different teams have different code
-access/commitment rights. The risk is that by giving extra leeway to the
-sub projects, you can end up with incompatible source, libraries, build
-processes and just increase your workload and integration grief all round.
-
-<h3>Integrated sub projects</h3>
-
-Tightly coupled projects have all the source in the same tree; different
-projects own different subdirectories. Build files can be moved down to
-those subdirectores (say src/com/iseran/core and src/com/iseran/extras),
-or kept at the top -with independent build files named core.xml and
-extras.xml
-
-<p>
-
-This project style works well if everyone trusts each other and the
-sub projects are not too huge or complex. The risk is that a split to a
-more loosely coupled design will become a requirement as the projects
-progress -but by the time this is realised schedule pressure and
-intertwined build files make executing the split well nigh impossible.
-If that happens then just keep with it until there is the time to
-refactor the project directory structures.
-
-<a name="antupdate">
-<h2>
-	Ant Update Policies
-</h2>
-</a>
-
-Once you start using ant, you should have a policy on when and how the
-team updates their copies. A simple policy is "every official release
-after whatever high stress milestone has pushed all unimportant tasks
-(like sleep and seeing daylight) on the back burner". This insulates you
-from the changes and occasional instabilities that ant goes through
-during development. Its main disadvantage is that it isolates you from
-the new tasks and features that ant is constantly adding.
-
-<p>
-
-Often an update will require changes to the build.xml files. Most
-changes are intended to be backwards compatible, but sometimes an
-incompatible change turns out to be
-necessary. That is why doing the update in the lull after a big
-milestone is important. It is also why including ant.jar and related
-files in the CVS tree helps ensure that old versions of your software
-can be still be built.
-
-<p>
-
-The most aggressive strategy is to get a weekly or daily snapshot of the
-ant source, build it up and use it. This forces you to tweak the
-build.xml files more regulary, as new tasks and attributes can take
-while to stabilise. You really have to want the new features, enjoy
-gratuitous extra work or take pleasure in upsetting your colleagues to
-take this approach.
-
-<p>
-
-Once you start extending ant with new tasks, it suddenly becomes much
-more tempting to pull down regular builds. The most recent ant builds
-are invariably the the best platform for writing your extensions, as you
-can take advantage of the regular enhancements to the foundational
-classes. It also prevents you from wasting time working on something
-which has already been done. A newly submitted task to do something
-complex such as talk to EJB engines, SOAP servers or just convert a text
-file to uppercase may be almost exactly what you need -so take it,
-enhance it and offer up the enhancements to the rest of the world. This
-is certainly better than starting work on your 'text case converter'
-task on Ant 0.8 in isolation, announcing its existence six months latter
-and discovering that instead of adulation all you get are helpful
-pointers to the existing implementation.
-
-<p>
-
-You should also get on the <a href =
-"mailto:ant-dev-subscribe@jakarta.apache.org" > ant-dev mailing list
-</a>, as it is where the other developers post their work, problems and
-experience. The volume can be quite high: 40+ messages a day, so
-consider routing it to an email address you don't use for much else. And
-don't make everyone on the team subscribe; it can be too much of a
-distraction.
-
-
-<a name="tips">
-<h2>
-Tips and Tricks</h2>
-</a>
-<dl>
-<dt><b>
-	get
-</b><dd>
-
-The <a href="index.html#get">get</a> task can fetch any URL, so be used
-to trigger remote server side code during the build process, from remote
-server restarts to sending SMS/pager messages to the developer
-cellphones
-
-<dt><b>
-i18n
-</b><dd>
-
-
-Internationalisation is always trouble. Ant helps here with the <A href=
-"native2ascii.html">native2ascii</a> task which can escape out all non
-ascii characters into unicode. You can use this to write java files
-which include strings (and indeed comments) in your own non-ASCII
-language and then use native2ascii to convert to ascii prior to feeding
-through javac. The rest of i18n and l12n is left to you...
-
-<dt><b>
-Use Property Files
-</b><dd>
-
-Use external property files to keep per-user settings out the build
-files -especially passwords. Property files can also be used to
-dynamically set a number of properties based on the value of a single
-property, simply by dyamically generating the property filename from the
-source property. They can also be used as a source of constants across
-multiple build files.
-
-<dt><b>
-Faster compiles with Jikes
-</b><dd>
-
-The <a href="http://www.jikes.org/">jikes compiler</a> is usually much
-faster than javac, and does dependency checking. Get it. Then set
-build.compiler to "jikes" for it to be used in your build files.
-
-<dt><b>
-#include targets to simplify multi build.xml projects
-</b><dd>
-
-You can import XML files into a build file using the XML parser itself.
-This lets a multi-project development program share code through reference,
-rather than cut and paste re-use. It also lets one build up a file of
-standard tasks which can be reused over time. Because the import
-mechanism is at a level below which ant is aware, treat it as
-equivalent to the #include mechanism of the 'legacy' languages C and
-C++.
-
-<p>
-
-There are two inclusion mechanisms, an ugly one for all parsers and a
-clean one. For now, the ugly
-method is the most portable:-
-<pre>
-	&lt;!DOCTYPE project [
-	  &lt;!ENTITY IncludeBuildCore SYSTEM &quot;buildCore.xml&quot;&gt;
-	  &lt;!ENTITY IncludeBuildSecondary SYSTEM &quot;buildSecondary.xml&quot;&gt;
-	%IncludeBuildCore;
-	%IncludeBuildSecondary;
-	]&gt;  
-	
-	&lt;target name=&quot;includedBuild&quot;&gt;
-		&amp;IncludeBuildCore;
-		&amp;IncludeBuildSecondary;
-	&lt;/target&gt;
-</pre>
-The clean method using XInclude/Xpath will let you include named 
-targets from one build file or another, using
-<a href="http://www.w3.org/XML/Linking"> 
-the xpointer syntax</a>. You'll need to wait for the W3C proposals
-to finalise and the java XML parsers to implement it before
-using xpointer references.  
-<dt><b>
-Implement complex Ant builds through XSL
-</b><dd>
-
-XSLT can be used to dynamically generate build.xml files from a source
-xml file, with the <a href="index.html#style">Style</a> task controlling
-the transform. This is the current recommended strategy for creating
-complex build files dynamically.
-
-
-<dt><b>
-Change the invocation scripts
-</b><dd>
-
-By writing your own invocation script -using the DOS, Unix or Perl
-script as a starting point- you can modify a ant behavior for an
-individual project. For example, you can use an alternate variable to
-ANT_HOME as the base, extend the classpath differently, or dynamically
-create a new command line property 'project.interfaces' from all .jar
-files in an interfaces directory.
-
-<p>
-
-Having a custom invocation script which runs off a CVS controlled
-library tree under PROJECT_HOME also lets you control ant versions
-across the team -developers can have other copies of ant if they want,
-but the CVS tree always contains the jar set used to build your project.
-
-<p>
-
-You can also write wrapper scripts which invoke the existing ant
-scripts. This is an easy way to extend them. The wrapper scripts can add
-extra definitions and name explicit targets, redefine ANT_HOME and
-generally make development easier. Note that "ant" in Windows is really
-"ant.bat", so should be invoked from another batch file with a "CALL
-ant" statement -otherwise it never returns to your wrapper.
-
-
-<dt><b>
-Write all code so that it can be called from Ant
-</b><dd>
-
-This seems a bit strange and idealistic, but what it means is that you should
-write all your java code as if it may be called as a library at some point in
-future. So do not place calls to <b>System.exit()</b> deep in the code -if you
-want to exit a few functions in, raise an exception instead and have
-<b>main()</b> deal with it.
-
-<dt><b>
-Use Antidote as the invocation tool
-</b><dd>
-Even if you edit ant files by hand, Antidote makes a good execution tool
-because it eliminates the startup time of the JVM, perhaps even some of
-the XML parsing delays. 
-
-</dl>
-
-<a name="puttingtogether">
-	<h2>
-		Putting it all together
-	</h2>
-</a>
-
-What does an ant build process look like in this world? Assuming a
-single directory structure for simplicity, the build file
-should contain a number of top level targets
-<ul>
-<li>build - do an (incremental) build
-<li>test - run the junit tests
-<li>clean - clean out the output directories
-<li>deploy - ship the jars, wars, whatever to the execution system
-<li>publish - output the source and binaries to any distribution site
-<li>fetch - get the latest source from the cvs tree
-<li>docs/javadocs - do the documenation
-<li>all - clean, fetch, build, test, docs, deploy
-<li>main - the default build process (usually build or build & test)
-</ul>
-Sub projects 'web', 'bean-1', 'bean-2' can be given their own build
-files -web.xml, bean-1.xml, bean-2.xml- with the same entry points.
-Extra toplevel tasks related to databases, web site images and the like
-should be considered if they are part of the process.
-
-<p>
-Debug/release switching can be handled with separate initialisation
-targets called before the compile tasks which define the appropriate
-properties.
-
-<p>
-Internal targets should be used to structure the process
-<ul>
-<li> init - initialise properties, extra-tasks, read in per-user
-property files.
-<li> init-debug - initialise debug properties
-<li> init-release - initialise release properties
-<li> compile - do the actual compilation
-<li> link/jar - make the jars or equivalent
-<li> staging - any pre-deployment process in which the output is dropped
-	off then tested before being moved to the production site.
-</ul>
-
-The switching between debug and release can be done using the 'if' and
-'unless' conditional flags on the targets, so that debug gets called
-unless 'project.mode.release' is defined.
-
-<p>
-
-It is useful to define a project name property which can be echoed in
-the init task. This lets you work out which ant file is breaking in a
-multi file build.
-
-<p>
-
-What goes in to the internal ant tasks depends on your own projects. One
-very important tactic is 'keep path redefinition down through
-references' - you can reuse paths by giving them an ID and then
-referring to them via the 'refid' attribute you should only need to
-define a shared classpath once in the file; filesets can be reused
-similarly.
-
-<p>
-
-Once you have set up the directory structures, and defined the ant tasks
-it is time to start coding. An early priority must be to set up the
-automated test process, as that not only helps ensures that the code
-works, it verifies that the build process is working.
-
-<p>
-
-And that's it. The build file shouldn't need changing as new source
-files get added, only when you want to change the deliverables or part
-of the build process. At some point you may want to massively
-restructure the entire build process, restructuring projects and the
-like, but even then the build file you have should act as a foundation
-for a split build file process -just pull out the common properties into
-a properties file all build files read in, keep the target names unified
-and keep going with the project. Restructuring the source code control
-system is often much harder work.
-
-<h2>The Limits of Ant</h2>
-
-Before you start adopting ant as the sole mechanism for the build
-process, you need to be aware of what it doesn't do.
-<p>
-
-<h3>It's not a scripting language</h3>
-
-Ant lets you declare what you want done, with a bit of testing of the
-platform and class libraries first to enable some platform specific
-builds to take place. It does not let you specify how to handle things
-going wrong (a listener class can do that), or support complex
-conditional statements.
-
-<p>
-
-If your build needs to handle exceptions then look at the sound listener
-as a simple example of how to write your own listener class. Complex
-conditional statements can be handled by having something else do the
-tests and then build the appropriate ant task. XSLT can be used for
-this.
-
-<h3>It's not Make</h3>
-
-Some of the features of make, specifically inference rules and
-dependency checking are not included in ant. That's because they are
-'different' ways of doing a build. Make requires you to state
-dependencies and the build steps, ant wants you to state tasks and the
-order between them, the tasks themselves can do depedency checking or
-not. A full java build using Jikes is so fast that dependency checking
-is relatively moot, while many of the other tasks (but not all), compare
-the timestamp of the source file with that of the destination file
-before acting.
-
-<h3>It's not meant to be a nice language for humans</h3>
-
-XML isnt a nice representation of information for humans. It's a
-reasonable representation for programs, and text editors and source code
-management systems can all handle it nicely. But a complex ant file can
-get ugly because XML is a bit ugly, and a complex build is, well,
-complicated. Use XML comments so that the file you wrote last month
-still makes sense when you get back to it, and use Antidote to edit the
-files if you prefer it. 
-
-
-<h2>Endpiece</h2>
-
-Software development is meant to be fun. Being in the maelstrom of a
-tight project with the stress of integration and trying to code
-everything up for an insane deadline can be fun -it is certainly
-exhilirating. Adding a bit of automation to the process may make things
-less chaotic, and bit less entertaining, but it is a start to putting
-you in control of your development process. You can still have fun, you
-should just have less to worry about, a shorter build/test/deploy cycle
-and more time to spend on feature creep or important things like skiing.
-So get out there and have fun!
-
-<a name="reading">
-<h2>Further Reading</h2>
-</a>
-<ul>
-<li>
-<a
-href="http://www.martinfowler.com/articles/continuousIntegration.html">
-Continuous Integration</a>; Martin Fowler. <br>
-A paper on using ant within a software project
-running a continuous integration/testing proces.
-<li> Refactoring; Martin Fowler, ISBN: 0201485672 <br>
-	Covers JUnit as well as tactics for making some headway with the mess of
-	code you will soon have.
-
-</ul>
-<hr>
-<p align="center">Copyright &copy; 2000 Apache Software Foundation. All rights
-Reserved.</p>
-
-
diff --git a/lib/jaxp.jar b/lib/jaxp.jar
deleted file mode 100644
index 8a08809..0000000
--- a/lib/jaxp.jar
+++ /dev/null
Binary files differ
diff --git a/lib/optional/README b/lib/optional/README
deleted file mode 100644
index 906a1d2..0000000
--- a/lib/optional/README
+++ /dev/null
@@ -1,15 +0,0 @@
-The required libraries should be placed here.
-
-The dependencies are:
-
-junit.jar      - required for junit tasks, available at www.junit.org
-stylebook.jar  - required by stylebook task, available in CVS repository of xml.apache.org
-testlet.jar    - required for test task, available with Avalon via java.apache.org/framework
-jakarta-regexp-1.2.jar - required by some mappers, available at http://jakarta.apache.org/regexp/
-jakarta-oro-2.0.1.jar  - required for some mappers and the perforce tasks, available at http://jakarta.apache.org/oro/
-???antlr.jar???- required for antlr task, available at www.antlr.org
-bsf.jar        - required for script task, available at http://oss.software.ibm.com/developerworks/opensource/bsf/
-netrexx.jar    - required for netrexx task, available at http://www2.hursley.ibm.com/netrexx
-rhino.jar      - required for script task if you want to use javascript, available at www.mozilla.org
-jpython.jar    - required for script task if you want to use python, available at www.jpython.org
-netcomponents.jar - required by ftp and telnet tasks, available at http://www.savarese.org/oro/downloads/index.html#NetComponents
diff --git a/lib/optional/junit.jar b/lib/optional/junit.jar
deleted file mode 100644
index 0193877..0000000
--- a/lib/optional/junit.jar
+++ /dev/null
Binary files differ
diff --git a/lib/parser.jar b/lib/parser.jar
deleted file mode 100644
index cd16d4c..0000000
--- a/lib/parser.jar
+++ /dev/null
Binary files differ
diff --git a/proposal/anteater/README b/proposal/anteater/README
deleted file mode 100644
index 4fc1737..0000000
--- a/proposal/anteater/README
+++ /dev/null
@@ -1,14 +0,0 @@
-README for Ant(Eater)
----------------------------------------------------------------------------------
-
-Execution:
-
-    ant [args] target
-    
-Args:
-
-    -help
-    -quiet
-    -verbose
-    -taskpath [path]
-    -antfile [file]
\ No newline at end of file
diff --git a/proposal/anteater/bootstrap/Bootstrap.java b/proposal/anteater/bootstrap/Bootstrap.java
deleted file mode 100644
index 288fce1..0000000
--- a/proposal/anteater/bootstrap/Bootstrap.java
+++ /dev/null
@@ -1,115 +0,0 @@
-// -------------------------------------------------------------------------------
-// Copyright (c)2000 Apache Software Foundation
-// -------------------------------------------------------------------------------
-
-import java.io.*;
-import java.util.*;
-import java.util.zip.*;
-
-/**
- * Quick and dirty single class bootstrap utility for getting Ant off
- * the ground when in need. To use, compile this file in the directory
- * where the source code is in the repository, then execute it. That's
- * it.<p>
- *
- * No pretense is made that this is an elegant peice of code. This code
- * only exists to do a ground zero build of Ant. Any other building of
- * Ant should be done with itself whenever possible.
- *
- * @author James Duncan Davidson (duncan@apache.org)
- * @author Conor MacNeill (conor@m64.com)
- */
-public class Bootstrap {
-    
-    /**
-     * Command line entry point. This is the first part of the bootstrap
-     * where we go and set up the environment and generally do what is
-     * necessary to set up for Bootstrapping.
-     */
-    public static void main(String[] args) throws Exception {
-      
-        String[] command;
-        String classpath = null;
-      
-        // check to see if we have a compiler on the classpath. Right now
-        // we're just checking for the old compiler, but will want to check
-        // for the new compiler and use it if it exists. Later.
-        try {
-            Class clazz = Class.forName("sun.tools.javac.Main");
-        } catch (ClassNotFoundException cnfe) { 
-            String javaHome = System.getProperty("java.home");
-            if (javaHome.endsWith("jre")) {
-                javaHome = javaHome.substring(0, javaHome.length() - 4);
-            }
-            // XXX should check if this exists and bail out if it doesn't
-            classpath = javaHome + "/lib/tools.jar" + File.pathSeparator + ".";
-        }
-        
-        // XXX really should check to see if compiling the bootstrap is necessary. :)
-        
-        System.out.println("Compiling Bootstrap2");
-        if (classpath == null) {
-            command = new String[] {"javac", "./Bootstrap2.java"};
-        } else {
-            command = new String[] {"javac", "-classpath", classpath, 
-                                    "./Bootstrap2.java"};
-        }
-        runCommand(command);
-        
-        System.out.println("Running Bootstrap2");
-        if (classpath == null) {
-            command = new String[] {"java", "Bootstrap2"};
-        } else {
-            command = new String[] {"java", "-cp", classpath, "Bootstrap2"};
-        }
-        runCommand(command, args);
-    }
-    
-    /** 
-     * Utility method for execing processes
-     */
-    static void runCommand(String[] command) throws IOException {
-    
-        Runtime runtime = Runtime.getRuntime();
-        Process process = runtime.exec(command);
-            
-        // echo output from process
-            
-        InputStream in = process.getInputStream();
-        byte[] buf = new byte[80];
-        int count = 0;
-        count = in.read(buf, 0, buf.length);
-        while (count != -1) {
-            System.out.write(buf, 0, count);
-            count = in.read(buf, 0, buf.length);
-        }
-            
-        in = process.getErrorStream();
-        count = in.read(buf, 0, buf.length);          
-        if (count > 0) {
-            System.out.println();
-            System.out.println("Error Stream Output:");
-             
-            while (count != -1) {
-                System.out.write(buf, 0, count);
-                count = in.read(buf, 0, buf.length);
-            }
-        }
-    }
-    
-    /**
-     * Utility method for running processes that let some additional args
-     * be specified.
-     */
-    static void runCommand(String[] command, String[] addtlArgs) throws IOException {
-        String[] newCommand = new String[command.length + addtlArgs.length];
-        for (int i = 0; i < command.length; i++) {
-            newCommand[i] = command[i];
-        }
-        for (int i = 0; i < addtlArgs.length; i++) {
-            newCommand[command.length + i] = addtlArgs[i];
-        }
-        runCommand(newCommand);
-    }
-} 
- 
diff --git a/proposal/anteater/bootstrap/Bootstrap2.java b/proposal/anteater/bootstrap/Bootstrap2.java
deleted file mode 100644
index a755dc9..0000000
--- a/proposal/anteater/bootstrap/Bootstrap2.java
+++ /dev/null
@@ -1,285 +0,0 @@
-// -------------------------------------------------------------------------------
-// Copyright (c)2000 Apache Software Foundation
-// -------------------------------------------------------------------------------
-
-import java.io.*;
-import java.util.*;
-import java.util.jar.*;
-import java.util.zip.*;
-
-/**
- * Second stage bootstrap. This is where the majority of the work happens.
- *
- * @author James Duncan Davidson (duncan@apache.org);
- */
-public class Bootstrap2 {
-   
-    private static String base = "../";
-    private static String crimsonSources = "../../../xml-crimson/src"; // relative to base
-    private static String[] modules = new String[]{"copy", "echo", "jar", "javac", "buildtarget"};
-
-    /**
-     * Command line entry point.
-     */
-    public static void main(String[] args) throws Exception {
-    
-        long startTime = System.currentTimeMillis();
-    
-        System.out.println("Starting Bootstrap2....");
-
-        // ------------------------------------------------------------
-        // first create dirs that we need for strapping
-        // ------------------------------------------------------------
-
-        mkdir(base + "bootstrap/temp");
-        mkdir(base + "bootstrap/temp/crimson");
-        mkdir(base + "bootstrap/temp/main");
-        mkdir(base + "bootstrap/temp/tasks");
-        mkdir(base + "bootstrap/temp/taskjars");
-        
-        for (int i = 0; i < modules.length; i++) {
-            mkdir(base + "bootstrap/temp/tasks/" + modules[i]);
-        }
-      
-        // ------------------------------------------------------------
-        // build crimson, but only if it hasn't been built yet since
-        // 127 class files takes more seconds than I like to wait.
-        // ------------------------------------------------------------       
-        
-        if (!(new File(base + "bootstrap/temp/crimson/javax").exists())) {
-            Vector v1 = getSources(base + crimsonSources);
-            doCompile(base + "bootstrap/temp/crimson", v1);
-        }
-        
-        // ------------------------------------------------------------
-        // build the main thing
-        // ------------------------------------------------------------        
-        
-        Vector v2 = getSources(base + "source/main");
-        doCompile(base + "bootstrap/temp/main", v2);
-        
-        // ------------------------------------------------------------
-        // now build each of the needed peices into their
-        // areas within the strapping area
-        // ------------------------------------------------------------
-
-        for (int i = 0; i < modules.length; i++) {
-            buildModule(modules[i]);
-        }
-
-        // ------------------------------------------------------------
-        // now, set classpaths and launch an Ant build to
-        // have Ant build itself nicely
-        // ------------------------------------------------------------
-
-        System.out.println();
-        System.out.println("-------------------------------------------");
-        System.out.println("STARTING REAL BUILD");
-        System.out.println("-------------------------------------------");
-        System.out.println();     
-        
-        String[] cmdarray = new String[10];
-        cmdarray[0] = "java";
-        cmdarray[1] = "-cp";
-        cmdarray[2] = base + "bootstrap/temp/main" + File.pathSeparator +
-                      base + "bootstrap/temp/crimson";
-        cmdarray[3] = "org.apache.ant.cli.Main";
-        cmdarray[4] = "-taskpath";
-        cmdarray[5] = base + "bootstrap/temp/taskjars";
-        cmdarray[6] = "-buildfile";
-        cmdarray[7] = base + "source/main.ant";
-        cmdarray[8] = "-target"; 
-        cmdarray[9] = "default";
-        
-        Bootstrap.runCommand(cmdarray, args);
-        
-        System.out.println();
-        System.out.println("-------------------------------------------");
-        System.out.println("FINISHED WITH REAL BUILD");
-        System.out.println("-------------------------------------------");
-        System.out.println();
-        
-        // ------------------------------------------------------------
-        // Remove Temporary classes
-        // ------------------------------------------------------------
-
-        // delete(tempDirName);
-
-        // ------------------------------------------------------------
-        // Print Closer
-        // ------------------------------------------------------------
-
-        long endTime = System.currentTimeMillis();
-        long elapsd = endTime - startTime;
-        System.out.println("Bootstrap Time: " + (elapsd/1000) + "." + (elapsd%1000) + 
-                           " seconds");
-    }
-
-    private static void mkdir(String arg) {
-        File dir = new File(arg);
-        if (dir.exists() && !dir.isDirectory()) {
-            System.out.println("Oh, horrors! Dir " + arg + " " +
-                               "doesn't seem to be a dir... Stop!");
-            System.exit(1);
-        }
-        if (!dir.exists()) {
-            System.out.println("Making dir: " + arg);
-            dir.mkdir();
-        }
-    }
-
-    private static void buildModule(String arg) {
-        System.out.println("Building " + arg);
-     
-        // get all sources and hand them off to the compiler to
-        // build over into destination
-
-        Vector v = getSources(base + "source/coretasks/" + arg);
-        if (v.size() > 0) {
-            doCompile(base + "bootstrap/temp/tasks/" + arg, v);
-        }
-        
-
-        // move taskdef.properties for the module
-
-        copyfile(base + "source/coretasks/" + arg + "/taskdef.properties",
-                 base + "bootstrap/temp/tasks/" + arg + "/taskdef.properties");
-                 
-        // jar up tasks
-        try {
-            jarDir(new File(base + "bootstrap/temp/tasks/" + arg), 
-                new File(base + "bootstrap/temp/taskjars/" + arg + ".jar"));
-        } catch(IOException ioe) {
-            System.out.println("problem jar'ing: " + arg);
-        }
-    }
-
-    private static Vector getSources(String arg) {
-
-        File sourceDir = new File(arg);
-        
-        Vector v = new Vector();
-        scanDir(sourceDir, v, ".java");
-        return v;
-    }
-
-    private static void jarDir(File dir, File jarfile) throws IOException {
-        String[] files = dir.list();
-        if (files.length > 0) {
-            System.out.println("Jaring: " + jarfile);        
-            
-            FileOutputStream fos = new FileOutputStream(jarfile);
-            JarOutputStream jos = new JarOutputStream(fos, new Manifest());
-            jarDir(dir, "", jos);
-            jos.close();      
-        }
-    }
-    
-    private static void jarDir(File dir, String prefix, JarOutputStream jos) throws 
-        IOException 
-    {
-        String[] files = dir.list();
-        for (int i = 0; i < files.length; i++) {
-            File f = new File(dir, files[i]);
-            if (f.isDirectory()) {
-                String zipEntryName;
-                if (!prefix.equals("")) {
-                    zipEntryName = prefix + "/" + files[i];
-                } else {
-                    zipEntryName = files[i];
-                }
-                ZipEntry ze = new ZipEntry(zipEntryName);
-                jos.putNextEntry(ze);
-                jarDir(f, zipEntryName, jos);
-            } else {
-                String zipEntryName;
-                if (!prefix.equals("")) {
-                    zipEntryName = prefix + "/" + files[i];
-                } else {
-                    zipEntryName = files[i];
-                }
-                ZipEntry ze = new ZipEntry(zipEntryName);
-                jos.putNextEntry(ze);
-                FileInputStream fis = new FileInputStream(f);
-                int count = 0;
-                byte[] buf = new byte[8 * 1024];
-                count = fis.read(buf, 0, buf.length);
-                while (count != -1) {
-                    jos.write(buf, 0, count);
-                    count = fis.read(buf, 0, buf.length);
-                }
-                fis.close();
-            }
-        }
-    }
-
-    private static void scanDir(File dir, Vector v, String endsWith) {
-        String[] files = dir.list();
-        if (files == null) {
-            return;
-        }
-        for (int i = 0; i < files.length; i++) {
-            File f = new File(dir, files[i]);
-            if (f.isDirectory()) {
-                scanDir(f, v, endsWith);
-            } else {
-                if (files[i].endsWith(endsWith)) {
-                    v.addElement(f);
-                }
-            }
-        }
-    }
-
-    private static void doCompile(String dest, Vector sources) {
-        System.out.println("   Compiling " + sources.size() + " files to " + dest);
-        
-        // XXX This should be more forgiving about compiling wherever
-        // under whatever compiler, but this works so...
-        
-        sun.tools.javac.Main compiler = new sun.tools.javac.Main(System.out, 
-                                                                 "javac");        
-        String[] args = new String[sources.size() + 4];
-        args[0] = "-classpath";
-        args[1] = base + "bootstrap/temp/main" + File.pathSeparator +  
-                  base + "bootstrap/temp/crimson";
-        args[2] = "-d";
-        args[3] = dest;
-        for (int i = 0; i < sources.size(); i++) {
-            args[4+i] = ((File)sources.elementAt(i)).toString();
-        }
-        
-        // System.out.print("javac ");
-        // for (int i = 0; i < args.length; i++) {
-        //     System.out.print(args[i] + " ");
-        // }
-        // System.out.println();
-        
-        compiler.compile(args);
-    }
-
-    private static void copyfile(String from, String dest) {
-        File fromF = new File(from);
-        File destF = new File(dest);
-        if (fromF.exists()) {
-            System.out.println("   Copying " + from);
-            try {
-                FileInputStream in = new FileInputStream(fromF);
-                FileOutputStream out = new FileOutputStream(destF);
-                byte[] buf = new byte[1024 * 16];
-                int count = 0;
-                count = in.read(buf, 0, buf.length);
-                if (count != -1) {
-                    out.write(buf, 0, count);
-                    count = in.read(buf, 0, buf.length);
-                }
-                
-                in.close();
-                out.close();
-            } catch (IOException ioe) {
-                System.out.println("OUCH: " + from);
-                System.out.println(ioe);
-            }
-        }
-    }
-}
- 
\ No newline at end of file
diff --git a/proposal/anteater/bootstrap/README b/proposal/anteater/bootstrap/README
deleted file mode 100644
index 95f6fd6..0000000
--- a/proposal/anteater/bootstrap/README
+++ /dev/null
@@ -1,51 +0,0 @@
-BOOTSTRAP FOLDER README
----------------------------------------------------------------------
-
-The utilities provided here are used by the developers of Ant to 
-bootstrap builds of Ant and will be used by the nightly build process
-to build Ant from a zero state.
-
-That said, there is no reason for most folks -- even hard core Ant
-developers -- to use the files here on a regular basis. You should
-really have the latest stable version of Ant installed somewhere so
-that you can easily build Ant using itself. Check out the 
-installation guidelines in the documentation for suggestions on how
-Ant can be installed as a full time program of your system. 
-
-HOW TO USE
-
-So, you really want to use the bootstrap facilities instead of just
-downloading a build from somewhere? Ok. Here's how it works:
-
-  * Make sure that sun.tools.javac.Main is on your classpath. 
-    Sometimes it is, sometimes it isn't -- it depends on the JDK
-    installed on your machine. You can do a quick check using
-    the 'javap sun.tools.javac.Main' command to see if it is.
-
-  * Make sure that you have xml-crimson checked out next to
-    the jakarta-ant workspace so that the Bootstrap can find
-    this necessary code.
-
-  * Compile Bootstrap.java. You should end up with Bootstrap.class
-    and maybe a few other classes (depending).
-    
-  * Execute the Bootstrap class.
-  
-How this will work in practice is:
-
-  % javac Bootstrap.java
-  % java Bootstrap
-
-The Bootstrap class will grind out a preliminary build in the directory
-'temp/' which will be placed in this directory, then use that build to
-build a real copy of Ant into '../Build' using Ant's own makefile. After
-doing this, the Boostrap class will remove the intermediate build in
-the 'temp/' directory.
-
-HISTORICAL NOTE
-
-The Bootstrap class is somewhat the same rough hack as the first sketch
-of Ant itself -- a proof of concept that a Java based build system
-could work out halfway decently. Of course, Ant has expanded much past
-the capabilities of this, but this little start serves as a useful
-tool to bootstrap builds.
\ No newline at end of file
diff --git a/proposal/anteater/source/coretasks/buildtarget/org/apache/ant/buildtarget/BuildTargetTask.java b/proposal/anteater/source/coretasks/buildtarget/org/apache/ant/buildtarget/BuildTargetTask.java
deleted file mode 100644
index cead59f..0000000
--- a/proposal/anteater/source/coretasks/buildtarget/org/apache/ant/buildtarget/BuildTargetTask.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.apache.ant.buildtarget;
-
-import org.apache.ant.*;
-
-/**
- * A simple task that builds a target if a property is set to true
- *
- * @author James Duncan Davidson (duncan@apache.org)
- */
-public class BuildTargetTask extends AbstractTask {
-    
-    // -----------------------------------------------------------------
-    // PRIVATE DATA MEMBERS
-    // -----------------------------------------------------------------
-    
-    /**
-     * Data to echo
-     */
-    private String ifProperty;
-    
-    /**
-     * Target to execute
-     */
-    private String targetName;
-    
-    // -----------------------------------------------------------------
-    // PUBLIC METHODS
-    // -----------------------------------------------------------------    
-    
-    /**
-     * Executes this task.
-     */
-    public boolean execute() throws AntException {
-        // XXX should really check internal state before proceeding! Target
-        // has to be set...
-        
-        // XXX oh, and we should really check to see if the target exists
-        // and fail out if it doesn't. :)
-        
-        if (ifProperty != null) {
-            String ifPropertyValue = project.getProperty(ifProperty);
-            if (ifPropertyValue.equals("true")) {
-                project.startBuild(targetName);
-                return true;
-            } else {
-                return true;
-            }
-        } else {
-            project.startBuild(targetName);
-            return true;
-        }
-    } 
-    
-    /**
-     * Sets the property that will be examined
-     */
-    public void setIf(String ifProperty) {
-        this.ifProperty = ifProperty;
-    }
-    
-    /**
-     * Sets the target to be executed
-     */
-    public void setTarget(String targetName) {
-        this.targetName = targetName;
-    }
-}
\ No newline at end of file
diff --git a/proposal/anteater/source/coretasks/buildtarget/taskdef.properties b/proposal/anteater/source/coretasks/buildtarget/taskdef.properties
deleted file mode 100644
index ecc4506..0000000
--- a/proposal/anteater/source/coretasks/buildtarget/taskdef.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-# taskdef.properties for Echo task
-
-tasks=buildtarget
-task.buildtarget.class=org.apache.ant.buildtarget.BuildTargetTask
\ No newline at end of file
diff --git a/proposal/anteater/source/coretasks/echo/org/apache/ant/echo/EchoTask.java b/proposal/anteater/source/coretasks/echo/org/apache/ant/echo/EchoTask.java
deleted file mode 100644
index f4ce40d..0000000
--- a/proposal/anteater/source/coretasks/echo/org/apache/ant/echo/EchoTask.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.apache.ant.echo;
-
-import org.apache.ant.*;
-
-/**
- * A very simple task that takes a bit of text and echos it back out
- * when it is executed. This is useful for troubleshooting properties
- * in buildfiles, letting the user know that something is going to happen
- * and as a very simple example that can be copied to create other tasks.
- *
- * @author James Duncan Davidson (duncan@apache.org)
- */
-public class EchoTask extends AbstractTask {
-    
-    // -----------------------------------------------------------------
-    // PRIVATE DATA MEMBERS
-    // -----------------------------------------------------------------
-    
-    /**
-     * Data to echo
-     */
-    private String text;
-    
-    // -----------------------------------------------------------------
-    // PUBLIC METHODS
-    // -----------------------------------------------------------------    
-    
-    /**
-     * Executes this task.
-     */
-    public boolean execute() throws AntException {
-        project.getFrontEnd().writeMessage(text);
-        return true;
-    } 
-    
-    /**
-     * Sets the text that this task will echo.
-     */
-    public void setText(String text) {
-        this.text = text;
-    }
-}
\ No newline at end of file
diff --git a/proposal/anteater/source/coretasks/echo/taskdef.properties b/proposal/anteater/source/coretasks/echo/taskdef.properties
deleted file mode 100644
index 8949070..0000000
--- a/proposal/anteater/source/coretasks/echo/taskdef.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-# taskdef.properties for Echo task
-
-tasks=echo
-task.echo.class=org.apache.ant.echo.EchoTask
\ No newline at end of file
diff --git a/proposal/anteater/source/main.ant b/proposal/anteater/source/main.ant
deleted file mode 100644
index d56ee63..0000000
--- a/proposal/anteater/source/main.ant
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- Comment outside of project -->
-
-<project name="Ant" default="default">
-
-  <!-- Comment inside of project -->
-
-  <description>Primary buildfile for building Ant itself</description>
-
-  <property name="foo" value="true"/>
-
-  <target name="default" depends="main">
-    <echo text="Default Target is Executing"/>
-    <buildtarget target="main" if="foo"/>
-  </target>
-
-  <target name="main">
-    <echo text="Main Target is Executing"/>
-  </target>
-
-</project>
\ No newline at end of file
diff --git a/proposal/anteater/source/main/org/apache/ant/AbstractTask.java b/proposal/anteater/source/main/org/apache/ant/AbstractTask.java
deleted file mode 100644
index a4cfc2e..0000000
--- a/proposal/anteater/source/main/org/apache/ant/AbstractTask.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.apache.ant;
-
-import java.io.*;
-import java.util.*;
-import java.lang.reflect.*;
-import java.beans.*;
-
-/**
- * Superclass of all Tasks. All tasks extend from this.
- *
- * @author James Duncan Davidson (duncan@apache.org)
- */
-public abstract class AbstractTask {
-    
-    // -----------------------------------------------------------------
-    // PROTECTED DATA MEMBERS
-    // -----------------------------------------------------------------
-    
-    /**
-     *
-     */
-    protected Project project;
-    
-    // -----------------------------------------------------------------
-    // ABSTRACT PUBLIC METHODS
-    // -----------------------------------------------------------------     
-    
-    /**
-     *
-     */
-    public abstract boolean execute() throws AntException;
-    
-    // -----------------------------------------------------------------
-    // PUBLIC METHODS
-    // -----------------------------------------------------------------  
-    
-    /**
-     * Used by the system to set the attributes which then get reflected
-     * into the particular implementation class
-     */
-    public void setAttributes(Hashtable attributes) {
-        Class clazz = this.getClass();
-        BeanInfo bi;
-        try {
-            bi = Introspector.getBeanInfo(clazz);
-        } catch (IntrospectionException ie) {
-            System.out.println("Can't reflect on: " + clazz);
-            // XXX exception out
-            return;
-        }
-        PropertyDescriptor[] pda = bi.getPropertyDescriptors();
-        for (int i = 0; i < pda.length; i++) {
-            PropertyDescriptor pd = pda[i];
-            String property = pd.getName();
-            Object o = attributes.get(property);
-            if (o != null) {
-                String value = (String)o;
-                Method setMethod = pd.getWriteMethod();
-                if (setMethod != null) {
-                    Class[] ma = setMethod.getParameterTypes();
-                    if (ma.length == 1) {
-                        Class c = ma[0];
-                        if (c.getName().equals("java.lang.String")) {
-                            try {
-                                setMethod.invoke(this, new String[] {value});
-                            } catch (Exception e) {
-                                // XXX bad bad bad -- narrow to exact exceptions
-                                System.out.println("OUCH: " + e);
-                                // XXX exception out.
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-    
-    /**
-     * Used by system to set the project.
-     */  
-    public void setProject(Project project) {
-        this.project = project;
-    }
-  
-}
\ No newline at end of file
diff --git a/proposal/anteater/source/main/org/apache/ant/AntException.java b/proposal/anteater/source/main/org/apache/ant/AntException.java
deleted file mode 100644
index 16d7a69..0000000
--- a/proposal/anteater/source/main/org/apache/ant/AntException.java
+++ /dev/null
@@ -1,138 +0,0 @@
-// -------------------------------------------------------------------------------
-// Copyright (c)2000 Apache Software Foundation
-// -------------------------------------------------------------------------------
-
-package org.apache.ant;
-
-/**
- * Signals a problem while setting up or executing a build.
- *
- * @author James Duncan Davidson (duncan@apache.org)
- */
-public class AntException extends Exception {
-
-    // -----------------------------------------------------------------
-    // PRIVATE MEMBERS
-    // -----------------------------------------------------------------    
-    
-    /**
-     * The cause of this exception.
-     */
-    private Throwable cause;
-    
-    /**
-     * Project within which this exception occured, if applicable.
-     */
-    private Project project;
-    
-    /**
-     * Target within which this exception occurred, if applicable.
-     */
-    private Target target;
-    
-    /**
-     * Task within which this exception occurred, if applicable.
-     */
-    private Task task;
-
-    // -----------------------------------------------------------------
-    // CONSTRUCTORS
-    // -----------------------------------------------------------------    
-    
-    /**
-     * Constructs a new AntException with no message.
-     */
-    public AntException() {
-        super();
-    }
-    
-    /**
-     * Constructs a new AntException with the given message.
-     */
-    public AntException(String msg) {
-        super(msg);
-    }
-    
-    /**
-     * Constructs a new AntException with the given message and cause.
-     */
-    public AntException(String msg, Throwable cause) {
-        super(msg);
-        this.cause = cause;
-    }
-    
-    /**
-     * Constructs a new AntException with the given cause and a 
-     * detailed message of (cause==null ? null : cause.toString())
-     */
-    public AntException(Throwable cause) {
-        super(cause==null ? null : cause.toString());
-        this.cause = cause;
-    }
-    
-    // -----------------------------------------------------------------
-    // PUBLIC METHODS
-    // -----------------------------------------------------------------    
-    
-    /**
-     * Returns the cause of this exception.
-     */ 
-    public Throwable getCause() {
-        return cause;
-    }
-    
-    /**
-     * Returns the Project within the scope of which this exception occurred,
-     * if applicable. Otherwise null.
-     */
-    public Project getProject() {
-        return project;
-    }
-    
-    /**
-     * Returns the Target within the scope of which this exception occurred,
-     * if applicable. Otherwise null.
-     */
-    public Target getTarget() {
-        return target;
-    }
-     
-    /**
-     * Returns the Task wihtin the scope of which this exception occurred,
-     * if applicable. Otherwise null.
-     */
-    public Task getTask() {
-        return task;
-    }
-     
-    // -----------------------------------------------------------------
-    // PACKAGE METHODS
-    // -----------------------------------------------------------------    
-    
-    /**
-     * Sets the project within the scope of which this exception occurred.
-     * This method is called by the internal error handling mechanism of
-     * Ant before it is propogated out.
-     */
-    void setProject(Project project) {
-        this.project = project;
-    }
-    
-    /**
-     * Sets the target within the scope of which this exception occurred.
-     * This method is called by the internal error handling mechansim of
-     * Ant before it is propogated out.
-     */
-    void setTarget(Target target) {
-        this.target = target;
-    }
-    
-    /**
-     * Sets the task within the scope of which this exception occurred.
-     * This method is called by the internal error handling mechanism of
-     * Ant before it is propogated out.
-     */
-    void setTask(Task task) {
-        this.task = task;
-    }
-}
\ No newline at end of file
diff --git a/proposal/anteater/source/main/org/apache/ant/AntFrontEnd.java b/proposal/anteater/source/main/org/apache/ant/AntFrontEnd.java
deleted file mode 100644
index 9e30814..0000000
--- a/proposal/anteater/source/main/org/apache/ant/AntFrontEnd.java
+++ /dev/null
@@ -1,103 +0,0 @@
-// -------------------------------------------------------------------------------
-// Copyright (c)2000 Apache Software Foundation
-// -------------------------------------------------------------------------------
-
-package org.apache.ant;
-
-/**
- * Abstract class that lets Ant talk to a front end such as a CLI front end,
- * GUI front end, Servlet front end, or some other front end.
- *
- * @author James Duncan Davidson (duncan@apache.org)
- */
-public abstract class AntFrontEnd {
-
-    // -----------------------------------------------------------------
-    // CONSTANTS
-    // -----------------------------------------------------------------    
-    
-    /**
-     * Indicates that an associated message has a low importance.
-     */
-    public static final int MSG_LEVEL_LOW = 1;
-    
-    /**
-     * Indicates that an associated message has a medium importance.
-     */
-    public static final int MSG_LEVEL_MED = 2;
-    
-    /**
-     * Indicates that an associated message has a high importance.
-     */
-    public static final int MSG_LEVEL_HIGH = 3;
-    
-    // -----------------------------------------------------------------
-    // PUBLIC METHODS
-    // -----------------------------------------------------------------    
-
-    /**
-     * Send notification to the FrontEnd that execution has moved into
-     * the scope of a particular project. The default implementation
-     * does nothing. 
-     */
-    public void notifyProjectStart(Project project) {
-    
-    }
-
-    /**
-     * Send notification to the FrontEnd that execution has moved out
-     * of the scope of a particular Project. The default implementation
-     * does nothing.
-     */
-    public void notifyProjectEnd(Project project) {
-    
-    }
-    
-    /**
-     * Send notification to the FrontEnd that execution has moved into
-     * the scope of a particular target. The default implementation does
-     * nothing.
-     */
-    public void notifyTargetStart(Target target) {
-    
-    }
-    
-    /**
-     * Send notification to the FrontEnd that execution has moved out of
-     * the scope of a particular target. The default implementation does
-     * nothing.
-     */
-    public void notifyTargetEnd(Target target) {
-    
-    }
-    
-    /**
-     * Send notification to the FrontEnd that execution has moved into the
-     * scope of a particular task. The default implementation does nothing.
-     */
-    public void notifyTaskStart(Task task) {
-    
-    }
-    
-    /**
-     * Send notification to the FrontEnd that execution has moved out of
-     * the scope of a particular task. The default implementation does
-     * nothing.
-     */
-    public void notifyTaskEnd(Task task) {
-    
-    }
-
-    /**
-     * Writes a message to the front end with a medium importance.
-     */
-    public void writeMessage(String message) {
-        writeMessage(message, MSG_LEVEL_MED);
-    }
-
-    /**
-     * Writes a message to the front end.
-     */
-    public abstract void writeMessage(String message, int level);
-
-}
\ No newline at end of file
diff --git a/proposal/anteater/source/main/org/apache/ant/Project.java b/proposal/anteater/source/main/org/apache/ant/Project.java
deleted file mode 100644
index 63e2d4d..0000000
--- a/proposal/anteater/source/main/org/apache/ant/Project.java
+++ /dev/null
@@ -1,286 +0,0 @@
-// ---------------------------------------------------------------------
-// (c)2000 Apache Software Foundation
-//
-// ---------------------------------------------------------------------
-
-package org.apache.ant;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * In memory container for an Ant project.
- *
- * @author James Duncan Davidson (duncan@apache.org)
- */
-public class Project {
-
-    // -----------------------------------------------------------------
-    // PRIVATE DATA MEMBERS
-    // -----------------------------------------------------------------
-
-    /**
-     *
-     */
-    //private Ant ant;
-    
-    /**
-     * Base directory of this project. Usually this value is the directory
-     * where the project file was found, but can be different.
-     */
-    private File baseDir;
-    
-    /**
-     *
-     */
-    private String defaultTargetName;
-    
-    /**
-     * Short description of the project.
-     */
-    private String description;
-
-    /**
-     * Front end that this project communicates to.
-     */
-    private AntFrontEnd frontEnd;
-
-    /**
-     * Properties of this project.
-     */
-    private Properties properties = new Properties();
-
-    /**
-     * Parent project to this project, if one exists.
-     */
-    private Project parentProject = null;
-
-    /**
-     *
-     */
-    private String name;
-
-    /**
-     * Hashtable containing all of the targets that are part of this
-     * project. Targets are stored in this hashtable using the name
-     * of the target as the key and the Target object for the target
-     * as the value.
-     */
-    private Hashtable targets = new Hashtable();
-    
-    /**
-     * TaskManager for this project.
-     */
-    private TaskManager taskManager;
-
-    // -----------------------------------------------------------------
-    // CONSTRUCTORS
-    // -----------------------------------------------------------------
-
-    /**
-     * Creates a new Project object with the given FrontEnd and TaskManager
-     */
-    public Project(AntFrontEnd frontEnd, TaskManager taskManager) {
-        this.frontEnd = frontEnd;
-        this.taskManager = taskManager;
-    }
-
-    // -----------------------------------------------------------------
-    // PUBLIC  METHODS
-    // -----------------------------------------------------------------
-
-    /**
-     * Adds a target to this project.
-     */
-    public void addTarget(Target target) {
-        // XXX check out for name, if null, reject!
-        targets.put(target.getName(), target);
-    }
-
-    /**
-     * Returns the base directory of this project.
-     */
-    public File getBaseDir() {
-        return baseDir;
-    }
-
-    /**
-     * Returns the default target for this project, if there is one. Otherwise
-     * it returns null.
-     */
-    public String getDefaultTargetName() {
-        return defaultTargetName;
-    }
-
-    /**
-     * Returns a short description of this project, if any. If not, returns 
-     * null.
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * Gets the front end that is running this project.
-     */
-    public AntFrontEnd getFrontEnd() {
-        return frontEnd;
-    }
-
-    /**
-     * Returns the parent Project object to this Project if a parent
-     * project exists. If there is not a parent Project object, null
-     * is returned.
-     */
-    public Project getParent() {
-        return parentProject;
-    }
-
-    /**
-     * Returns the target identified with the given name. If no target
-     * is known by the given name, then null is returned.
-     */
-    public Target getTarget(String name) {
-        return (Target)targets.get(name);
-    }
-    
-    /**
-     * Gets an exumeration of all the targets that are part of this project.
-     */
-    public Enumeration getTargets() {
-        return targets.elements();
-    }
-    
-    /**
-     * Gets the name of this project.
-     */
-    public String getName() {
-        return name;
-    }
-    
-    /**
-     * Returns the value of a property. Returns null if the property does
-     * not exist.
-     */
-    public String getProperty(String propertyName) {
-        return properties.getProperty(propertyName);
-    }
-    
-    /**
-     *
-     */
-    //public void setAnt(Ant ant) {
-    //    this.ant = ant;
-    //}
-    
-    /**
-     * Sets the base dir for this project.
-     */
-    public void setBaseDir(File dir) {
-        // XXX should check this to make sure it's a dir!
-        baseDir = dir;
-    }
-    
-    /**
-     * Sets the default target for this project.
-     */
-    public void setDefaultTargetName(String targetName) {
-        defaultTargetName = targetName;
-    }
-    
-    /**
-     * Sets the description for this project.
-     */
-    public void setDescription(String description) {
-        this.description = description;
-    }
-    
-    /**
-     * Sets the front end for this project.
-     */
-    public void setFrontEnd(AntFrontEnd frontEnd) {
-        this.frontEnd = frontEnd;
-    }
-    
-    /**
-     * Sets the name of this project.
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Sets a property on this project. If the property is already
-     * set, this method will override it.
-     */
-    public void setProperty(String propertyName, String propertyValue) {
-        properties.put(propertyName, propertyValue);
-    }
-    
-    /**
-     * Starts a build of this project using the default target if one
-     * is set.
-     */
-    public void startBuild() throws AntException {
-        // XXX need to do something if the default target isn't set..
-        // maybe look for target name 'default', then bail?
-        startBuild(defaultTargetName);
-    }
-    
-    /**
-     * Starts a build of this project with the entry point at the given
-     * target.
-     */
-    public void startBuild(String targetName) throws AntException {
-        
-        // notify AntFrontEnd that we are starting a build on a project
-        
-        frontEnd.notifyProjectStart(this);
-        
-        Target target = getTarget(targetName);
-        
-        frontEnd.notifyTargetStart(target);
-        
-        // XXX don't forget to execute dependancies first!
-        
-        Enumeration enum = target.getTasks().elements();
-        while (enum.hasMoreElements()) {
-            Task task = (Task)enum.nextElement();
-            frontEnd.notifyTaskStart(task);
-            try {
-                AbstractTask aTask = taskManager.getTaskInstance(task.getType());
-                aTask.setProject(this);
-                aTask.setAttributes(task.getAttributes());
-                boolean b = aTask.execute();
-                if (!b) {
-                    String msg = "Task " + task.getType() + " failed";
-                    AntException ae = new AntException(msg);
-                    throw ae;
-                }
-            } catch (Exception e) {
-                AntException ae;
-                if (!(e instanceof AntException)) {
-                    ae = new AntException(e);
-                } else {
-                    ae = (AntException)e;
-                }
-                ae.setProject(this);
-                ae.setTarget(target);
-                ae.setTask(task);
-                throw ae;
-            }
-            frontEnd.notifyTaskEnd(task);
-        }
-        
-        // notify frontEnd that we are done
-        frontEnd.notifyTargetEnd(target);
-        frontEnd.notifyProjectEnd(this);
-    }
-    
-    /**
-     * Givens a string representation of this object. Useful for debugging.
-     */
-    public String toString() {
-        return "Project name=" + name;
-    }
-}
diff --git a/proposal/anteater/source/main/org/apache/ant/ProjectBuilder.java b/proposal/anteater/source/main/org/apache/ant/ProjectBuilder.java
deleted file mode 100644
index ea2eb13..0000000
--- a/proposal/anteater/source/main/org/apache/ant/ProjectBuilder.java
+++ /dev/null
@@ -1,307 +0,0 @@
-// -------------------------------------------------------------------------------
-// Copyright (c)2000 Apache Software Foundation
-// -------------------------------------------------------------------------------
-
-package org.apache.ant;
-
-import java.io.*;
-import java.util.*;
-import javax.xml.parsers.*;
-import org.xml.sax.*;
-
-/**
- * Helper class to build Project object trees.
- *
- * XXX right now this class only deals with the primary levels (project/target/task)
- * and nothing else. Also, it only supports attributes....
- *
- * @author James Duncan Davidson (duncan@apache.org)
- */
-public class ProjectBuilder {
-        
-    // -----------------------------------------------------------------
-    // PRIVATE MEMBERS
-    // -----------------------------------------------------------------
-    
-    /**
-     *
-     */
-    private AntFrontEnd frontEnd;
-    
-    /**
-     *
-     */
-    private SAXParserFactory parserFactory;
-    
-    /**
-     *
-     */
-    private TaskManager taskManager;
-        
-    // -----------------------------------------------------------------
-    // CONSTRUCTORS
-    // -----------------------------------------------------------------
-   
-   
-    /**
-     * Creates a new project builder that will build projects for the given
-     * Ant.
-     */
-    public ProjectBuilder(AntFrontEnd frontEnd) {
-        this.frontEnd = frontEnd;
-        taskManager = new TaskManager(frontEnd);
-        parserFactory = SAXParserFactory.newInstance();
-        parserFactory.setValidating(false);  
-    }
-    
-    // -----------------------------------------------------------------
-    // PUBLIC METHODS
-    // -----------------------------------------------------------------
-    
-    /**
-     * Builds a project from the given file.
-     */
-    public Project buildFromFile(File file) throws AntException {
-        try {
-            SAXParser parser = parserFactory.newSAXParser();
-            BuilderHandlerBase bhb = new BuilderHandlerBase();
-            bhb.setProjectFileLocation(file);
-            parser.parse(file, bhb);
-            Project project = bhb.getProject();
-            project.setFrontEnd(frontEnd);
-            return project;
-        } catch (ParserConfigurationException pce) {
-            throw new AntException(pce);
-        } catch (SAXException se) {
-            Exception e = se.getException();
-            if (e != null && e instanceof AntException) {
-                // it's one of our own thrown from inside the parser to stop it
-                throw (AntException)e;
-            }
-            throw new AntException(se);
-        } catch (IOException ioe) {
-            throw new AntException(ioe);
-        }
-    }
-    
-    /**
-     * Returns the TaskManager associated with this ProjectBuilder and
-     * the projects that it builds
-     */
-    public TaskManager getTaskManager() {
-        return taskManager;
-    }
-    
-    // -----------------------------------------------------------------
-    // INNER CLASSES
-    // -----------------------------------------------------------------    
-    
-    /**
-     * Inner class that implements the needed SAX methods to get all the
-     * data needed out of a build file.
-     */
-    class BuilderHandlerBase extends HandlerBase {
-    
-        private static final int STATE_START = 0;
-        private static final int STATE_PROJECT = 1;
-        private static final int STATE_TARGET = 2;
-        private static final int STATE_TASK = 3;
-        private static final int STATE_DESCRIPTION = 4;
-        private static final int STATE_PROPERTY = 5;
-        private static final int STATE_FINISHED = 99;
-    
-        private int state = STATE_START;
-        
-        private Vector tagCharDataStack = new Vector();
-        
-        private Target currentTarget;
-        private Task currentTask;
-    
-        Project project = new Project(frontEnd, taskManager);
-    
-        Project getProject() {
-            return project;
-        }
-        
-        void setProjectFileLocation(File file) {
-            project.setBaseDir(file.getParentFile());
-        }
-        
-        public void startElement(String name, AttributeList atts) throws SAXException {
-
-            StringBuffer tagCharData = new StringBuffer();
-            tagCharDataStack.insertElementAt(tagCharData, 0);
-            
-            switch (state) {
-            
-              case STATE_START:
-                if (name.equals("project")) {
-                    state = STATE_PROJECT;
-                    String projectName = atts.getValue("name");
-                    if (projectName != null) {
-                        project.setName(projectName);
-                    } else {
-                        String msg = "Project element doesn't contain a name attribute";
-                        AntException ae = new AntException(msg);
-                        throw new SAXException(ae);
-                    }
-                    String defaultTarget = atts.getValue("default");
-                    if (defaultTarget != null) {
-                        project.setDefaultTargetName(defaultTarget);
-                    }
-                    String baseDirName = atts.getValue("basedir");
-                    if (baseDirName != null) {
-                        // XXX need to check to see if base dir exists
-                        project.setBaseDir(new File(baseDirName));
-                    }
-                } else {
-                    String msg = "Project file doesn't contain a project element as " +
-                                 "its root node";
-                    AntException ae = new AntException(msg);
-                    throw new SAXException(ae);
-                }
-                break;
-                
-              case STATE_PROJECT:
-              
-                // valid tags in a project object are: description, property, and target
-              
-                if (name.equals("description")) {
-                    state = STATE_DESCRIPTION;
-                } else if (name.equals("property")) {
-                    state = STATE_PROPERTY;
-                    String propertyName = atts.getValue("name");
-                    String propertyValue = atts.getValue("value");
-                    if (propertyName == null) {
-                        String msg = "Name attribute must be present on property";
-                        AntException ae = new AntException(msg);
-                        throw new SAXException(ae);
-                    } else if (propertyValue == null) {
-                        String msg = "Value attribute must be present on property";
-                        AntException ae = new AntException(msg);
-                        throw new SAXException(ae);
-                    } else {
-                        project.setProperty(propertyName, propertyValue);
-                    }
-                } else if (name.equals("target")) {
-                    state = STATE_TARGET;
-                    String targetName = atts.getValue("name");
-                    if (targetName != null) {
-                        currentTarget = new Target(targetName);
-                        project.addTarget(currentTarget);
-                    } else {
-                        // XXX figure out which target we're talking about! 
-                        // Like a location
-                        String msg = "Target element doesn't contain a name attribute";
-                        AntException ae = new AntException(msg);
-                        throw new SAXException(ae);
-                    }
-                    String depends = atts.getValue("depends");
-                    if (depends != null) {
-                        StringTokenizer tok = new StringTokenizer(depends, ",", false);
-                        while(tok.hasMoreTokens()) {
-                            currentTarget.addDependancy(tok.nextToken().trim());
-                        }
-                    }
-                                            
-                    // XXX add dependency checks
-                } else {
-                    System.out.println("Expecting target, got: " + name);
-                    // XXX exception out
-                }
-                break;
-                
-              case STATE_TARGET:
-              
-                // Valid tags inside target: task
-              
-                state = STATE_TASK;
-                //System.out.println("Getting task: " + name + " for target " + 
-                //                   currentTarget);
-                // XXX need to validate that task type (name) exists in system
-                // else exception out.
-                currentTask = new Task(name);
-                currentTarget.addTask(currentTask);
-                for (int i = 0; i < atts.getLength(); i++) {
-                    String atName = atts.getName(i);
-                    String atValue = atts.getValue(i);
-                    currentTask.addAttribute(atName, atValue);
-                }
-                break;
-                
-              case STATE_TASK:
-              
-                // data in here needs to be reflected into tasks
-                
-                System.out.println("Not yet supporting tags inside of tasks!");
-                System.out.println("The project build will probably bust right here");
-                
-                break;
-                
-              default:
-                System.out.println("I'm not sure, but we're off base here: " + name);
-                // XXX exception out
-            }
-        }
-        
-        public void characters(char ch[], int start, int length) throws SAXException {
-            StringBuffer buf = (StringBuffer)tagCharDataStack.elementAt(0);
-            buf.append(ch, start, length);
-        }
-        
-        public void endElement(String name) throws SAXException {
-            
-            StringBuffer elementData = (StringBuffer)tagCharDataStack.elementAt(0);
-            tagCharDataStack.removeElementAt(0);
-            
-            switch (state) {
-            
-              case STATE_TASK:
-                state = STATE_TARGET;
-                break;
-            
-              case STATE_TARGET:
-                if (name.equals("target")) {
-                    state = STATE_PROJECT;
-                } else {
-                    System.out.println("Expecting to get an end of target, got: " + name);
-                    // XXX exception out.
-                }
-                break;
-            
-              case STATE_DESCRIPTION:
-                if (name.equals("description")) {
-                    state = STATE_PROJECT;
-                    project.setDescription(elementData.toString().trim());
-                } else {
-                    System.out.println("Expecting to get an end of description, got: " +
-                        name);
-                    // XXX exception out.
-                }
-                break;
-            
-              case STATE_PROPERTY:
-                if (name.equals("property")) {
-                    state = STATE_PROJECT;
-                } else {
-                    System.out.println("Expecting to get end of property, got: " + name);
-                    // XXX exception out
-                }
-                break;
-            
-              case STATE_PROJECT:
-                if (name.equals("project")) {
-                    state = STATE_FINISHED;
-                } else {
-                    System.out.println("Expecting to get end of project, got: " + name);
-                    // XXX exception out;
-                }
-                break;
-            
-              default:
-                System.out.println("I'm not sure what we are ending here: " + name);
-                // XXX exception out;
-            }
-        }
-    }
-}
diff --git a/proposal/anteater/source/main/org/apache/ant/Target.java b/proposal/anteater/source/main/org/apache/ant/Target.java
deleted file mode 100644
index 4d5c98a..0000000
--- a/proposal/anteater/source/main/org/apache/ant/Target.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// ---------------------------------------------------------------------
-// (c)2000 Apache Software Foundation
-//
-// ---------------------------------------------------------------------
-
-package org.apache.ant;
-
-import java.util.*;
-
-/**
- * In memory container for an Ant target.
- */
-public class Target {
-
-    // -----------------------------------------------------------------
-    // PRIVATE DATA MEMBERS
-    // -----------------------------------------------------------------
-
-    /**
-     * String containing the name of the target. This name must be
-     * unique withing a project.
-     */
-    private String name;
-
-    /**
-     * Vector containing the names of the targets that this target
-     * depends on.
-     */
-    private Vector dependsList = new Vector();
-
-    /**
-     * Vector containing the tasks that are part of this target.
-     */
-    private Vector tasks = new Vector();
-
-    // -----------------------------------------------------------------
-    // CONSTRUCTORS
-    // -----------------------------------------------------------------
-
-    /**
-     * Constructs a new Target object with the given name.
-     */
-    public Target(String name) {
-        this.name = name;
-    }
-
-    // -----------------------------------------------------------------
-    // PUBLIC ACCESSOR METHODS
-    // -----------------------------------------------------------------
-    
-    /**
-     * Adds a dependancy to this task.
-     */
-    public void addDependancy(String targetName) {
-        dependsList.addElement(targetName);
-    }
-       
-    /**
-     *
-     */
-    public void addTask(Task task) {
-        tasks.addElement(task);
-    }
-    
-    /**
-     * Returns a String containing the name of this Target.
-     */
-    public String getName() {
-        return name;
-    }
-    
-    /**
-     *
-     */
-    public String toString() {
-        return "TARGET: " + name;
-    }
-
-    /**
-     * Returns a Vector of Tasks contained in this Target. 
-     * <p>
-     * Please use caution when using this method. I am not happy
-     * about exposing this data as something other than a 
-     * Collection, but don't want to use 1.1 collections. So, 
-     * this method may change in the future. You have been warned.
-     */
-    public Vector getTasks() {
-        return tasks;
-    }
-}
\ No newline at end of file
diff --git a/proposal/anteater/source/main/org/apache/ant/Task.java b/proposal/anteater/source/main/org/apache/ant/Task.java
deleted file mode 100644
index 363c801..0000000
--- a/proposal/anteater/source/main/org/apache/ant/Task.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// ---------------------------------------------------------------------
-// (c)2000 Apache Software Foundation
-//
-// ---------------------------------------------------------------------
-
-package org.apache.ant;
-
-import java.util.*;
-
-/**
- * In memory container for an Ant target.
- *
- * XXX need a way to query which attributes are valid for this particular
- * task type... Like into Ant object to do this?
- */
-public class Task {
-
-    // -----------------------------------------------------------------
-    // PRIVATE DATA MEMBERS
-    // -----------------------------------------------------------------
-    
-    /**
-     *
-     */
-    private Hashtable attributes = new Hashtable();
-    
-    /**
-     * String containing the type of the task.
-     */
-    private String type;
-
-    // -----------------------------------------------------------------
-    // CONSTRUCTORS
-    // -----------------------------------------------------------------
-
-    /**
-     * Constructs a new Target object with the given name.
-     */
-    public Task(String type) {
-        this.type = type;
-    }
-
-    // -----------------------------------------------------------------
-    // PUBLIC ACCESSOR METHODS
-    // -----------------------------------------------------------------
-    
-    /**
-     *
-     */
-    public void addAttribute(String name, String value) {
-        attributes.put(name, value);
-    }
-    
-    public String getAttribute(String name) {
-        return (String)attributes.get(name);
-    }
-    
-    /**
-     *
-     */
-    public Hashtable getAttributes() {
-        return attributes;
-    }
-    
-    /**
-     *
-     */
-    public Enumeration getAttributeNames() {
-        return attributes.keys();
-    }
-     
-    /**
-     * Returns a String containing the name of this Target.
-     */
-    public String getType() {
-        return type;
-    }
-    
-    /**
-     *
-     */
-    public String toString() {
-        return "TASK: " + type;
-    }
-
-}
\ No newline at end of file
diff --git a/proposal/anteater/source/main/org/apache/ant/TaskManager.java b/proposal/anteater/source/main/org/apache/ant/TaskManager.java
deleted file mode 100644
index 9ffc7e9..0000000
--- a/proposal/anteater/source/main/org/apache/ant/TaskManager.java
+++ /dev/null
@@ -1,268 +0,0 @@
-// -------------------------------------------------------------------------------
-// Copyright (c)2000 Apache Software Foundation
-// -------------------------------------------------------------------------------
-
-package org.apache.ant;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import java.util.zip.*;
-
-/**
- * Manager of tasks and all things related to tasks. Tasks can be found in a
- * wide number of locations -- and most of these locations require class loading
- * help. As well, new nodes on the task search path may be added at any time.
- * When these are added, new tasks should be scanned for.
- *
- * @author James Duncan Davidson (duncan@apache.org)
- */
-public class TaskManager {
-
-    // -----------------------------------------------------------------
-    // PRIVATE DATA MEMBERS
-    // -----------------------------------------------------------------
-    
-    /**
-     * FrontEnd that this TaskManager can communicate through.
-     */
-    private AntFrontEnd frontEnd;
-    
-    /**
-     * Data structure where all the Class definition for all known tasks are
-     * held.
-     */
-    private Hashtable taskClasses = new Hashtable();
-    
-    /**
-     * Data structure that holds all the nodes where tasks are picked up from.
-     */
-    private Vector taskPathNodes = new Vector();
-
-    // -----------------------------------------------------------------
-    // CONSTRUCTORS
-    // -----------------------------------------------------------------
-    
-    /**
-     * Creates a new TaskManager.
-     */
-    TaskManager(AntFrontEnd frontEnd) {
-        this.frontEnd = frontEnd;
-    }
-    
-    // -----------------------------------------------------------------
-    // PUBLIC METHODS
-    // -----------------------------------------------------------------
- 
-    /**
-     * Adds a node to the task path 
-     */
-    public void addTaskPathNode(File file) throws AntException {
-        taskPathNodes.addElement(file);
-        processTaskPathNode(file);
-    }
-
-    // -----------------------------------------------------------------
-    // PACKAGE METHODS
-    // -----------------------------------------------------------------
-    
-    /**
-     *
-     */
-    AbstractTask getTaskInstance(String taskName) throws AntException {
-        Class clazz = (Class)taskClasses.get(taskName);
-        try {
-            return (AbstractTask)clazz.newInstance();
-        } catch (Exception e) { 
-            String msg = "Can't instantiate task: " + taskName;
-            AntException ae = new AntException(msg, e);
-            throw ae;
-        }
-    }
- 
-    // -----------------------------------------------------------------
-    // PRIVATE METHODS
-    // -----------------------------------------------------------------
-   
-    /**
-     * Returns an enum of the task names that are defined in a given 
-     * properties file.
-     */
-    private Enumeration getTaskNames(Properties props) {
-        Vector v = new Vector();
-        String s = props.getProperty("tasks");
-        StringTokenizer tok = new StringTokenizer(s, ",", false);
-        while (tok.hasMoreTokens()) {
-            String taskName = tok.nextToken().trim();
-            v.addElement(taskName);
-        }
-        return v.elements();
-    }
-   
-    /**
-     * Processes a directory to get class defintions from it
-     */
-    private void processDir(File dir) {
-        frontEnd.writeMessage("Scanning " + dir + " for tasks", 
-                                       AntFrontEnd.MSG_LEVEL_LOW);
-        File file = new File(dir, "taskdef.properties");
-        if (file.exists()) {
-            try {
-                InputStream in = new FileInputStream(file);
-                Properties props = new Properties();
-                props.load(in);
-                in.close();
-                
-                Enumeration enum = getTaskNames(props);
-                while (enum.hasMoreElements()) {
-                    String taskName = (String)enum.nextElement();
-                    String taskClass = props.getProperty("task." + taskName + ".class");
-                    URLClassLoader loader = new URLClassLoader(new URL[] {dir.toURL()});
-                    try {
-                        Class clazz = loader.loadClass(taskClass);
-                        frontEnd.writeMessage("Got Task: " + taskName +
-                                                       clazz, AntFrontEnd.MSG_LEVEL_LOW);
-                        taskClasses.put(taskName, clazz);
-                    } catch (ClassNotFoundException cnfe) {
-                        System.out.println("Couldn't load task: " + taskName);
-                        System.out.println(cnfe);
-                        // XXX error out and stop....
-                    }
-                }
-            } catch (IOException ioe) {
-                System.out.println("Could not work with dir: " + dir);
-                System.out.println(ioe);
-                // XXX error out and stop the build
-            }
-        }
-    }
-   
-    /**
-     * Processes a jar file to get class definitions from it
-     */
-    private void processJar(File file) throws AntException {
-        frontEnd.writeMessage("Scanning " + file + " for tasks", 
-                                       AntFrontEnd.MSG_LEVEL_LOW);
-        try {
-            ZipFile zipFile = new ZipFile(file);
-            ZipEntry zipEntry = zipFile.getEntry("taskdef.properties");
-            if (zipEntry != null) {
-                InputStream in = zipFile.getInputStream(zipEntry);
-                Properties props = new Properties();
-                props.load(in);
-                in.close();
-            
-                Enumeration enum = getTaskNames(props);
-                while (enum.hasMoreElements()) {
-
-                    String taskName = (String)enum.nextElement();
-                    String taskClass = props.getProperty("task." + taskName + ".class");
-                    if (taskClass == null) {
-                        String msg = "No class definition for task " + taskName +
-                                     "in jar file " + file;
-                        throw new AntException(msg);
-                    }
-                    URLClassLoader loader = new URLClassLoader(new URL[] {file.toURL()});
-                    try {
-                        Class clazz = loader.loadClass(taskClass);
-                       	frontEnd.writeMessage("Got Task: " + taskName +
-                                                       clazz, AntFrontEnd.MSG_LEVEL_LOW);
-                        taskClasses.put(taskName, clazz);
-                    } catch (ClassNotFoundException cnfe) {
-                        System.out.println("Couldn't load task: " + taskName);
-                        System.out.println(cnfe);
-                        // XXX error out and stop....
-                    }
-                }
-            }
-            // make sure to not leave resources hanging
-            zipFile.close();
-        } catch (IOException ioe) {
-            System.out.println("Couldn't work with file: " + file);
-            System.out.println(ioe);
-            // XXX need to exception out of here properly to stop things 
-        }
-    }
-   
-    /**
-     * Processes a node of the task path searching for task definitions there
-     * and adding them to the list of known tasks
-     */
-    private void processTaskPathNode(File file) throws AntException {
-    
-        // task path nodes can be any of the following:
-        //     * jar file
-        //     * directory of jar files
-        //     * directory holding class files
-        
-        if(file.isDirectory()) {
-            // first look for all jar files here
-            // second look for a taskdefs.properties here to see if we should
-            // treat the directory as a classpath
-            
-            String[] files = file.list();
-            for (int i = 0; i < files.length; i++) {
-                if (files[i].endsWith(".jar")) {
-                    processJar(new File(file, files[i]));
-                } else if (files[i].equals("taskdef.properties")) {
-                    processDir(file);
-                }
-            }
-        } else if (file.getName().endsWith(".jar")) {
-            processJar(file);
-        }
-    }
-    
-    /**
-     * Sets up the taskpath based on the currently running operating
-     * system. In general, the ordering of the taskpath is: user directory,
-     * system directory, and then installation. This allows users or
-     * system admins to override or add tasks.
-     */
-    private void setUpTaskPath() throws AntException {
-        
-        // 1st, add user's home dir.
-        
-        File f;
-        
-        String userHome = System.getProperty("user.home");
-        
-        // generic unix
-        f = new File(userHome + ".ant", "tasks");
-        if (f.exists() && f.isDirectory()) {
-            addTaskPathNode(f);
-        }
-        
-        // macos x
-        f = new File(userHome + "/Library/Ant", "Tasks");
-        if (f.exists() && f.isDirectory()) {
-            addTaskPathNode(f);
-        }
-        
-        // windows -- todo
-        
-        // 2nd, add system local dir.
-        
-        // generic unix
-        f = new File("/usr/local/ant/tasks");
-        if (f.exists() && f.isDirectory()) {
-            addTaskPathNode(f);
-        }
-        
-        // macos x
-        f = new File("/Library/Ant/Tasks");
-        if (f.exists() && f.isDirectory()) {
-            addTaskPathNode(f);
-        }
-        
-        // windows -- todo
-        
-        // 3rd, add installation local dir.
-        
-        //System.out.println("BASE: " + this.getClass().getResource("/"));
-        
-        // XXX ---- not really sure how the best way of getting this info is...
-        // hafta think about it.
-    }
-
-}
diff --git a/proposal/anteater/source/main/org/apache/ant/cli/CLIFrontEnd.java b/proposal/anteater/source/main/org/apache/ant/cli/CLIFrontEnd.java
deleted file mode 100644
index 91cb8f3..0000000
--- a/proposal/anteater/source/main/org/apache/ant/cli/CLIFrontEnd.java
+++ /dev/null
@@ -1,307 +0,0 @@
-// -------------------------------------------------------------------------------
-// Copyright (c)2000 Apache Software Foundation
-// -------------------------------------------------------------------------------
-
-package org.apache.ant.cli;
-
-import java.io.*;
-import java.util.*;
-import org.apache.ant.*;
-
-/**
- * Front end for the Command Line Interface that gets passed to Ant so that
- * it can communicate information to the CLI.
- *
- * @author James Duncan Davidson (duncan@apache.org)
- */
-public class CLIFrontEnd extends AntFrontEnd {
-
-    // -----------------------------------------------------------------
-    // PRIVATE MEMBERS
-    // -----------------------------------------------------------------
-
-    /**
-     *
-     */
-    private String[] args;
-
-    /**
-     * ProjectBuilder that is associated with this frontEnd. 
-     */
-    private ProjectBuilder projectBuilder;
-
-    /**
-     *
-     */
-    private int msgLevelFilter = MSG_LEVEL_MED;
-    
-    /**
-     * TaskManager instance that we can set taskpaths and such on.
-     */
-    private TaskManager taskManager;
-    
-    // -----------------------------------------------------------------
-    // CONSTRUCTORS
-    // ----------------------------------------------------------------- 
-
-    /**
-     * Creates a new CLIFrontEnd that can drive an Ant build from the Command
-     * Line.
-     */
-    public CLIFrontEnd() {
-        projectBuilder = new ProjectBuilder(this);
-        taskManager = projectBuilder.getTaskManager();
-    }
-
-    // -----------------------------------------------------------------
-    // PUBLIC METHODS
-    // -----------------------------------------------------------------    
-
-    /**
-     * Send notification to the FrontEnd that execution has moved into
-     * the scope of a particular project. The default implementation
-     * does nothing. 
-     */
-    public void notifyProjectStart(Project project) {
-        writeMessage("Project Start: " + project.getName(), MSG_LEVEL_LOW);
-    }
-
-    /**
-     * Send notification to the FrontEnd that execution has moved out
-     * of the scope of a particular Project. The default implementation
-     * does nothing.
-     */
-    public void notifyProjectEnd(Project project) {
-        writeMessage("Project End: " + project.getName(), MSG_LEVEL_LOW);
-    }
-    
-    /**
-     * Send notification to the FrontEnd that execution has moved into
-     * the scope of a particular target. The default implementation does
-     * nothing.
-     */
-    public void notifyTargetStart(Target target) {
-        writeMessage("Target Start: " + target.getName(), MSG_LEVEL_LOW);
-    }
-    
-    /**
-     * Send notification to the FrontEnd that execution has moved out of
-     * the scope of a particular target. The default implementation does
-     * nothing.
-     */
-    public void notifyTargetEnd(Target target) {
-        writeMessage("Target End: " + target.getName(), MSG_LEVEL_LOW); 
-    }
-    
-    /**
-     * Send notification to the FrontEnd that execution has moved into the
-     * scope of a particular task. The default implementation does nothing.
-     */
-    public void notifyTaskStart(Task task) {
-        writeMessage("Task Start: " + task.getType(), MSG_LEVEL_LOW);
-    }
-    
-    /**
-     * Send notification to the FrontEnd that execution has moved out of
-     * the scope of a particular task. The default implementation does
-     * nothing.
-     */
-    public void notifyTaskEnd(Task task) {
-        writeMessage("Task End: " + task.getType(), MSG_LEVEL_LOW);
-    }
-
-    /**
-     *
-     */
-    public void run(String[] args) {
-        this.args = args;
-        String target = "";
-        File buildFile = null;
-        writeMessage("Ant(Eater) -- Proposed Ant 2.0");
-        
-        // process through the args set
-        
-        if (isArg("help")) {
-            printHelp();
-            return;
-        }
-        
-        if (isArg("quiet")) {
-            msgLevelFilter = MSG_LEVEL_HIGH;
-        }
-        
-        if (isArg("verbose")) {
-            msgLevelFilter = MSG_LEVEL_LOW;
-        }
-        
-        String argTaskpath = getArgValue("taskpath");
-        if (argTaskpath != null) {
-            if (argTaskpath.equals("")) {
-                writeMessage("Must give a value for -taskpath");
-                return;
-            } else {
-                // XXX need to separate on path seps so that real paths can be taken
-                try {
-                    taskManager.addTaskPathNode(new File(argTaskpath));
-                } catch (AntException ae) {
-                    System.out.println(ae);
-                    System.out.println(ae.getMessage());
-                    ae.printStackTrace(System.out);
-                    return;
-                }
-            }
-        }
-        
-        String argBuildfile = getArgValue("buildfile");
-        if (argBuildfile != null) {
-            if (argBuildfile.equals("")) {
-                writeMessage("Must give a value for -buildfile");
-                return;
-            } else {
-                //try {
-                buildFile = new File(argBuildfile);
-                    //ant.setBuildfile(new File(argBuildfile));
-                //} catch (AntException ae) {
-                //    writeMessage("Can't set buildfile");
-                //    writeMessage(ae.toString());
-                //    return;
-                //}
-            }
-        }
-        
-        target = getTargetArg();
-                
-        // XXX do something if we dont' have a buildfile set!
-        
-        // XXX really should check to make sure that the target is set to something
-        // like get the default...
-        
-        try {
-            Project project = projectBuilder.buildFromFile(buildFile);
-            
-            project.setFrontEnd(this);
-            project.startBuild(target);
-        } catch (AntException ae) {  
-        
-            //XXX this whole write a string at a time message handling
-            // sucks and needs to be improved...
-                    
-            writeMessage("Build Stopped");
-            writeMessage("    Project: " + ae.getProject().getName());
-            writeMessage("     Target: " + ae.getTarget().getName());
-            writeMessage("  Task Type: " + ae.getTask().getType());
-            writeMessage("Details Follow");
-            writeMessage("");
-            writeMessage(ae.getMessage());
-            ae.printStackTrace(System.out);
-            Throwable t = ae.getCause();
-            if (t != null) {
-                writeMessage("");
-                writeMessage("Cause Exception: " + t.toString());
-                writeMessage(t.getMessage());
-                t.printStackTrace(System.out);
-            }
-        }        
-    }
-
-    /**
-     * Writes a message to the front end.
-     */
-    public void writeMessage(String message, int level) {
-        if (level >= msgLevelFilter) {
-            System.out.println(message);
-        }
-    }
-    
-    // -----------------------------------------------------------------
-    // PRIVATE METHODS
-    // ----------------------------------------------------------------- 
-    
-    /**
-     * Returns the value for a given argument name, null if the argument
-     * name isn't in the argument set, or "" if the argument doesn't have
-     * a value.
-     */
-    private String getArgValue(String argName) {
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("-" + argName)) {
-                if (i != args.length - 1) {
-                    return args[i + 1];
-                } else {
-                    return "";
-                }
-            }
-        }
-        return null;
-    }
-    
-    /**
-     * Returns the target that was requested to be built, if any. If no
-     * target is determined, returns null.
-     */
-    public String getTargetArg() {
-        String possibleTarget = getArgValue("target");
-        if (possibleTarget != null) {
-            if (possibleTarget.equals("")) {
-                writeMessage("Must give a value for -target");
-            } else {
-                return possibleTarget;
-            }
-        } 
-        
-        possibleTarget = args[args.length - 1];
-        if (possibleTarget.startsWith("-")) {
-            return null;
-        }
-        if (args[args.length - 2].startsWith("-")) {
-            // our possible target might be an arg value instead of a target
-            // XXX ugh -- there has to be a better way here. We need to hold
-            // a list of all args that don't have values somewhere.
-            if (args[args.length - 2].equals("-help") ||
-                args[args.length - 2].equals("-verbose") ||
-                args[args.length - 2].equals("-quiet")) {
-                // we're ok, the arg before the possible target doesn't have a value
-                return possibleTarget;
-            } else {
-                return null;
-            }
-        } else {
-            return possibleTarget;
-        }
-    }
-    
-    /**
-     * Indicates whether or not a given argument name exists in the argument
-     * set.
-     */
-    private boolean isArg(String argName) {
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("-" + argName)) {
-                return true;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * Prints help to System.out
-     */  
-    private void printHelp() {
-    
-        // XXX resource bundle this.
-    
-        String ls = System.getProperty("line.separator");
-        String msg = "Usage: ant [args] [target]" + ls +
-                     "    Arguments can be any of the following:" + ls +
-                     "        -help" + ls +
-                     "        -taskpath [path]" + ls +
-                     "        -buildfile [file]" +ls +
-                     "        -verbose" + ls +
-                     "        -quiet"   + ls + ls +
-                     "    Note that if no buildfile argument is given, Ant will"+ls+
-                     "    try to find one in the current directory. If there are"+ls+
-                     "    two or more buildfiles in the current directory, it" +ls+
-                     "    will bail.";
-        writeMessage(msg);
-    }
-}
diff --git a/proposal/anteater/source/main/org/apache/ant/cli/Main.java b/proposal/anteater/source/main/org/apache/ant/cli/Main.java
deleted file mode 100644
index 7a81b89..0000000
--- a/proposal/anteater/source/main/org/apache/ant/cli/Main.java
+++ /dev/null
Binary files differ
diff --git a/proposal/antfarm/ant.ant b/proposal/antfarm/ant.ant
deleted file mode 100644
index 4c1a242..0000000
--- a/proposal/antfarm/ant.ant
+++ /dev/null
@@ -1,35 +0,0 @@
-<!-- this is a test -->
-<project name="ant" 
-	xmlns:doc="http:/apache.org/ant-2.0.0/doc" 
-	doc:copyright="Copyright (c) 2000 The Apache Software Foundation">
-
-	<import name="java2sdk"/>
-	<import name="jaxp"/>
-
-	<target name="init" depends="java2sdk:init"/>
-
-	<target name="core" abc:aaaa="foo">
-		<javac dest="temp/core" classpath="">
-			<fileset src="core"/>
-		</javac>
-		<jar jarfile="dist/ant.jar" basedir="temp/core" manifest="core/META-INF/manifest.mf"/>
-	</target>
-
-	<target name="xml" depends="core jaxp:init">
-		<javac dest="temp/xml" classpath="dist/ant.jar:{jaxp:ant.base.dir}/jaxp.jar:{jaxp:ant.base.dir}/crimson.jar">
-			<fileset src="xml"/>
-		</javac>
-		<jar jarfile="dist/xml/ant-xml.jar" basedir="temp/xml"/>
-		<copy src="boot/xml/jaxp.jar" dest="dist/xml/jaxp.jar"/>
-		<copy src="boot/xml/crimson.jar" dest="dist/xml/crimson.jar"/>
-	</target>
-
-	<target name="tasks" depends="core">
-		<javac dest="temp/tasks" classpath="dist/ant.jar">
-			<fileset src="tasks"/>
-		</javac>
-		<jar jarfile="dist/tasks/standard.jar" basedir="temp/tasks"/>
-	</target>
-
-	<target name="all" depends="init core xml tasks"/>
-</project>
\ No newline at end of file
diff --git a/proposal/antfarm/bootstrap.bat b/proposal/antfarm/bootstrap.bat
deleted file mode 100755
index e46e815..0000000
--- a/proposal/antfarm/bootstrap.bat
+++ /dev/null
@@ -1,35 +0,0 @@
-@if not exist boot mkdir boot
-@if not exist boot\tasks mkdir boot\tasks
-@if not exist boot\xml mkdir boot\xml
-@if not exist temp mkdir temp
-@if not exist temp\core mkdir temp\core
-@if not exist temp\xml mkdir temp\xml
-@if not exist temp\tasks mkdir temp\tasks
-
-javac -classpath "" -d temp\core core\org\apache\tools\ant\*.java core\org\apache\tools\ant\cmdline\*.java core\*.java 
-@if errorlevel 1 goto end
-
-jar -cfm boot\ant.jar core\META-INF\manifest.mf -C temp\core .
-@if errorlevel 1 goto end
-
-javac -classpath "boot\ant.jar;jaxp\jaxp.jar;jaxp\crimson.jar" -d temp\xml xml\org\apache\tools\ant\xml\*.java
-@if errorlevel 1 goto end
-
-jar -cf boot\xml\ant-xml.jar -C temp\xml .
-@if errorlevel 1 goto end
-
-javac -classpath "boot\ant.jar" -d temp\tasks tasks\org\apache\tools\ant\tasks\*.java
-@if errorlevel 1 goto end
-
-copy tasks\java2sdk.ant temp\tasks\java2sdk.ant
-
-jar -cf boot\tasks\java2sdk.jar -C temp\tasks .
-@if errorlevel 1 goto end
-
-copy jaxp\jaxp.jar boot\xml\jaxp.jar
-copy jaxp\crimson.jar boot\xml\crimson.jar
-
-@rmdir /s /q temp
-
-
-:end
\ No newline at end of file
diff --git a/proposal/antfarm/bootstrap.sh b/proposal/antfarm/bootstrap.sh
deleted file mode 100644
index ede3704..0000000
--- a/proposal/antfarm/bootstrap.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-if ! test -d boot ; then
-    mkdir -p boot/tasks
-    mkdir -p boot/xml
-fi
-
-if ! test -d  temp ; then
-    mkdir -p temp/core
-    mkdir -p temp/xml
-    mkdir -p temp/tasks
-fi
-
-if  test -z "$JAVAC" ; then
-    JAVAC=javac;
-fi
-
-TOOLS=core/org/apache/tools
-
-${JAVAC} -d temp/core ${TOOLS}/ant/*.java \
-                      ${TOOLS}/ant/cmdline/*.java \
-                      core/*.java
-
-jar -cfm boot/ant.jar core/META-INF/manifest.mf -C temp/core .
-
-${JAVAC} -classpath boot/ant.jar:jaxp/jaxp.jar:jaxp/crimson.jar -d temp/xml xml/org/apache/tools/ant/xml/*.java
-
-jar -cf boot/xml/ant-xml.jar -C temp/xml .
-
-${JAVAC} -classpath boot/ant.jar -d temp/tasks tasks/org/apache/tools/ant/tasks/*.java
-
-cp tasks/java2sdk.ant temp/tasks/java2sdk.ant
-
-jar -cf boot/tasks/java2sdk.jar -C temp/tasks .
-
-cp jaxp/jaxp.jar boot/xml/jaxp.jar
-cp jaxp/crimson.jar boot/xml/crimson.jar
-
-#rm -rf temp
diff --git a/proposal/antfarm/build.bat b/proposal/antfarm/build.bat
deleted file mode 100755
index 6f58b83..0000000
--- a/proposal/antfarm/build.bat
+++ /dev/null
@@ -1 +0,0 @@
-java -classpath boot\ant.jar -Dant.project.path=.;jaxp ant ant:all
\ No newline at end of file
diff --git a/proposal/antfarm/build.sh b/proposal/antfarm/build.sh
deleted file mode 100644
index 5ff9eb6..0000000
--- a/proposal/antfarm/build.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-java -classpath boot/ant.jar -Dant.project.path=.:jaxp ant ant:all
diff --git a/proposal/antfarm/clean.bat b/proposal/antfarm/clean.bat
deleted file mode 100755
index 8d85ad7..0000000
--- a/proposal/antfarm/clean.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-if exist boot rmdir /s /q boot
-if exist temp rmdir /s /q temp
-if exist dist rmdir /s /q dist
diff --git a/proposal/antfarm/clean.sh b/proposal/antfarm/clean.sh
deleted file mode 100644
index df0b792..0000000
--- a/proposal/antfarm/clean.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-if test -d boot ; then
-    rm -rf boot
-fi
-
-if test -d temp ; then
-    rm -rf temp
-fi
-
-if test -d dist ; then
-    rm -rf dist
-fi
diff --git a/proposal/antfarm/core/META-INF/manifest.mf b/proposal/antfarm/core/META-INF/manifest.mf
deleted file mode 100644
index 5de3b41..0000000
--- a/proposal/antfarm/core/META-INF/manifest.mf
+++ /dev/null
@@ -1,2 +0,0 @@
-Main-Class: org.apache.tools.ant.cmdline.Main
-
diff --git a/proposal/antfarm/core/ant.java b/proposal/antfarm/core/ant.java
deleted file mode 100644
index 555667b..0000000
--- a/proposal/antfarm/core/ant.java
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-import org.apache.tools.ant.cmdline.Main;
-
-public class ant {
-    public static void main(String[] args) throws Exception {
-        Main.main(args);
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/AntException.java b/proposal/antfarm/core/org/apache/tools/ant/AntException.java
deleted file mode 100644
index 2dcbb00..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/AntException.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-import java.io.*;
-
-/**
- *  This class represents an error within Ant. The end
- *  user should not be able to trigger this exception under
- *  normal circumstances. The BuildException class should
- *  be used instead to indicate that a compile or some other task
- *  has failed.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class AntException extends RuntimeException {
-    private Throwable cause;
-
-    public AntException(String msg) {
-        super(msg);
-    }
-
-    public AntException(String msg, Throwable cause) {
-        super(msg);
-
-        this.cause = cause;
-    }
-
-    public Throwable getCause() {
-        return cause;
-    }
-
-    public void printStackTrace() {
-        printStackTrace(System.err);
-    }
-
-    public void printStackTrace(PrintStream out) {
-        super.printStackTrace(out);
-
-        if (cause != null) {
-            cause.printStackTrace(out);
-        }
-    }
-
-    public void printStackTrace(PrintWriter out) {
-        super.printStackTrace(out);
-
-        if (cause != null) {
-            cause.printStackTrace(out);
-        }
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/AntSecurityManager.java b/proposal/antfarm/core/org/apache/tools/ant/AntSecurityManager.java
deleted file mode 100644
index c337235..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/AntSecurityManager.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-/**
- *  This security manager is installed by the Workspace class
- *  while tasks are being invoked so that System.exit calls can
- *  be intercepted. Any tasks that tries to call System.exit
- *  will cause an ExitException to be thrown instead of terminating
- *  the VM.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class AntSecurityManager extends SecurityManager {
-    /**
-     *  Throws an ExitException which should be caught at the task level and handled.
-     */
-    public void checkExit(int status) {
-        throw new ExitException(status);
-    }
-
-    /**
-     *  Allows anything.
-     */
-    public void checkPermission(java.security.Permission p) {
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/BuildEvent.java b/proposal/antfarm/core/org/apache/tools/ant/BuildEvent.java
deleted file mode 100644
index 5781857..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/BuildEvent.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-import java.util.EventObject;
-
-/**
- *  This class encapsulates information about events that occur during
- *  a build.
- *
- *  @see BuildListener
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class BuildEvent extends EventObject {
-    public static final int DEBUG = 1;
-    public static final int INFO = 2;
-    public static final int WARN = 3;
-    public static final int ERROR = 4;
-
-    private Workspace workspace;
-    private Project project;
-    private Target target;
-    private Task task;
-    private String message;
-    private int priority;
-    private BuildException exception;
-
-    /**
-     * Construct a BuildEvent for a workspace level event
-     *
-     * @param workspace the workspace that emitted the event.
-     */
-    public BuildEvent(Workspace workspace) {
-        super(workspace);
-        this.workspace = workspace;
-        this.project = null;
-        this.target = null;
-        this.task = null;
-    }
-
-    /**
-     * Construct a BuildEvent for a project level event
-     *
-     * @param project the project that emitted the event.
-     */
-    public BuildEvent(Project project) {
-        super(project);
-        this.workspace = project.getWorkspace();
-        this.project = project;
-        this.target = null;
-        this.task = null;
-    }
-
-    /**
-     * Construct a BuildEvent for a target level event
-     *
-     * @param target the target that emitted the event.
-     */
-    public BuildEvent(Target target) {
-        super(target);
-        this.workspace = target.getProject().getWorkspace();
-        this.project = target.getProject();
-        this.target = target;
-        this.task = null;
-    }
-
-    /**
-     * Construct a BuildEvent for a task level event
-     *
-     * @param task the task that emitted the event.
-     */
-    public BuildEvent(Task task) {
-        super(task);
-        this.workspace = task.getProject().getWorkspace();
-        this.project = task.getProject();
-        this.target = task.getTarget();
-        this.task = task;
-    }
-
-    public void setMessage(String message, int priority) {
-        this.message = message;
-        this.priority = priority;
-    }
-
-    public void setException(BuildException exception) {
-        this.exception = exception;
-    }
-
-    /**
-     *  Returns the project that fired this event.
-     */
-    public Project getProject() {
-        return project;
-    }
-
-    /**
-     *  Returns the target that fired this event.
-     */
-    public Target getTarget() {
-
-        return target;
-    }
-
-    /**
-     *  Returns the task that fired this event.
-     */
-    public Task getTask() {
-        return task;
-    }
-
-    /**
-     *  Returns the logging message. This field will only be set
-     *  for "messageLogged" events.
-     *
-     *  @see BuildListener#messageLogged(BuildEvent)
-     */
-    public String getMessage() {
-        return message;
-    }
-
-    /**
-     *  Returns the priority of the logging message. This field will only
-     *  be set for "messageLogged" events.
-     *
-     *  @see BuildListener#messageLogged(BuildEvent)
-     */
-    public int getPriority(){
-        return priority;
-    }
-
-    /**
-     *  Returns the exception that was thrown, if any. This field will only
-     *  be set for "taskFinished", "targetFinished", and "buildFinished" events.
-     *
-     *  @see BuildListener#taskFinished(BuildEvent)
-     *  @see BuildListener#targetFinished(BuildEvent)
-     *  @see BuildListener#buildFinished(BuildEvent)
-     */
-    public BuildException getException() {
-        return exception;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/BuildException.java b/proposal/antfarm/core/org/apache/tools/ant/BuildException.java
deleted file mode 100644
index bf29e8b..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/BuildException.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-/**
- *  Indicates that an error during the build, such as a compiler error,
- *  a typo in a build file, etc. Errors resulting from coding
- *  errors within ant or a misconfigured setup should use
- *  AntException.
- *
- *  @see AntException
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class BuildException extends Exception {
-    private String location;
-
-    /**
-     *  Constructs a new exception with the specified message.
-     */
-    public BuildException(String message) {
-        super(message);
-    }
-
-    /**
-     *  Constructs a new exception with the specified message and location.
-     */
-    public BuildException(String message, String location) {
-        super(message);
-
-        this.location = location;
-    }
-
-    /**
-     *  Returns the location in the build file where this error.
-     *  occured.
-     */
-    public String getLocation() {
-        return location;
-    }
-
-    /**
-     *  Sets the location in the build file where this error occured.
-     */
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    public String toString() {
-        return (location == null) ? getMessage() : (location + ": " + getMessage());
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/BuildListener.java b/proposal/antfarm/core/org/apache/tools/ant/BuildListener.java
deleted file mode 100644
index e9f16db..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/BuildListener.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-import java.util.EventListener;
-
-/**
- *  Objects that implement this interface can be notified when
- *  things happened during a build.
- *
- *  @see BuildEvent
- *  @see Project#addBuildListener(BuildListener)
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public interface BuildListener extends EventListener {
-
-    /**
-     *  Fired before any targets are started.
-     */
-    public void buildStarted(BuildEvent event);
-
-    /**
-     *  Fired after the last target has finished. This event
-     *  will still be thrown if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void buildFinished(BuildEvent event);
-
-    /**
-     *  Fired before a project file is parsed.
-     */
-    public void importStarted(BuildEvent event);
-
-    /**
-     *  Fired after a project file is parsed.
-     */
-    public void importFinished(BuildEvent event);
-
-    /**
-     *  Fired when a target is started.
-     *
-     *  @see BuildEvent#getTarget()
-     */
-    public void targetStarted(BuildEvent event);
-
-    /**
-     *  Fired when a target has finished. This event will
-     *  still be thrown if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void targetFinished(BuildEvent event);
-
-    /**
-     *  Fired when a task is started.
-     *
-     *  @see BuildEvent#getTask()
-     */
-    public void taskStarted(BuildEvent event);
-
-    /**
-     *  Fired when a task has finished. This event will still
-     *  be throw if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void taskFinished(BuildEvent event);
-
-    /**
-     *  Fired whenever a message is logged.
-     *
-     *  @see BuildEvent#getMessage()
-     *  @see BuildEvent#getPriority()
-     */
-    public void messageLogged(BuildEvent event);
-
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/ExitException.java b/proposal/antfarm/core/org/apache/tools/ant/ExitException.java
deleted file mode 100644
index 414d0b3..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/ExitException.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-/**
- *  Thrown by the AntSecurityManager whenever a task tries
- *  to call System.exit().
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class ExitException extends RuntimeException {
-    private int status;
-
-    public ExitException(int status) {
-        this.status = status;
-    }
-
-    public int getStatus() {
-        return status;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/Import.java b/proposal/antfarm/core/org/apache/tools/ant/Import.java
deleted file mode 100644
index 4ea4f46..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/Import.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-/**
- *  Represents an import statement from a project.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class Import {
-    private Project project;
-    private String name;
-    private String location;
-
-    public Import(Project project, String name) {
-        this.project = project;
-        this.name = name;
-        this.location = location;
-    }
-
-    public Project getProject() {
-        return project;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getLocation() {
-        return location;
-    }
-
-    public void setLocation(String location) {
-        this.location = location;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/Importer.java b/proposal/antfarm/core/org/apache/tools/ant/Importer.java
deleted file mode 100644
index b561a47..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/Importer.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-import java.util.*;
-
-/**
- *  Used by a workspace to read project files.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public interface Importer {
-    public void importProject(Project project) throws BuildException;
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/Load.java b/proposal/antfarm/core/org/apache/tools/ant/Load.java
deleted file mode 100644
index 7825ddc..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/Load.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-import java.net.*;
-
-/**
- *  The only task that gets loaded by default. It can be used
- *  to dynamically load any other required tasks.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class Load extends Task {
-    private String name;
-    private String classname;
-
-    public void execute() throws BuildException {
-        try {
-            getWorkspace().debug("Loading " + name);
-            ClassLoader loader = new URLClassLoader(
-                new URL[] { getProject().getBase() },
-                getWorkspace().getClass().getClassLoader());
-
-            getWorkspace().registerTask(name, loader.loadClass(classname));
-        }
-        catch(ClassNotFoundException exc) {
-            throw new BuildException("Class \"" + classname + "\" not found");
-        }
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getClassname() {
-        return classname;
-    }
-
-    public void setClassname(String classname) {
-        this.classname = classname;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/Project.java b/proposal/antfarm/core/org/apache/tools/ant/Project.java
deleted file mode 100644
index 622bafc..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/Project.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-
-/**
- *  Stores the information for a single project file. Each project
- *  has its own namespace for variable names and target names.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class Project {
-    private Workspace workspace;
-    private String name;
-    private URL base;
-    private String location;
-    private List imports;
-    private Map targets;
-    private Map variables;
-
-    /**
-     *  Constructs a new project. Should only be called by the Workspace class.
-     */
-    Project(Workspace workspace, String name) {
-        this.workspace = workspace;
-        this.name = name;
-        this.location = null;
-        this.imports = new ArrayList();
-        this.targets = new HashMap();
-        this.variables = new HashMap();
-    }
-
-    /**
-     *  Returns the workspace that this project belongs to.
-     */
-    public Workspace getWorkspace() {
-        return workspace;
-    }
-
-    /**
-     *  Returns the name of this project.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     *  The directory or jar file where this project file was located.
-     */
-    public URL getBase() {
-        return base;
-    }
-
-    /**
-     *  The directory where this project file was located.
-     *
-     *  @throws AntException if this project was loaded from a jar and not a directory.
-     */
-    public File getBaseDir() {
-        if (base.getProtocol().equals("file")) {
-            return new File(base.getFile());
-        }
-        else {
-            throw new AntException(base.toString() + " is not a directory");
-        }
-    }
-
-    public void setBase(URL base) {
-        this.base = base;
-
-        if (base.getProtocol().equals("file")) {
-            variables.put("ant.base.dir", base.getFile());
-        }
-    }
-
-    public String getLocation() {
-        return location;
-    }
-
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    /**
-     *  Creates an empty target with the specied name.
-     */
-    public Target createTarget(String name) throws BuildException {
-        Target target = new Target(this, name);
-        Target prevTarget = (Target) targets.put(name, target);
-
-        if (prevTarget != null) {
-            String msg = "Target with name \"" + name + "\" already exists";
-            if (prevTarget.getLocation() != null) {
-                msg = msg + " at " + prevTarget.getLocation();
-            }
-            throw new BuildException(msg);
-        }
-
-        return target;
-    }
-
-    /**
-     *  Returns the target with the specified name.
-     *
-     *  @throws AntException if the target doesn't exist.
-     */
-    public Target getTarget(String name) throws BuildException {
-        Target target = (Target) targets.get(name);
-        if (target == null) {
-            throw new BuildException("Target \"" + name + "\" not found");
-        }
-        return target;
-    }
-
-    public Collection getTargets() {
-        return targets.values();
-    }
-
-    /**
-     *  Indicates the this project relies on variables or targets in another project.
-     */
-    public Import createImport(String name) {
-        Import imp = new Import(this, name);
-        imports.add(imp);
-        return imp;
-    }
-
-    /**
-     *  Returns the list of projects that this project imports.
-     */
-    public List getImports() {
-        return imports;
-    }
-
-    /**
-     *  Returns the value of the variable. Variables from other
-     *  projects may be referenced by using the ':' operator.
-     */
-    public String getVariable(String name) throws BuildException {
-        int pos = name.indexOf(Workspace.SCOPE_SEPARATOR);
-        if (pos == -1) {
-            String value = (String) variables.get(name);
-            if (value == null) {
-                throw new BuildException("Variable \"" + name + "\" not defined");
-            }
-            return value;
-        }
-        else {
-            String projectName = name.substring(0, pos);
-            String variableName = name.substring(pos + 1);
-            Project project = workspace.getProject(projectName);
-            return project.getVariable(variableName);
-        }
-    }
-
-    /**
-     *  Sets the value of the variable. Variables from other
-     *  projects may be referenced by using the ':' operator.
-     */
-    public void setVariable(String name, String value) throws BuildException {
-        int pos = name.indexOf(Workspace.SCOPE_SEPARATOR);
-        if (pos == -1) {
-            variables.put(name, value);
-        }
-        else {
-            String projectName = name.substring(0, pos);
-            String variableName = name.substring(pos + 1);
-            Project project = workspace.getProject(projectName);
-            project.setVariable(variableName, value);
-        }
-    }
-
-    public char getPathSeparator() {
-        return ':';
-    }
-}
diff --git a/proposal/antfarm/core/org/apache/tools/ant/Target.java b/proposal/antfarm/core/org/apache/tools/ant/Target.java
deleted file mode 100644
index ddf4a94..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/Target.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-import java.util.*;
-
-/**
- *  Represents a set of actions to be executed, which may or may
- *  not depend on other sets of actions.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class Target {
-    private Project project;
-    private String name;
-    private String location;
-    private List tasks;
-    private List depends;
-
-    /**
-     *  Called by the Project class to create new targets.
-     */
-    Target(Project project, String name) {
-        this.project = project;
-        this.name = name;
-        this.location = null;
-        this.tasks = new ArrayList();
-        this.depends = new ArrayList();
-    }
-
-    public Project getProject() {
-        return project;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getLocation() {
-        return location;
-    }
-
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    public List getTasks() {
-        return tasks;
-    }
-
-    public void addDepend(String depend) {
-        // If no project was specified, use this target's project
-        if (depend.indexOf(Workspace.SCOPE_SEPARATOR) == -1) {
-            depend = getProject().getName() + Workspace.SCOPE_SEPARATOR + depend;
-        }
-        depends.add(depend);
-    }
-
-    public List getDepends() {
-        return depends;
-    }
-
-    /**
-     *  Creates a task proxy for this target. The proxy will
-     *  be converted into an actual task object at build time.
-     */
-    public TaskProxy createTaskProxy(String name) {
-        TaskProxy proxy = new TaskProxy(this, name);
-        tasks.add(proxy);
-        return proxy;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/Task.java b/proposal/antfarm/core/org/apache/tools/ant/Task.java
deleted file mode 100644
index cacae8b..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/Task.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-/**
- *  Abstract superclass for all task objects. Any class that
- *  extends this class can be plugged into a workspace by using the "load"
- *  task.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public abstract class Task {
-    private Workspace workspace;
-    private Project project;
-    private Target target;
-
-    public abstract void execute() throws BuildException;
-
-    public Workspace getWorkspace() {
-        return workspace;
-    }
-
-    void setWorkspace(Workspace workspace) {
-        this.workspace = workspace;
-    }
-
-    public Project getProject() {
-        return project;
-    }
-
-    void setProject(Project project) {
-        this.project = project;
-    }
-
-    public Target getTarget() {
-        return target;
-    }
-
-    void setTarget(Target target) {
-        this.target = target;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/TaskData.java b/proposal/antfarm/core/org/apache/tools/ant/TaskData.java
deleted file mode 100644
index 7d49bc4..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/TaskData.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-import java.beans.*;
-import java.lang.reflect.*;
-import java.util.*;
-
-/**
- *  This class stores info about a bean's properties so that
- *  the actual bean can be instantiated at a later time. This data
- *  is used to store info about a task, since the actual
- *  task class might not be loaded until after parsing is completed.
- *
- *  @see TaskProxy
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class TaskData {
-    private TaskProxy proxy;
-    private String location;
-    private String text;
-    private Map properties;
-
-    /**
-     *  Constructs a new TaskData under the specified task.
-     */
-    public TaskData(TaskProxy proxy) {
-        this.proxy = proxy;
-        this.location = null;
-        this.properties = new HashMap();
-    }
-
-    /**
-     *  Returns the task proxy that this data is associated with.
-     */
-    public TaskProxy getTaskProxy() {
-        return proxy;
-    }
-
-    /**
-     *  Returns the location in the build fiole where this data was defined.
-     */
-    public String getLocation() {
-        return location;
-    }
-
-    /**
-     *  Returns the location in the build fiole where this data was defined.
-     */
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    /**
-     *  Sets the text for this bean data, for cases where the bean is a simple
-     *  type like String or int.
-     */
-    public void setText(String text) {
-        this.text = text;
-    }
-
-
-    /**
-     *  Sets the value of a property on the bean. Multiple properties can be
-     *  added with the same name only if the property on the bean is an array.
-     */
-    public TaskData addProperty(String name) {
-        TaskData data = new TaskData(proxy);
-        getProperties(name).add(data);
-        return data;
-    }
-
-    /**
-     *  Returns the list of property values for the specified name.
-     */
-    private List getProperties(String name) {
-        List result = (List) properties.get(name);
-        if (result == null) {
-            result = new ArrayList();
-            properties.put(name, result);
-        }
-        return result;
-    }
-
-    /**
-     *  Creates a new bean instance and initializes its properties.
-     */
-    public Object createBean(Class type) throws BuildException {
-        Object bean = null;
-
-        // See if an editor exists for this type
-        PropertyEditor editor = PropertyEditorManager.findEditor(type);
-
-        if (editor == null) {
-            // We don't know how to handle text for types without editors
-            if (text != null) {
-                throw new BuildException("Unexpected text \"" + text + "\"", location);
-            }
-
-            try {
-                bean = type.newInstance();
-            }
-            catch(InstantiationException exc) {
-                throw new AntException("Unable to instantiate " + type.getName(), exc);
-            }
-            catch(IllegalAccessException exc) {
-                throw new AntException("Unable to access constructor for " + type.getName(), exc);
-            }
-        }
-        else {
-            try {
-                // Let the editor parse the text
-                editor.setAsText(parseVariables(text));
-            }
-            catch(NumberFormatException exc) {
-                throw new BuildException("\"" + text + "\" is not a valid number", location);
-            }
-
-            bean = editor.getValue();
-        }
-
-        // Update the fields on the bean
-        updateProperties(bean);
-
-        return bean;
-    }
-
-    /**
-     *  Sets all of the property values on the bean.
-     */
-    private void updateProperties(Object bean) throws BuildException {
-
-        // Call setProperty for each property that's been defined
-        Iterator itr = properties.entrySet().iterator();
-        while (itr.hasNext()) {
-            Map.Entry entry = (Map.Entry) itr.next();
-            String name = (String) entry.getKey();
-            List values = (List) entry.getValue();
-            setProperty(bean, name, values);
-        }
-    }
-
-    /**
-     *  Finds the PropertyDescriptor for the specifed property and sets it.
-     */
-    private void setProperty(Object bean, String name, List value) throws BuildException {
-        PropertyDescriptor[] descriptors = getPropertyDescriptors(bean.getClass());
-
-        // Search for the property with the matching name
-        for (int i = 0; i < descriptors.length; i++) {
-            if (descriptors[i].getName().equals(name)) {
-                setProperty(bean, descriptors[i], value);
-                return;
-            }
-        }
-
-        throw new BuildException("Unexpected attribute \"" + name + "\"", location);
-    }
-
-    /**
-     *  Sets a single property on a bean.
-     */
-    private static void setProperty(Object obj, PropertyDescriptor descriptor, List values) throws BuildException {
-        Object value = null;
-
-        Class type = descriptor.getPropertyType();
-
-        if (type.isArray()) {
-            value = createBeans(type.getComponentType(), values);
-        }
-        else if (values.size() == 1) {
-            TaskData data = (TaskData) values.get(0);
-            value = data.createBean(type);
-
-        }
-
-        try {
-            descriptor.getWriteMethod().invoke(obj, new Object[] { value });
-        }
-        catch(IllegalAccessException exc) {
-            throw new AntException("Unable to access write method for \"" + descriptor.getName() + "\"", exc);
-        }
-        catch(InvocationTargetException exc) {
-            throw new AntException("Unable to set property \"" + descriptor.getName() + "\"", exc.getTargetException());
-        }
-    }
-
-    /**
-     *  Creates a number of beans with the same type using the list of TaskData's
-     */
-    private static Object[] createBeans(Class type, List values) throws BuildException {
-        Object[] beans = (Object[]) Array.newInstance(type, values.size());
-        int i = 0;
-        Iterator itr = values.iterator();
-        while (itr.hasNext()) {
-            TaskData data = (TaskData) itr.next();
-            beans[i++] = data.createBean(type);
-        }
-        return beans;
-    }
-
-    /**
-     *  Uses the Introspector class to lookup the property descriptors for the class.
-     */
-    private static PropertyDescriptor[] getPropertyDescriptors(Class type) {
-        try {
-            return Introspector.getBeanInfo(type, Object.class).getPropertyDescriptors();
-        }
-        catch(IntrospectionException exc) {
-            throw new AntException("Unable to get bean info for " + type.getName());
-        }
-    }
-
-    /**
-     *  Replaces any variables in the input string with their values.
-     */
-    private String parseVariables(String input) throws BuildException {
-        StringBuffer output = new StringBuffer();
-
-        int start = 0;
-        int end = 0;
-        while ((start = input.indexOf('{', end)) != -1) {
-            output.append(input.substring(end,start));
-            end = input.indexOf('}', start);
-            if (end != -1) {
-                String name = input.substring(++start, end++);
-                String value = proxy.getTarget().getProject().getVariable(name);
-                if (value == null) {
-                    throw new BuildException("The variable \"" + name + "\" has not been defined");
-                }
-                output.append(value);
-            }
-        }
-
-        output.append(input.substring(end));
-
-        return output.toString();
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/TaskProxy.java b/proposal/antfarm/core/org/apache/tools/ant/TaskProxy.java
deleted file mode 100644
index 13e7f0e..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/TaskProxy.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-/**
- *  This class stores the information needed to
- *  instantiate a task object. It basically consists of
- *  the task name and a TaskData object, which stores the
- *  values of the fields.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class TaskProxy {
-    private Target target;
-    private String name;
-    private TaskData data;
-    private String location;
-
-    public TaskProxy(Target target, String name) {
-        this.target = target;
-        this.name = name;
-        this.data = new TaskData(this);
-    }
-
-    public Target getTarget() {
-        return target;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getLocation() {
-        return location;
-    }
-
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    public TaskData getData() {
-        return data;
-    }
-
-    /**
-     *  Finds the class for this task name, and creates an
-     *  instance of it using TaskData.createBean().
-     */
-    public Task createTask() throws BuildException {
-        Class type = target.getProject().getWorkspace().getTaskClass(name);
-        return (Task) data.createBean(type);
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/Workspace.java b/proposal/antfarm/core/org/apache/tools/ant/Workspace.java
deleted file mode 100644
index 4cc99c0..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/Workspace.java
+++ /dev/null
@@ -1,449 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant;
-
-import java.util.*;
-
-/**
- *  The main class in the Ant class hierarchy. A workspace contains
- *  multiple projects, which in turn contain multiple targets, which
- *  in turn contain multiple task proxies. The workspace also handles
- *  the sorting and execution of targets during a build.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class Workspace {
-    public static final char SCOPE_SEPARATOR = ':';
-
-    private Importer importer;
-    private Map projects;
-    private Map tasks;
-    private List listeners;
-
-    private Task currentTask = null;
-
-    /**
-     *  Constructs new Ant workspace with no projects. The only
-     *  task that will be registered is the "load" task.
-     *
-     *  The importer is used to handle the actual reading of build files.
-     *  In theory, different importers could be used to read project info from
-     *  DOM trees, serialized objects, databases, etc.
-     */
-    public Workspace(Importer importer) {
-        this.importer = importer;
-        this.projects = new HashMap();
-        this.tasks = new HashMap();
-        this.listeners = new ArrayList();
-
-        registerTask("load", Load.class);
-    }
-
-    /**
-     *  Assigns a task class to a name.
-     */
-    public void registerTask(String name, Class type) {
-        tasks.put(name, type);
-    }
-
-    /**
-     *  Returns the class for a task with the specified name.
-     */
-    public Class getTaskClass(String name) throws BuildException {
-        Class type = (Class) tasks.get(name);
-        if (type == null) {
-            throw new BuildException("No task named \"" + name + "\" has been loaded");
-        }
-        return type;
-    }
-
-    /**
-     *  Creates a project with the specified name. The project initially
-     *  contains no targets.
-     */
-    public Project createProject(String name) {
-        Project project = new Project(this, name);
-        projects.put(name, project);
-        return project;
-    }
-
-    /**
-     *  Returns the project with the specified name, or throws
-     *  an exception if no project exists with that name.
-     */
-    public Project getProject(String name) throws BuildException {
-        Project project = (Project) projects.get(name);
-        if (project == null) {
-            throw new BuildException("Project \"" + name + "\" not found");
-        }
-        return project;
-    }
-
-    /**
-     *  Builds all of the targets in the list. Target names must
-     *  be of the form projectname:targetname.
-     */
-    public boolean build(List fullNames) throws BuildException {
-
-        // This lets the tasks intercept System.exit() calls
-        SecurityManager sm = System.getSecurityManager();
-        System.setSecurityManager(new AntSecurityManager());
-
-        fireBuildStarted();
-
-        try {
-            // Parse the project files...
-            importTargets(fullNames);
-
-            // ...figure out the build order...
-            List toDoList = sortTargets(fullNames);
-
-            // ...and build the targets
-            Iterator itr = toDoList.iterator();
-            while (itr.hasNext()) {
-                Target target = (Target) itr.next();
-                buildTarget(target);
-            }
-            fireBuildFinished(null);
-            return true;
-        }
-        catch(BuildException exc) {
-            fireBuildFinished(exc);
-            return false;
-        }
-        finally {
-            System.setSecurityManager(sm);
-        }
-    }
-
-    /**
-     *  Adds a listener to the workspace.
-     */
-    public void addBuildListener(BuildListener listener) {
-        listeners.add(listener);
-    }
-
-    /**
-     *  Removes a listener to the workspace.
-     */
-    public void removeBuildListener(BuildListener listener) {
-        listeners.remove(listener);
-    }
-
-    /**
-     *  Fires a messageLogged event with DEBUG priority
-     */
-    public void debug(String message) {
-        fireMessageLogged(message, BuildEvent.DEBUG);
-    }
-
-    /**
-     *  Fires a messageLogged event with INFO priority
-     */
-    public void info(String message) {
-        fireMessageLogged(message, BuildEvent.INFO);
-    }
-
-    /**
-     *  Fires a messageLogged event with WARN priority
-     */
-    public void warn(String message) {
-        fireMessageLogged(message, BuildEvent.WARN);
-    }
-
-    /**
-     *  Fires a messageLogged event with ERROR priority
-     */
-    public void error(String message) {
-        fireMessageLogged(message, BuildEvent.ERROR);
-    }
-
-    /**
-     *  Imports into the workspace all of the projects required to
-     *  build a set of targets.
-     */
-    private void importTargets(List fullNames) throws BuildException {
-        Iterator itr = fullNames.iterator();
-        while (itr.hasNext()) {
-            String fullName = (String) itr.next();
-            String projectName = getProjectName(fullName);
-            importProject(projectName);
-        }
-    }
-
-    /**
-     *  Imports the project into the workspace, as well as any others
-     *  that the project depends on.
-     */
-    public Project importProject(String projectName) throws BuildException {
-        Project project = (Project) projects.get(projectName);
-
-        // Don't parse a project file more than once
-        if (project == null) {
-
-            // Parse the project file
-            project = createProject(projectName);
-
-            fireImportStarted(project);
-            try {
-                importer.importProject(project);
-                fireImportFinished(project, null);
-            }
-            catch(BuildException exc) {
-                fireImportFinished(project, exc);
-                throw exc;
-            }
-
-            // Parse any imported projects as well
-            Iterator itr = project.getImports().iterator();
-            while (itr.hasNext()) {
-                Import imp = (Import) itr.next();
-                importProject(imp.getName());
-            }
-        }
-
-        return project;
-    }
-
-
-
-    /**
-     *  Builds a specific target. This assumes that the targets it depends
-     *  on have already been built.
-     */
-    private void buildTarget(Target target) throws BuildException {
-        fireTargetStarted(target);
-
-        try {
-            List tasks = target.getTasks();
-            Iterator itr = tasks.iterator();
-            while (itr.hasNext()) {
-                TaskProxy proxy = (TaskProxy) itr.next();
-                executeTask(target, proxy);
-            }
-
-            fireTargetFinished(target, null);
-        }
-        catch(BuildException exc) {
-            fireTargetFinished(target, null);
-            throw exc;
-        }
-    }
-
-    /**
-     *  Instantiates the task from the proxy and executes.
-     */
-    private void executeTask(Target target, TaskProxy proxy) throws BuildException {
-        Task task = proxy.createTask();
-        task.setWorkspace(this);
-        task.setProject(target.getProject());
-        task.setTarget(target);
-
-        fireTaskStarted(task);
-        currentTask = task;
-        try {
-            task.execute();
-
-            fireTaskFinished(task, null);
-        }
-        catch(BuildException exc) {
-            exc.setLocation(proxy.getLocation());
-            fireTaskFinished(task, exc);
-            throw exc;
-        }
-        finally {
-            currentTask = null;
-        }
-    }
-
-    /**
-     *  Does a topological sort on a list of target names. Returns
-     *  a list of Target objects in the order to be executed.
-     */
-    private List sortTargets(List fullNames) throws BuildException {
-        List results = new ArrayList();
-        sortTargets(results, new Stack(), fullNames);
-        return results;
-    }
-
-    private void sortTargets(List results, Stack visited, List fullNames) throws BuildException {
-        Iterator itr = fullNames.iterator();
-        while (itr.hasNext()) {
-            String fullName = (String) itr.next();
-
-            // Check for cycles
-            if (visited.contains(fullName)) {
-                throwCyclicDependency(visited, fullName);
-            }
-
-            // Check if we're already added this target to the list
-            Target target = getTarget(fullName);
-            if (results.contains(target)) {
-                continue;
-            }
-
-            visited.push(fullName);
-            sortTargets(results, visited, target.getDepends());
-            results.add(target);
-            visited.pop();
-        }
-    }
-
-    /**
-     *  Creates and throws an exception indicating a cyclic dependency.
-     */
-    private void throwCyclicDependency(Stack visited, String fullName) throws BuildException {
-        StringBuffer msg = new StringBuffer("Cyclic dependency: ");
-        for (int i = 0; i < visited.size(); i++) {
-            msg.append((String)visited.get(i));
-            msg.append(" -> ");
-        }
-        msg.append(fullName);
-        throw new BuildException(msg.toString());
-    }
-
-    /**
-     *  Parses the full target name into is project and target components,
-     *  then locates the Target object.
-     */
-    private Target getTarget(String fullName) throws BuildException {
-        String projectName = getProjectName(fullName);
-        String targetName = getTargetName(fullName);
-
-        Project project = (Project) projects.get(projectName);
-        if (project == null) {
-            throw new BuildException("Project \"" + projectName + "\" not found");
-        }
-
-        Target target = project.getTarget(targetName);
-        if (target == null) {
-            throw new BuildException("Target \"" + fullName + "\" not found");
-        }
-
-        return target;
-    }
-
-    /**
-     *  Returns the project portion of a full target name.
-     */
-    public static String getProjectName(String fullName) throws BuildException {
-        int pos = fullName.indexOf(SCOPE_SEPARATOR);
-        if (pos == -1 || pos == 0) {
-            throw new BuildException("\"" + fullName + "\" is not a valid target name");
-        }
-
-        return fullName.substring(0, pos);
-    }
-
-    /**
-     *  Returns the target portion of a full target name.
-     */
-    public static String getTargetName(String fullName) throws BuildException {
-        int pos = fullName.indexOf(SCOPE_SEPARATOR);
-        if (pos == -1 || pos == 0) {
-            throw new BuildException("\"" + fullName + "\" is not a valid target name");
-        }
-
-        return fullName.substring(pos + 1);
-    }
-
-    private void fireMessageLogged(String message, int priority) {
-        BuildEvent event;
-        if (currentTask == null) {
-            event = new BuildEvent(this);
-        }
-        else {
-            event = new BuildEvent(currentTask);
-        }
-        event.setMessage(message, priority);
-
-        Iterator itr = listeners.iterator();
-        while (itr.hasNext()) {
-            BuildListener listener = (BuildListener) itr.next();
-            listener.messageLogged(event);
-        }
-    }
-
-    private void fireBuildStarted() {
-        Iterator itr = listeners.iterator();
-        while (itr.hasNext()) {
-            BuildListener listener = (BuildListener) itr.next();
-            BuildEvent event = new BuildEvent(this);
-            listener.buildStarted(event);
-        }
-    }
-
-    private void fireBuildFinished(BuildException exc) {
-        BuildEvent event = new BuildEvent(this);
-        event.setException(exc);
-
-        Iterator itr = listeners.iterator();
-        while (itr.hasNext()) {
-            BuildListener listener = (BuildListener) itr.next();
-            listener.buildFinished(event);
-        }
-    }
-
-    private void fireImportStarted(Project project) {
-        BuildEvent event = new BuildEvent(project);
-
-        Iterator itr = listeners.iterator();
-        while (itr.hasNext()) {
-            BuildListener listener = (BuildListener) itr.next();
-            listener.importStarted(event);
-        }
-    }
-
-    private void fireImportFinished(Project project, BuildException exc) {
-        BuildEvent event = new BuildEvent(project);
-        event.setException(exc);
-
-        Iterator itr = listeners.iterator();
-        while (itr.hasNext()) {
-            BuildListener listener = (BuildListener) itr.next();
-            listener.importFinished(event);
-        }
-    }
-
-    private void fireTargetStarted(Target target) {
-        BuildEvent event = new BuildEvent(target);
-
-        Iterator itr = listeners.iterator();
-        while (itr.hasNext()) {
-            BuildListener listener = (BuildListener) itr.next();
-            listener.targetStarted(event);
-        }
-    }
-
-    private void fireTargetFinished(Target target, BuildException exc) {
-        BuildEvent event = new BuildEvent(target);
-        event.setException(exc);
-
-        Iterator itr = listeners.iterator();
-        while (itr.hasNext()) {
-            BuildListener listener = (BuildListener) itr.next();
-            listener.targetFinished(event);
-        }
-    }
-
-    private void fireTaskStarted(Task task) {
-        BuildEvent event = new BuildEvent(task);
-
-        Iterator itr = listeners.iterator();
-        while (itr.hasNext()) {
-            BuildListener listener = (BuildListener) itr.next();
-            listener.taskStarted(event);
-        }
-    }
-
-    private void fireTaskFinished(Task task, BuildException exc) {
-        BuildEvent event = new BuildEvent(task);
-        event.setException(exc);
-
-        Iterator itr = listeners.iterator();
-        while (itr.hasNext()) {
-            BuildListener listener = (BuildListener) itr.next();
-            listener.taskFinished(event);
-        }
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/cmdline/DefaultLogger.java b/proposal/antfarm/core/org/apache/tools/ant/cmdline/DefaultLogger.java
deleted file mode 100644
index 893351f..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/cmdline/DefaultLogger.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.cmdline;
-
-import java.io.*;
-import org.apache.tools.ant.*;
-
-/**
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class DefaultLogger implements BuildListener {
-    private PrintStream out;
-
-    public DefaultLogger(PrintStream out) {
-        this.out = out;
-    }
-
-    public void buildStarted(BuildEvent event) {
-    }
-
-    public void buildFinished(BuildEvent event) {
-        BuildException exc = event.getException();
-        out.println();
-        if (exc == null) {
-            out.println("BUILD SUCCESSFUL");
-        }
-        else {
-            out.println("BUILD FAILED");
-            out.println();
-            out.println(exc);
-        }
-    }
-
-    public void importStarted(BuildEvent event) {
-        out.println("Importing: " + event.getProject().getName());
-    }
-
-    public void importFinished(BuildEvent event) {
-    }
-
-    public void targetStarted(BuildEvent event) {
-        out.println("\n[" + event.getProject().getName() + ":" + event.getTarget().getName() + "]");
-    }
-
-    public void targetFinished(BuildEvent event) {
-    }
-
-    public void taskStarted(BuildEvent event) {
-    }
-
-    public void taskFinished(BuildEvent event) {
-    }
-
-    public void messageLogged(BuildEvent event) {
-        out.println("    " + event.getMessage());
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/core/org/apache/tools/ant/cmdline/Main.java b/proposal/antfarm/core/org/apache/tools/ant/cmdline/Main.java
deleted file mode 100644
index 5f26e6b..0000000
--- a/proposal/antfarm/core/org/apache/tools/ant/cmdline/Main.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.cmdline;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-/**
- *  Runs the command line version of ant. Takes a list of
- *  fully qualified targets and builds them.
- *  Any jars in the "tasks" directory will be automatically added
- *  to the project path.
- *
- *  @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public class Main {
-
-    /**
-     *  Builds the specified targets.
-     */
-    public static void main(String[] args) {
-        File installDir = findInstallDir();
-        setupProjectPath(installDir);
-        Importer importer = loadImporter(installDir);
-
-        Workspace workspace = new Workspace(importer);
-        workspace.addBuildListener(new DefaultLogger(System.out));
-
-        List targets = Arrays.asList(args);
-
-        try {
-            if (workspace.build(targets)) {
-                System.exit(0);
-            }
-            else {
-                System.exit(1);
-            }
-        }
-        catch(Exception exc) {
-            exc.printStackTrace();
-            System.exit(2);
-        }
-    }
-
-    /**
-     *  Finds the ant.jar file in the classpath.
-     */
-    private static File findInstallDir() {
-        StringTokenizer itr = new StringTokenizer(
-            System.getProperty("java.class.path"),
-            System.getProperty("path.separator"));
-
-        while (itr.hasMoreTokens()) {
-            File file = new File(itr.nextToken());
-            if (file.getName().equals("ant.jar")) {
-                // Found it
-                File dir = file.getParentFile();
-                if (dir == null) {
-                    dir = new File(".");
-                }
-                return dir;
-            }
-        }
-
-        System.err.println("Unable to locate ant.jar");
-        System.exit(1);
-        return null;
-    }
-
-    /**
-     *  Locates the "tasks" directory relative to the ant.jar file.
-     */
-    private static void setupProjectPath(File installDir) {
-        StringBuffer path = new StringBuffer(System.getProperty("ant.project.path", "."));
-
-        File taskDir = new File(installDir, "tasks");
-        if (taskDir.exists()) {
-            File[] taskjars = taskDir.listFiles();
-            for (int i = 0; i < taskjars.length; i++) {
-                path.append(System.getProperty("path.separator"));
-                path.append(taskjars[i].getPath());
-            }
-        }
-
-        System.setProperty("ant.project.path", path.toString());
-        System.out.println(path.toString());
-    }
-
-    /**
-     *  Creates a class loader using the jars from the "xml" directory, and
-     *  loads the XmlImporter class.
-     */
-    private static Importer loadImporter(File installDir) {
-        File xmlDir = new File(installDir, "xml");
-        if (xmlDir.exists()) {
-            File[] xmlJars = xmlDir.listFiles();
-            URL[] urls = new URL[xmlJars.length];
-            for (int i = 0; i < xmlJars.length; i++) {
-                try {
-                    urls[i] = xmlJars[i].toURL();
-                }
-                catch(MalformedURLException exc) {
-                    exc.printStackTrace();
-                }
-            }
-
-            try {
-                URLClassLoader loader = new URLClassLoader(urls);
-                return (Importer) loader.loadClass("org.apache.tools.ant.xml.XmlImporter").newInstance();
-            }
-            catch(Exception exc) {
-                exc.printStackTrace();
-                System.exit(1);
-            }
-        }
-        else {
-            System.err.println("Unable to find xml directory");
-            System.exit(1);
-        }
-
-        return null;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/readme.txt b/proposal/antfarm/readme.txt
deleted file mode 100644
index 36789bb..0000000
--- a/proposal/antfarm/readme.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-*** Installing ***
-
-To get things started you'll need to run the bootstrap.bat file, which will manually compile a version of ant into the "boot" directory. From then on you can use Ant to build Ant by running the build.bat file. (There aren't any unix scripts yet, unfortunately. Any help here would be appreciated!)
-
-To "install" ant, you just need to have the ant.jar file in your classpath. Ant will figure out the rest. To run it, type:
-
-java ant project:target
-
-When ant is run, the Main class scans the classpath to find the ant.jar file, and can figure out from there where the rest of the files are. In particular, the jars in the "tasks" directory get added to the project path automatically. And the jars in the "xml" directory get loaded using a separate class loader, so that they don't conflict with the xml parsers that various tasks might be using.
-
-
-*** Running ***
-
-For now, the targets specified con the command line must be in the form project:target. For example, if you want to build target "all" in file "foo.ant", the target name would be "foo:all". In the future there will be a way to specify the default project, so that only the target name would need to be specified. 
-
-Ant searches along the "project path" to find projects specified on the command line or in "import" statements. The project path defaults to ".", ie the current directory, but can be overridden by setting the "ant.project.path" system property. Variables and targets from other projects can be accessed by prefixing them with the project name and a colon.
-
-
-*** Concepts ***
-
-The main thing I'd like people to check out is the whole workspace concept, ie the ability to pull multiple ant files into a single build. I personally think this will make it easier to reuse ant files from other projects, and avoid recursive make syndrome at the same time. Plus, I think this model lends itself to CJAN implementation quite nicely.
-
-I've also tried to make the tasks more compliant with the javabean spec. As a result of this, the word "property" became so overloaded that I decided to use the term "variable" for values defined in ant projects. If anyone feels strongly about it I'll change it back.
-
-The depends attribute on targets uses a whitespace delimited list of target names, instead of comma separated. This is more consistent with the "list" datatype in the xml schema spec.
-
-The parser is namespace aware, and attributes for any namespace other than the default namespace are ignored.
-
-The code relies heavily on JDK 1.2 features. Making it JDK 1.1 compatible would be a lot of work, but is definitely doable.
-
-There's obviously a lot of stuff missing from this prototype, such as datatypes, real tasks, a way to access system properties, default targets, etc. If enough people like the basic design I'll start tackling those next...
-
diff --git a/proposal/antfarm/tasks/java2sdk.ant b/proposal/antfarm/tasks/java2sdk.ant
deleted file mode 100644
index fa6b451..0000000
--- a/proposal/antfarm/tasks/java2sdk.ant
+++ /dev/null
@@ -1,10 +0,0 @@
-<project name="java2sdk">
-	<target name="init">
-		<load name="echo" classname="org.apache.tools.ant.tasks.Echo"/>
-		<load name="javacloader" classname="org.apache.tools.ant.tasks.JavacLoader"/>
-		<javacloader/>
-		<load name="jar" classname="org.apache.tools.ant.tasks.Jar"/>
-		<load name="set" classname="org.apache.tools.ant.tasks.SetVariable"/>
-		<load name="copy" classname="org.apache.tools.ant.tasks.Copy"/>
-	</target>
-</project>
\ No newline at end of file
diff --git a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Copy.java b/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Copy.java
deleted file mode 100644
index 2e89172..0000000
--- a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Copy.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.tasks;
-
-import java.io.*;
-import org.apache.tools.ant.*;
-
-public class Copy extends Task {
-    private String src;
-    private String dest;
-
-    public void execute() throws BuildException {
-        try {
-            FileInputStream in = new FileInputStream(src);
-            FileOutputStream out = new FileOutputStream(dest);
-
-            byte[] buf = new byte[4096];
-            int len = 0;
-            while ((len = in.read(buf)) != -1) {
-                out.write(buf, 0, len);
-            }
-        }
-        catch(FileNotFoundException exc) {
-            throw new BuildException("File not found");
-        }
-        catch(IOException exc) {
-            throw new AntException("Error copying files", exc);
-        }
-    }
-
-    public String getSrc() {
-        return src;
-    }
-
-    public void setSrc(String src) {
-        this.src = src;
-    }
-
-    public String getDest() {
-        return dest;
-    }
-
-    public void setDest(String dest) {
-        this.dest = dest;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Echo.java b/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Echo.java
deleted file mode 100644
index 06cebfc..0000000
--- a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Echo.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.tasks;
-
-import org.apache.tools.ant.*;
-
-public class Echo extends Task {
-    private String message;
-
-    public void execute() throws BuildException {
-        System.out.println(message);
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Fileset.java b/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Fileset.java
deleted file mode 100644
index d6da3b2..0000000
--- a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Fileset.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.tasks;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-public class Fileset {
-    private String src;
-
-    public String getSrc() {
-        return src;
-    }
-
-    public void setSrc(String src) {
-        this.src = src;
-    }
-
-    public void getFiles(List results) throws BuildException {
-        if (src == null) {
-            throw new BuildException("Missing property \"src\"", null); //LOCATION
-        }
-
-        File dir = new File(src);
-        if (!dir.exists()) {
-            throw new BuildException(src + " does not exist", null); // LOCATION!!!
-        }
-        getFiles(dir, results);
-    }
-
-    private void getFiles(File file, List results) {
-        if (file.isDirectory()) {
-            File[] files = file.listFiles();
-            for (int i = 0; i < files.length; i++) {
-                getFiles(files[i], results);
-            }
-        }
-        else if (file.getPath().endsWith(".java")) {
-            results.add(file.getPath());
-        }
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Jar.java b/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Jar.java
deleted file mode 100644
index 315e91c..0000000
--- a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Jar.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.tasks;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-public class Jar extends Task {
-    private String jarfile;
-    private String basedir;
-    private String manifest;
-
-    public String getJarfile() {
-        return jarfile;
-    }
-
-    public void setJarfile(String jarfile) {
-        this.jarfile = jarfile;
-    }
-
-    public String getBasedir() {
-        return basedir;
-    }
-
-    public void setBasedir(String basedir) {
-        this.basedir = basedir;
-    }
-
-    public String getManifest() {
-        return manifest;
-    }
-
-    public void setManifest(String manifest) {
-        this.manifest = manifest;
-    }
-
-    public void execute() throws BuildException {
-        File dir = new File(jarfile).getParentFile();
-        if (dir != null) {
-            dir.mkdirs();
-        }
-        List argList = new ArrayList();
-        if (manifest == null) {
-            argList.add("-cf");
-        }
-        else {
-            argList.add("-cmf");
-            argList.add(manifest);
-        }
-        argList.add(jarfile);
-        argList.add("-C");
-        argList.add(basedir);
-        argList.add(".");
-
-        String[] args = (String[]) argList.toArray(new String[argList.size()]);
-
-        try {
-            Class type = getClass().getClassLoader().loadClass("sun.tools.jar.Main");
-            Method method = type.getMethod("main", new Class[] { args.getClass() });
-
-            getWorkspace().info("Running jar...");
-
-            method.invoke(null, new Object[] { args });
-        }
-        catch(InvocationTargetException exc) {
-            Throwable cause = exc.getTargetException();
-            if (cause instanceof ExitException) {
-                if (((ExitException)cause).getStatus() != 0) {
-                    throw new BuildException("Build failed");
-                }
-            }
-            else {
-                throw new AntException("Error running jar", exc);
-            }
-        }
-        catch(ClassNotFoundException exc) {
-            throw new AntException("Jar class not found. Makes sure tools.jar is in your classpath");
-        }
-        catch(Exception exc) {
-            throw new AntException("Error running jar", exc);
-        }
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Javac.java b/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Javac.java
deleted file mode 100644
index eaed496..0000000
--- a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/Javac.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.tasks;
-
-import java.lang.reflect.*;
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-public class Javac extends Task {
-    private Fileset[] fileset;
-    private String dest;
-    private String classpath;
-    private String compilerclass = null;
-
-    public void execute() throws BuildException {
-        if (compilerclass == null) {
-            compilerclass = "com.sun.tools.javac.Main";
-        }
-
-        List argList = new ArrayList();
-        argList.add("-d");
-        argList.add(dest);
-
-        if (classpath != null) {
-            argList.add("-classpath");
-
-            // Replace the project's path separator with the system's path separator
-            argList.add(classpath.replace(getProject().getPathSeparator(), File.pathSeparatorChar));
-        }
-
-        for (int i = 0; i < fileset.length; i++) {
-            fileset[i].getFiles(argList);
-        }
-
-        String[] args = (String[]) argList.toArray(new String[argList.size()]);
-
-        try {
-            new File(dest).mkdirs();
-
-            Class type = getClass().getClassLoader().loadClass(compilerclass);
-            Method method = type.getMethod("main", new Class[] { args.getClass() });
-
-            getWorkspace().info("Running javac...");
-
-            method.invoke(null, new Object[] { args });
-        }
-        catch(InvocationTargetException exc) {
-            Throwable cause = exc.getTargetException();
-            if (cause instanceof ExitException) {
-                if (((ExitException)cause).getStatus() != 0) {
-                    throw new BuildException("Compile failed");
-                }
-            }
-            else {
-                throw new AntException("Error running compiler", exc);
-            }
-        }
-        catch(ClassNotFoundException exc) {
-            throw new BuildException("Compiler class not found. Makes sure tools.jar is in your classpath");
-        }
-        catch(IllegalAccessException exc) {
-            throw new AntException("Unable to access compiler class", exc);
-        }
-        catch(NoSuchMethodException exc) {
-            throw new AntException("Unable to find main method on compiler class", exc);
-        }
-    }
-
-    public String getDest() {
-        return dest;
-    }
-
-    public void setDest(String dest) {
-        this.dest = dest;
-    }
-
-    public String getClasspath() {
-        return classpath;
-    }
-
-    public void setClasspath(String classpath) {
-        this.classpath = classpath;
-    }
-
-    public Fileset[] getFileset() {
-        return fileset;
-    }
-
-    public void setFileset(Fileset[] fileset) {
-        this.fileset = fileset;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/JavacLoader.java b/proposal/antfarm/tasks/org/apache/tools/ant/tasks/JavacLoader.java
deleted file mode 100644
index 7c7d0fc..0000000
--- a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/JavacLoader.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.tasks;
-
-import java.io.*;
-import java.net.*;
-import org.apache.tools.ant.*;
-
-public class JavacLoader extends Task {
-    public void execute() throws BuildException {
-        try {
-            URL toolsJar = findToolsJar();
-            ClassLoader loader = new URLClassLoader(
-                new URL[] { getProject().getBase(), toolsJar },
-                getWorkspace().getClass().getClassLoader());
-
-            getWorkspace().registerTask("javac", loader.loadClass("org.apache.tools.ant.tasks.Javac"));
-        }
-        catch(MalformedURLException exc) {
-            throw new AntException("Bad URL", exc);
-        }
-        catch(ClassNotFoundException exc) {
-            throw new BuildException("Class not found");
-        }
-    }
-
-    private URL findToolsJar() throws MalformedURLException {
-        // I assume this won't work everywhere...
-        return new File(new File(System.getProperty("java.home")), "../lib/tools.jar").toURL();
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/SetVariable.java b/proposal/antfarm/tasks/org/apache/tools/ant/tasks/SetVariable.java
deleted file mode 100644
index e1f6a8f..0000000
--- a/proposal/antfarm/tasks/org/apache/tools/ant/tasks/SetVariable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.tasks;
-
-import org.apache.tools.ant.*;
-
-public class SetVariable extends Task {
-    private String name;
-    private String value;
-
-    public void execute() throws BuildException {
-        getProject().setVariable(name, value);
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    public String getValue() {
-        return value;
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/xml/org/apache/tools/ant/xml/ProjectHandler.java b/proposal/antfarm/xml/org/apache/tools/ant/xml/ProjectHandler.java
deleted file mode 100644
index ef561d7..0000000
--- a/proposal/antfarm/xml/org/apache/tools/ant/xml/ProjectHandler.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.xml;
-
-import java.io.*;
-import java.util.*;
-import javax.xml.parsers.*;
-import org.apache.tools.ant.*;
-import org.xml.sax.*;
-import org.xml.sax.ext.*;
-import org.xml.sax.helpers.*;
-
-/**
- *  This class populates a Project object via SAX events.
- */
-public class ProjectHandler extends DefaultHandler /* implements LexicalHandler */ {
-    private Workspace workspace;
-    private Project project;
-    private Locator locator;
-
-    /**
-     *  The top of this stack represents the "current" event handler.
-     */
-    private Stack handlers;
-
-    /**
-     * Constructs a SAX handler for the specified project.
-     */
-    public ProjectHandler(Project project) {
-        this.project = project;
-        this.workspace = project.getWorkspace();
-        this.handlers = new Stack();
-        this.handlers.push(new RootHandler());
-    }
-
-    public Project getProject() {
-        return project;
-    }
-
-    public void setDocumentLocator(Locator locator) {
-        this.locator = locator;
-    }
-
-    protected String getLocation() {
-        return locator.getPublicId() + ":" + locator.getLineNumber();
-    }
-
-    public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
-        // Delegate to the current handler
-        ((ContentHandler)handlers.peek()).startElement(namespaceURI, localName, qName, atts);
-    }
-
-    public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
-        // Delegate to the current handler
-        ((ContentHandler)handlers.peek()).endElement(namespaceURI, localName, qName);
-    }
-
-    public void characters(char[] ch, int start, int length) {
-        //XXX need to implement text content
-    }
-
-    public void processingInstruction(String target, String data) {
-        System.out.println("@" + target + "@" + data + "@");
-    }
-
-    /*
-    public void comment(char[] ch, int start, int length) {)
-    public void endCDATA() {}
-    public void endDTD() {}
-    public void endEntity(java.lang.String name) {}
-    public void startCDATA() {}
-    public void startDTD(String name, String publicId, String systemId) {}
-    public void startEntity(java.lang.String name)  {}
-    */
-
-    /**
-     * This class handles any top level SAX events.
-     */
-    private class RootHandler extends DefaultHandler {
-        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
-            if (isAntNamespace(namespaceURI) && localName.equals("project")) {
-                handlers.push(new ProjectElemHandler(qName, atts));
-            }
-            else {
-                throw new SAXParseException("Unexpected element \"" + qName + "\"", locator);
-            }
-        }
-
-        public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
-            handlers.pop();
-        }
-    }
-
-    /**
-     *  This class handles events that occur with a "project" element.
-     */
-    private class ProjectElemHandler extends DefaultHandler {
-        public ProjectElemHandler(String qName, Attributes atts) throws SAXException {
-            String projectName = null;
-
-            for (int i = 0; i < atts.getLength(); i++) {
-                if (!isAntNamespace(atts.getURI(i))) {
-                    continue;
-                }
-
-                String name = atts.getQName(i);
-                String value = atts.getValue(i);
-                if (name.equals("name")) {
-                    projectName = value;
-                }
-                else {
-                    throw new SAXParseException("Unexpected attribute \"" + name + "\"", locator);
-                }
-            }
-
-            if (projectName == null) {
-                throw new SAXParseException("Missing attribute \"name\"", locator);
-            }
-
-            if (!projectName.equals(project.getName())) {
-                throw new SAXParseException("A project named \"" + projectName + "\" must be located in a file called \"" + projectName + ".ant\"", locator);
-            }
-        }
-
-        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
-            if (isAntNamespace(namespaceURI) && localName.equals("target")) {
-                handlers.push(new TargetElemHandler(project, qName, atts));
-            }
-            else if (isAntNamespace(namespaceURI) && localName.equals("import")) {
-                handlers.push(new ImportElemHandler(project, qName, atts));
-            }
-            else {
-                throw new SAXParseException("Unexpected element \"" + qName + "\"", locator);
-            }
-        }
-
-        public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
-            handlers.pop();
-        }
-    }
-
-    /**
-     *  This class handles events that occur with a "target" element.
-     */
-    private class TargetElemHandler extends DefaultHandler {
-        private Target target;
-
-        public TargetElemHandler(Project project, String qName, Attributes atts) throws SAXException {
-            String targetName = null;
-            String dependencies = "";
-
-            for (int i = 0; i < atts.getLength(); i++) {
-                if (!isAntNamespace(atts.getURI(i))) {
-                    continue;
-                }
-
-                String name = atts.getQName(i);
-                String value = atts.getValue(i);
-                if (name.equals("name")) {
-                    targetName = value;
-                }
-                else if (name.equals("depends")) {
-                    dependencies = value;
-                }
-                else {
-                    throw new SAXParseException("Unexpected attribute \"" + name + "\"", locator);
-                }
-            }
-
-            if (targetName == null) {
-                throw new SAXParseException("Missing attribute \"name\"", locator);
-            }
-
-            try {
-                target = project.createTarget(targetName);
-                target.setLocation(getLocation());
-                parseDepends(dependencies);
-            }
-            catch(BuildException exc) {
-                throw new SAXException(exc);
-            }
-        }
-
-        /**
-         *  Parses the list of space-separated project names.
-         */
-        private void parseDepends(String depends) {
-            StringTokenizer tokenizer = new StringTokenizer(depends);
-            while (tokenizer.hasMoreTokens()) {
-                String targetName = tokenizer.nextToken();
-                target.addDepend(targetName);
-            }
-        }
-
-        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
-            if (!isAntNamespace(namespaceURI)) {
-                throw new SAXParseException("Unexpected attribute \"" + qName + "\"", locator);
-            }
-
-            TaskProxy proxy = target.createTaskProxy(qName);
-            proxy.setLocation(getLocation());
-            handlers.push(new TaskElemHandler(proxy.getData(), qName, atts));
-        }
-
-        public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
-            handlers.pop();
-        }
-    }
-
-    /**
-     *  This class handles events that occur with a "import" element.
-     */
-    private class ImportElemHandler extends DefaultHandler {
-        public ImportElemHandler(Project project, String qName, Attributes atts) throws SAXException {
-            String importName = null;
-
-            for (int i = 0; i < atts.getLength(); i++) {
-                if (!isAntNamespace(atts.getURI(i))) {
-                    continue;
-                }
-
-                String name = atts.getQName(i);
-                String value = atts.getValue(i);
-                if (name.equals("name")) {
-                    importName = value;
-                }
-                else {
-                    throw new SAXParseException("Unexpected attribute \"" + name + "\"", locator);
-                }
-            }
-
-            if (importName == null) {
-                throw new SAXParseException("Missing attribute \"name\"",  locator);
-            }
-
-            Import imp = project.createImport(importName);
-            imp.setLocation(getLocation());
-        }
-
-        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
-            throw new SAXParseException("Unexpected element \"" + qName + "\"", locator);
-        }
-
-        public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
-            handlers.pop();
-        }
-    }
-
-    /**
-     *  This class handles events that occur with a task element.
-     */
-    private class TaskElemHandler extends DefaultHandler {
-        private TaskData data;
-
-        public TaskElemHandler(TaskData data, String qName, Attributes atts) throws SAXException {
-            this.data = data;
-
-            for (int i = 0; i < atts.getLength(); i++) {
-                if (!isAntNamespace(atts.getURI(i))) {
-                    continue;
-                }
-
-                String name = atts.getQName(i);
-                String value = atts.getValue(i);
-                TaskData child = data.addProperty(name);
-                child.setLocation(getLocation());
-                child.setText(value);
-            }
-        }
-
-        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
-            if (!isAntNamespace(namespaceURI)) {
-                throw new SAXParseException("Unexpected element \"" + qName + "\"", locator);
-            }
-
-            TaskData child = data.addProperty(qName);
-            child.setLocation(getLocation());
-            handlers.push(new TaskElemHandler(child, qName, atts));
-        }
-
-        public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
-            handlers.pop();
-        }
-    }
-
-    private static boolean isAntNamespace(String uri) {
-        return uri == null ? false : uri.equals("");
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/xml/org/apache/tools/ant/xml/XmlExporter.java b/proposal/antfarm/xml/org/apache/tools/ant/xml/XmlExporter.java
deleted file mode 100644
index 1a4f12d..0000000
--- a/proposal/antfarm/xml/org/apache/tools/ant/xml/XmlExporter.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.apache.tools.ant.xml;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-public class XmlExporter {
-    public void exportProject(Project project, Writer out) throws IOException {
-        out.write("<project name=\"" + project.getName() + "\">\n");
-
-        Iterator itr = project.getTargets().iterator();
-        while (itr.hasNext()) {
-            Target target = (Target) itr.next();
-            writeTarget(target, out);
-        }
-
-        out.write("</project>\n");
-    }
-
-    private void writeTarget(Target target, Writer out) throws IOException {
-        out.write("\t<target name=\"" + target.getName() + "\" depends=\"" + concat(target.getDepends()) + ">\n");
-        out.write("\t</target>\n");
-    }
-
-    public String concat(List depends) throws IOException {
-        StringBuffer buf = new StringBuffer();
-        Iterator itr = depends.iterator();
-        while (itr.hasNext()) {
-            String depend = (String) itr.next();
-            buf.append(depend);
-            if (itr.hasNext()) {
-                buf.append(" ");
-            }
-        }
-        return buf.toString();
-    }
-
-    public static void main(String[] args) throws Exception {
-        Workspace workspace = new Workspace(new XmlImporter());
-        Project project = workspace.importProject("ant");
-        Writer out = new OutputStreamWriter(System.out);
-        new XmlExporter().exportProject(project, out);
-        out.flush();
-    }
-}
\ No newline at end of file
diff --git a/proposal/antfarm/xml/org/apache/tools/ant/xml/XmlImporter.java b/proposal/antfarm/xml/org/apache/tools/ant/xml/XmlImporter.java
deleted file mode 100644
index 5db0ccf..0000000
--- a/proposal/antfarm/xml/org/apache/tools/ant/xml/XmlImporter.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Copyright (c) 2000 The Apache Software Foundation */
-
-package org.apache.tools.ant.xml;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import javax.xml.parsers.*;
-import org.apache.tools.ant.*;
-import org.xml.sax.*;
-
-/**
- *  This class knows how to locate xml project files
- *  and import them into the workspace.
- */
-public class XmlImporter implements Importer {
-    private URL[] path;
-
-    /**
-     *  Constructs an importer for a workspace.
-     */
-    public XmlImporter() {
-        this.path = getProjectPath();
-    }
-
-    /**
-     *  Imports the project with the specified name.
-     */
-    public void importProject(Project project) throws BuildException {
-        // Locate the project file
-        URLConnection conn = findProjectFile(project);
-
-        // Parse the xml
-        parseProjectFile(project, conn);
-    }
-
-    /**
-     *  Find the .ant file for this project. Searches each directory and
-     *  jar in the project path.
-     */
-    private URLConnection findProjectFile(Project project) throws BuildException {
-        String fileName = project.getName() + ".ant";
-        for (int i = 0; i < path.length; i++) {
-            try {
-                URL url = new URL(path[i], fileName);
-                URLConnection conn = url.openConnection();
-                conn.connect();
-                project.setBase(path[i]);
-                project.setLocation(url.toString());
-                return conn;
-            }
-            catch(FileNotFoundException exc) {
-                // The file ins't in this directory/jar, keep looking
-            }
-            catch(IOException exc) {
-                // Not sure what to do here...
-                exc.printStackTrace();
-            }
-        }
-
-        throw new BuildException("Project \"" + project.getName() + "\" not found");
-    }
-
-    /**
-     *  Parse the xml file.
-     */
-    private void parseProjectFile(Project project, URLConnection conn) throws BuildException {
-        ProjectHandler handler = new ProjectHandler(project);
-
-        try {
-            InputSource source = new InputSource(conn.getInputStream());
-            source.setPublicId(conn.getURL().toString());
-            SAXParser parser = parserFactory.newSAXParser();
-            /* parser.getXMLReader().setProperty("http://xml.org/sax/properties/lexical-handler", handler);  */
-            parser.parse(source, handler);
-        }
-        catch(SAXParseException exc) {
-            if (exc.getException() instanceof BuildException) {
-                throw (BuildException) exc.getException();
-            }
-
-            throw new BuildException(exc.getMessage(), exc.getPublicId() + ":" + exc.getLineNumber());
-        }
-        catch(SAXException exc) {
-            if (exc.getException() instanceof BuildException) {
-                throw (BuildException) exc.getException();
-            }
-            else {
-                throw new AntException("Parse error", exc);
-            }
-        }
-        catch(ParserConfigurationException exc) {
-            throw new AntException("Parser configuration error", exc);
-        }
-        catch(FileNotFoundException exc) {
-            // This should never happen, since conn.connect()
-            // has already been called successfully
-            throw new AntException("Project file not found", exc);
-        }
-        catch(IOException exc) {
-            throw new AntException("Error reading project file", exc);
-        }
-
-        return;
-    }
-
-    /**
-     *  Parses the project path (specified using the "ant.project.path"
-     *  system propertyinto URL objects.
-     */
-    private static URL[] getProjectPath() {
-        String s = System.getProperty("ant.project.path", ".");
-
-        StringTokenizer tokens = new StringTokenizer(s, System.getProperty("path.separator"));
-        int i = 0;
-        URL[] path = new URL[tokens.countTokens()];
-        while (tokens.hasMoreTokens()) {
-            String token = tokens.nextToken();
-
-            try {
-                if (token.endsWith(".jar")) {
-                    path[i] = new URL("jar:file:" + token + "!/");
-                }
-                else if (token.endsWith("/")) {
-                    path[i] = new URL("file:" + token);
-                }
-                else {
-                    path[i] = new URL("file:" + token + "/");
-                }
-            }
-            catch(MalformedURLException exc) {
-                exc.printStackTrace();
-            }
-
-            i++;
-        }
-
-        return path;
-    }
-
-
-    /**
-     * JAXP stuff.
-     */
-    private static SAXParserFactory parserFactory;
-
-    static {
-        parserFactory = SAXParserFactory.newInstance();
-        parserFactory.setValidating(false);
-        parserFactory.setNamespaceAware(true);
-    }
-}
diff --git a/proposal/frantic/build.bat b/proposal/frantic/build.bat
deleted file mode 100755
index da96ae4..0000000
--- a/proposal/frantic/build.bat
+++ /dev/null
@@ -1,55 +0,0 @@
-@echo off
-rem --------------------------------------------------------------------------
-rem build.bat - Build Script for Frantic (lifted from Tomcat...thx guys)
-rem
-rem Environment Variable Prerequisites:
-rem
-rem   JAVA_HOME        Must point at your Java Development Kit [REQUIRED]
-rem
-rem ---------------------------------------------------------------------------
-
-
-rem ----- Save Environment Variables ------------------------------------------
-
-set _CLASSPATH=%CLASSPATH%
-set _CLASSES=%CLASSES%
-
-rem ----- Verify and Set Required Environment Variables -----------------------
-
-if not "%JAVA_HOME%" == "" goto gotJavaHome
-echo You must set JAVA_HOME to point at your Java Development Kit installation
-goto cleanup
-:gotJavaHome
-
-rem ----- Set Up The Runtime Classpath ----------------------------------------
-
-if not "%CLASSPATH%" == "" set CLASSPATH=%CLASSPATH%;
-set CLASSPATH=%CLASSPATH%;./src
-
-rem ----- Execute The Requested Build -----------------------------------------
-
-if not exist dist mkdir dist
-if not exist dist\lib mkdir dist\lib
-if not exist dist\lib\classes mkdir dist\lib\classes
-if not exist dist\doc mkdir dist\doc
-if not exist dist\doc\api mkdir dist\doc\api
-
-set CLASSES=dist\lib\classes
-
-%JAVA_HOME%\bin\javac -d %CLASSES% src/org/apache/ant/test/*.java
-%JAVA_HOME%\bin\jar cvf dist\lib\frantic.jar -C dist\lib\classes .
-
-xcopy website\*.html dist\doc /s /y
-xcopy website\*.gif dist\doc /s /y
-
-%JAVA_HOME%\bin\javadoc -protected -sourcepath src -d dist\doc\api -author org.apache.ant org.apache.ant.engine org.apache.ant.tasks org.apache.ant.tasks.build org.apache.ant.tasks.util
-
-rem ----- Restore Environment Variables ---------------------------------------
-:cleanup
-set CLASSPATH=%_CLASSPATH%
-set CLASSES=%_CLASSES%
-set _CLASSPATH=
-set _CLASSES=
-
-:finish
-
diff --git a/proposal/frantic/src/org/apache/ant/AntException.java b/proposal/frantic/src/org/apache/ant/AntException.java
deleted file mode 100644
index 17763b1..0000000
--- a/proposal/frantic/src/org/apache/ant/AntException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant;
-
-public class AntException extends Exception {
-    
-    public AntException() {
-        super();
-    }
-    
-    public AntException(String message) {
-        super(message);
-    }
-}
diff --git a/proposal/frantic/src/org/apache/ant/engine/AntEngineListener.java b/proposal/frantic/src/org/apache/ant/engine/AntEngineListener.java
deleted file mode 100644
index 7839d64..0000000
--- a/proposal/frantic/src/org/apache/ant/engine/AntEngineListener.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.engine;
-
-
-import java.util.*;
-import org.apache.ant.AntException;
-import org.apache.ant.tasks.Task;
-
-public interface AntEngineListener extends EventListener {
-    
-    void engineStart(AntEvent e);
-    void engineFinish(AntEvent e);
-    
-    void taskStart(AntEvent e);
-    void taskExecute(AntEvent e);
-    void taskFinish(AntEvent e);
-    void taskMessage(AntEvent e, String message);
-    void taskException(AntEvent e, AntException exception);
-    
-}
diff --git a/proposal/frantic/src/org/apache/ant/engine/AntEvent.java b/proposal/frantic/src/org/apache/ant/engine/AntEvent.java
deleted file mode 100644
index f14d1f7..0000000
--- a/proposal/frantic/src/org/apache/ant/engine/AntEvent.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.engine;
-
-
-import java.util.EventObject;
-import org.apache.ant.tasks.Task;
-
-public class AntEvent extends EventObject {
-    
-    Task task;
-    
-    public AntEvent(Object source) {
-        this(source, null);
-    }
-    
-    public AntEvent(Object source, Task task) {
-        super(source);
-        this.task = task;
-    }
-    
-    public Task getTask() {
-        return task;
-    }
-    
-    public void setTask(Task task) {
-        this.task = task;
-    }
-}
diff --git a/proposal/frantic/src/org/apache/ant/engine/DefaultEngineListener.java b/proposal/frantic/src/org/apache/ant/engine/DefaultEngineListener.java
deleted file mode 100644
index 6ccda43..0000000
--- a/proposal/frantic/src/org/apache/ant/engine/DefaultEngineListener.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.engine;
-
-
-import java.io.*;
-import java.text.*;
-import java.util.*;
-import org.apache.ant.AntException;
-import org.apache.ant.tasks.Task;
-
-public class DefaultEngineListener implements AntEngineListener {
-    
-    protected PrintStream       outputStream;
-    protected long              startTime;
-    
-    protected StringBuffer      sb              = new StringBuffer();
-    protected int               indentSpaces    = 4;
-    protected boolean           indent          = true;
-    protected int               curIndent       = 0;
-    
-    protected SimpleDateFormat  timestamp       = new SimpleDateFormat("HH:mm:ss:SSS");
-    
-    public DefaultEngineListener() {
-        this(System.out);
-    }
-    
-    public DefaultEngineListener(PrintStream outputStream) {
-        this.outputStream = outputStream;
-    }
-    
-    public void setIndentSpaces(int spaces) {
-        this.indentSpaces = spaces;
-    }
-    
-    public int getIndentSpaces() {
-        return indentSpaces;
-    }
-    
-    public void setIndent(boolean on) {
-        this.indent = on;
-    }
-    
-    public boolean isIndent() {
-        return indent;
-    }
-    
-    protected String padLeft(String s, int length) {
-        sb.setLength(0);
-        sb.append(s);
-        while (sb.length() < length) {
-            sb.insert(0, ' ');
-        }
-        return sb.toString();
-    }
-    
-    protected void output(String message) {
-        if (!indent) {
-            outputStream.println(message);
-            return;
-        }
-        
-        // shouldn't happen, but let's be on the safe side
-        if (curIndent < 0) {
-            curIndent = 0;
-        }
-        
-        outputStream.println(
-                             padLeft(message, message.length() + (indentSpaces * curIndent)));
-    }
-    
-    ////////////////////////////////////////////////////////////////////////////
-    //                     AntEngineListener Implementation                   //
-    ////////////////////////////////////////////////////////////////////////////
-    
-    public void engineStart(AntEvent e) {
-        Date now = new Date();
-        output("Engine Started: " + timestamp.format(now));
-        startTime = now.getTime();
-    }
-    
-    public void engineFinish(AntEvent e) {
-        Date now = new Date();
-        long elapsed = System.currentTimeMillis() - startTime;
-        
-        output("Engine Finished: " + timestamp.format(now));
-        output("Elapsed Time: " + (elapsed / 1000F) + " seconds");
-    }
-    
-    public void taskStart(AntEvent e) {
-        output("Task Started: " + e.getTask().getFullyQualifiedName());
-        curIndent++;
-    }
-    
-    public void taskExecute(AntEvent e){
-        output("Task Execution: " + e.getTask().getFullyQualifiedName());
-    }
-    
-    public void taskFinish(AntEvent e){
-        curIndent--;
-        output("Task Finished: " + e.getTask().getFullyQualifiedName());
-    }
-    
-    public void taskMessage(AntEvent e, String message){
-        curIndent++;
-        output("Task Message: " + e.getTask().getFullyQualifiedName() + ": " +
-               message);
-        curIndent--;
-    }
-    
-    public void taskException(AntEvent e, AntException exception){
-        output("Task Exception: " + e.getTask().getFullyQualifiedName() + ": " +
-               exception.getMessage());
-    }
-}
diff --git a/proposal/frantic/src/org/apache/ant/engine/HierarchicalHashtable.java b/proposal/frantic/src/org/apache/ant/engine/HierarchicalHashtable.java
deleted file mode 100644
index 5876af3..0000000
--- a/proposal/frantic/src/org/apache/ant/engine/HierarchicalHashtable.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.apache.ant.engine;
-
-import java.util.*;
-
-public class HierarchicalHashtable extends Hashtable {
-    
-    private HierarchicalHashtable parent;
-    
-    public HierarchicalHashtable() {
-        this(null);
-    }
-    
-    public HierarchicalHashtable(HierarchicalHashtable parent) {
-        super();
-        this.parent = parent;
-    }
-    
-    public HierarchicalHashtable getParent() {
-        return parent;
-    }
-    
-    public void setParent(HierarchicalHashtable parent) {
-        this.parent = parent;
-    }
-    
-    public List getPropertyNames() {
-        ArrayList list = new ArrayList();
-        
-        Enumeration e = keys();
-        while (e.hasMoreElements()) {
-            list.add(e.nextElement());
-        }
-        
-        if (getParent() != null) {
-            list.addAll(getParent().getPropertyNames());
-        }
-        
-        return list;
-    }
-    
-    public Object getPropertyValue(String name) {
-        Object value = get(name);
-        if (value == null && getParent() != null) {
-            return getParent().getPropertyValue(name);
-        }
-        return value;
-    }
-    
-    public void setPropertyValue(String name, Object value) {
-        put(name, value);
-    }
-    
-    public void removePropertyValue(String name) {
-        Object value = get(name);
-        if (value == null && getParent() != null) {
-            getParent().removePropertyValue(name);
-        }
-        if (value != null) {
-            remove(name);
-        }
-    }
-}
diff --git a/proposal/frantic/src/org/apache/ant/engine/TaskEngine.java b/proposal/frantic/src/org/apache/ant/engine/TaskEngine.java
deleted file mode 100644
index 6e35fce..0000000
--- a/proposal/frantic/src/org/apache/ant/engine/TaskEngine.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.engine;
-
-
-import java.util.*;
-import org.apache.ant.AntException;
-import org.apache.ant.tasks.Task;
-
-/**
- * The TaskEngine interface defines the methods that a TaskEngine are required
- * to implement. This interface is also passed to each Task in order for them to
- * get access to some utility functions like inserting a new Task during a run,
- * or forcing the execution path of Tasks to be modified.
- */
-public interface TaskEngine {
-    
-    void addAntEngineListener(AntEngineListener listener);
-    
-    void removeAntEngineListener(AntEngineListener listener);
-    
-    void execute(Task task) throws AntException;
-    
-    void execute(Task root, Task task) throws AntException;
-    
-    void message(Task task, String message);
-    
-    Task getNextExecuteTask();
-    
-    /**
-     * Returns a list of all property names that the current task stack is aware
-     * of. This is a recursive list of all property names.
-     */
-    List getPropertyNames();
-    
-    /**
-     * May be called to obtain property values that have been defined. Property
-     * values are maintained in a hierarchical manner as each task is executed.
-     * When a property is requested, if the current execution level does not
-     * contain the property, the execution parent is then queried. This
-     * continues until there is no where else to go!
-     * <p></p>
-     * Maybe this should be a Hashtable implementation and be able to return
-     * Object? Is that a little overkill considering these values will usually
-     * be Strings? Perhaps someone will have a farfetched idea of storing a
-     * Task in a property?
-     */
-    Object getPropertyValue(String name);
-    
-    /**
-     * Adds the name-value pair to this execution stack property list. If the
-     * property is declared in parent tasks, I don't really see a reason for not
-     * adding it again to this execution list. This would achieve a nice scoped
-     * parameter list that is dictated by nesting levels.
-     * <p></p>
-     * This is against the current Ant (1.2) specification, but I'm not sure why
-     * that restriction was there. It would be simple to implement here if it
-     * again required.
-     */
-    void setPropertyValue(String name, Object value);
-    
-    /**
-     * Removes the given property from the property list. I haven't thought too
-     * much about the rules behind this method. My current thinking is that the
-     * property is removed no matter what level of the execution stack the
-     * property was defined in. I think this should be good in most cases. If it
-     * ever surfaces that the property should just be unavailable for this stack
-     * level (and other's below it), then the implementation can be modified to
-     * keep a list of these "unavailable" properties.
-     */
-    void removePropertyValue(String name);
-    
-}
diff --git a/proposal/frantic/src/org/apache/ant/engine/TaskEngineImpl.java b/proposal/frantic/src/org/apache/ant/engine/TaskEngineImpl.java
deleted file mode 100644
index d1f5749..0000000
--- a/proposal/frantic/src/org/apache/ant/engine/TaskEngineImpl.java
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.engine;
-
-
-import java.util.*;
-import org.apache.ant.AntException;
-import org.apache.ant.tasks.Task;
-
-/**
- * The engine that actually invokes each Task. In addition to specifying a Task
- * to execute, it may be desirable to specify the root Task that will define
- * an execution cycle.
- */
-public class TaskEngineImpl implements TaskEngine {
-    
-    /**
-     * Analagous to a call stack, but with Tasks.
-     */
-    protected Stack taskStack       = new Stack();;
-    
-    /**
-     * As the task stack is built, a mirror representation will also be
-     * contructed that will hold property values.
-     */
-    protected Stack propertyStack   = new Stack();
-    
-    /**
-     * Keeps track of AntEngineListeners. We don't have to use Vector because we
-     * take care of synchronization on the add, remove, and iteration operations.
-     */
-    protected ArrayList listenerList = new ArrayList();
-    
-    private int engineLevel = 0;
-    
-    /**
-     * Constructor is private so it cannot be instantiated. Users of this class
-     * will get an instance by using the getTaskEngine() method. This will allow
-     * us to have a simple Factory implementation. We may use a Singleton
-     * implementation, or a collection pool. The choice is up to us.
-     */
-    private TaskEngineImpl() {
-        super();
-    }
-    
-    /**
-     * Return a usable instance of a TaskEngine to the requestor. Nothing
-     * sophisticated yet, simple doles out a new instance each time.
-     */
-    public static TaskEngine getTaskEngine() {
-        return new TaskEngineImpl();
-    }
-    
-    /**
-     * Walk the list of Tasks backwards until the root is reached. Keep track of
-     * the Tasks along the way in a Stack. Return null if the root Task is not a
-     * parent of the provided Task.
-     */
-    protected Stack getTaskStack(Task root, Task task) {
-        Stack stack = new Stack();
-        while (task != null) {
-            stack.push(task);
-            if (task == root) {
-                return stack;
-            }
-            task = task.getParent();
-        }
-        return null;
-    }
-    
-    /**
-     * Returns the next Task to be executed from the taskStack. The task is not
-     * removed from the Stack.
-     */
-    public Task getNextExecuteTask() {
-        try {
-            return (Task)taskStack.peek();
-        } catch (EmptyStackException esx) {
-            return null;
-        }
-    }
-    
-    /**
-     * If no root is specified, we will assume that the user wants to execute
-     * the Task with no root. This is accomplished by using the Task parameter
-     * as its own root.
-     */
-    public void execute(Task task) throws AntException {
-        execute(task, task);
-    }
-    
-    /**
-     * This is the workhorse, however it has been made to be very simple. Given
-     * the ability to specify a path between root and the target Task, we build
-     * a trail of Tasks to connect the two. Next we execute each Task on the way
-     * between the two Tasks. Once we arrive at the Task to execute, we execute
-     * all of its chlidren.
-     */
-    public void execute(Task root, Task task) throws AntException {
-        fireEngineStart();
-        try {
-            taskStack = getTaskStack(root, task);;
-            if (taskStack == null) {
-                throw new AntException(
-                                       "The execution root Task is not an ancestor of the execution Task.");
-            }
-            
-            // Pop thru the stack and execute each Task we come across.
-            while (!taskStack.isEmpty()) {
-                executeTask(taskStack);
-            }
-        } finally {
-            fireEngineFinish();
-        }
-    }
-    
-    /**
-     * A recursive routine that allows all Tasks in the stack to be executed. At
-     * the same time, the stack may grow to include new Tasks.
-     */
-    protected void executeTask(Stack taskStack) throws AntException {
-        Task task = (Task)taskStack.pop();
-        
-        fireTaskStart(task);
-        try {
-            // Add a new property holder for this task to the property stack. Note
-            // that the parent of the new holder is the current stack head.
-            if (task.isPropertyContainer()) {
-                if (propertyStack.isEmpty()) {
-                    propertyStack.push(new HierarchicalHashtable());
-                } else {
-                    propertyStack.push(new HierarchicalHashtable(
-                                                                 (HierarchicalHashtable)propertyStack.peek()));
-                }
-                
-            }
-            
-            // Allow Task to do whatever it may need to do before touching its
-            // children.
-            task.init(this);
-            
-            // Iterate the Task's children and execute any priority Tasks.
-            Task[] tasks = task.getChildren();
-            for (int i = 0, c = tasks.length; i < c; i++) {
-                if (tasks[i].getExecutionMode() == Task.EXECUTION_MODE_PRIORITY) {
-                    taskStack.push(tasks[i]);
-                    executeTask(taskStack);
-                }
-            }
-            
-            // Allow the Task to validate.
-            task.validate();
-            
-            // Finally, execute the Task.
-            fireTaskExecute(task);
-            task.execute(this);
-            
-            // We can discard the no londer needed property holder.
-            if (task.isPropertyContainer()) {
-                propertyStack.pop();
-            }
-            
-        } catch (AntException ax) {
-            fireTaskException(task, ax);
-        } finally {
-            fireTaskFinish(task);
-        }
-    }
-    
-    /**
-     * Causes an AntEvent to be generated and fired to all listeners.
-     */
-    public void message(Task task, String message) {
-        fireTaskMessage(task, message);
-    }
-    
-    ////////////////////////////////////////////////////////////////////////////
-    //                            Listener Support                            //
-    ////////////////////////////////////////////////////////////////////////////
-    
-    public synchronized void addAntEngineListener(AntEngineListener listener) {
-        if (!listenerList.contains(listener)) {
-            listenerList.add(listener);
-        }
-    }
-    
-    public synchronized void removeAntEngineListener(AntEngineListener listener) {
-        if (listenerList.contains(listener)) {
-            listenerList.remove(listener);
-        }
-    }
-    
-    protected synchronized void fireEngineStart() {
-        if (engineLevel++ > 0) return;
-        AntEvent e = new AntEvent(this);
-        for (int i = 0; i < listenerList.size(); i++) {
-            ((AntEngineListener)listenerList.get(i)).engineStart(e);
-        }
-        
-    }
-    
-    protected synchronized void fireEngineFinish() {
-        if (--engineLevel > 0) return;
-        AntEvent e = new AntEvent(this);
-        for (int i = 0; i < listenerList.size(); i++) {
-            ((AntEngineListener)listenerList.get(i)).engineFinish(e);
-        }
-        
-    }
-    
-    protected synchronized void fireTaskStart(Task task) {
-        AntEvent e = new AntEvent(this, task);
-        for (int i = 0; i < listenerList.size(); i++) {
-            ((AntEngineListener)listenerList.get(i)).taskStart(e);
-        }
-        
-    }
-    
-    protected synchronized void fireTaskExecute(Task task) {
-        AntEvent e = new AntEvent(this, task);
-        for (int i = 0; i < listenerList.size(); i++) {
-            ((AntEngineListener)listenerList.get(i)).taskExecute(e);
-        }
-        
-    }
-    
-    protected synchronized void fireTaskFinish(Task task) {
-        AntEvent e = new AntEvent(this, task);
-        for (int i = 0; i < listenerList.size(); i++) {
-            ((AntEngineListener)listenerList.get(i)).taskFinish(e);
-        }
-        
-    }
-    
-    protected synchronized void fireTaskMessage(Task task, String message) {
-        AntEvent e = new AntEvent(this, task);
-        for (int i = 0; i < listenerList.size(); i++) {
-            ((AntEngineListener)listenerList.get(i)).taskMessage(e, message);
-        }
-        
-    }
-    
-    protected synchronized void fireTaskException(Task task, AntException exception) {
-        AntEvent e = new AntEvent(this, task);
-        for (int i = 0; i < listenerList.size(); i++) {
-            ((AntEngineListener)listenerList.get(i)).taskException(e, exception);
-        }
-        
-    }
-    
-    ////////////////////////////////////////////////////////////////////////////
-    //                        Property Support Methods                        //
-    ////////////////////////////////////////////////////////////////////////////
-    
-    /**
-     * This is the routine that will perform key substitution. Phrase will come
-     * in as "src/${someparam}" and be converted to the appropriate "normalized"
-     * string. I suppose while I'm doing this we should support phrases with
-     * nested keys, such as "src/${build${token}}". Also, we should properly
-     * handle cases where ${someparam} will evaluate to ${anotherparam}.
-     * <p></p>
-     * One thing that will be different from the Ant 1.2 mechanismoccurs when a
-     * parameter value is not found. The substitution routine inserts it back in
-     * the phrase unchanged. I have opted to insert a zero-length string
-     * instead.
-     * <p></p>
-     * I should add a switch to the engine that will give the user the ability
-     * to throw an exception if a key is not found. Pretty easy, except this
-     * method is a strange place for an AntException to be thrown. Perhaps I
-     * should use a RuntimeException instead...
-     * <p></p>
-     * A brief rundown on the logic here:
-     *     I check for the first instances of a key prefix.
-     *     If none found we return the phrase as is.
-     *     If key prefix is found get location of next key prefix and suffix.
-     *     If suffix is found first, we have found a key.
-     *     If there is no suffix, we return the phrase.
-     */
-    static final String KEY_PREFIX = "${";
-    static final String KEY_SUFFIX = "}";
-    protected String substitute(String phrase) {
-        StringBuffer sb = new StringBuffer(phrase);
-        int startPoint = 0;
-        while (startPoint >= 0 && startPoint < phrase.length()) {
-            int pre1 = startPoint + phrase.substring(startPoint).indexOf(KEY_PREFIX);
-            if (pre1 < 0) break;
-            int suf1 = phrase.substring(pre1 + KEY_PREFIX.length()).indexOf(KEY_SUFFIX);
-            if (suf1 < 0) break;
-            suf1 = suf1 + pre1 + KEY_PREFIX.length();
-            int pre2 = phrase.substring(pre1 + KEY_PREFIX.length()).indexOf(KEY_PREFIX);
-            if (pre2 < 0) {
-                pre2 = phrase.length() + 1;
-            } else {
-                pre2 = pre2 + pre1 + KEY_PREFIX.length();
-            }
-            
-            if (suf1 < pre2) {
-                // we have found a token
-                String key = sb.substring(pre1 + KEY_PREFIX.length(), suf1);
-                sb.delete(pre1, suf1 + 1);
-                Object value = getPropertyValueNoSubstitution(key);
-                if (value != null) {
-                    sb.insert(pre1, value.toString());
-                }
-                return substitute(sb.toString());
-            }
-            startPoint = pre2;
-        }
-        return sb.toString();
-    }
-    
-    public List getPropertyNames() {
-        if (propertyStack.isEmpty()) return new ArrayList();
-        HierarchicalHashtable hash = (HierarchicalHashtable)propertyStack.peek();
-        return hash.getPropertyNames();
-    }
-    
-    public Object getPropertyValue(String name) {
-        if (propertyStack.isEmpty()) return null;
-        HierarchicalHashtable hash = (HierarchicalHashtable)propertyStack.peek();
-        Object result = hash.getPropertyValue(name);
-        if (result instanceof String) {
-            return substitute((String)result);
-        } else {
-            return result;
-        }
-    }
-    
-    protected Object getPropertyValueNoSubstitution(String name) {
-        if (propertyStack.isEmpty()) return null;
-        HierarchicalHashtable hash = (HierarchicalHashtable)propertyStack.peek();
-        return hash.getPropertyValue(name);
-    }
-    
-    public void setPropertyValue(String name, Object value) {
-        if (propertyStack.isEmpty()) return;
-        HierarchicalHashtable hash = (HierarchicalHashtable)propertyStack.peek();
-        hash.setPropertyValue(name, value);
-    }
-    
-    public void removePropertyValue(String name) {
-        if (propertyStack.isEmpty()) return;
-        HierarchicalHashtable hash = (HierarchicalHashtable)propertyStack.peek();
-        hash.remove(name);
-    }
-}
diff --git a/proposal/frantic/src/org/apache/ant/tasks/BaseTask.java b/proposal/frantic/src/org/apache/ant/tasks/BaseTask.java
deleted file mode 100644
index 3cf4a2a..0000000
--- a/proposal/frantic/src/org/apache/ant/tasks/BaseTask.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.tasks;
-
-
-
-import java.util.*;
-import org.apache.ant.AntException;
-import org.apache.ant.engine.TaskEngine;
-import org.apache.ant.tasks.Task;
-
-public abstract class BaseTask implements Task {
-    
-    protected Task parent;
-    protected ArrayList children = new ArrayList();
-    protected String taskName;
-    protected Properties properties = new Properties();
-    
-    public BaseTask() {
-        super();
-    }
-    
-    public void init(TaskEngine engine) throws AntException {
-    }
-    
-    public void execute(TaskEngine engine) throws AntException {
-    }
-    
-//    abstract public String getTaskTag();
-    
-    public void validate() throws AntException {}
-    
-    public String getFullyQualifiedName() {
-        if (getParent() == null) return Task.NAME_SEPARATOR + taskName;
-        return getParent().getFullyQualifiedName() + Task.NAME_SEPARATOR + taskName;
-    }
-    
-    public int hashCode() {
-        return getFullyQualifiedName().hashCode();
-    }
-    
-    public String getTaskName() {
-        return taskName;
-    }
-    
-    public void setTaskName(String taskName) {
-        this.taskName = taskName;
-    }
-    
-    public int getExecutionMode() {
-        return Task.EXECUTION_MODE_PRIORITY;
-    }
-    
-    public String getAttributeValue(String name) {
-        /**@todo: Implement this org.apache.ant.Task method*/
-        throw new java.lang.UnsupportedOperationException("Method getAttributeValue() not yet implemented.");
-    }
-    
-    public Task getParent() {
-        return parent;
-    }
-    
-    /**
-     * We have to trust the developers to not screw up the hierarchy by changing
-     * the parent of a Task when it is a child of another.
-     */
-    public void setParent(Task parent) {
-        this.parent = parent;
-    }
-    
-    public Task[] getChildren() {
-        return (Task[])children.toArray(new Task[children.size()]);
-    }
-    
-    public void addChild(Task task) {
-        children.add(task);
-        task.setParent(this);
-    }
-    
-    public void removeChild(Task task) {
-        children.remove(task);
-    }
-    
-    public Task getRootTask() {
-        if (getParent() != null) {
-            return getParent().getRootTask();
-        }
-        return this;
-    }
-    
-    protected Task getTaskByName(String taskName) {
-        Task[] tasks = getChildren();
-        for (int i = 0, c = tasks.length; i < c; i++) {
-            if (tasks[i].getTaskName().equals(taskName)) {
-                return tasks[i];
-            }
-        }
-        return null;
-    }
-    
-    public Task getTask(String taskPath) {
-        taskPath = taskPath.trim();
-        int slashPos = taskPath.indexOf("/");
-        
-        // starts with '/'
-        if (slashPos == 0) {
-            return getRootTask().getTask(taskPath.substring(slashPos + 1));
-        } else
-            
-            // starts with '../'
-            if (taskPath.startsWith("../") || taskPath.equals("..")) {
-                return getParent().getTask(taskPath.substring(3));
-            } else
-                
-                // starts with './'
-                if (taskPath.startsWith("./") || taskPath.equals(".")) {
-                    return getTask(taskPath.substring(2));
-                } else
-                    
-                    // starts with 'some_level/'
-                    if (slashPos > 0) {
-                        String levelName = taskPath.substring(0, slashPos);
-                        return getTaskByName(levelName).getTask(taskPath.substring(slashPos + 1));
-                    }
-        
-        // there are no more directories; what remains is the name of the task
-        if (slashPos < 0) {
-            if (taskPath.length() == 0) return this;
-            return getTaskByName(taskPath);
-        }
-        return null;
-    }
-    
-    public boolean isPropertyContainer() {
-        return false;
-    }
-    
-}
diff --git a/proposal/frantic/src/org/apache/ant/tasks/Task.java b/proposal/frantic/src/org/apache/ant/tasks/Task.java
deleted file mode 100644
index 4c96c7a..0000000
--- a/proposal/frantic/src/org/apache/ant/tasks/Task.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.tasks;
-
-
-import java.util.*;
-import org.apache.ant.AntException;
-import org.apache.ant.engine.TaskEngine;
-
-/**
- * Task is the core interface for all structures that will be processed by the
- * TaskEngine.
- */
-public interface Task {
-    
-    public static final int EXECUTION_MODE_IMPLICIT = 0;
-    public static final int EXECUTION_MODE_EXPLICIT = 1;
-    public static final int EXECUTION_MODE_PRIORITY = 2;
-    
-    public static final char NAME_SEPARATOR = '/';
-    
-    /**
-     * Causes the existing Task implementation to execute.
-     */
-    void execute(TaskEngine engine) throws AntException;
-    
-    /**
-     * Called when the Task first gets "noticed" by the TaskEngine.
-     */
-    void init(TaskEngine engine) throws AntException;
-    
-    /**
-     * Each Task should have the ability to validate its state. This would be
-     * invoked by the TaskEngine prior to commencing an execution cycle.
-     */
-    void validate() throws AntException;
-    
-    /**
-     * Just a simple name used to identify a Task. This name is only sufficient
-     * for simple debugging and GUI output. It does not uniquely identify a
-     * Task.
-     *
-     * @see #getFullyQualifiedName
-     */
-    String getTaskName();
-    
-    /**
-     * Although this method seems to tie the concept of XML "tags", it is not
-     * necessarily so. The tag name will serve as a general description of the
-     * type of tag represented by this class instance. It is primarily used by
-     * Tasks with sub-Tasks that are not assigned to a specific class
-     * implementation.
-     *
-     * @see org.apache.ant.tasks.UnknownTask
-     */
-//    String getTaskTag();
-    
-    /**
-     * A mechanism for locating a task relative to the current task. This
-     * navigation sceme will mimic a typical OS system. '..' will move back
-     * a level in the Task tree. If taskPath begins with '/' then the root node
-     * will be used as a starting point.
-     * <p></p>
-     * Returns null of no task is found at this location.
-     */
-    Task getTask(String taskPath);
-    
-    /**
-     * Proceed backwards through the nodes until we come across the first Task
-     * in the tree. This is the root Task.
-     */
-    Task getRootTask();
-    
-    /**
-     * The "fully-qualified" name of a Task is the Task's name, prepended by its
-     * parent's name, prepended by its parent's name, etc. This method may be
-     * used by the Task's hashCode() method to calculate a hash that will
-     * uniquely identify a Task.
-     */
-    String getFullyQualifiedName();
-    
-    /**
-     * Determines whether this Task is executed whenever its parent is executed,
-     * or if its execution must be specifically requested.
-     * <p></p>
-     * <dl><dt>EXECUTION_MODE_EXPLICIT</dt>
-     * <dd>Requires interaction by the TaskEngine in order to execute.</dd>
-     * <dt>EXECUTION_MODE_IMPLICIT</dt>
-     * <dd>This Task is automatically executed when its parent is
-     * executed.</dd>
-     * <dt>EXECUTION_MODE_PRIORITY</dt>
-     * <dd>These Tasks are executed prior to its parent's execution</dd></dl>
-     * <p></p>
-     * The default mode should probably be EXECUTION_MODE_IMPLICIT. In the
-     * build domain of Ant, every Task below a Task will normally be executed.
-     * The major exception to this is the Target. When a Project Task is
-     * executed, all Target Tasks do <i>not</i> automatically fire, however all
-     * Property Tasks <i>do</i> execute.
-     */
-    int getExecutionMode();
-    
-    /**
-     * Determines whether a Task is suitable for holding property values.
-     */
-    boolean isPropertyContainer();
-    
-    /**
-     * Each Task will hold its attributes in some manner. This method will allow
-     * the Task implementation to return the value of its attribute.
-     */
-    String getAttributeValue(String name);
-    
-    /**
-     * Returns this Task's parent Task. If this Task is the root Task, then this
-     * method will return null.
-     */
-    Task getParent();
-    
-    /**
-     * Sets the Task's parent.
-     */
-    void setParent(Task parent);
-    
-    /**
-     * Returns the an array of Task objects that are subordinate to this Task.
-     */
-    Task[] getChildren();
-}
diff --git a/proposal/frantic/src/org/apache/ant/tasks/build/Project.java b/proposal/frantic/src/org/apache/ant/tasks/build/Project.java
deleted file mode 100644
index bb28904..0000000
--- a/proposal/frantic/src/org/apache/ant/tasks/build/Project.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.tasks.build;
-
-
-import org.apache.ant.AntException;
-import org.apache.ant.engine.TaskEngine;
-import org.apache.ant.tasks.BaseTask;
-import org.apache.ant.tasks.Task;
-
-public class Project extends BaseTask {
-    
-    private String def;
-    private String basedir;
-    
-    public Project() {
-        super();
-    }
-    
-    public String getDefault() {
-        return def;
-    }
-    
-    public void setDefault(String newDefault) {
-        def = newDefault;
-    }
-    
-    public void setBasedir(String newBasedir) {
-        basedir = newBasedir;
-    }
-    
-    public String getBasedir() {
-        return basedir;
-    }
-    
-    ////////////////////////////////////////////////////////////////////////////
-    //                        BaseTask Implementation                         //
-    ////////////////////////////////////////////////////////////////////////////
-    
-    public void init(TaskEngine engine) throws AntException {
-    }
-    
-    /**
-     * Here is where we check and see if there are any Targets specified. We do
-     * this by peeking into the known taskStack and checking to see if a Target
-     * is next to be executed. If not, we add our default Target to the list.
-     */
-    public void execute(TaskEngine engine) throws AntException {
-        // see if it is necessary to invoke the default task
-        Task task = engine.getNextExecuteTask();
-        if (task == null && getDefault() != null) {
-            Task defaultTask = getTask(getDefault());
-            if (defaultTask != null) {
-                engine.execute(defaultTask);
-            }
-        }
-    }
-    
-    public boolean isPropertyContainer() {
-        return true;
-    }
-}
diff --git a/proposal/frantic/src/org/apache/ant/tasks/build/Target.java b/proposal/frantic/src/org/apache/ant/tasks/build/Target.java
deleted file mode 100644
index c9e3dc6..0000000
--- a/proposal/frantic/src/org/apache/ant/tasks/build/Target.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.tasks.build;
-
-
-
-import org.apache.ant.AntException;
-import org.apache.ant.engine.TaskEngine;
-import org.apache.ant.tasks.BaseTask;
-import org.apache.ant.tasks.Task;
-
-public class Target extends BaseTask {
-    
-    private String depends;
-    private String ifCond;
-    private String unlessCond;
-    
-    public Target() {
-        super();
-    }
-    
-    public String getIf() {
-        return ifCond;
-    }
-    
-    public void setIf(String condition) {
-        this.ifCond = condition;
-    }
-    
-    public String getUnless() {
-        return unlessCond;
-    }
-    
-    public void setUnless(String condition) {
-        this.unlessCond = condition;
-    }
-    
-    public void setDepends(String newDepends) {
-        this.depends = newDepends;
-    }
-    
-    public String getDepends() {
-        return depends;
-    }
-    
-    ////////////////////////////////////////////////////////////////////////////
-    //                        BaseTask Implementation                         //
-    ////////////////////////////////////////////////////////////////////////////
-    
-    public int getExecutionMode() {
-        return Task.EXECUTION_MODE_EXPLICIT;
-    }
-    
-    /**
-     * Note that dependencies are executed before the task at hand.
-     */
-    public void execute(TaskEngine engine) throws AntException {
-        if (getDepends() != null && getDepends().length() > 0) {
-            Task dependencyTask = getTask(getDepends());
-            if (dependencyTask == null) {
-                throw new AntException(
-                                       "Cannot find dependency, " + getDepends() + " from Task.");
-            }
-            
-            engine.execute(dependencyTask);
-        }
-    }
-    
-    public boolean isPropertyContainer() {
-        return true;
-    }
-}
diff --git a/proposal/frantic/src/org/apache/ant/tasks/util/Property.java b/proposal/frantic/src/org/apache/ant/tasks/util/Property.java
deleted file mode 100644
index 559c837..0000000
--- a/proposal/frantic/src/org/apache/ant/tasks/util/Property.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.tasks.util;
-
-
-
-import org.apache.ant.AntException;
-import org.apache.ant.engine.TaskEngine;
-import org.apache.ant.tasks.BaseTask;
-
-public class Property extends BaseTask {
-    
-    private String value;
-    private String name;
-    
-    public Property() {
-        super();
-    }
-    
-    public String getValue() {
-        return value;
-    }
-    
-    public void setValue(String value) {
-        this.value = value;
-    }
-    
-    public void setName(String name) {
-        this.name = name;
-    }
-    
-    public String getName() {
-        return name;
-    }
-    
-    ////////////////////////////////////////////////////////////////////////////
-    //                        BaseTask Implementation                         //
-    ////////////////////////////////////////////////////////////////////////////
-    
-    public void execute(TaskEngine engine) throws AntException {
-        if (getParent() == null) {
-            throw new AntException("A Property Task must have a parent Task.");
-        }
-        engine.setPropertyValue(getName(), getValue());
-    }
-}
diff --git a/proposal/frantic/src/org/apache/ant/tasks/util/PropertyDump.java b/proposal/frantic/src/org/apache/ant/tasks/util/PropertyDump.java
deleted file mode 100644
index 66c3dd7..0000000
--- a/proposal/frantic/src/org/apache/ant/tasks/util/PropertyDump.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.tasks.util;
-
-
-
-import java.util.*;
-import org.apache.ant.AntException;
-import org.apache.ant.engine.TaskEngine;
-import org.apache.ant.tasks.BaseTask;
-
-public class PropertyDump extends BaseTask {
-    
-    public PropertyDump() {
-        super();
-    }
-    
-    ////////////////////////////////////////////////////////////////////////////
-    //                        BaseTask Implementation                         //
-    ////////////////////////////////////////////////////////////////////////////
-    
-    public void execute(TaskEngine engine) throws AntException {
-        List propNames = engine.getPropertyNames();
-        for (Iterator i = propNames.iterator(); i.hasNext();) {
-            String name = (String)i.next();
-            String value = engine.getPropertyValue(name).toString();
-            engine.message(this, name + " = " + value);
-        }
-    }
-}
diff --git a/proposal/frantic/src/org/apache/ant/test/SimpleTest.java b/proposal/frantic/src/org/apache/ant/test/SimpleTest.java
deleted file mode 100644
index 3abe5c4..0000000
--- a/proposal/frantic/src/org/apache/ant/test/SimpleTest.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.ant.test;
-
-
-
-
-import org.apache.ant.AntException;
-import org.apache.ant.engine.DefaultEngineListener;
-import org.apache.ant.engine.TaskEngine;
-import org.apache.ant.engine.TaskEngineImpl;
-import org.apache.ant.tasks.Task;
-import org.apache.ant.tasks.build.Project;
-import org.apache.ant.tasks.build.Target;
-import org.apache.ant.tasks.util.Property;
-import org.apache.ant.tasks.util.PropertyDump;
-
-public class SimpleTest {
-    
-    Task target;
-    
-    public SimpleTest() {
-        try {
-            Task rootTask = buildProject();
-            TaskEngine engine = TaskEngineImpl.getTaskEngine();
-            engine.addAntEngineListener(new DefaultEngineListener());
-            engine.execute(rootTask, target);
-        } catch (AntException ax) {
-            ax.printStackTrace(System.err);
-        }
-    }
-    
-    protected Task buildProject() {
-        Project project = new Project();
-        project.setTaskName("project");
-        project.setBasedir("somedir");
-        project.setDefault("build");
-        
-        Property property1 = new Property();
-        property1.setTaskName("prop1");
-        property1.setName("basedir");
-        property1.setValue("/org/apache");
-        project.addChild(property1);
-        
-        Property property2 = new Property();
-        property2.setTaskName("prop2");
-        property2.setName("dir1");
-        property2.setValue("${basedir}/ant");
-        project.addChild(property2);
-        
-        Target target1 = new Target();
-        target1.setTaskName("clean");
-        project.addChild(target1);
-        
-        PropertyDump pd = new PropertyDump();
-        pd.setTaskName("dump");
-        target1.addChild(pd);
-        
-        Target target2 = new Target();
-        target2.setTaskName("prepare");
-        target2.setDepends("../clean");
-        project.addChild(target2);
-        
-        Property property3 = new Property();
-        property3.setTaskName("prop3");
-        property3.setName("dir2");
-        property3.setValue("${dir1}/tasks");
-        target2.addChild(property3);
-        
-        Target target3 = new Target();
-        target3.setTaskName("build");
-        target3.setDepends("../prepare");
-        project.addChild(target3);
-        
-        Property property4 = new Property();
-        property4.setTaskName("prop4");
-        property4.setName("dir3");
-        property4.setValue("r2}");
-        target3.addChild(property4);
-        
-        Property property5 = new Property();
-        property5.setTaskName("prop5");
-        property5.setName("dir4");
-        property5.setValue("${di${dir3}");
-        target3.addChild(property5);
-        
-        target = target2;
-        
-        return project;
-    }
-    
-    public static void main(String[] args) {
-        SimpleTest simpleTest1 = new SimpleTest();
-    }
-}
diff --git a/proposal/frantic/website/Task.html b/proposal/frantic/website/Task.html
deleted file mode 100644
index 73c808f..0000000
--- a/proposal/frantic/website/Task.html
+++ /dev/null
@@ -1,471 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
-<!--NewPage-->
-<HTML>
-<HEAD>
-<!-- Generated by javadoc on Sat Dec 16 22:19:46 EST 2000 -->
-<TITLE>
-: Interface  Task
-</TITLE>
-<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
-</HEAD>
-<BODY BGCOLOR="white">
-
-<!-- ========== START OF NAVBAR ========== -->
-<A NAME="navbar_top"><!-- --></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_top_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
-  <TR ALIGN="center" VALIGN="top">
-  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
-  </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-</EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;PREV CLASS&nbsp;
-&nbsp;NEXT CLASS</FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-  <A HREF="../../../../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
-&nbsp;<A HREF="Task.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
-</TR>
-<TR>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
-</TR>
-</TABLE>
-<!-- =========== END OF NAVBAR =========== -->
-
-<HR>
-<!-- ======== START OF CLASS DATA ======== -->
-<H2>
-<FONT SIZE="-1">
-org.apache.ant.tasks</FONT>
-<BR>
-Interface  Task</H2>
-<HR>
-<DL>
-<DT>public interface <B>Task</B></DL>
-
-<P>
-Task is the core interface for all structures that will be processed by the
- TaskEngine.
-<P>
-<HR>
-
-<P>
-<!-- ======== INNER CLASS SUMMARY ======== -->
-
-
-<!-- =========== FIELD SUMMARY =========== -->
-
-<A NAME="field_summary"><!-- --></A>
-<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TD COLSPAN=2><FONT SIZE="+2">
-<B>Field Summary</B></FONT></TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;int</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#EXECUTION_MODE_EXPLICIT">EXECUTION_MODE_EXPLICIT</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;int</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#EXECUTION_MODE_IMPLICIT">EXECUTION_MODE_IMPLICIT</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;int</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#EXECUTION_MODE_PRIORITY">EXECUTION_MODE_PRIORITY</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;char</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#NAME_SEPARATOR">NAME_SEPARATOR</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-</TR>
-</TABLE>
-&nbsp;
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-
-<A NAME="method_summary"><!-- --></A>
-<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TD COLSPAN=2><FONT SIZE="+2">
-<B>Method Summary</B></FONT></TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#execute(org.apache.ant.engine.TaskEngine)">execute</A></B>(org.apache.ant.engine.TaskEngine&nbsp;engine)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Causes the existing Task implementation to execute.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#getAttributeValue(java.lang.String)">getAttributeValue</A></B>(java.lang.String&nbsp;name)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Each Task will hold its attributes in some manner.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="../../../../org/apache/ant/tasks/Task.html">Task</A>[]</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#getChildren()">getChildren</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the an array of Task objects that are subordinate to this Task.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;int</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#getExecutionMode()">getExecutionMode</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines whether this Task is executed whenever its parent is executed,
- or if its execution must be specifically requested.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#getFullyQualifiedName()">getFullyQualifiedName</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The "fully-qualified" name of a Task is the Task's name, prepended by its
- parent's name, prepended by its parent's name, etc.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="../../../../org/apache/ant/tasks/Task.html">Task</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#getParent()">getParent</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this Task's parent Task.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="../../../../org/apache/ant/tasks/Task.html">Task</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#getRootTask()">getRootTask</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Proceed backwards through the nodes until we come across the first Task
- in the tree.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="../../../../org/apache/ant/tasks/Task.html">Task</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#getTask(java.lang.String)">getTask</A></B>(java.lang.String&nbsp;taskPath)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A mechanism for locating a task relative to the current task.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#getTaskName()">getTaskName</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Just a simple name used to identify a Task.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#init(org.apache.ant.engine.TaskEngine)">init</A></B>(org.apache.ant.engine.TaskEngine&nbsp;engine)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called when the Task first gets "noticed" by the TaskEngine.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#isPropertyContainer()">isPropertyContainer</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines whether a Task is suitable for holding property values.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#setParent(org.apache.ant.tasks.Task)">setParent</A></B>(<A HREF="../../../../org/apache/ant/tasks/Task.html">Task</A>&nbsp;parent)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the Task's parent.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../org/apache/ant/tasks/Task.html#validate()">validate</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Each Task should have the ability to validate its state.</TD>
-</TR>
-</TABLE>
-&nbsp;
-<P>
-
-<!-- ============ FIELD DETAIL =========== -->
-
-<A NAME="field_detail"><!-- --></A>
-<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TD COLSPAN=1><FONT SIZE="+2">
-<B>Field Detail</B></FONT></TD>
-</TR>
-</TABLE>
-
-<A NAME="EXECUTION_MODE_IMPLICIT"><!-- --></A><H3>
-EXECUTION_MODE_IMPLICIT</H3>
-<PRE>
-public static final int <B>EXECUTION_MODE_IMPLICIT</B></PRE>
-<DL>
-</DL>
-<HR>
-
-<A NAME="EXECUTION_MODE_EXPLICIT"><!-- --></A><H3>
-EXECUTION_MODE_EXPLICIT</H3>
-<PRE>
-public static final int <B>EXECUTION_MODE_EXPLICIT</B></PRE>
-<DL>
-</DL>
-<HR>
-
-<A NAME="EXECUTION_MODE_PRIORITY"><!-- --></A><H3>
-EXECUTION_MODE_PRIORITY</H3>
-<PRE>
-public static final int <B>EXECUTION_MODE_PRIORITY</B></PRE>
-<DL>
-</DL>
-<HR>
-
-<A NAME="NAME_SEPARATOR"><!-- --></A><H3>
-NAME_SEPARATOR</H3>
-<PRE>
-public static final char <B>NAME_SEPARATOR</B></PRE>
-<DL>
-</DL>
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-
-
-<!-- ============ METHOD DETAIL ========== -->
-
-<A NAME="method_detail"><!-- --></A>
-<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TD COLSPAN=1><FONT SIZE="+2">
-<B>Method Detail</B></FONT></TD>
-</TR>
-</TABLE>
-
-<A NAME="execute(org.apache.ant.engine.TaskEngine)"><!-- --></A><H3>
-execute</H3>
-<PRE>
-public void <B>execute</B>(org.apache.ant.engine.TaskEngine&nbsp;engine)
-             throws org.apache.ant.AntException</PRE>
-<DL>
-<DD>Causes the existing Task implementation to execute.</DL>
-<HR>
-
-<A NAME="init(org.apache.ant.engine.TaskEngine)"><!-- --></A><H3>
-init</H3>
-<PRE>
-public void <B>init</B>(org.apache.ant.engine.TaskEngine&nbsp;engine)
-          throws org.apache.ant.AntException</PRE>
-<DL>
-<DD>Called when the Task first gets "noticed" by the TaskEngine.</DL>
-<HR>
-
-<A NAME="validate()"><!-- --></A><H3>
-validate</H3>
-<PRE>
-public void <B>validate</B>()
-              throws org.apache.ant.AntException</PRE>
-<DL>
-<DD>Each Task should have the ability to validate its state. This would be
- invoked by the TaskEngine prior to commencing an execution cycle.</DL>
-<HR>
-
-<A NAME="getTaskName()"><!-- --></A><H3>
-getTaskName</H3>
-<PRE>
-public java.lang.String <B>getTaskName</B>()</PRE>
-<DL>
-<DD>Just a simple name used to identify a Task. This name is only sufficient
- for simple debugging and GUI output. It does not uniquely identify a
- Task.<DD><DL>
-<DT><B>See Also: </B><DD><A HREF="../../../../org/apache/ant/tasks/Task.html#getFullyQualifiedName()"><CODE>getFullyQualifiedName()</CODE></A></DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="getTask(java.lang.String)"><!-- --></A><H3>
-getTask</H3>
-<PRE>
-public <A HREF="../../../../org/apache/ant/tasks/Task.html">Task</A> <B>getTask</B>(java.lang.String&nbsp;taskPath)</PRE>
-<DL>
-<DD>A mechanism for locating a task relative to the current task. This
- navigation sceme will mimic a typical OS system. '..' will move back
- a level in the Task tree. If taskPath begins with '/' then the root node
- will be used as a starting point.
- <p></p>
- Returns null of no task is found at this location.</DL>
-<HR>
-
-<A NAME="getRootTask()"><!-- --></A><H3>
-getRootTask</H3>
-<PRE>
-public <A HREF="../../../../org/apache/ant/tasks/Task.html">Task</A> <B>getRootTask</B>()</PRE>
-<DL>
-<DD>Proceed backwards through the nodes until we come across the first Task
- in the tree. This is the root Task.</DL>
-<HR>
-
-<A NAME="getFullyQualifiedName()"><!-- --></A><H3>
-getFullyQualifiedName</H3>
-<PRE>
-public java.lang.String <B>getFullyQualifiedName</B>()</PRE>
-<DL>
-<DD>The "fully-qualified" name of a Task is the Task's name, prepended by its
- parent's name, prepended by its parent's name, etc. This method may be
- used by the Task's hashCode() method to calculate a hash that will
- uniquely identify a Task.</DL>
-<HR>
-
-<A NAME="getExecutionMode()"><!-- --></A><H3>
-getExecutionMode</H3>
-<PRE>
-public int <B>getExecutionMode</B>()</PRE>
-<DL>
-<DD>Determines whether this Task is executed whenever its parent is executed,
- or if its execution must be specifically requested.
- <p></p>
- <dl><dt>EXECUTION_MODE_EXPLICIT</dt>
- <dd>Requires interaction by the TaskEngine in order to execute.</dd>
- <dt>EXECUTION_MODE_IMPLICIT</dt>
- <dd>This Task is automatically executed when its parent is
- executed.</dd>
- <dt>EXECUTION_MODE_PRIORITY</dt>
- <dd>These Tasks are executed prior to its parent's execution</dd></dl>
- <p></p>
- The default mode should probably be EXECUTION_MODE_IMPLICIT. In the
- build domain of Ant, every Task below a Task will normally be executed.
- The major exception to this is the Target. When a Project Task is
- executed, all Target Tasks do <i>not</i> automatically fire, however all
- Property Tasks <i>do</i> execute.</DL>
-<HR>
-
-<A NAME="isPropertyContainer()"><!-- --></A><H3>
-isPropertyContainer</H3>
-<PRE>
-public boolean <B>isPropertyContainer</B>()</PRE>
-<DL>
-<DD>Determines whether a Task is suitable for holding property values.</DL>
-<HR>
-
-<A NAME="getAttributeValue(java.lang.String)"><!-- --></A><H3>
-getAttributeValue</H3>
-<PRE>
-public java.lang.String <B>getAttributeValue</B>(java.lang.String&nbsp;name)</PRE>
-<DL>
-<DD>Each Task will hold its attributes in some manner. This method will allow
- the Task implementation to return the value of its attribute.</DL>
-<HR>
-
-<A NAME="getParent()"><!-- --></A><H3>
-getParent</H3>
-<PRE>
-public <A HREF="../../../../org/apache/ant/tasks/Task.html">Task</A> <B>getParent</B>()</PRE>
-<DL>
-<DD>Returns this Task's parent Task. If this Task is the root Task, then this
- method will return null.</DL>
-<HR>
-
-<A NAME="setParent(org.apache.ant.tasks.Task)"><!-- --></A><H3>
-setParent</H3>
-<PRE>
-public void <B>setParent</B>(<A HREF="../../../../org/apache/ant/tasks/Task.html">Task</A>&nbsp;parent)</PRE>
-<DL>
-<DD>Sets the Task's parent.</DL>
-<HR>
-
-<A NAME="getChildren()"><!-- --></A><H3>
-getChildren</H3>
-<PRE>
-public <A HREF="../../../../org/apache/ant/tasks/Task.html">Task</A>[] <B>getChildren</B>()</PRE>
-<DL>
-<DD>Returns the an array of Task objects that are subordinate to this Task.</DL>
-<!-- ========= END OF CLASS DATA ========= -->
-<HR>
-
-<!-- ========== START OF NAVBAR ========== -->
-<A NAME="navbar_bottom"><!-- --></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_bottom_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
-  <TR ALIGN="center" VALIGN="top">
-  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
-  </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-</EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;PREV CLASS&nbsp;
-&nbsp;NEXT CLASS</FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-  <A HREF="../../../../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
-&nbsp;<A HREF="Task.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
-</TR>
-<TR>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
-</TR>
-</TABLE>
-<!-- =========== END OF NAVBAR =========== -->
-
-<HR>
-
-</BODY>
-</HTML>
diff --git a/proposal/frantic/website/images/frantic_logo.gif b/proposal/frantic/website/images/frantic_logo.gif
deleted file mode 100644
index fe40da4..0000000
--- a/proposal/frantic/website/images/frantic_logo.gif
+++ /dev/null
Binary files differ
diff --git a/proposal/frantic/website/images/task_hierarchy.gif b/proposal/frantic/website/images/task_hierarchy.gif
deleted file mode 100644
index ff8db94..0000000
--- a/proposal/frantic/website/images/task_hierarchy.gif
+++ /dev/null
Binary files differ
diff --git a/proposal/frantic/website/index.html b/proposal/frantic/website/index.html
deleted file mode 100644
index 1491dfe..0000000
--- a/proposal/frantic/website/index.html
+++ /dev/null
@@ -1,217 +0,0 @@
-<html>
-<head>
-<title>Ant Proposal - Frantic</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<style type="text/css">
-<!--
-.quote {  font-family: "Times New Roman", Times, serif; font-size: 24pt}
-p {  font-family: Verdana, Arial, Helvetica, sans-serif}
-h1 {  font-family: "Times New Roman", Times, serif; color: #330099; font-weight: bold}
-h2 {  font-family: Verdana, Arial, Helvetica, sans-serif; color: #3300CC}
-h3 {  font-family: Arial, Helvetica, sans-serif; font-weight: bold; color: #3300CC}
-a {  text-decoration: none; color: #9900FF}
-a:hover {  text-decoration: underline}
-h5 {  font-family: Verdana, Arial, Helvetica, sans-serif}
--->
-</style>
-</head>
-
-<body bgcolor="#FFFFFF">
-<h1 align="center"><img src="images/frantic_logo.gif" width="250" height="264" align="left">Ant 
-  2.0 Proposal</h1>
-<h2 align="center">Code Name - Frantic</h2>
-<p>Frantic hardly describes the proposal process...more like my coding and design 
-  efforts! I am relatively new to Ant and the mail list, and I have posted several 
-  emails recently regarding the use of DOM in the future of Ant. Once I discovered 
-  the mail archive (thanks Simeon), I had a chance to notice that many of my questions 
-  were asked before. My extemporaneous emails were not without consequence it 
-  seems. After writing one of them it set some wheels in motion for what I hope 
-  is a useful addition to the current (and growing) number of proposals for Ant 
-  2.0.</p>
-<center>
-<table width="50%" border="0" bgcolor="#9933FF" cellpadding="1" cellspacing="0">
-  <tr>
-    <td>
-      <table width="100%" border="0" cellpadding="4">
-          <tr bgcolor="#CCCCFF" align="center"> 
-            <td> 
-              <p>I think the concept behind Ant should be changed to be a "Task 
-                Execution Engine", and the concept of Project and Target can be 
-                generalized into a specific form of a Task.</p>
-            </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-</center>
-<p>&nbsp;</p>
-<p>The email list has received some requests from developers to extend Ant to 
-  support different problem domains. Peter Donald has latched onto this issue 
-  and I understand that he has incorporated some of these ideas into his Ant proposal. 
-  I also have seen some very impressive DOM support integrated into Antidote, 
-  an elegant basis for a GUI editor crafted by Simeon Fitch. Sim achieves a great 
-  deal of flexibility by using the W3C DOM as a superclass to his Project/Target/Task 
-  objects. He has, in effect, abstracted each of these &quot;core&quot; Ant objects 
-  until they are simply DOM nodes.</p>
-<p>Peter's and Sim's ideas struck a chord and I thought that Peter's desire to 
-  allow Ant to break free from the Build domain and into Install domains by extending 
-  Ant, could be achieved by looking at the problem from a different point of view. 
-  As I stated in my email, we can achieve a much higher degree of flexibility 
-  in Ant by generalizing more.</p>
-<h3>Design Proposal</h3>
-<p>I believe that Ant 2.0 should be re-termed a <b><i>Task Execution Engine</i></b>, 
-  and the core of Ant becomes the Engine and the Task. This seems a little radical 
-  considering that the Project/Target/Task object model has served us so well 
-  in Ant 1.x, however it is very clear that Project and Target are simple another 
-  type of Task.</p>
-<p>An enormous amount of code has been added to maintain Project and Target as 
-  separate classes with distinct, hard-coded behaviors. From the proof-of-concept 
-  code that I have been developing, I am inspired by how much more elegant the 
-  code becomes when this simplified model is realized. </p>
-
-<p>Having a base Task interface that all Tasks implement will also offer a generalized 
-  approach that benefits GUI's in much the same manner that the DOM has helped 
-  Antidote. Also, by making Task an interface instead of a class, we can finally 
-  free ourselves of implementation specifics.</p>
-<p>As I was writing the concept code, it struck me that I was too worried about 
-  the XML. Simeon Fitch mentioned in an email in early December, the possibility 
-  of storing build scripts in a database. I think this, along with various comments 
-  about DOM dependencies from Peter Donald, Jose Alberto Fernandez, and Stefan 
-  Bodewig made me realize that Core Ant shouldn't care where the build script 
-  lives or in which format it is stored. It is the object model that is primarily 
-  important.</p>
-<h3>The Task</h3>
-<p>The cornerstone of this proposal hinges on the <a href="Task.html" target="new">Task</a> 
-  Interface. It is the only type of external object that the Execution Engine 
-  knows how to handle. It is in this simplicity that the most powerful Ant can 
-  be realized.</p>
-<p>The Task is an object that is aware of it's place in ahierarchy. To this end 
-  it is aware of its parent and its children. Please note that this is a runtime 
-  dependency and a scripting language (or the Task itself) can dynamically change 
-  the relationship of Tasks.</p>
-<table border="0" align="left">
-  <tr> 
-    <td><img src="images/task_hierarchy.gif" width="200" height="140"></td>
-  </tr>
-  <tr align="center"> 
-    <td> 
-      <h5><i>Figure 1</i></h5>
-    </td>
-  </tr>
-</table>
-<p>Key to being able to manipulate Tasks at runtime is some sort of naming conventions. 
-  Currently in the Frantic design is the concept of a Task name. Tasks, being 
-  hierarchical, can be thought of as a directory structure (see figure 1). If 
-  each Task is assigned a name that is unique among its siblings, we can then 
-  have a powerful means of locating and referencing a particular Task anywhere 
-  in the hierarchy. </p>
-<p>For example, the Property Task below the Target named &quot;build&quot; has 
-  a name of &quot;prop3&quot;, however its &quot;fully-qualified&quot; name is 
-  /root/build/prop3. The root of a Task execution list is &quot;/&quot; and the 
-  tag name, in our example /root. In the concept source code I use this principal 
-  of hierarchical naming to support dependencies. Currently, I am treating these 
-  Task names as directories and not as files. This should perhaps change slightly 
-  to the filename approach. In the directory-based approach, a sibling is named 
-  &quot;../sibling&quot;. It would be more convenient to not require the &quot;../&quot;. 
-  In fact, I think I have convinced myself of this.</p>
-<h3> Task Discovery</h3>
-<p>I haven't coded this portion, however I plan on basing it on Duncan's idea 
-  of using the Jar manifests to locate and identify tasks on the classpath. I 
-  was first exposed to this technique in the OpenTools API of Borland's JBuilder 
-  IDE, and I have since used it on a large project for a consulting customer.</p>
-<p>The classpath is scanned at runtime to locate all directories and jar files. 
-  These directories and jar files will have a manifest file that will contain 
-  manifest entries that serve to tie a string token to the Task implementation 
-  class responsible for that token. Directories cannot have manifests per se, 
-  but we will utilize a file, one-level up from the directory, with a name &quot;directory-name.mf&quot;. 
-  This file will be in the format of a manifest file. This will allow developers 
-  to create and test new Tasks without the burden of having to make a Jar archive 
-  every time.</p>
-<h3>Attribute Validation</h3>
-<p>Brett McLaughlin introduced a very interesting techique to perform object validation 
-  using XML Schema in a series of <a href="http://www.javaworld.com/javaworld/jw-09-2000/jw-0908-validation.html">JavaWorld 
-  articles</a>. I can see this technique applied to Tasks as well. The user could 
-  include a schema with a special name in the jar file that accompanies the Tasks. 
-  This schema could be used at runtime to validate a Task's attributes.</p>
-<p>I would imagine that this feature would be outside of what is considered &quot;core&quot; 
-  Ant.</p>
-<h3>The Execution Engine</h3>
-<p>The engine only knows how to process Task objects, and that is what makes it 
-  extremely efficient. It is modeled after how I believe a compiler, or command 
-  interpreter would function. It contains a call stack which I call a <i><b>task 
-  stack</b></i>, and this task stack is under complete control of the engine. 
-  This is not to say that Tasks cannot manipulate the task stack at runtime, because 
-  they do. However, all of this access takes place under the watchful eye of the 
-  execution engine. </p>
-<h3>Properties</h3>
-<p>Keeping track of properties is closely tied to the execution engine, and I 
-  modeled it in a manner consistent with how I believe compilers must work. I 
-  use the concept of a hierarchical series of hashtables that support the concept 
-  of scope in property lists.</p>
-<p>I had originally put the concept of a property into a Task and completely implemented 
-  the bugger. It turned out during testing that my logic was flawed. It seemed 
-  to work well at first...a property defined in a Task would be available to all 
-  child Tasks, but unavailable to any ancestors. When a Task requested the latest 
-  data on a property, it would look in its property list. If it wasn't found there, 
-  it would look in its parent's list, and so on. Instant scope.</p>
-<p>However, it became quickly apparent that properties are a &quot;runtime&quot; 
-  consideration. This is something that Jose Alberto Fernandez will not let any 
-  of us forget for long. :-) What I needed was to move this hierarchical chain 
-  of property lists into the engine. For each new Task executed, a new property 
-  list is created and also pushed onto the stack. It seems to work like a champ.</p>
-<p>I also coded up key substitution into the getParameterValue() events. They 
-  seem to work fine, although I haven't worked up enough test cases to be sure.</p>
-<p>One additional cool feature is that parameters need not only hold Strings. 
-  I thought that there would be occasions where properties will hold Tasks as 
-  well. I believe this will turn out to be a prime mechanism for creating reference 
-  id Tasks like the current FileSet objects and referring to them in other Tasks 
-  just as you would any property value.</p>
-<h3>Attributes</h3>
-<p>I haven't spent any time addresing what is currently referred to a Task's attributes 
-  in Ant 1.x. I still need to think about this concept some more, but as I dwell 
-  on what an attribute is, I keep coming back to the properties. Just like a property 
-  functions as a scoped variable, an attribute is the same thing. Albeit, its 
-  scope is limited to the Task that uses it, but so what.</p>
-<h3>Execution Events</h3>
-<p>The execution engine also supports a few key events that can occur during the 
-  execution lifecycle. Currently events exist for execution start/finish, task 
-  start/execute/finish, exceptions, and simple messaging. The messaging event 
-  allows Tasks to communicate in a standard way that will leverage the engine's 
-  event system to allow various front-ends to intelligently and appropriately 
-  process the output.</p>
-<h3>Scripting</h3>
-<p>I have no experience with incorporating a scripting engine into an engine, 
-  but I do know that this proposal should address the primary issues that surround 
-  such an integration. I think that two features which are absolutely essential 
-  are:</p>
-<p> Provide some sort of naming convention such that a particular Task can be 
-  found given an absolute name or a name relative to another Task. This is complete 
-  and working in the concept code.</p>
-<p>Leave all decisions regarding property evaluation and Task's knowledge of these 
-  properties until the last possible moment.</p>
-<h3>Recursive Tasks</h3>
-<p>I realize that Ant 1.x spent some clock cycles dedicated to resolving circular 
-  references in the Task definitions. I didn't spend any time on that intentionally. 
-  I am not so sure that the elimination of circular references is a good idea. 
-  Especially moving forward, with the incorporation of a scripting language, I 
-  can envision Tasks the assembler wants to execute repeatedly, perhaps even recursively. 
-  I think we should treat this the same way that any modern computer language 
-  would &#151; <i>caveat emptor</i>.</p>
-<h3>Summary</h3>
-<p>There is a lot more to do with this proposal and the concept code. It has been 
-  an exciting weekend getting these thoughts down and trying to back them up. 
-  I look forward to collaborating with others on the list if they wish to help 
-  me, even though I am in proposal phase. I certainly don't know much about XML 
-  parsing and I could use some ideas on how to further my starting model. I would 
-  love to show the Ant core model built in a Builder agnostic manner. Basically, 
-  I want XML to be an option, not a requirement.</p>
-<p>I would also be interested in perhaps building an adapter task that will allow 
-  Ant 1.x tasks to be reused unchanged in the Frantic proposal. The concept of 
-  a Task hasn't changed much, so perhaps this is a possibility.</p>
-<p>As always, your feedback is welcome. I expect that I have missed some major 
-  holes and I would like the opportunity to work with others to plug them up!</p>
-<p><a href="mailto:jimcook@visualxs.com">Jim Cook</a><br>
-  <a href="http://www.visualxs.com/">Visual XS</a></p>
-</body>
-</html>
diff --git a/proposal/myrmidon/.cvsignore b/proposal/myrmidon/.cvsignore
deleted file mode 100644
index d6bf360..0000000
--- a/proposal/myrmidon/.cvsignore
+++ /dev/null
@@ -1,8 +0,0 @@
-.ant.properties
-docs
-prj.el
-test
-emacs-jprj.el
-dist
-build
-
diff --git a/proposal/myrmidon/build.bat b/proposal/myrmidon/build.bat
deleted file mode 100755
index d6eddb2..0000000
--- a/proposal/myrmidon/build.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-
-echo.
-echo Ant Build System
-echo ----------------
-
-set ANT_HOME=tools
-
-set LOCALCLASSPATH=
-for %%i in (lib\*.jar) do call tools\bin\lcp.bat %%i
-set CLASSPATH=%LOCALCLASSPATH%
-set LOCALCLASSPATH=
-
-%ANT_HOME%\bin\ant.bat -logger org.apache.tools.ant.NoBannerLogger -emacs %1 %2 %3 %4 %5 %6 %7 %8
-goto cleanup
-
-:cleanup
-set ANT_HOME=
-set CLASSPATH=
diff --git a/proposal/myrmidon/build.sh b/proposal/myrmidon/build.sh
deleted file mode 100644
index 5f69d90..0000000
--- a/proposal/myrmidon/build.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-echo
-echo "Ant Build System"
-echo "----------------"
-
-chmod u+x $PWD/bin/antRun
-chmod u+x $PWD/bin/ant
-
-export ANT_HOME=.
-
-$PWD/bin/ant -emacs $@
diff --git a/proposal/myrmidon/build.xml b/proposal/myrmidon/build.xml
deleted file mode 100644
index a54f70f..0000000
--- a/proposal/myrmidon/build.xml
+++ /dev/null
@@ -1,282 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-==============================================================================
-
- Ant build file
-
-Authors:
- Peter Donald <donaldp@apache.org>
-
-Legal:
-  Copyright (c) 2000 The Apache Software Foundation. All Rights Reserved.
-
-==============================================================================
--->
-
-<project default="main" basedir=".">
-
-  <!--
-    Give user a chance to override without editing this file
-    (and without typing -D each time he compiles it)
-  -->
-  <property file=".ant.properties"/>
-  <property file="${user.home}/.ant.properties"/>
-
-  <property name="name" value="ant"/>
-  <property name="Name" value="Ant"/>
-  <property name="version" value="0.01-myrmidon"/>
-  <property name="year" value="2000"/>
-
-  <!-- 
-    these are here only for those who use jikes compiler. For other 
-    developers this part makes no difference.
-  -->
-  <property name="build.compiler.emacs" value="on"/>
-  <property name="build.compiler.warnings" value="true"/>
-  <property name="build.compiler.pedantic" value="true"/>
-  <property name="build.compiler.depend" value="true"/>
-  <property name="build.compiler.fulldepend" value="true"/>
-
-  <property name="debug" value="on"/>
-  <property name="optimize" value="off"/>
-  <property name="deprecation" value="on"/>
-
-  <property name="build.dir" value="build"/>
-  <property name="build.lib" value="${build.dir}/lib"/>
-  <property name="build.src" value="${build.dir}/src"/>
-  <property name="build.classes" value="${build.dir}/classes"/>
-  <property name="build.javadocs" value="${build.dir}/javadocs"/>
-  <property name="build.docs" value="${build.dir}/docs"/>
-
-  <property name="src.base" value="src"/>
-  <property name="manifest.dir" value="${src.base}/manifest"/>
-  <property name="xdocs.dir" value="${src.base}/xdocs"/>
-  <property name="java.dir" value="${src.base}/java"/>
-  <property name="skins.dir" value="${src.base}/skins"/>
-  <property name="script.dir" value="${src.base}/script"/>
-  <property name="lib.dir" value="lib"/>
-
-  <property name="dist.name" value="${Name}-${version}"/>
-  <!--   <property name="dist.dir" value="${dist.name}"/> -->
-  <property name="dist.dir" value="dist"/>
-  <property name="dist.bin" value="${dist.dir}/bin"/>
-  <property name="dist.blocks" value="${dist.dir}/bin/blocks"/>
-  <property name="dist.lib" value="${dist.dir}/lib"/>
-  <property name="dist.docs" value="${dist.dir}/docs"/>
-  <property name="dist.javadocs" value="${dist.dir}/docs/api"/>
-  <property name="dist.src.base" value="${dist.dir}/src"/>
-  <property name="dist.conf" value="${dist.dir}/conf"/>
-  <property name="dist.log" value="${dist.dir}/logs"/>
-
-  <property name="constants.file" value="org/apache/ant/Constants.java"/>
-
-  <!--
-       ===================================================================
-                                  Main target
-       ===================================================================
-  -->
-  <target name="main" depends="dist" />
-
-  <!--
-       ===================================================================
-                                  Help on usage
-       ===================================================================
-  -->
-  <target name="usage">
-    <echo message=""/>
-    <echo message="${Name} Build file"/>
-    <echo message="-------------------------------------------------------------"/>
-    <echo message=""/>
-    <echo message=" available targets are:"/>
-    <echo message=""/>
-    <echo message="   jar        -> generates the ${Name} jar files"/>
-    <echo message="   compile    -> compiles the source code"/>
-    <echo message="   dist       -> generates the ${Name} distribution (default)"/>
-    <echo message="   clean      -> cleans up the created directories"/>
-    <echo message="   real-clean -> cleans up all genereated files and directories"/>
-<!--
-    <echo message="   test       -> perform unit tests"/>
-    <echo message="   javadocs   -> generates the API documentation (java 1.2+ only)"/>
-    <echo message="   docs       -> generates the ${Name} documentation"/> 
--->
-    <echo message=""/>
-    <echo message="-------------------------------------------------------------"/>
-    <echo message=""/>
-  </target>
-
-  <target name="help" depends="usage"/>
-
-  <!--
-       ===================================================================
-                         Prepares the build directory
-       ===================================================================
-  -->
-  <target name="prepare">
-    <tstamp/>
-    <mkdir dir="${build.dir}"/>
-  </target>
-
-  <!--
-       ===================================================================
-                           Prepares the library code
-       ===================================================================
-   -->
-  <target name="prepare-lib" depends="prepare">
-    <mkdir dir="${build.lib}"/>
-    <copy file="${lib.dir}/xerces.jar" todir="${build.lib}"/>
-    <copy file="${lib.dir}/avalonapi.jar" todir="${build.lib}"/>
-  </target>
-
-  <!--
-       ===================================================================
-                           Prepares the source code
-       ===================================================================
-   -->
-  <target name="prepare-src" depends="prepare">
-    <mkdir dir="${build.src}"/>
-    <copy todir="${build.src}">
-      <fileset dir="${java.dir}">
-        <include name="${constants.file}" />
-      </fileset>
-    </copy>
- 
-    <replace file="${build.src}/${constants.file}" token="@@VERSION@@" value="${version}" />
-    <replace file="${build.src}/${constants.file}" token="@@DATE@@" value="${TODAY}" />
-  </target>
- 
-  <!--
-       ===================================================================
-                        Compiles the source code
-       ===================================================================
-  -->
-  <target name="compile" depends="prepare-src,prepare-lib">
-
-    <mkdir dir="${build.classes}"/>
-    <javac srcdir="${java.dir}"
-           destdir="${build.classes}"
-           debug="${debug}"
-           optimize="${optimize}"
-           deprecation="${deprecation}">
-        <exclude name="org/apache/ant/gui/**"/>
-        <exclude name="${constants.file}"/>
-        <src path="${build.src}" />
-    </javac>
-
-<!--
-    <copy todir="${build.classes}">
-      <fileset dir="${java.dir}">
-        <include name="**/*.properties"/>
-      </fileset>
-    </copy>
--->
-
-    <mkdir dir="${build.classes}/TASK-LIB"/>
-    <copy file="${manifest.dir}/taskdefs.xml" todir="${build.classes}/TASK-LIB"/>
-
-  </target>
-
-  <!--
-       ===================================================================
-                          Creates the ant.jar file
-       ===================================================================
-  -->
-  <target name="jar-ant" depends="compile">
-    <jar jarfile="${build.lib}/ant.jar" 
-         basedir="${build.classes}" 
-         manifest="${manifest.dir}/ant-manifest.mf">
-      <include name="org/apache/ant/launcher/*" />
-    </jar>
-  </target>
-
-  <!--
-       ===================================================================
-                          Creates the myrmidon.jar file
-       ===================================================================
-  -->
-  <target name="jar-myrmidon" depends="compile">
-    <jar jarfile="${build.lib}/myrmidon.jar" 
-         basedir="${build.classes}" 
-         manifest="${manifest.dir}/myrmidon-manifest.mf">
-      <include name="org/apache/ant/**" />
-      <exclude name="org/apache/ant/launcher/*" />
-      <exclude name="org/apache/ant/tasks/**" />
-      <exclude name="org/apache/ant/convert/core/**" />
-    </jar>
-  </target>
-
-  <!--
-       ===================================================================
-                          Creates the ant.jar file
-       ===================================================================
-  -->
-  <target name="jar-core" depends="compile">
-    <jar jarfile="${build.lib}/core.tsk" basedir="${build.classes}">
-      <include name="org/apache/ant/modules/**" />
-      <include name="TASK-LIB/*" />
-    </jar>
-  </target>
-
-  <!--
-       ===================================================================
-                          Creates the distribution
-       ===================================================================
-  -->
-  <target name="dist" depends="jar-ant,jar-core,jar-myrmidon">
-    <mkdir dir="${dist.dir}"/>
-    <mkdir dir="${dist.bin}"/>
-    <mkdir dir="${dist.lib}"/>
-
-    <copy todir="${dist.lib}">
-      <fileset dir="${build.lib}">
-        <exclude name="xalan*" />
-        <exclude name="StyleBook*" />
-      </fileset>
-    </copy>
-
-    <copy todir="${dist.bin}">
-      <fileset dir="${script.dir}"/>
-    </copy>
-
-    <chmod dir="${dist.dir}" perm="go-rwx" />
-    <chmod file="${dist.bin}/ant" perm="u+x"/>
-    <fixcrlf srcdir="${dist.bin}" cr="add" includes="**/*.bat" />
-    <fixcrlf srcdir="${dist.bin}" cr="remove" includes="**/*.sh" />
-    <fixcrlf srcdir="${dist.bin}" cr="remove" includes="ant" />
-
-  </target>
-
-  <!-- 
-       ===================================================================
-       Performs unit tests
-       =================================================================== 
-  -->
-  <target name="test" depends="jar-ant" if="test-task.present">
-    <ant antfile="build-test.xml" dir="src/make" target="test" />
-  </target>
-
-  <!--
-       ===================================================================
-                 Cleans up build and distribution directories
-       ===================================================================
-  -->
-  <target name="clean">
-    <delete dir="${build.dir}"/>
-    <delete dir="${dist.dir}"/>
-    <delete>
-      <fileset dir="." includes="**/*~" defaultexcludes="no"/>
-    </delete>
-  </target>
-
-  <!--
-       ===================================================================
-                      Cleans absolutely everything up
-       ===================================================================
-  -->
-  <target name="real-clean" depends="clean">
-    <delete file="${dist.name}.tar.gz"/>
-    <delete file="${dist.name}.zip"/>
-    <delete dir="${javadocs.dir}"/>
-  </target>
-
-</project>
diff --git a/proposal/myrmidon/lib/avalonapi.jar b/proposal/myrmidon/lib/avalonapi.jar
deleted file mode 100644
index 61ba263..0000000
--- a/proposal/myrmidon/lib/avalonapi.jar
+++ /dev/null
Binary files differ
diff --git a/proposal/myrmidon/lib/xerces.jar b/proposal/myrmidon/lib/xerces.jar
deleted file mode 100644
index f470895..0000000
--- a/proposal/myrmidon/lib/xerces.jar
+++ /dev/null
Binary files differ
diff --git a/proposal/myrmidon/src/java/org/apache/ant/AntContextResources.java b/proposal/myrmidon/src/java/org/apache/ant/AntContextResources.java
deleted file mode 100644
index c431862..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/AntContextResources.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant;
-
-/**
- * Interface that holds constants used to access variables from context.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface AntContextResources
-{
-    // the directory of ant
-    String HOME_DIR     = "ant.install.dir"; 
-    
-    // the bin directory of ant
-    String BIN_DIR      = "ant.install.bin"; 
-
-    // the lib directory of ant
-    String LIB_DIR      = "ant.install.lib"; 
-    
-    // the tasklib directory of ant
-    String TASKLIB_DIR  = "ant.install.task-lib"; 
-
-    // the directory to look for per user ant information
-    String USER_DIR     = "ant.user.dir"; 
-    
-    // the directory to look for per project ant information
-    String PROJECT_DIR  = "ant.project.dir";
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/AntEngine.java b/proposal/myrmidon/src/java/org/apache/ant/AntEngine.java
deleted file mode 100644
index 38d8c37..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/AntEngine.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant;
-
-import java.util.Properties;
-import org.apache.ant.project.ProjectBuilder;
-import org.apache.ant.project.ProjectEngine;
-import org.apache.avalon.Component;
-import org.apache.avalon.Disposable;
-import org.apache.avalon.Initializable;
-
-/**
- * Interface to the Ant runtime.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface AntEngine
-    extends Component, Initializable, Disposable
-{
-    /**
-     * Setup basic properties of engine. 
-     * Called before init() and can be used to specify alternate components in system.
-     *
-     * @param properties the properties
-     */
-    void setProperties( Properties properties );
-
-    /**
-     * Retrieve builder for runtime.
-     * Valid after init() call
-     *
-     * @return the ProjectBuilder
-     */
-    ProjectBuilder getProjectBuilder();
-    
-    /**
-     * Retrieve project engine for runtime.
-     * Valid after init() call
-     *
-     * @return the ProjectBuilder
-     */
-    ProjectEngine getProjectEngine();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/AntException.java b/proposal/myrmidon/src/java/org/apache/ant/AntException.java
deleted file mode 100644
index c565112..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/AntException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant;
-
-import org.apache.avalon.CascadingRuntimeException;
-
-/**
- * AntException thrown when a problem with tasks etc.
- * It is cascading so that further embedded information can be contained. 
- * ie ANtException was caused by IOException etc.
- * It is RuntimeException as it has to pass through a number of Java-defined
- * interfaces - ala Runnable and also to aid in ease of indicating an error.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class AntException
-    extends CascadingRuntimeException
-{
-    /**
-     * Basic constructor with a message
-     *
-     * @param message the message 
-     */
-    public AntException( final String message )
-    {
-        this( message, null );
-    }
-
-    /**
-     * Constructor that builds cascade so that other exception information can be retained.
-     *
-     * @param message the message 
-     * @param throwable the throwable
-     */
-    public AntException( final String message, final Throwable throwable )
-    {
-        super( message, throwable );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/Constants.java b/proposal/myrmidon/src/java/org/apache/ant/Constants.java
deleted file mode 100644
index 61c57bf..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/Constants.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant;
-
-/**
- * Abstract interface to hold constants.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-interface Constants
-{
-    //Constants to indicate the build of Ant/Myrmidon
-    String  BUILD_DATE     = "@@DATE@@";
-    String  BUILD_VERSION  = "@@VERSION@@";
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/DefaultAntEngine.java b/proposal/myrmidon/src/java/org/apache/ant/DefaultAntEngine.java
deleted file mode 100644
index cd41fe2..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/DefaultAntEngine.java
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant;
-
-import java.io.File;
-import java.util.Properties;
-import org.apache.ant.configuration.Configurer;
-import org.apache.ant.convert.engine.ConverterEngine;
-import org.apache.ant.tasklet.engine.DataTypeEngine;
-import org.apache.ant.project.ProjectBuilder;
-import org.apache.ant.project.ProjectEngine;
-import org.apache.ant.tasklet.JavaVersion;
-import org.apache.ant.tasklet.engine.TaskletEngine;
-import org.apache.ant.tasklet.engine.TskDeployer;
-import org.apache.avalon.AbstractLoggable;
-import org.apache.avalon.Component;
-import org.apache.avalon.Composer;
-import org.apache.avalon.DefaultComponentManager;
-import org.apache.avalon.Initializable;
-import org.apache.avalon.camelot.CamelotUtil;
-import org.apache.avalon.camelot.DefaultFactory;
-import org.apache.avalon.camelot.Deployer;
-import org.apache.avalon.camelot.Factory;
-import org.apache.avalon.util.ObjectUtil;
-import org.apache.avalon.util.io.FileUtil;
-
-/**
- * Default implementation of Ant runtime.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultAntEngine
-    extends AbstractLoggable
-    implements AntEngine, Initializable
-{
-    protected ConverterEngine          m_converterEngine;
-    protected DataTypeEngine           m_dataTypeEngine;
-    protected TaskletEngine            m_taskletEngine;
-    protected ProjectEngine            m_projectEngine;
-
-    protected ProjectBuilder           m_builder;
-    protected TskDeployer              m_deployer;
-    protected Configurer               m_configurer;
-
-    protected Factory                  m_factory;
-
-    protected DefaultComponentManager  m_componentManager;
-    protected Properties               m_properties;
-    protected Properties               m_defaults;
-
-    protected File                     m_homeDir;
-    protected File                     m_binDir;
-    protected File                     m_libDir;
-    protected File                     m_taskLibDir;
-       
-    /**
-     * Setup basic properties of engine. 
-     * Called before init() and can be used to specify alternate components in system.
-     *
-     * @param properties the properties
-     */
-    public void setProperties( final Properties properties )
-    {
-        m_properties = properties;
-    }
-
-    /**
-     * Retrieve builder for runtime.
-     * Valid after init() call
-     *
-     * @return the ProjectBuilder
-     */
-    public ProjectBuilder getProjectBuilder()
-    {
-        return m_builder;
-    }
-
-    /**
-     * Retrieve project engine for runtime.
-     * Valid after init() call
-     *
-     * @return the ProjectBuilder
-     */
-    public ProjectEngine getProjectEngine()
-    {
-        return m_projectEngine;
-    }
-
-    /**
-     * Initialize the system.
-     *
-     * @exception Exception if an error occurs
-     */
-    public void init()
-        throws Exception
-    {
-        //setup default properties
-        m_defaults = createDefaultProperties();
-
-        //create all the components
-        m_factory = new DefaultFactory();
-        createComponents();
-
-        //setup the component manager
-        m_componentManager = createComponentManager();
-
-        setupComponents();
-
-        setupFiles();
-
-        CamelotUtil.deployFromDirectory( m_deployer, m_taskLibDir, ".tsk" );
-    }
-
-    /**
-     * Dispose engine.
-     *
-     * @exception Exception if an error occurs
-     */
-    public void dispose()
-        throws Exception
-    {
-        m_converterEngine = null;
-        m_dataTypeEngine = null;
-        m_taskletEngine = null;
-        m_projectEngine = null;
-        m_builder = null;
-        m_deployer = null;
-        m_configurer = null;
-        m_factory = null;
-        m_componentManager = null;
-        m_properties = null;
-        m_defaults = null;
-        m_homeDir = null;
-        m_binDir = null;
-        m_libDir = null;
-        m_taskLibDir = null;
-    }
-    
-    /**
-     * Create default properties which includes default names of all components.
-     * Overide this in sub-classes to change values.
-     *
-     * @return the Properties
-     */
-    protected Properties createDefaultProperties()
-    {
-        final Properties defaults = new Properties();
-
-        //create all the default properties for files/directories
-        defaults.setProperty( "ant.path.bin", "bin" );
-        defaults.setProperty( "ant.path.lib", "lib" );
-        defaults.setProperty( "ant.path.task-lib", "lib" );
-
-        //create all the default properties for components
-        defaults.setProperty( "ant.comp.converter",
-                              "org.apache.ant.convert.engine.DefaultConverterEngine" );
-        defaults.setProperty( "ant.comp.datatype",
-                              "org.apache.ant.tasklet.engine.DefaultDataTypeEngine" );
-        defaults.setProperty( "ant.comp.tasklet",
-                              "org.apache.ant.tasklet.engine.DefaultTaskletEngine" );
-        defaults.setProperty( "ant.comp.project",
-                              "org.apache.ant.project.DefaultProjectEngine" );
-        defaults.setProperty( "ant.comp.builder",
-                              "org.apache.ant.project.DefaultProjectBuilder" );
-        defaults.setProperty( "ant.comp.deployer",
-                              "org.apache.ant.tasklet.engine.DefaultTskDeployer" );
-        defaults.setProperty( "ant.comp.configurer",
-                              "org.apache.ant.configuration.DefaultConfigurer" );
-
-        return defaults;
-    }
-
-    /**
-     * Create a ComponentManager containing all components in engine.
-     *
-     * @return the ComponentManager
-     */
-    protected DefaultComponentManager createComponentManager()
-    {
-        final DefaultComponentManager componentManager = new DefaultComponentManager();
-
-        componentManager.put( "org.apache.ant.tasklet.engine.TaskletEngine", m_taskletEngine );
-        componentManager.put( "org.apache.ant.project.ProjectEngine", m_projectEngine );
-        componentManager.put( "org.apache.ant.convert.engine.ConverterEngine", 
-                              m_converterEngine );
-        componentManager.put( "org.apache.ant.convert.Converter", m_converterEngine );
-        componentManager.put( "org.apache.ant.tasklet.engine.DataTypeEngine", m_dataTypeEngine );
-        componentManager.put( "org.apache.ant.project.ProjectBuilder", m_builder );
-        componentManager.put( "org.apache.ant.tasklet.engine.TskDeployer", m_deployer );
-        componentManager.put( "org.apache.avalon.camelot.Factory", m_factory );
-        componentManager.put( "org.apache.ant.configuration.Configurer", m_configurer );
-
-        return componentManager;
-    }
-
-    /**
-     * Create all required components.
-     *
-     * @exception Exception if an error occurs
-     */
-    protected void createComponents()
-        throws Exception
-    {
-        String component = null;
-
-        component = getProperty( "ant.comp.converter" );
-        m_converterEngine = (ConverterEngine)createComponent( component, ConverterEngine.class );
-
-        component = getProperty( "ant.comp.datatype" );
-        m_dataTypeEngine = (DataTypeEngine)createComponent( component, DataTypeEngine.class );
-        
-        component = getProperty( "ant.comp.tasklet" );
-        m_taskletEngine = (TaskletEngine)createComponent( component, TaskletEngine.class );
-        
-        component = getProperty( "ant.comp.project" );
-        m_projectEngine = (ProjectEngine)createComponent( component, ProjectEngine.class );
-
-        component = getProperty( "ant.comp.builder" );
-        m_builder =(ProjectBuilder)createComponent( component, ProjectBuilder.class );
-
-        component = getProperty( "ant.comp.deployer" );
-        m_deployer = (TskDeployer)createComponent( component, TskDeployer.class );
-
-        component = getProperty( "ant.comp.configurer" );
-        m_configurer = (Configurer)createComponent( component, Configurer.class );
-    }
-
-    /**
-     * Setup all the components. (ir run all required lifecycle methods).
-     *
-     * @exception Exception if an error occurs
-     */
-    protected void setupComponents()
-        throws Exception
-    {
-        setupComponent( m_factory );
-        setupComponent( m_converterEngine );
-        setupComponent( m_dataTypeEngine );
-        setupComponent( m_taskletEngine );
-        setupComponent( m_projectEngine );
-        setupComponent( m_builder );
-        setupComponent( m_deployer );
-        setupComponent( m_configurer );
-    }
-
-    /**
-     * Setup an individual component.
-     *
-     * @param component the component
-     * @exception Exception if an error occurs
-     */
-    protected void setupComponent( final Component component )
-        throws Exception
-    {
-        setupLogger( component );
-
-        if( component instanceof Composer )
-        {
-            ((Composer)component).compose( m_componentManager );
-        }
-
-        if( component instanceof Initializable )
-        {
-            ((Initializable)component).init();
-        }
-    }
-
-    /**
-     * Setup all the files attributes.
-     */
-    protected void setupFiles()
-    {
-        String filepath = null;
-
-        filepath = getProperty( "ant.home" );
-        m_homeDir = (new File( filepath )).getAbsoluteFile();
-        checkDirectory( m_homeDir, "ant-home" );
-
-        filepath = getProperty( "ant.path.bin" );
-        m_binDir = resolveDirectory( filepath, "bin-dir" );
-        
-        filepath = getProperty( "ant.path.lib" );
-        m_libDir = resolveDirectory( filepath, "lib-dir" );
-
-        filepath = getProperty( "ant.path.task-lib" );
-        m_taskLibDir = resolveDirectory( filepath, "task-lib-dir" );
-    }
-
-    /**
-     * Retrieve value of named property. 
-     * First access passed in properties and then the default properties.
-     *
-     * @param name the name of property
-     * @return the value of property or null
-     */
-    protected String getProperty( final String name )
-    {
-        String value = m_properties.getProperty( name );
-
-        if( null == value )
-        {
-            value = m_defaults.getProperty( name );
-        }
-
-        return value;
-    }
-
-    /**
-     * Resolve a directory relative to another base directory.
-     *
-     * @param dir the base directory
-     * @param name the relative directory
-     * @return the created File
-     * @exception AntException if an error occurs
-     */
-    protected File resolveDirectory( final String dir, final String name )
-        throws AntException
-    {
-        final File file = FileUtil.resolveFile( m_homeDir, dir );
-        checkDirectory( file, name );
-        return file;
-    }
-
-    /**
-     * Verify file is a directory else throw an exception.
-     *
-     * @param file the File
-     * @param name the name of file type (used in error messages)
-     */
-    protected void checkDirectory( final File file, final String name )
-        throws AntException
-    { 
-        if( !file.exists() )
-        {
-            throw new AntException( name + " (" + file + ") does not exist" );
-        }
-        else if( !file.isDirectory() )
-        {
-            throw new AntException( name + " (" + file + ") is not a directory" );
-        }
-    }
-
-    /**
-     * Helper method to retrieve current JVM version.
-     * Basically stolen from original Ant sources.
-     *
-     * @return the current JVM version
-     */
-    protected JavaVersion getJavaVersion()
-    {
-        JavaVersion version = JavaVersion.JAVA1_0;
-        
-        try
-        {
-            Class.forName( "java.lang.Void" );
-            version = JavaVersion.JAVA1_1;
-            Class.forName( "java.lang.ThreadLocal" );
-            version = JavaVersion.JAVA1_2;
-            Class.forName( "java.lang.StrictMath" );
-            version = JavaVersion.JAVA1_3;
-        } 
-        catch( final ClassNotFoundException cnfe ) {}
-        
-        return version;
-    }
-
-    /**
-     * Create a component that implements an interface.
-     *
-     * @param component the name of the component
-     * @param clazz the name of interface/type
-     * @return the created object
-     * @exception AntException if an error occurs
-     */
-    protected Object createComponent( final String component, final Class clazz )
-        throws AntException
-    {
-        try
-        {
-            final Object object = ObjectUtil.createObject( component );
-
-            if( !clazz.isInstance( object ) )
-            {
-                throw new AntException( "Object " + component + " is not an instance of " + 
-                                        clazz );
-            }
-
-            return object;
-        }
-        catch( final IllegalAccessException iae )
-        { 
-            throw new AntException( "Non-public constructor for " + clazz + " " + component, 
-                                    iae );
-        }
-        catch( final InstantiationException ie )
-        {
-            throw new AntException( "Error instantiating class for " + clazz + " " + component, 
-                                    ie );
-        }
-        catch( final ClassNotFoundException cnfe )
-        {
-            throw new AntException( "Could not find the class for " + clazz + 
-                                    " (" + component + ")", cnfe );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/Main.java b/proposal/myrmidon/src/java/org/apache/ant/Main.java
deleted file mode 100644
index 1b0affd..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/Main.java
+++ /dev/null
@@ -1,496 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import org.apache.ant.launcher.AntClassLoader;
-import org.apache.ant.launcher.AntLoader;
-import org.apache.ant.project.LogTargetToListenerAdapter;
-import org.apache.ant.project.Project;
-import org.apache.ant.project.ProjectBuilder;
-import org.apache.ant.project.ProjectEngine;
-import org.apache.ant.project.ProjectListener;
-import org.apache.ant.tasklet.JavaVersion;
-import org.apache.ant.tasklet.TaskletContext;
-import org.apache.ant.tasklet.engine.TaskletEngine;
-import org.apache.avalon.Disposable;
-import org.apache.avalon.Initializable;
-import org.apache.avalon.camelot.CamelotUtil;
-import org.apache.avalon.camelot.Deployer;
-import org.apache.avalon.camelot.DeploymentException;
-import org.apache.avalon.util.ObjectUtil;
-import org.apache.avalon.util.StringUtil;
-import org.apache.avalon.util.cli.AbstractMain;
-import org.apache.avalon.util.cli.CLOption;
-import org.apache.avalon.util.cli.CLOptionDescriptor;
-import org.apache.avalon.util.io.ExtensionFileFilter;
-import org.apache.log.Category;
-import org.apache.log.LogKit;
-import org.apache.log.Logger;
-import org.apache.log.Priority;
-
-/**
- * The class to kick the tires and light the fires.
- * Starts ant, loads ProjectBuilder, builds project then uses ProjectEngine
- * to run project.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Main
-    extends AbstractMain
-{
-    //Constants to indicate the build of Ant/Myrmidon
-    public final static String     VERSION                   = 
-        "Ant " + Constants.BUILD_VERSION + " compiled on " + Constants.BUILD_DATE;
-
-    //default log level
-    protected final static String  DEFAULT_LOGLEVEL          = "WARN";
-
-    //Some defaults for file locations/names
-    protected final static String  DEFAULT_FILENAME          = "build.xmk";
-
-    protected final static String  DEFAULT_LISTENER          = 
-        "org.apache.ant.project.DefaultProjectListener";
-
-    //defines for the Command Line options
-    private static final int       HELP_OPT                  = 'h';
-    private static final int       QUIET_OPT                 = 'q';
-    private static final int       VERBOSE_OPT               = 'v';
-    private static final int       FILE_OPT                  = 'f';
-    private static final int       LOG_LEVEL_OPT             = 'l';
-    private static final int       DEFINE_OPT                = 'D';
-    private static final int       VERSION_OPT               = 1;
-    private static final int       LISTENER_OPT              = 2;
-    private static final int       TASKLIB_DIR_OPT           = 5;
-    private static final int       INCREMENTAL_OPT           = 6;
-    private static final int       HOME_DIR_OPT              = 7;
-    
-    //incompatable options for info options
-    private static final int[]     INFO_OPT_INCOMPAT         = new int[] 
-    { 
-        HELP_OPT, QUIET_OPT, VERBOSE_OPT, FILE_OPT, 
-        LOG_LEVEL_OPT, VERSION_OPT, LISTENER_OPT,
-        DEFINE_OPT //TASKLIB_DIR_OPT, HOME_DIR_OPT
-    };
-    
-    //incompatable options for other logging options
-    private static final int[]     LOG_OPT_INCOMPAT          = new int[] 
-    {
-        QUIET_OPT, VERBOSE_OPT, LOG_LEVEL_OPT
-    };
-
-    protected ProjectListener      m_listener;
-    protected File                 m_homeDir;
-
-    /**
-     * Main entry point called to run standard Ant.
-     *
-     * @param args the args
-     */
-    public static void main( final String[] args )
-    {
-        final Main main = new Main();
-
-        try { main.execute( args ); }
-        catch( final AntException ae )
-        {
-            main.getLogger().error( "Error: " + ae.getMessage() );
-            main.getLogger().debug( "Exception..." + StringUtil.printStackTrace( ae ) );
-        }
-        catch( final Throwable throwable )
-        {
-            main.getLogger().error( "Error: " + throwable );
-            main.getLogger().debug( "Exception..." + StringUtil.printStackTrace( throwable ) );
-        }
-    }
-
-    /**
-     * Initialise the options for command line parser.
-     * This is called by super-class.
-     */
-    protected CLOptionDescriptor[] createCLOptions()
-    {
-        //TODO: localise
-        final CLOptionDescriptor[] options = new CLOptionDescriptor[ 11 ];
-
-        options[0] =
-            new CLOptionDescriptor( "help",
-                                    CLOptionDescriptor.ARGUMENT_DISALLOWED,
-                                    HELP_OPT,
-                                    "display this help message",
-                                    INFO_OPT_INCOMPAT );
-        
-        options[1] =
-            new CLOptionDescriptor( "file",
-                                    CLOptionDescriptor.ARGUMENT_REQUIRED,
-                                    FILE_OPT,
-                                    "the build file." );
-
-        options[2] =
-            new CLOptionDescriptor( "log-level",
-                                    CLOptionDescriptor.ARGUMENT_REQUIRED,
-                                    LOG_LEVEL_OPT,
-                                    "the verbosity level at which to log messages. " +
-                                    "(DEBUG|INFO|WARN|ERROR|FATAL_ERROR)",
-                                    LOG_OPT_INCOMPAT );
-
-        options[3] =
-            new CLOptionDescriptor( "quiet",
-                                    CLOptionDescriptor.ARGUMENT_DISALLOWED,
-                                    QUIET_OPT,
-                                    "equivelent to --log-level=FATAL_ERROR",
-                                    LOG_OPT_INCOMPAT );
-
-        options[4] =
-            new CLOptionDescriptor( "verbose",
-                                    CLOptionDescriptor.ARGUMENT_DISALLOWED,
-                                    VERBOSE_OPT,
-                                    "equivelent to --log-level=INFO",
-                                    LOG_OPT_INCOMPAT );
-
-        options[5] =
-            new CLOptionDescriptor( "listener",
-                                    CLOptionDescriptor.ARGUMENT_REQUIRED,
-                                    LISTENER_OPT,
-                                    "the listener for log events." );
-
-        options[6] =
-            new CLOptionDescriptor( "version",
-                                    CLOptionDescriptor.ARGUMENT_DISALLOWED,
-                                    VERSION_OPT,
-                                    "display version",
-                                    INFO_OPT_INCOMPAT );
-
-        options[7] =
-            new CLOptionDescriptor( "task-lib-dir",
-                                    CLOptionDescriptor.ARGUMENT_REQUIRED,
-                                    TASKLIB_DIR_OPT,
-                                    "the task lib directory to scan for .tsk files." );
-        options[8] =
-            new CLOptionDescriptor( "incremental",
-                                    CLOptionDescriptor.ARGUMENT_DISALLOWED,
-                                    INCREMENTAL_OPT,
-                                    "Run in incremental mode" );
-        options[9] =
-            new CLOptionDescriptor( "ant-home",
-                                    CLOptionDescriptor.ARGUMENT_REQUIRED,
-                                    HOME_DIR_OPT,
-                                    "Specify ant home directory" );
-        options[10] =
-            new CLOptionDescriptor( "define",
-                                    CLOptionDescriptor.ARGUMENTS_REQUIRED_2,
-                                    DEFINE_OPT,
-                                    "Define a variable (ie -Dfoo=var)",
-                                    new int[ 0 ] );
-        return options;
-    }
-
-    /**
-     * Entry point for standard ant.
-     *
-     * @param clOptions the list of command line options
-     */
-    protected void execute( final List clOptions )
-        throws Exception
-    {
-        final int size = clOptions.size();
-        final ArrayList targets = new ArrayList();
-        String filename = null;
-        String listenerName = null;
-        String logLevel = null;
-        String homeDir = null;
-        String taskLibDir = null;
-        boolean incremental = false;
-        HashMap defines = new HashMap();
-
-        for( int i = 0; i < size; i++ ) 
-        {
-            final CLOption option = (CLOption)clOptions.get( i );
-                
-            switch( option.getId() )
-            {
-            case 0: targets.add( option.getArgument() ); break;
-            case HELP_OPT: usage(); return;
-            case VERSION_OPT: System.out.println( VERSION ); return;
-            case FILE_OPT: filename = option.getArgument(); break;
-            case HOME_DIR_OPT: homeDir = option.getArgument(); break;
-            case TASKLIB_DIR_OPT: taskLibDir = option.getArgument(); break;
-            case VERBOSE_OPT: logLevel = "INFO"; break;
-            case QUIET_OPT: logLevel = "ERROR"; break;
-            case LOG_LEVEL_OPT: logLevel = option.getArgument(); break; 
-            case LISTENER_OPT: listenerName = option.getArgument(); break;
-            case INCREMENTAL_OPT: incremental = true; break;
-
-            case DEFINE_OPT: 
-                defines.put( option.getArgument( 0 ), option.getArgument( 1 ) );
-                break;
-            }
-        }
-
-        if( null == logLevel ) logLevel = DEFAULT_LOGLEVEL;
-        if( null == listenerName ) listenerName = DEFAULT_LISTENER;
-        if( null == filename ) filename = DEFAULT_FILENAME;
-
-        //handle logging...
-        setLogger( createLogger( logLevel ) );
-
-        //if ant home not set then use system property ant.home 
-        //that was set up by launcher.
-        if( null == homeDir ) homeDir = System.getProperty( "ant.home" );
-
-        final Properties properties = new Properties();
-        properties.setProperty( "ant.home", homeDir );
-
-        if( null != taskLibDir ) properties.setProperty( "ant.path.task-lib", taskLibDir );
-
-        m_homeDir = (new File( homeDir )).getAbsoluteFile();
-        if( !m_homeDir.isDirectory() )
-        {
-            throw new AntException( "ant-home (" + m_homeDir + ") is not a directory" );
-        }
-
-        final File libDir = new File( m_homeDir, "lib" );
-
-        final File buildFile = (new File( filename )).getCanonicalFile();
-        if( !buildFile.isFile() )
-        {
-            throw new AntException( "File " + buildFile + " is not a file or doesn't exist" );
-        }
-        
-        //setup classloader so that it will correctly load
-        //the Project/ProjectBuilder/ProjectEngine and all dependencies
-        final ClassLoader classLoader = createClassLoader( libDir );
-        Thread.currentThread().setContextClassLoader( classLoader );
-
-        //handle listener.. 
-        final ProjectListener listener = createListener( listenerName ); 
-
-        getLogger().warn( "Ant Build File: " + buildFile );
-        getLogger().info( "Ant Home Directory: " + m_homeDir );
-        //getLogger().info( "Ant Bin Directory: " + m_binDir );
-        //getLogger().debug( "Ant Lib Directory: " + m_libDir );
-        //getLogger().debug( "Ant Task Lib Directory: " + m_taskLibDir );
-
-        final AntEngine antEngine = new DefaultAntEngine();
-        setupLogger( antEngine );
-        antEngine.setProperties( properties );
-        antEngine.init();
-
-        final ProjectBuilder builder = antEngine.getProjectBuilder();
-
-        //create the project
-        final Project project = builder.build( buildFile );
-        setupProjectContext( project, defines );
-
-        final ProjectEngine engine = antEngine.getProjectEngine();
-        engine.addProjectListener( listener );
-
-        BufferedReader reader = null;
-
-        //loop over build if we are in incremental mode..
-        while( true )
-        {
-            //actually do the build ...
-            doBuild( engine, project, targets );
-
-            if( !incremental ) break;
-
-            System.out.println( "Continue ? (Enter no to stop)" );
-
-            if( null == reader )
-            {
-                reader = new BufferedReader( new InputStreamReader( System.in ) );
-            }
-
-            String line = reader.readLine();
-            
-            if( line.equalsIgnoreCase( "no" ) ) break;
-            
-        }
-
-        antEngine.dispose();
-    }
-
-    /**
-     * Actually do the build.
-     *
-     * @param engine the engine
-     * @param project the project
-     * @param targets the targets to build as passed by CLI
-     */
-    protected void doBuild( final ProjectEngine engine, 
-                            final Project project, 
-                            final ArrayList targets )
-    {
-        try
-        {
-            final int targetCount = targets.size();
-        
-            //if we didn't specify a target on CLI then choose default
-            if( 0 == targetCount )
-            {
-                engine.execute( project, project.getDefaultTargetName() );
-            }
-            else
-            {
-                for( int i = 0; i < targetCount; i++ )
-                {
-                    engine.execute( project, (String)targets.get( i ) );
-                }
-            }
-        }
-        catch( final AntException ae )
-        {
-            getLogger().error( "BUILD FAILED" );
-            getLogger().error( "Reason:\n" + StringUtil.printStackTrace( ae, 5, true ) );
-        }
-    } 
-    
-    /**
-     * Create Logger of appropriate log-level.
-     *
-     * @param logLevel the log-level
-     * @return the logger
-     * @exception AntException if an error occurs
-     */
-    protected Logger createLogger( final String logLevel )
-        throws AntException
-    {
-        final String logLevelCapitalized = logLevel.toUpperCase();
-        final Priority.Enum priority = LogKit.getPriorityForName( logLevelCapitalized );
-        
-        if( !priority.getName().equals( logLevelCapitalized ) )
-        {
-            throw new AntException( "Unknown log level - " + logLevel );
-        }
-        
-        final Category category = LogKit.createCategory( "ant", priority );
-        return LogKit.createLogger( category );
-    }
-
-    /**
-     * Setup project listener.
-     *
-     * @param listenerName the name of project listener
-     */
-    protected ProjectListener createListener( final String listenerName )
-        throws AntException
-    {
-        ProjectListener result = null;
-
-        try { result = (ProjectListener)ObjectUtil.createObject( listenerName ); }
-        catch( final Throwable t )
-        {
-            throw new AntException( "Error creating the listener " + listenerName + 
-                                    " due to " + StringUtil.printStackTrace( t, 5, true ), 
-                                    t );
-        }
-
-        getLogger().addLogTarget( new LogTargetToListenerAdapter( result ) );
-
-        return result;
-    }
-
-    /**
-     * Try to load all extra zipz/jars from lib directory into CURRENT classloader.
-     *
-     * @param libDir the directory of lib files to add
-     */
-    protected ClassLoader createClassLoader( final File libDir )
-    {
-        final ClassLoader candidate = getClass().getClassLoader();
-        
-        if( !(candidate instanceof AntClassLoader) )
-        {
-            getLogger().warn( "Warning: Unable to add entries from " + 
-                              "lib-path to classloader" );
-            return candidate;
-        }
-        
-        final AntClassLoader classLoader = (AntClassLoader)candidate;
-
-        final ExtensionFileFilter filter = 
-            new ExtensionFileFilter( new String[] { ".jar", ".zip" } );
-
-        final File[] files = libDir.listFiles( filter );
-
-        for( int i = 0; i < files.length; i++ )
-        {
-            //except for a few *special* files add all the 
-            //.zip/.jars to classloader
-            if( !files[ i ].getName().equals( "ant.jar" ) &&
-                !files[ i ].getName().equals( "myrmidon.jar" ) &&
-                !files[ i ].getName().equals( "avalonapi.jar" ) )
-            {                
-                try { classLoader.addURL( files[ i ].toURL() ); }
-                catch( final MalformedURLException mue ) {}
-            }
-        }        
-
-        return classLoader;
-    }
-
-    /**
-     * Setup the projects context so all the "default" properties are defined.
-     * This also takes a hashmap that is added to context. Usually these are the 
-     * ones defined on command line.
-     *
-     * @param project the project
-     * @param defines the defines
-     * @exception AntException if an error occurs
-     */
-    protected void setupProjectContext( final Project project, final HashMap defines )
-        throws AntException
-    {
-        //put these values into defines so that they overide
-        //user-defined proeprties
-        //defines.put( AntContextResources.HOME_DIR, m_homeDir );
-        //defines.put( AntContextResources.BIN_DIR, m_binDir );
-        //defines.put( AntContextResources.LIB_DIR, m_libDir );
-        //defines.put( AntContextResources.TASKLIB_DIR, m_taskLibDir );
-        //defines.put( TaskletContext.JAVA_VERSION, getJavaVersion() );
-
-        final TaskletContext context = project.getContext();
-        addToContext( context, defines );
-
-        //Add system properties second so that they overide user-defined properties
-        addToContext( context, System.getProperties() );
-    }
-
-    /**
-     * Helper method to add values to a context
-     *
-     * @param context the context
-     * @param map the map of names->values
-     */
-    protected void addToContext( final TaskletContext context, final Map map )
-    {
-        final Iterator keys = map.keySet().iterator();
-
-        while( keys.hasNext() )
-        {
-            final String key = (String)keys.next();
-            final Object value = map.get( key );
-            context.setProperty( key, value );
-        }
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/configuration/Configurable.java b/proposal/myrmidon/src/java/org/apache/ant/configuration/Configurable.java
deleted file mode 100644
index 4490351..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/configuration/Configurable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.configuration;
-
-import org.apache.avalon.ConfigurationException;
-
-/**
- * This interface should be implemented by classes that need to be
- * configured with custom parameters before initialization.
- * <br />
- *
- * The contract surrounding a <code>Configurable</code> is that the
- * instantiating entity must call the <code>configure</code>
- * method before it is valid.  The <code>configure</code> method
- * must be called after the constructor, and before any other method.
- *
- * @author <a href="mailto:fede@apache.org">Federico Barbieri</a>
- * @author <a href="mailto:pier@apache.org">Pierpaolo Fumagalli</a>
- * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Configurable
-{
-    /**
-     * Pass the <code>Configuration</code> to the <code>Configurable</code>
-     * class. This method must always be called after the constructor
-     * and before any other method.
-     *
-     * @param configuration the class configurations.
-     */
-    void configure( Configuration configuration ) 
-        throws ConfigurationException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/configuration/Configuration.java b/proposal/myrmidon/src/java/org/apache/ant/configuration/Configuration.java
deleted file mode 100644
index f696f48..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/configuration/Configuration.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.configuration;
-
-import java.util.Iterator;
-
-/**
- * Fork of Avalon code that will be folded back when they get equivelent facilties.
- * Note that the code is different package so it should not cause any issues.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Configuration
-    extends org.apache.avalon.Configuration
-{
-    /**
-     * Retrieve a list of all child names.
-     *
-     * @return the child names
-     */
-    Iterator getChildren();
-
-    /**
-     * Retrieve a list of all attribute names.
-     *
-     * @return the attribute names
-     */
-    Iterator getAttributeNames();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/configuration/ConfigurationBuilder.java b/proposal/myrmidon/src/java/org/apache/ant/configuration/ConfigurationBuilder.java
deleted file mode 100644
index b2d39f2..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/configuration/ConfigurationBuilder.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.configuration;
-
-import org.xml.sax.SAXException;
-
-/**
- * Fork of Avalon code that will be folded back when they get equivelent facilties.
- * Note that the code is different package so it should not cause any issues.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ConfigurationBuilder
-    extends org.apache.avalon.DefaultConfigurationBuilder
-{
-    protected org.apache.avalon.SAXConfigurationHandler getHandler()
-    {
-        return new SAXConfigurationHandler();
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/configuration/Configurer.java b/proposal/myrmidon/src/java/org/apache/ant/configuration/Configurer.java
deleted file mode 100644
index 9bb25c2..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/configuration/Configurer.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.configuration;
-
-import org.apache.avalon.Component;
-import org.apache.avalon.ConfigurationException;
-import org.apache.avalon.Context;
-
-/**
- * Class used to configure tasks.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Configurer
-    extends Component
-{
-    /**
-     * Configure an object based on a configuration in a particular context.
-     * This configuring can be done in different ways for different 
-     * configurers.
-     *
-     * @param object the object
-     * @param configuration the configuration
-     * @param context the Context
-     * @exception ConfigurationException if an error occurs
-     */
-    void configure( Object object, Configuration configuration, Context context )
-        throws ConfigurationException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/configuration/DefaultConfiguration.java b/proposal/myrmidon/src/java/org/apache/ant/configuration/DefaultConfiguration.java
deleted file mode 100644
index 1bcd88f..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/configuration/DefaultConfiguration.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.configuration;
-
-import java.util.Iterator;
-
-/**
- * Fork of Avalon code that will be folded back when they get equivelent facilties.
- * Note that the code is different package so it should not cause any issues.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultConfiguration
-    extends org.apache.avalon.DefaultConfiguration
-    implements Configuration
-{
-    public DefaultConfiguration( final String localname, final String location )
-    {
-        super( localname, location );
-    }
-
-    /**
-     * Retrieve a list of all child names.
-     *
-     * @return the child names
-     */
-    public Iterator getChildren()
-    {
-        if( null == m_children ) return EMPTY_ITERATOR;
-        else return m_children.iterator();
-    }
-    
-    /**
-     * Retrieve a list of all attribute names.
-     *
-     * @return the attribute names
-     */
-    public Iterator getAttributeNames()
-    {
-        if( null == m_attributes ) return EMPTY_ITERATOR;
-        else return m_attributes.keySet().iterator();
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/configuration/DefaultConfigurer.java b/proposal/myrmidon/src/java/org/apache/ant/configuration/DefaultConfigurer.java
deleted file mode 100644
index 1516506..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/configuration/DefaultConfigurer.java
+++ /dev/null
@@ -1,472 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.configuration;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.apache.ant.convert.Converter;
-import org.apache.ant.convert.ConverterException;
-import org.apache.avalon.AbstractLoggable;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.Composer;
-import org.apache.avalon.ConfigurationException;
-import org.apache.avalon.Context;
-import org.apache.avalon.Loggable;
-import org.apache.avalon.util.PropertyException;
-import org.apache.avalon.util.PropertyUtil;
-import org.apache.log.Logger;
-
-/**
- * Class used to configure tasks.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultConfigurer
-    extends AbstractLoggable
-    implements Configurer, Composer, Loggable
-{
-    protected final static String  RESERVED_ATTRIBUTES[] = 
-    {
-        "id"
-    };
-
-    protected final static String  RESERVED_ELEMENTS[] = 
-    {
-        "content"
-    };
-
-    protected final static boolean DEBUG         = false;
-    protected Converter            m_converter;
-
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        m_converter = (Converter)componentManager.lookup( "org.apache.ant.convert.Converter" );
-    }
-    
-    /**
-     * Configure a task based on a configuration in a particular context.
-     * This configuring can be done in different ways for different 
-     * configurers. 
-     * This one does it by first checking if object implements Configurable 
-     * and if it does will pass the task the configuration - else it will use
-     * ants rules to map configuration to types
-     *
-     * @param tasklet the tasklet
-     * @param configuration the configuration
-     * @param context the Context
-     * @exception ConfigurationException if an error occurs
-     */
-    public void configure( final Object object, 
-                           final Configuration configuration,
-                           final Context context )
-        throws ConfigurationException
-    {
-        if( DEBUG )
-        {
-            m_logger.debug( "Configuring " + object );
-        }
-
-        if( object instanceof Configurable )
-        {
-            if( DEBUG ) 
-            {
-                m_logger.debug( "Configuring object via Configurable interface" );
-            }
-
-            ((Configurable)object).configure( configuration );
-        }
-        else
-        {
-            if( DEBUG ) 
-            {
-                m_logger.debug( "Configuring object via Configurable reflection" );
-            }
-
-            final Iterator attributes = configuration.getAttributeNames();
-            while( attributes.hasNext() )
-            {
-                final String name = (String)attributes.next();
-                final String value = configuration.getAttribute( name );
-             
-                if( DEBUG ) 
-                {
-                    m_logger.debug( "Configuring attribute name=" + name +
-                                    " value=" + value );
-                }
-                
-                configureAttribute( object, name, value, context );
-            }
-
-            final Iterator elements = configuration.getChildren();
-            
-            while( elements.hasNext() )
-            {
-                final Configuration element = (Configuration)elements.next();
-                
-                if( DEBUG ) 
-                {
-                    m_logger.debug( "Configuring subelement name=" + element.getName() );
-                }
-                
-                configureElement( object, element, context );
-            }
-
-            final String content = configuration.getValue( null );
-
-            if( null != content )
-            {
-                if( !content.trim().equals( "" ) )
-                {
-                    if( DEBUG ) 
-                    {
-                        m_logger.debug( "Configuring content " + content );
-                    }
-                    
-                    configureContent( object, content, context );
-                }
-            }
-        }
-    }
-
-    /**
-     * Try to configure content of an object.
-     *
-     * @param object the object
-     * @param content the content value to be set
-     * @param context the Context
-     * @exception ConfigurationException if an error occurs
-     */
-    protected void configureContent( final Object object, 
-                                     final String content,
-                                     final Context context )
-        throws ConfigurationException
-    {
-        setValue( object, "addContent", content, context );
-    }
-
-    protected void configureAttribute( final Object object, 
-                                       final String name, 
-                                       final String value,
-                                       final Context context )
-        throws ConfigurationException
-    {
-        for( int i = 0; i < RESERVED_ATTRIBUTES.length; i++ )
-        {
-            if( RESERVED_ATTRIBUTES[ i ].equals( name ) ) return;
-        }
-
-        final String methodName = getMethodNameFor( name );
-        setValue( object, methodName, value, context );
-    }
-
-    protected void setValue( final Object object, 
-                             final String methodName,
-                             final String value,
-                             final Context context )
-        throws ConfigurationException
-    {
-        // OMFG the rest of this is soooooooooooooooooooooooooooooooo
-        // slow. Need to cache results per class etc.
-
-        final Class clazz = object.getClass();
-        final Method methods[] = getMethodsFor( clazz, methodName );
-
-        if( 0 == methods.length )
-        {
-            throw new ConfigurationException( "Unable to set attribute via " + methodName + 
-                                              " due to not finding any appropriate " + 
-                                              "accessor method" );
-        }
-
-        setValue( object, value, context, methods );
-    }
-
-    protected void setValue( final Object object,
-                             final String value,
-                             final Context context,
-                             final Method methods[] )
-        throws ConfigurationException
-    {
-        try
-        {
-            final Object objectValue = 
-                PropertyUtil.resolveProperty( value, context, false );
-
-            setValue( object, objectValue, methods, context );
-        }
-        catch( final PropertyException pe )
-        {
-            throw new ConfigurationException( "Error resolving property " + value,
-                                              pe );
-        }
-    }
-
-    protected void setValue( final Object object, 
-                             Object value, 
-                             final Method methods[],
-                             final Context context )
-        throws ConfigurationException
-    {
-        final Class sourceClass = value.getClass();
-        final String source = sourceClass.getName();
-
-        for( int i = 0; i < methods.length; i++ )
-        {
-            if( setValue( object, value, methods[ i ], sourceClass, source, context ) )
-            {
-                return;
-            }
-        }
-        
-        throw new ConfigurationException( "Unable to set attribute via " + 
-                                          methods[ 0 ].getName() + " as could not convert " + 
-                                          source + " to a matching type" );
-    }
-
-    protected boolean setValue( final Object object, 
-                                Object value, 
-                                final Method method,
-                                final Class sourceClass,
-                                final String source,
-                                final Context context )
-        throws ConfigurationException
-    {
-        Class parameterType = method.getParameterTypes()[ 0 ];
-        if( parameterType.isPrimitive() )
-        {
-            parameterType = getComplexTypeFor( parameterType );
-        }
-        
-        try
-        {
-            value = m_converter.convert( parameterType, value, context );
-        }
-        catch( final ConverterException ce )
-        {
-            if( DEBUG )
-            {
-                m_logger.debug( "Failed to find converter ", ce );
-            }
-
-            return false;
-        }
-        catch( final Exception e )
-        {
-            throw new ConfigurationException( "Error converting attribute for " + 
-                                              method.getName(),
-                                              e );
-        }
-        
-        try
-        {
-            method.invoke( object, new Object[] { value } );
-        }
-        catch( final IllegalAccessException iae )
-        {
-            //should never happen ....
-            throw new ConfigurationException( "Error retrieving methods with " + 
-                                              "correct access specifiers",
-                                              iae );
-        }
-        catch( final InvocationTargetException ite )
-        {
-            throw new ConfigurationException( "Error calling method attribute " + 
-                                              method.getName(),
-                                              ite );
-        }
-
-        return true;
-    }
-
-    protected Class getComplexTypeFor( final Class clazz )
-    {
-        if( String.class == clazz ) return String.class;
-        else if( Integer.TYPE.equals( clazz ) ) return Integer.class;
-        else if( Long.TYPE.equals( clazz ) ) return Long.class;
-        else if( Short.TYPE.equals( clazz ) ) return Short.class;
-        else if( Byte.TYPE.equals( clazz ) ) return Byte.class;
-        else if( Boolean.TYPE.equals( clazz ) ) return Boolean.class;
-        else if( Float.TYPE.equals( clazz ) ) return Float.class;
-        else if( Double.TYPE.equals( clazz ) ) return Double.class;
-        else
-        {
-            throw new IllegalArgumentException( "Can not get complex type for non-primitive " +
-                                                "type " + clazz.getName() );
-        }
-    }
-
-    protected Method[] getMethodsFor( final Class clazz, final String methodName )
-    {
-        final Method methods[] = clazz.getMethods();
-        final ArrayList matches = new ArrayList();
-        
-        for( int i = 0; i < methods.length; i++ )
-        {
-            final Method method = methods[ i ];
-            if( methodName.equals( method.getName() ) && 
-                Method.PUBLIC == (method.getModifiers() & Method.PUBLIC) )
-            {
-                if( method.getReturnType().equals( Void.TYPE ) )
-                {
-                    final Class parameters[] = method.getParameterTypes();
-                    if( 1 == parameters.length )
-                    {
-                        matches.add( method );
-                    }
-                }
-            }
-        }
-
-        return (Method[])matches.toArray( new Method[0] );
-    }
-
-    protected Method[] getCreateMethodsFor( final Class clazz, final String methodName )
-    {
-        final Method methods[] = clazz.getMethods();
-        final ArrayList matches = new ArrayList();
-        
-        for( int i = 0; i < methods.length; i++ )
-        {
-            final Method method = methods[ i ];
-            if( methodName.equals( method.getName() ) && 
-                Method.PUBLIC == (method.getModifiers() & Method.PUBLIC) )
-            {
-                final Class returnType = method.getReturnType();
-                if( !returnType.equals( Void.TYPE ) &&
-                    !returnType.isPrimitive() )
-                {
-                    final Class parameters[] = method.getParameterTypes();
-                    if( 0 == parameters.length )
-                    {
-                        matches.add( method );
-                    }
-                }
-            }
-        }
-        
-        return (Method[])matches.toArray( new Method[0] );
-    }
-
-    protected String getMethodNameFor( final String attribute )
-    {
-        return "set" + getJavaNameFor( attribute.toLowerCase() );
-    }
-
-    protected String getJavaNameFor( final String name )
-    {
-        final StringBuffer sb = new StringBuffer();
-        
-        int index = name.indexOf( '-' );
-        int last = 0;
-        
-        while( -1 != index )
-        {
-            final String word = name.substring( last, index ).toLowerCase();
-            sb.append( Character.toUpperCase( word.charAt( 0 ) ) );
-            sb.append( word.substring( 1, word.length() ) );
-            last = index + 1;
-            index = name.indexOf( '-', last );
-        }
-        
-        index = name.length();
-        final String word = name.substring( last, index ).toLowerCase();
-        sb.append( Character.toUpperCase( word.charAt( 0 ) ) );
-        sb.append( word.substring( 1, word.length() ) );
-        
-        return sb.toString();
-    }    
-
-    protected void configureElement( final Object object, 
-                                     final Configuration configuration,
-                                     final Context context )
-        throws ConfigurationException
-    {
-        final String name = configuration.getName();
-
-        for( int i = 0; i < RESERVED_ELEMENTS.length; i++ )
-        {
-            if( RESERVED_ATTRIBUTES[ i ].equals( name ) ) return;
-        }
-
-        final String javaName = getJavaNameFor( name );
-
-        // OMFG the rest of this is soooooooooooooooooooooooooooooooo
-        // slow. Need to cache results per class etc.
-        final Class clazz = object.getClass();
-        Method methods[] = getMethodsFor( clazz, "add" + javaName );
-        
-        if( 0 != methods.length )
-        {
-            //guess it is first method ????
-            addElement( object, methods[ 0 ], configuration, context );
-        }
-        else
-        {
-            methods = getCreateMethodsFor( clazz, "create" + javaName );
-
-            if( 0 == methods.length )
-            {
-                throw new ConfigurationException( "Unable to set attribute " + javaName + 
-                                                  " due to not finding any appropriate " + 
-                                                  "accessor method" );
-            }
-
-            //guess it is first method ????
-            createElement( object, methods[ 0 ], configuration, context );
-        }
-    }
-
-    protected void createElement( final Object object, 
-                                  final Method method,
-                                  final Configuration configuration,
-                                  final Context context )
-        throws ConfigurationException
-    {
-        try
-        {
-            final Object created = method.invoke( object, new Object[ 0 ] );
-            configure( created, configuration, context );
-        }
-        catch( final ConfigurationException ce )
-        {
-            throw ce;
-        }
-        catch( final Exception e )
-        {
-            throw new ConfigurationException( "Error creating sub-element", e );
-        }
-    }
-
-    protected void addElement( final Object object, 
-                               final Method method,
-                               final Configuration configuration,
-                               final Context context )
-        throws ConfigurationException
-    {
-        try
-        {
-            final Class clazz = method.getParameterTypes()[ 0 ];
-            final Object created = clazz.newInstance();
-
-            configure( created, configuration, context );
-            method.invoke( object, new Object[] { created } );
-        }
-        catch( final ConfigurationException ce )
-        {
-            throw ce;
-        }
-        catch( final Exception e )
-        {
-            throw new ConfigurationException( "Error creating sub-element", e );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/configuration/SAXConfigurationHandler.java b/proposal/myrmidon/src/java/org/apache/ant/configuration/SAXConfigurationHandler.java
deleted file mode 100644
index 6802bdb..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/configuration/SAXConfigurationHandler.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.configuration;
-
-/**
- * Fork of Avalon code that will be folded back when they get equivelent facilties.
- * Note that the code is different package so it should not cause any issues.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class SAXConfigurationHandler
-    extends org.apache.avalon.SAXConfigurationHandler
-{
-    protected org.apache.avalon.DefaultConfiguration 
-        createConfiguration( final String localName, final String location )
-    {
-        return new DefaultConfiguration( localName, location );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/convert/AbstractConverter.java b/proposal/myrmidon/src/java/org/apache/ant/convert/AbstractConverter.java
deleted file mode 100644
index f1f21e0..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/convert/AbstractConverter.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.convert;
-
-import org.apache.avalon.Context;
-
-/**
- * Instances of this interface are used to convert between different types.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public abstract class AbstractConverter
-    implements Converter
-{
-    protected final Class         m_source;
-    protected final Class         m_destination;
-
-    /**
-     * Constructor for a converter between types source and destination
-     *
-     * @param source the source type
-     * @param destination the destination type
-     */
-    public AbstractConverter( final Class source, final Class destination )
-    {
-        m_source = source;
-        m_destination = destination;
-    }
-
-    /**
-     * Convert an object from original to destination types
-     *
-     * @param destination the destination type
-     * @param original the original Object
-     * @param context the context in which to convert
-     * @return the converted object
-     * @exception Exception if an error occurs
-     */
-    public Object convert( final Class destination, final Object original, Context context )
-        throws Exception
-    {
-        if( m_destination != destination )
-        {
-            throw new IllegalArgumentException( "Destination type " + destination.getName() +
-                                                " is not equal to " + m_destination );
-        }
-
-        if( !m_source.isInstance( original ) )
-        {
-            throw new IllegalArgumentException( "Object '" + original + "' is not an " + 
-                                                "instance of " + m_source.getName() );
-        }
-            
-        return convert( original, context );
-    }
-
-    /**
-     * Overide this in a particular converter to do the conversion.
-     *
-     * @param original the original Object
-     * @param context the context in which to convert
-     * @return the converted object
-     * @exception Exception if an error occurs
-     */
-    protected abstract Object convert( Object original, Context context )
-        throws Exception;
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/convert/Converter.java b/proposal/myrmidon/src/java/org/apache/ant/convert/Converter.java
deleted file mode 100644
index 97bf389..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/convert/Converter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.convert;
-
-import org.apache.avalon.Context;
-
-/**
- * Instances of this interface are used to convert between different types.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Converter
-{
-    /**
-     * Convert original to destination type.
-     * Destination is passed so that one converter can potentiall 
-     * convert to multiple different types.
-     *
-     * @param destination the destinaiton type
-     * @param original the original type
-     * @param context the context in which to convert
-     * @return the converted object
-     * @exception Exception if an error occurs
-     */
-    Object convert( Class destination, Object original, Context context )
-        throws ConverterException, Exception;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/convert/ConverterException.java b/proposal/myrmidon/src/java/org/apache/ant/convert/ConverterException.java
deleted file mode 100644
index 9ccd7ae..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/convert/ConverterException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.convert;
-
-import org.apache.ant.AntException;
-
-/**
- * ConverterException thrown when a problem occurs during convertion etc.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ConverterException
-    extends AntException
-{
-    /**
-     * Basic constructor with a message
-     *
-     * @param message the message 
-     */
-    public ConverterException( final String message )
-    {
-        this( message, null );
-    }
-
-    /**
-     * Constructor that builds cascade so that other exception information can be retained.
-     *
-     * @param message the message 
-     * @param throwable the throwable
-     */
-    public ConverterException( final String message, final Throwable throwable )
-    {
-        super( message, throwable );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/ConverterEngine.java b/proposal/myrmidon/src/java/org/apache/ant/convert/engine/ConverterEngine.java
deleted file mode 100644
index 11337a7..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/ConverterEngine.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.convert.engine;
-
-import org.apache.ant.convert.Converter;
-import org.apache.avalon.Component;
-import org.apache.avalon.camelot.LocatorRegistry;
-
-/**
- * Converter engine to handle converting between types.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface ConverterEngine
-    extends Component, Converter
-{
-    /**
-     * Get registry used to locate converters.
-     *
-     * @return the LocatorRegistry
-     */
-    LocatorRegistry getRegistry();
-
-    /**
-     * Get registry for converterInfo objects.
-     *
-     * @return the ConverterRegistry
-     */
-    ConverterRegistry getInfoRegistry();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/ConverterInfo.java b/proposal/myrmidon/src/java/org/apache/ant/convert/engine/ConverterInfo.java
deleted file mode 100644
index d69dc3c..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/ConverterInfo.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.convert.engine;
-
-import org.apache.avalon.camelot.Info;
-
-/**
- * This info represents meta-information about a converter.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface ConverterInfo
-    extends Info
-{
-    /**
-     * Retrieve the source type from which it can convert.
-     * NB: Should this be an array ????
-     *
-     * @return the classname from which object produced
-     */
-    String getSource();
-
-    /**
-     * Retrieve the type to which the converter converts.
-     * NB: Should this be an array ????
-     *
-     * @return the classname of the produced object
-     */
-    String getDestination();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/ConverterRegistry.java b/proposal/myrmidon/src/java/org/apache/ant/convert/engine/ConverterRegistry.java
deleted file mode 100644
index d0478be..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/ConverterRegistry.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.convert.engine;
-
-import org.apache.avalon.camelot.Registry;
-
-/**
- * Interface for registry for ConverterInfos.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface ConverterRegistry
-    extends Registry
-{
-    /**
-     * Retrieve name of ConverterInfo that describes converter that converts 
-     * from source to destination.
-     *
-     * @param source the source classname
-     * @param destination the destination classname
-     * @return the converter-info or null if none available
-     */
-    String getConverterInfoName( String source, String destination );
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/DefaultConverterEngine.java b/proposal/myrmidon/src/java/org/apache/ant/convert/engine/DefaultConverterEngine.java
deleted file mode 100644
index 7845fa0..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/DefaultConverterEngine.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.convert.engine;
-
-import org.apache.ant.AntException;
-import org.apache.ant.convert.Converter;
-import org.apache.ant.convert.ConverterException;
-import org.apache.avalon.AbstractLoggable;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.Composer;
-import org.apache.avalon.Context;
-import org.apache.avalon.camelot.DefaultFactory;
-import org.apache.avalon.camelot.DefaultLocatorRegistry;
-import org.apache.avalon.camelot.Factory;
-import org.apache.avalon.camelot.Locator;
-import org.apache.avalon.camelot.LocatorRegistry;
-
-/**
- * Converter engine to handle converting between types.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultConverterEngine
-    extends AbstractLoggable
-    implements ConverterEngine, Composer
-{
-    protected final static boolean DEBUG                = false;
-
-    protected Factory              m_factory;
-    protected LocatorRegistry      m_registry      = new DefaultLocatorRegistry();
-    protected ConverterRegistry    m_infoRegistry  = new DefaultConverterRegistry();
-
-    /**
-     * Get registry used to locate converters.
-     *
-     * @return the LocatorRegistry
-     */
-    public LocatorRegistry getRegistry()
-    {
-        return m_registry;
-    }
-    
-    /**
-     * Get registry for converterInfo objects.
-     *
-     * @return the ConverterRegistry
-     */
-    public ConverterRegistry getInfoRegistry()
-    {
-        return m_infoRegistry;
-    }
-    
-    /**
-     * Retrieve relevent services needed to deploy.
-     *
-     * @param componentManager the ComponentManager
-     * @exception ComponentManagerException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        m_factory = (Factory)componentManager.lookup( "org.apache.avalon.camelot.Factory" );
-    }
-
-    /**
-     * Convert object to destination type.
-     *
-     * @param destination the destination type
-     * @param original the original object
-     * @param context the context in which to convert
-     * @return the converted object
-     * @exception Exception if an error occurs
-     */
-    public Object convert( Class destination, final Object original, final Context context )
-        throws Exception
-    {
-        final Class originalClass = original.getClass();
-
-        if( destination.isAssignableFrom( originalClass ) )
-        {
-            return original;
-        }
-
-        if( DEBUG )
-        {
-            m_logger.debug( "Looking for converter from " + originalClass.getName() +
-                            " to " + destination.getName() );
-        }
-
-        //TODO: Start searching inheritance hierarchy for converter
-        final String name = 
-            m_infoRegistry.getConverterInfoName( originalClass.getName(), 
-                                                 destination.getName() );
-            
-        if( null == name ) 
-        {
-            throw new ConverterException( "Unable to find converter for " + 
-                                          originalClass.getName() + " to " + 
-                                          destination.getName() + " conversion" );
-        }
-
-        //TODO: Start caching converters instead of repeatedly instantiating em.
-        final Locator locator = m_registry.getLocator( name );
-        final Converter converter = (Converter)m_factory.create( locator, Converter.class );
-        return converter.convert( destination, original, context );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/DefaultConverterInfo.java b/proposal/myrmidon/src/java/org/apache/ant/convert/engine/DefaultConverterInfo.java
deleted file mode 100644
index 2f793b2..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/DefaultConverterInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.convert.engine;
-
-/**
- * This info represents meta-information about a converter.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultConverterInfo
-    implements ConverterInfo
-{
-    protected final String            m_source;
-    protected final String            m_destination;
-
-    public DefaultConverterInfo( final String source, final String destination )
-    {
-        m_source = source;
-        m_destination = destination;
-    } 
-
-    /**
-     * Retrieve the source type from which it can convert.
-     * NB: Should this be an array ????
-     *
-     * @return the classname from which object produced
-     */
-    public String getSource()
-    {
-        return m_source;
-    }
-    
-    /**
-     * Retrieve the type to which the converter converts.
-     * NB: Should this be an array ????
-     *
-     * @return the classname of the produced object
-     */
-    public String getDestination()
-    {
-        return m_destination;
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/DefaultConverterRegistry.java b/proposal/myrmidon/src/java/org/apache/ant/convert/engine/DefaultConverterRegistry.java
deleted file mode 100644
index 99c87c6..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/convert/engine/DefaultConverterRegistry.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.convert.engine;
-
-import java.util.HashMap;
-import org.apache.avalon.camelot.DefaultRegistry;
-import org.apache.avalon.camelot.Info;
-import org.apache.avalon.camelot.RegistryException;
-
-/**
- * Default implementation of ConverterInfo registry.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultConverterRegistry
-    extends DefaultRegistry
-    implements ConverterRegistry
-{
-    protected final HashMap         m_mapping        = new HashMap();
-
-    public DefaultConverterRegistry()
-    {
-        super( ConverterInfo.class );
-    }
-
-    /**
-     * Retrieve ConverterInfo that describes converter that converts from source to destination.
-     *
-     * @param source the source classname
-     * @param destination the destination classname
-     * @return the converter-info or null if none available
-     */
-    public String getConverterInfoName( final String source, final String destination )
-    {
-        final HashMap map = (HashMap)m_mapping.get( source );
-        if( null == map ) return null;
-        return (String)map.get( destination );
-    }
-
-    /**
-     * Overidden method so can add info into mapping.
-     *
-     * @param name the name of info
-     * @param info the Info
-     * @exception RegistryException if an error occurs
-     */
-    protected void checkInfo( final String name, final Info info )
-        throws RegistryException
-    {
-        super.checkInfo( name, info );
-
-        final ConverterInfo converterInfo = (ConverterInfo)info;
-        final String source = converterInfo.getSource();
-        final String destination = converterInfo.getDestination();
-
-        HashMap map = (HashMap)m_mapping.get( source );
-        if( null == map )
-        {
-            map = new HashMap();
-            m_mapping.put( source, map );
-        }
-        
-        map.put( destination, name );        
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/launcher/AntClassLoader.java b/proposal/myrmidon/src/java/org/apache/ant/launcher/AntClassLoader.java
deleted file mode 100644
index 47cdbd6..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/launcher/AntClassLoader.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.launcher;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.StringTokenizer;
-
-/**
- * Basic classloader that allows modification at runtime.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public final class AntClassLoader
-    extends URLClassLoader
-{
-    /**
-     * Basic constructor.
-     *
-     * @param urls the Starting URLS
-     */
-    public AntClassLoader( final URL[] urls )
-    {
-        super( urls );
-    }
-
-    /**
-     * Add a URL to classloader
-     *
-     * @param url the url
-     */
-    public void addURL( final URL url )
-    {
-        super.addURL( url );
-    }
-    
-    /**
-     * Add an array of URLs to classloader
-     *
-     * @param url the url
-     */
-    public void addURLs( final URL[] urls )
-    {
-        for( int i = 0; i < urls.length; i++ )
-        {
-            addURL( urls[ i ] );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/launcher/AntLoader.java b/proposal/myrmidon/src/java/org/apache/ant/launcher/AntLoader.java
deleted file mode 100644
index b1ea3a2..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/launcher/AntLoader.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.launcher;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.lang.reflect.InvocationTargetException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.StringTokenizer;
-
-/**
- * Basic Loader that is responsible for all the hackery to get classloader to work.
- * Other classes can call AntLoader.getLoader() and add to their own classloader.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- * @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
- */
-public final class AntLoader
-{
-    /**
-     * Magic entry point.
-     *
-     * @param argsthe CLI arguments
-     * @exception Exception if an error occurs
-     */
-    public final static void main( final String[] args ) 
-        throws Exception
-    {        
-        try
-        {
-            //actually try to discover the install directory based on where
-            // the ant.jar is
-            final File installDirectory = findInstallDir();
-            System.setProperty( "ant.home", installDirectory.toString() );
-
-            //setup classloader appropriately for myrmidon jar
-            final File archive = 
-                new File( installDirectory, "lib" + File.separator + "myrmidon.jar" );
-            final AntClassLoader classLoader = 
-                new AntClassLoader( new URL[] { archive.toURL() } );
-
-            //load class and retrieve appropriate main method.
-            final Class clazz = classLoader.loadClass( "org.apache.ant.Main" );
-            final Method method = clazz.getMethod( "main", new Class[] { args.getClass() } );
-            
-            //kick the tires and light the fires....
-            method.invoke( null, new Object[] { args } );
-        }
-        catch( final InvocationTargetException ite ) 
-        {
-            System.err.println( "Error: " + ite.getTargetException().getMessage() );
-            ite.getTargetException().printStackTrace();
-        }
-        catch( final Throwable throwable ) 
-        {
-            System.err.println( "Error: " + throwable.getMessage() );
-            throwable.printStackTrace();
-        }
-    }
-
-    /**
-     *  Finds the ant.jar file in the classpath.
-     */
-    protected final static File findInstallDir() 
-        throws Exception
-    {
-        final String classpath = System.getProperty( "java.class.path" );
-        final String pathSeparator = System.getProperty( "path.separator" );
-        final StringTokenizer tokenizer = new StringTokenizer( classpath, pathSeparator );
-        
-        while( tokenizer.hasMoreTokens() )
-        {
-            final String element = tokenizer.nextToken();
-
-            if( element.endsWith( "ant.jar" ) )
-            {
-                File file = (new File( element )).getAbsoluteFile();
-                file = file.getParentFile();
-                
-                if( null != file )
-                {
-                    file = file.getParentFile();
-                }
-
-                return file;                
-            }
-        }
-        
-        throw new Exception( "Unable to locate ant.jar in classpath" );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/AntCall.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/AntCall.java
deleted file mode 100644
index f333737..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/AntCall.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import java.util.ArrayList;
-import org.apache.ant.AntException;
-import org.apache.ant.project.Project;
-import org.apache.ant.project.ProjectEngine;
-import org.apache.ant.tasklet.AbstractTasklet;
-import org.apache.ant.tasklet.DefaultTaskletContext;
-import org.apache.ant.tasklet.TaskletContext;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.Composer;
-import org.apache.avalon.Context;
-
-/**
- * This is abstract base class for tasklets.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class AntCall 
-    extends AbstractTasklet
-    implements Composer
-{
-    protected ProjectEngine         m_projectEngine;
-    protected Project               m_project;
-    protected String                m_target;
-    protected ArrayList             m_properties     = new ArrayList();
-    protected TaskletContext        m_childContext;
-    protected ComponentManager      m_componentManager;
-
-    public void contextualize( final Context context )
-    {
-        super.contextualize( context );
-        m_childContext = new DefaultTaskletContext( getContext() );
-    } 
-
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        m_componentManager = componentManager;
-        m_projectEngine = (ProjectEngine)componentManager.
-            lookup( "org.apache.ant.project.ProjectEngine" );
-        m_project = (Project)componentManager.lookup( "org.apache.ant.project.Project" );
-    }
-
-    public void setTarget( final String target )
-    {
-        m_target = target;
-    }
-
-    public Property createParam()
-        throws Exception
-    {
-        final Property property = new Property();
-        property.setLogger( getLogger() );
-        property.contextualize( m_childContext );
-        property.compose( m_componentManager );
-        m_properties.add( property );
-        return property;
-    }
-
-    public void run()
-        throws AntException
-    {
-        if( null == m_target )
-        {
-            throw new AntException( "Target attribute must be specified" );
-        }
-
-        final int size = m_properties.size();
-        for( int i = 0; i < size; i++ )
-        {
-            final Property property = (Property)m_properties.get( i );
-            property.run();
-        }
-
-        getLogger().info( "Calling target " + m_target );
-        m_projectEngine.execute( m_project, m_target, m_childContext );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Echo.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Echo.java
deleted file mode 100644
index f3c06c5..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Echo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import org.apache.ant.AntException;
-import org.apache.ant.tasklet.AbstractTasklet;
-
-/**
- * This is the echo task to display a message.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Echo 
-    extends AbstractTasklet
-{
-    protected String              m_message;
-
-    public void setMessage( final String message )
-    {
-        m_message = message;
-    }
-
-    public void run()
-        throws AntException
-    {
-        getLogger().warn( m_message );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Pattern.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Pattern.java
deleted file mode 100644
index 4368ea2..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Pattern.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import org.apache.ant.AntException;
-import org.apache.ant.tasklet.DataType;
-import org.apache.ant.util.Condition;
-
-/**
- * Basic data type for holding patterns.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Pattern
-    implements DataType
-{
-    protected String         m_name;
-    protected Condition      m_condition;
-
-    /**
-     * Retrieve name (aka value) of pattern.
-     *
-     * @return the name/value of pattern
-     */
-    public String getName()
-    {
-        return m_name;
-    }
-    
-    /**
-     * Get condition associated with pattern if any.
-     *
-     * @return the Condition
-     */
-    public Condition getCondition()
-    {
-        return m_condition;
-    }
-    
-    /**
-     * Setter method for name/value of pattern.
-     * Conforms to ant setter patterns
-     *
-     * @param name the value
-     */
-    public void setName( final String name )
-    {
-        m_name = name;
-    }
-
-    /**
-     * Set if clause on pattern.
-     *
-     * @param condition the condition
-     * @exception AntException if an error occurs
-     */
-    public void setIf( final String condition )
-        throws AntException
-    {
-        verifyConditionNull();
-        m_condition = new Condition( true, condition );
-    }
-
-    /**
-     * Set unless clause of pattern.
-     *
-     * @param condition the unless clause
-     * @exception AntException if an error occurs
-     */
-    public void setUnless( final String condition )
-        throws AntException
-    {
-        verifyConditionNull();
-        m_condition = new Condition( false, condition );
-    }
-
-    /**
-     * Utility method to make sure condition unset.
-     * Made so that it is not possible for both if and unless to be set.
-     *
-     * @exception AntException if an error occurs
-     */
-    protected void verifyConditionNull()
-        throws AntException
-    {
-        if( null != m_condition )
-        {
-            throw new AntException( "Can only set one of if/else for pattern data type" );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java
deleted file mode 100644
index 2be4e8b..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import java.util.Iterator;
-import org.apache.ant.AntException;
-import org.apache.ant.configuration.Configurable;
-import org.apache.ant.configuration.Configuration;
-import org.apache.ant.configuration.Configurer;
-import org.apache.ant.convert.Converter;
-import org.apache.ant.tasklet.DataType;
-import org.apache.ant.tasklet.engine.DataTypeEngine;
-import org.apache.ant.tasklet.AbstractTasklet;
-import org.apache.ant.tasklet.TaskletContext;
-import org.apache.ant.tasklet.engine.TaskletEngine;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.Composer;
-import org.apache.avalon.ConfigurationException;
-import org.apache.avalon.Resolvable;
-
-/**
- * This is the property "task" to declare a binding of a datatype to a name.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Property 
-    extends AbstractTasklet
-    implements Configurable, Composer
-{
-    protected String              m_name;
-    protected Object              m_value;
-    protected boolean             m_localScope     = true;
-    protected DataTypeEngine      m_engine;
-    protected Converter           m_converter;
-    protected Configurer          m_configurer;
-    
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        m_configurer = (Configurer)componentManager.
-            lookup( "org.apache.ant.configuration.Configurer" );
-
-        m_engine = (DataTypeEngine)componentManager.
-            lookup( "org.apache.ant.tasklet.engine.DataTypeEngine" );
-
-        m_converter = (Converter)componentManager.lookup( "org.apache.ant.convert.Converter" );
-    }
-
-    public void configure( final Configuration configuration )
-        throws ConfigurationException
-    {
-        final Iterator attributes = configuration.getAttributeNames();
-
-        while( attributes.hasNext() )
-        {
-            final String name = (String)attributes.next();
-            final String value = configuration.getAttribute( name );
-
-            final Object object = getContext().resolveValue( value );
-
-            if( null == object )
-            {
-                throw new AntException( "Value for attribute " + name + "resolved to null" );
-            }
-
-            if( name.equals( "name" ) )
-            {
-                try 
-                {
-                    final String convertedValue = 
-                        (String)m_converter.convert( String.class, object, getContext() );
-                    setName( convertedValue );
-                }
-                catch( final Exception e )
-                {
-                    throw new ConfigurationException( "Error converting value", e );
-                }
-            }
-            else if( name.equals( "value" ) )
-            {
-                setValue( object );
-            }
-            else if( name.equals( "local-scope" ) ) 
-            {
-                try 
-                {
-                    final Boolean localScope = 
-                        (Boolean)m_converter.convert( Boolean.class, object, getContext() );
-                    setLocalScope( Boolean.TRUE == localScope ); 
-                }
-                catch( final Exception e )
-                {
-                    throw new ConfigurationException( "Error converting value", e );
-                }
-            }
-            else
-            {
-                throw new ConfigurationException( "Unknown attribute " + name );
-            }
-        }
-
-        final Iterator children = configuration.getChildren();
-        while( children.hasNext() )
-        {
-            final Configuration child = (Configuration)children.next();
-
-            try
-            {
-                final DataType value = m_engine.createDataType( child.getName() );
-                setValue( value );
-                m_configurer.configure( value, child, getContext() );
-            }
-            catch( final Exception e )
-            {
-                throw new ConfigurationException( "Unable to set datatype", e );
-            }
-        }
-    }
-
-    public void setName( final String name )
-    {
-        m_name = name;
-    }
-    
-    public void setValue( final Object value )
-        throws AntException
-    {
-        if( null != m_value )
-        {
-            throw new AntException( "Value can not be set multiple times" );
-        }
-
-        m_value = value;
-    }
-    
-    public void setLocalScope( final boolean localScope )
-    {
-        m_localScope = localScope;
-    }
-
-    public void run()
-        throws AntException
-    {
-        if( null == m_name )
-        {
-            throw new AntException( "Name must be specified" );
-        }
-
-        if( null == m_value )
-        {
-            throw new AntException( "Value must be specified" );
-        }
-
-        final TaskletContext context = getContext();
-
-        Object value = m_value;
-
-        if( value instanceof String )
-        {
-            value = context.resolveValue( (String)value );
-        }
-
-        while( null != value && value instanceof Resolvable )
-        {
-            value = ((Resolvable)value).resolve( context );
-        }
-
-        if( m_localScope )
-        {
-            context.setProperty( m_name, value );
-        }
-        else
-        {
-            context.setProperty( m_name, value, TaskletContext.PARENT );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToByteConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToByteConverter.java
deleted file mode 100644
index 0db1984..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToByteConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import org.apache.ant.convert.AbstractConverter;
-import org.apache.avalon.Context;
-
-/**
- * String to byte converter
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class StringToByteConverter
-    extends AbstractConverter
-{
-    public StringToByteConverter()
-    {
-        super( String.class, Byte.class );
-    }
-
-    public Object convert( final Object original, final Context context )
-        throws Exception
-    {
-        return new Byte( (String)original );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToClassConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToClassConverter.java
deleted file mode 100644
index 254f587..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToClassConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import org.apache.ant.convert.AbstractConverter;
-import org.apache.avalon.Context;
-
-/**
- * String to class converter
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class StringToClassConverter
-    extends AbstractConverter
-{
-    public StringToClassConverter()
-    {
-        super( String.class, Class.class );
-    }
-
-    public Object convert( final Object original, final Context context )
-        throws Exception
-    {
-        return Class.forName( (String)original );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToDoubleConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToDoubleConverter.java
deleted file mode 100644
index 0673535..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToDoubleConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import org.apache.ant.convert.AbstractConverter;
-import org.apache.avalon.Context;
-
-/**
- * String to double converter
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class StringToDoubleConverter
-    extends AbstractConverter
-{
-    public StringToDoubleConverter()
-    {
-        super( String.class, Double.class );
-    }
-
-    public Object convert( final Object original, final Context context )
-        throws Exception
-    {
-        return new Double( (String)original );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFileConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFileConverter.java
deleted file mode 100644
index 24b1d8b..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFileConverter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import java.io.File;
-import org.apache.ant.convert.AbstractConverter;
-import org.apache.ant.tasklet.TaskletContext;
-import org.apache.avalon.Context;
-
-/**
- * String to file converter
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class StringToFileConverter
-    extends AbstractConverter
-{
-    public StringToFileConverter()
-    {
-        super( String.class, File.class );
-    }
-
-    public Object convert( final Object original, final Context context )
-        throws Exception
-    {
-        final TaskletContext taskletContext = (TaskletContext)context;
-        return taskletContext.resolveFile( (String)original );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFloatConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFloatConverter.java
deleted file mode 100644
index fab3e8b..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFloatConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import org.apache.ant.convert.AbstractConverter;
-import org.apache.avalon.Context;
-
-/**
- * String to float converter
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class StringToFloatConverter
-    extends AbstractConverter
-{
-    public StringToFloatConverter()
-    {
-        super( String.class, Float.class );
-    }
-
-    public Object convert( final Object original, final Context context )
-        throws Exception
-    {
-        return new Float( (String)original );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToIntegerConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToIntegerConverter.java
deleted file mode 100644
index d807666..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToIntegerConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import org.apache.ant.convert.AbstractConverter;
-import org.apache.avalon.Context;
-
-/**
- * String to integer converter.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class StringToIntegerConverter
-    extends AbstractConverter
-{
-    public StringToIntegerConverter()
-    {
-        super( String.class, Integer.class );
-    }
-
-    public Object convert( final Object original, final Context context )
-        throws Exception
-    {
-        return new Integer( (String)original );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToLongConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToLongConverter.java
deleted file mode 100644
index 0b61fe3..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToLongConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import org.apache.ant.convert.AbstractConverter;
-import org.apache.avalon.Context;
-
-/**
- * String to long converter
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class StringToLongConverter
-    extends AbstractConverter
-{
-    public StringToLongConverter()
-    {
-        super( String.class, Long.class );
-    }
-
-    public Object convert( final Object original, final Context context )
-        throws Exception
-    {
-        return new Long( (String)original );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToShortConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToShortConverter.java
deleted file mode 100644
index 7919e64..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToShortConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import org.apache.ant.convert.AbstractConverter;
-import org.apache.avalon.Context;
-
-/**
- * String to short converter
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class StringToShortConverter
-    extends AbstractConverter
-{
-    public StringToShortConverter()
-    {
-        super( String.class, Short.class );
-    }
-
-    public Object convert( final Object original, final Context context )
-        throws Exception
-    {
-        return new Short( (String)original );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToURLConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToURLConverter.java
deleted file mode 100644
index 9ec3fad..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToURLConverter.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.basic;
-
-import java.net.URL;
-import org.apache.ant.convert.AbstractConverter;
-import org.apache.avalon.Context;
-
-/**
- * String to url converter
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class StringToURLConverter
-    extends AbstractConverter
-{
-    public StringToURLConverter()
-    {
-        super( String.class, URL.class );
-    }
-
-    public Object convert( final Object original, final Context context )
-        throws Exception
-    {
-        return new URL( (String)original );
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java
deleted file mode 100644
index a42b4ee..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.core;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.apache.ant.AntException;
-import org.apache.ant.tasklet.AbstractTasklet;
-import org.apache.ant.tasklet.engine.TaskletEngine;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.Composer;
-import org.apache.avalon.camelot.RegistryException;
-
-/**
- * Method to register a single tasklet.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public abstract class AbstractResourceRegisterer 
-    extends AbstractTasklet
-    implements Composer
-{
-    protected String              m_lib;
-    protected String              m_name;
-    protected String              m_classname;
-    protected TaskletEngine       m_engine;
-    
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        m_engine = (TaskletEngine)componentManager.
-            lookup( "org.apache.ant.tasklet.engine.TaskletEngine" );
-    }
-
-    public void setLib( final String lib )
-    {
-        m_lib = lib;
-    }
-    
-    public void setName( final String name )
-    {
-        m_name = name;
-    }
-    
-    public void setClassname( final String classname )
-    {
-        m_classname = classname;
-    }
-
-    public void run()
-        throws AntException
-    {
-        if( null == m_name )
-        {
-            throw new AntException( "Must specify name parameter" );
-        }
-        else if( null == m_lib && null == m_classname )
-        {
-            throw new AntException( "Must specify classname if you don't specify " + 
-                                    "lib parameter" );
-        }
-        
-        final URL url = getURL( m_lib );
-
-        try
-        {
-            registerResource( m_name, m_classname, url );
-        }
-        catch( final RegistryException re )
-        {
-            throw new AntException( "Error registering resource", re );
-        }
-    }
-
-    protected URL getURL( final String libName )
-    {
-        if( null != libName )
-        {
-            final File lib = getContext().resolveFile( libName );
-            try { return lib.toURL(); }
-            catch( final MalformedURLException mue )
-            {
-                throw new AntException( "Malformed task-lib parameter " + m_lib, mue );
-            }
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    protected abstract void registerResource( String name, String classname, URL url )
-        throws AntException, RegistryException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/README b/proposal/myrmidon/src/java/org/apache/ant/modules/core/README
deleted file mode 100644
index e45d2fb..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This package is required for operation. No task within this directory is allowed to 
-require parameters other than strings for converter.
\ No newline at end of file
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java
deleted file mode 100644
index 08e6888..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.core;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.apache.ant.AntException;
-import org.apache.ant.convert.engine.ConverterEngine;
-import org.apache.ant.convert.engine.DefaultConverterInfo;
-import org.apache.ant.tasklet.AbstractTasklet;
-import org.apache.ant.tasklet.engine.TaskletEngine;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.Composer;
-import org.apache.avalon.camelot.DefaultLocator;
-import org.apache.avalon.camelot.DeploymentException;
-import org.apache.avalon.camelot.RegistryException;
-
-/**
- * Method to register a single converter.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class RegisterConverter 
-    extends AbstractTasklet
-    implements Composer
-{
-    protected String              m_sourceType;
-    protected String              m_destinationType;
-    protected String              m_lib;
-    protected String              m_classname;
-    protected TaskletEngine       m_engine;
-    
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        m_engine = (TaskletEngine)componentManager.
-            lookup( "org.apache.ant.tasklet.engine.TaskletEngine" );
-    }
-
-    public void setLib( final String lib )
-    {
-        m_lib = lib;
-    }
-    
-    public void setClassname( final String classname )
-    {
-        m_classname = classname;
-    }
-
-    public void setSourceType( final String sourceType )
-    {
-        m_sourceType = sourceType;
-    }
-    
-    public void setDestinationType( final String destinationType )
-    {
-        m_destinationType = destinationType;
-    }
-    
-    public void run()
-        throws AntException
-    {
-        if( null == m_classname )
-        {
-            throw new AntException( "Must specify classname parameter" );
-        }
-        
-        final URL url = getURL( m_lib );
-
-        boolean isFullyDefined = true;
-        
-        if( null == m_sourceType && null == m_destinationType )
-        {
-            isFullyDefined = false;
-        }
-        else if( null == m_sourceType || null == m_destinationType )
-        {
-            throw new AntException( "Must specify the source-type and destination-type " +
-                                    "parameters when supplying a name" );
-        }
-
-        if( !isFullyDefined && null == url )
-        {
-            throw new AntException( "Must supply parameter if not fully specifying converter" );
-        }
-
-        if( !isFullyDefined )
-        {
-            try 
-            { 
-                m_engine.getTskDeployer().deployConverter( m_classname, url.toString(), url ); 
-            }
-            catch( final DeploymentException de )
-            {
-                throw new AntException( "Failed deploying " + m_classname + 
-                                        " from " + url, de );
-            }
-        }
-        else
-        {
-            final DefaultConverterInfo info = 
-                new DefaultConverterInfo( m_sourceType, m_destinationType );
-            final DefaultLocator locator = new DefaultLocator( m_classname, url );
-
-            try
-            {
-                m_engine.getConverterEngine().getInfoRegistry().register( m_classname, info ); 
-                m_engine.getConverterEngine().getRegistry().register( m_classname, locator ); 
-            }
-            catch( final RegistryException re )
-            {
-                throw new AntException( "Error registering resource", re );
-            }
-        }
-    }
-    
-    protected URL getURL( final String libName )
-    {
-        if( null != libName )
-        {
-            final File lib = getContext().resolveFile( libName );
-            try { return lib.toURL(); }
-            catch( final MalformedURLException mue )
-            {
-                throw new AntException( "Malformed task-lib parameter " + m_lib, mue );
-            }
-        }
-        else
-        {
-            return null;
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterDataType.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterDataType.java
deleted file mode 100644
index dcf325b..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterDataType.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.core;
-
-import java.net.URL;
-import org.apache.ant.AntException;
-import org.apache.avalon.camelot.DefaultLocator;
-import org.apache.avalon.camelot.DeploymentException;
-import org.apache.avalon.camelot.RegistryException;
-
-/**
- * Method to register a single datatype.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class RegisterDataType
-    extends AbstractResourceRegisterer
-{
-    protected void registerResource( final String name, 
-                                     final String classname, 
-                                     final URL url )
-        throws AntException, RegistryException 
-    {
-        if( null == classname )
-        {
-            try { m_engine.getTskDeployer().deployDataType( name, url.toString(), url ); }
-            catch( final DeploymentException de )
-            {
-                throw new AntException( "Failed deploying " + name + " from " + url, de );
-            }
-        }
-        else
-        {
-            final DefaultLocator locator = new DefaultLocator( classname, url );
-            m_engine.getDataTypeEngine().getRegistry().register( name, locator ); 
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklet.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklet.java
deleted file mode 100644
index 3f276fd..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklet.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.core;
-
-import java.net.URL;
-import org.apache.ant.AntException;
-import org.apache.avalon.camelot.DefaultLocator;
-import org.apache.avalon.camelot.DeploymentException;
-import org.apache.avalon.camelot.RegistryException;
-
-/**
- * Method to register a single tasklet.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class RegisterTasklet 
-    extends AbstractResourceRegisterer
-{
-    protected void registerResource( final String name, 
-                                     final String classname, 
-                                     final URL url )
-        throws AntException, RegistryException 
-    {
-        if( null == classname )
-        {
-            try { m_engine.getTskDeployer().deployTasklet( name, url.toString(), url ); }
-            catch( final DeploymentException de )
-            {
-                throw new AntException( "Failed deploying " + name + " from " + url, de );
-            }
-        }
-        else
-        {
-            final DefaultLocator locator = new DefaultLocator( classname, url );
-            m_engine.getRegistry().register( name, locator ); 
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java
deleted file mode 100644
index 0fedc8d..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.core;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.apache.ant.AntException;
-import org.apache.ant.tasklet.AbstractTasklet;
-import org.apache.ant.tasklet.engine.TaskletEngine;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.Composer;
-import org.apache.avalon.camelot.DeploymentException;
-
-/**
- * Method to register a tasklib.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class RegisterTasklib 
-    extends AbstractTasklet
-    implements Composer
-{
-    protected String              m_lib;
-    protected TaskletEngine       m_engine;
-    
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        m_engine = (TaskletEngine)componentManager.
-            lookup( "org.apache.ant.tasklet.engine.TaskletEngine" );
-    }
-
-    public void setLib( final String lib )
-    {
-        m_lib = lib;
-    }
-
-    public void run()
-        throws AntException
-    {
-        if( null == m_lib )
-        {
-            throw new AntException( "Must specify lib parameter" );
-        }
-        
-        URL url = null;
-
-        final File lib = getContext().resolveFile( m_lib );
-        try { url = lib.toURL(); }
-        catch( final MalformedURLException mue )
-        {
-            throw new AntException( "Malformed task-lib parameter " + m_lib, mue );
-        }
-
-        try
-        {
-            m_engine.getTskDeployer().deploy( url.toString(), url );
-        }
-        catch( final DeploymentException de )
-        {
-            throw new AntException( "Error registering resource", de );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/test/ConfigurationTest.java b/proposal/myrmidon/src/java/org/apache/ant/modules/test/ConfigurationTest.java
deleted file mode 100644
index 3090fc1..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/test/ConfigurationTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.test;
-
-import org.apache.ant.AntException;
-import org.apache.ant.configuration.Configurable;
-import org.apache.ant.configuration.Configuration;
-import org.apache.ant.tasklet.AbstractTasklet;
-import org.apache.avalon.ConfigurationException;
-
-/**
- * This is to test self interpretation of configuration.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ConfigurationTest 
-    extends AbstractTasklet
-    implements Configurable
-{
-    protected String              m_message;
-
-    public void configure( final Configuration configuration )
-        throws ConfigurationException
-    {
-        String message = configuration.getAttribute( "message" );
-        final Object object = getContext().resolveValue( message );
-        if( object instanceof String )
-        {
-            m_message = (String)object;
-        }
-        else
-        {
-            m_message = object.toString();
-        }
-    }
-
-    public void run()
-        throws AntException
-    {
-        getLogger().warn( m_message );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/test/ContentTest.java b/proposal/myrmidon/src/java/org/apache/ant/modules/test/ContentTest.java
deleted file mode 100644
index 4cc24b2..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/test/ContentTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.test;
-
-import org.apache.ant.AntException;
-import org.apache.ant.tasklet.AbstractTasklet;
-
-/**
- * This is to test whether content is added.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ContentTest 
-    extends AbstractTasklet
-{
-    public void addContent( final Integer value )
-    {
-        getLogger().warn( "Integer content: " + value );
-    }
-
-    /*
-      public void addContent( final String blah )
-      {
-      System.out.println( "String: " + blah );
-      }
-    */
-
-    public void run()
-        throws AntException
-    {
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/test/PrimitiveTypesTest.java b/proposal/myrmidon/src/java/org/apache/ant/modules/test/PrimitiveTypesTest.java
deleted file mode 100644
index 87a078b..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/test/PrimitiveTypesTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.test;
-
-import org.apache.ant.AntException;
-import org.apache.ant.tasklet.AbstractTasklet;
-
-/**
- * Test conversion of all the primitive types.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class PrimitiveTypesTest 
-    extends AbstractTasklet
-{
-    public void setInteger( final Integer value )
-    {
-        getLogger().warn( "setInteger( " + value + " );" );
-    }
-    
-    public void setInteger2( final int value )
-    {
-        getLogger().warn( "setInteger2( " + value + " );" );
-    }
-
-    public void setShort( final Short value )
-    {
-        getLogger().warn( "setShort( " + value + " );" );
-    }
-    
-    public void setShort2( final short value )
-    {
-        getLogger().warn( "setShort2( " + value + " );" );
-    }
-
-    public void setByte( final Byte value )
-    {
-        getLogger().warn( "setByte( " + value + " );" );
-    }
-    
-    public void setByte2( final byte value )
-    {
-        getLogger().warn( "setByte2( " + value + " );" );
-    }
-
-    public void setLong( final Long value )
-    {
-        getLogger().warn( "setLong( " + value + " );" );
-    }
-    
-    public void setLong2( final long value )
-    {
-        getLogger().warn( "setLong2( " + value + " );" );
-    }
-    
-    public void setFloat( final Float value )
-    {
-        getLogger().warn( "setFloat( " + value + " );" );
-    }
-    
-    public void setFloat2( final float value )
-    {
-        getLogger().warn( "setFloat2( " + value + " );" );
-    }
-    
-    public void setDouble( final Double value )
-    {
-        getLogger().warn( "setDouble( " + value + " );" );
-    }
-    
-    public void setDouble2( final double value )
-    {
-        getLogger().warn( "setDouble2( " + value + " );" );
-    }
-
-    public void setString( final String value )
-    {
-        getLogger().warn( "setString( " + value + " );" );
-    }
-
-    public void run()
-        throws AntException
-    {
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/test/SubElementTest.java b/proposal/myrmidon/src/java/org/apache/ant/modules/test/SubElementTest.java
deleted file mode 100644
index c02123e..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/modules/test/SubElementTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.modules.test;
-
-import org.apache.ant.AntException;
-import org.apache.ant.tasklet.AbstractTasklet;
-
-/**
- * Test sub-elements addition.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class SubElementTest 
-    extends AbstractTasklet
-{
-    public static final class Beep
-    {
-        public void setMessage( final String string )
-        {
-            System.out.println( string );
-        }
-    }
-
-    public Beep createCreateBeep()
-    {
-        System.out.println( "createCreateBeep()" );
-        return new Beep();
-    }
-
-    public void addAddBeep( final Beep beep )
-    {
-        System.out.println( "addBeeper(" + beep + ");" );
-    }
-
-    public void run()
-        throws AntException
-    {
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProject.java b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProject.java
deleted file mode 100644
index de15a3a..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProject.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import org.apache.ant.AntException;
-import org.apache.ant.tasklet.DefaultTaskletContext;
-import org.apache.ant.tasklet.TaskletContext;
-
-/**
- * Default project implementation.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultProject
-    implements Project
-{
-    protected final TaskletContext       m_baseContext     = new DefaultTaskletContext();
-    protected final HashMap              m_targets         = new HashMap();
-    protected Target                     m_implicitTarget;
-    protected String                     m_defaultTarget;
-    
-    /**
-     * Retrieve implicit target. 
-     * The implicit target is top level tasks. 
-     * Currently restricted to property tasks.
-     *
-     * @return the Target
-     */
-    public Target getImplicitTarget()
-    {
-        return m_implicitTarget;
-    }
-
-    /**
-     * Set ImplicitTarget.
-     *
-     * @param target the implicit target
-     */
-    public void setImplicitTarget( final Target target )
-    {
-        m_implicitTarget = target;
-    }
-    
-    /**
-     * Retrieve a target by name.
-     *
-     * @param name the name of target
-     * @return the Target or null if no target exists with name
-     */
-    public Target getTarget( final String targetName )
-    {
-        return (Target)m_targets.get( targetName );
-    }
-    
-    /**
-     * Get name of default target.
-     *
-     * @return the default target name
-     */
-    public String getDefaultTargetName()
-    {
-        return m_defaultTarget;
-    }
-    
-    /**
-     * Retrieve names of all targets in project.
-     *
-     * @return the iterator of project names
-     */
-    public Iterator getTargetNames()
-    {
-        return m_targets.keySet().iterator();
-    }
-    
-    /**
-     * Get project (top-level) context.
-     *
-     * @return the context
-     */    
-    public TaskletContext getContext()
-    {
-        return m_baseContext;
-    }
-
-    /**
-     * Set DefaultTargetName.
-     *
-     * @param defaultTarget the default target name
-     */
-    public void setDefaultTargetName( final String defaultTarget )
-    {
-        m_defaultTarget = defaultTarget;
-    }
-
-    /**
-     * Add a target to project.
-     *
-     * @param name the name of target
-     * @param target the Target
-     * @exception AntException if an error occurs
-     */
-    public void addTarget( final String name, final Target target )
-        throws AntException
-    {
-        if( null != m_targets.get( name ) )
-        {
-            throw new AntException( "Can not have two targets in a file with the name " +
-                                    name );
-        }
-        else
-        {
-            m_targets.put( name, target );
-        }
-    }
-}
-
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectBuilder.java b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectBuilder.java
deleted file mode 100644
index 35898a4..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectBuilder.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Iterator;
-import org.apache.ant.AntException;
-import org.apache.ant.configuration.Configuration;
-import org.apache.ant.configuration.ConfigurationBuilder;
-import org.apache.ant.util.Condition;
-import org.apache.ant.tasklet.TaskletContext;
-import org.apache.avalon.AbstractLoggable;
-import org.apache.avalon.ConfigurationException;
-import org.apache.avalon.util.StringUtil;
-import org.apache.log.Logger;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * Default implementation to construct project from a build file.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultProjectBuilder
-    extends AbstractLoggable
-    implements ProjectBuilder
-{
-    protected ConfigurationBuilder  m_builder;
-
-    public DefaultProjectBuilder()
-    {
-        m_builder = new ConfigurationBuilder();
-    }
-
-    /**
-     * build a project from file.
-     *
-     * @param source the source
-     * @return the constructed Project
-     * @exception IOException if an error occurs
-     * @exception AntException if an error occurs
-     */
-    public Project build( final File projectFile )
-        throws IOException, AntException
-    {
-        try
-        {
-            final String location = projectFile.getCanonicalFile().toString();
-            final Configuration configuration = buildConfiguration( location );
-            return build( projectFile, configuration );
-        }
-        catch( final ConfigurationException ce )
-        {
-            throw new AntException( "ConfigurationException: " + ce.getMessage(), ce );
-        }
-    }
-
-    /**
-     * Utility method to build a Configuration tree from a source.
-     * Overide this in sub-classes if you want to provide extra 
-     * functionality (ie xslt/css).
-     *
-     * @param location the location
-     * @return the created Configuration
-     * @exception AntException if an error occurs
-     * @exception IOException if an error occurs
-     */
-    protected Configuration buildConfiguration( final String location )
-        throws AntException, IOException, ConfigurationException
-    {
-        try
-        {
-            return (Configuration)m_builder.build( location ); 
-        }
-        catch( final SAXException se )
-        {
-            throw new AntException( "SAXEception: " + se.getMessage(), se );
-        }
-    }
-
-    /**
-     * build project from configuration.
-     *
-     * @param file the file from which configuration was loaded
-     * @param configuration the configuration loaded
-     * @return the created Project
-     * @exception IOException if an error occurs
-     * @exception AntException if an error occurs
-     * @exception ConfigurationException if an error occurs
-     */
-    protected Project build( final File file, final Configuration configuration )
-        throws IOException, AntException, ConfigurationException
-    {
-        if( !configuration.getName().equals("project") )
-        {
-            throw new AntException( "Project file must be enclosed in project element" );
-        }
-
-        //get project-level attributes
-        final String baseDirectoryName = configuration.getAttribute( "basedir" );
-        final String defaultTarget = configuration.getAttribute( "default" );
-        final String projectName = configuration.getAttribute( "name" );
-
-        //determine base directory for project
-        final File baseDirectory = 
-            (new File( file.getParentFile(), baseDirectoryName )).getAbsoluteFile();
-
-        getLogger().debug( "Project " + projectName + " base directory: " + baseDirectory );
-
-        //create project and ...
-        final DefaultProject project = new DefaultProject();
-        project.setDefaultTargetName( defaultTarget );
-        
-        //setup basic context of project
-        final TaskletContext context = project.getContext();
-        context.setProperty( TaskletContext.BASE_DIRECTORY, baseDirectory );
-        context.setProperty( Project.PROJECT_FILE, file );
-        context.setProperty( Project.PROJECT, projectName );
-
-        //build using all top-level attributes
-        buildTopLevelProject( project, configuration );
-
-        return project;
-    }
-
-    /**
-     * Handle all top level elements in configuration.
-     *
-     * @param project the project
-     * @param configuration the Configuration
-     * @exception AntException if an error occurs
-     */
-    protected void buildTopLevelProject( final DefaultProject project, 
-                                         final Configuration configuration )
-        throws AntException
-    {
-        final Iterator elements = configuration.getChildren();
-
-        while( elements.hasNext() )
-        {
-            final Configuration element = (Configuration)elements.next();
-            final String name = element.getName();
-
-            //handle individual elements
-            if( name.equals( "target" ) ) buildTarget( project, element );
-            else if( name.equals( "property" ) ) buildImplicitTask( project, element );
-            else
-            {
-                throw new AntException( "Unknown top-level element " + name + 
-                                        " at " + element.getLocation() );
-            }
-        }
-    }
-
-    /**
-     * Build a target from configuration.
-     *
-     * @param project the project
-     * @param task the Configuration
-     */
-    protected void buildTarget( final DefaultProject project, final Configuration target )
-    {
-        final String name = target.getAttribute( "name", null );
-        final String depends = target.getAttribute( "depends", null );
-        final String ifCondition = target.getAttribute( "if", null );
-        final String unlessCondition = target.getAttribute( "unless", null );
-
-        if( null == name )
-        {
-            throw new AntException( "Discovered un-named target at " + 
-                                    target.getLocation() );
-        } 
-
-        getLogger().debug( "Parsing target: " + name );
-
-        if( null != ifCondition && null != unlessCondition )
-        {
-            throw new AntException( "Discovered invalid target that has both a if and " +
-                                    "unless condition at " + target.getLocation() );    
-        }
-
-        Condition condition = null;
-
-        if( null != ifCondition )
-        {
-            getLogger().debug( "Target if condition: " + ifCondition );
-            condition = new Condition( true, ifCondition );
-        }
-        else if( null != unlessCondition )
-        {
-            getLogger().debug( "Target unless condition: " + unlessCondition );
-            condition = new Condition( false, unlessCondition );
-        }
-
-        final DefaultTarget defaultTarget = new DefaultTarget( condition );
-
-        //apply depends attribute
-        if( null != depends )
-        {
-            final String[] elements = StringUtil.splitString( depends, "," );
-
-            for( int i = 0; i < elements.length; i++ )
-            {
-                final String dependency = elements[ i ].trim();
-
-                if( 0 == dependency.length() )
-                {
-                    throw new AntException( "Discovered empty dependency in target " + 
-                                            target.getName() + " at " + target.getLocation() ); 
-                }
-
-                getLogger().debug( "Target dependency: " + dependency );
-                defaultTarget.addDependency( dependency );
-            }    
-        }
-
-        //add all the targets from element
-        final Iterator tasks = target.getChildren();
-        while( tasks.hasNext() )
-        {
-            final Configuration task = (Configuration)tasks.next();
-            getLogger().debug( "Parsed task: " + task.getName() );
-            defaultTarget.addTask( task );
-        }
-
-        //add target to project
-        project.addTarget( name, defaultTarget );
-    }
-
-    /**
-     * Create an implict task from configuration
-     *
-     * @param project the project
-     * @param task the configuration
-     */
-    protected void buildImplicitTask( final DefaultProject project, final Configuration task )
-    {       
-        DefaultTarget target = (DefaultTarget)project.getImplicitTarget();
-        
-        if( null == target )
-        {
-            target = new DefaultTarget();
-            project.setImplicitTarget( target );
-        }
-
-        getLogger().debug( "Parsed implicit task: " + task.getName() );
-        target.addTask( task );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectEngine.java b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectEngine.java
deleted file mode 100644
index a44aa96..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectEngine.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.apache.ant.AntException;
-import org.apache.ant.configuration.Configuration;
-import org.apache.ant.tasklet.DefaultTaskletContext;
-import org.apache.ant.tasklet.TaskletContext;
-import org.apache.ant.tasklet.engine.DefaultTaskletEngine;
-import org.apache.ant.tasklet.engine.TaskletEngine;
-import org.apache.ant.util.Condition;
-import org.apache.avalon.AbstractLoggable;
-import org.apache.avalon.Composer;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.DefaultComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.DefaultComponentManager;
-import org.apache.avalon.Disposable;
-import org.apache.avalon.Initializable;
-import org.apache.log.Logger;
-
-/**
- * This is the default implementation of ProjectEngine.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultProjectEngine
-    extends AbstractLoggable
-    implements ProjectEngine, Composer
-{
-    protected TaskletEngine            m_taskletEngine;
-    protected ProjectListenerSupport   m_listenerSupport = new ProjectListenerSupport();
-    protected DefaultComponentManager  m_componentManager;
-    
-    /**
-     * Add a listener to project events.
-     *
-     * @param listener the listener
-     */
-    public void addProjectListener( final ProjectListener listener )
-    {
-        m_listenerSupport.addProjectListener( listener );
-    }
-    
-    /**
-     * Remove a listener from project events.
-     *
-     * @param listener the listener
-     */
-    public void removeProjectListener( final ProjectListener listener )
-    {
-        m_listenerSupport.removeProjectListener( listener );
-    }
-    
-    /**
-     * Retrieve relevent services needed for engine.
-     *
-     * @param componentManager the ComponentManager
-     * @exception ComponentManagerException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        m_componentManager = (DefaultComponentManager)componentManager;
-        m_taskletEngine = (TaskletEngine)componentManager.
-            lookup( "org.apache.ant.tasklet.engine.TaskletEngine" );
-    }
-
-    /**
-     * Execute a target in a particular project.
-     * Execute in the project context.
-     *
-     * @param project the Project
-     * @param target the name of the target
-     * @exception AntException if an error occurs
-     */    
-    public void execute( final Project project, final String target )
-        throws AntException
-    {
-        //HACK: should do this a better way !!!!!!
-        m_componentManager.put( "org.apache.ant.project.Project", project );
-
-        final TaskletContext context = project.getContext();
-
-        final String projectName = (String)context.getProperty( Project.PROJECT );
-
-        m_listenerSupport.projectStarted( projectName );
-
-        //context = new DefaultTaskletContext( context );
-
-        executeTargetWork( "<init>", project.getImplicitTarget(), context );
-
-        execute( project, target, context );
-
-        m_listenerSupport.projectFinished();
-    }
-
-    /**
-     * Execute a target in a particular project, in a particular context.
-     *
-     * @param project the Project
-     * @param target the name of the target
-     * @param context the context
-     * @exception AntException if an error occurs
-     */
-    public void execute( Project project, String target, TaskletContext context )
-        throws AntException
-    {
-        execute( project, target, context, new ArrayList() );
-    }
-
-    /**
-     * Helper method to execute a target.
-     *
-     * @param project the Project
-     * @param target the name of the target
-     * @param context the context
-     * @param done the list of targets already executed in current run
-     * @exception AntException if an error occurs
-     */
-    protected void execute( final Project project, 
-                            final String targetName, 
-                            final TaskletContext context,
-                            final ArrayList done )
-        throws AntException
-    {
-        final Target target = project.getTarget( targetName );
-
-        if( null == target )
-        {
-            throw new AntException( "Unable to find target " + targetName );
-        }
-        
-        //add target to list of targets executed
-        done.add( targetName );
-
-        //execute all dependencies
-        final Iterator dependencies = target.getDependencies();
-        while( dependencies.hasNext() )
-        {
-            final String dependency = (String)dependencies.next();
-            if( !done.contains( dependency ) )
-            {
-                execute( project, dependency, context, done );
-            }
-        }
-
-        executeTarget( targetName, target, context );
-    }
-
-    /**
-     * Method to execute a particular target instance.
-     *
-     * @param targetName the name of target
-     * @param target the target
-     * @param context the context in which to execute
-     * @exception AntException if an error occurs
-     */
-    protected void executeTarget( final String targetName, 
-                                  final Target target, 
-                                  final TaskletContext context )
-        throws AntException
-    {
-        //is this necessary ? I think not but ....
-        // NO it isn't because you set target name and project has already been provided
-        //m_componentManager.put( "org.apache.ant.project.Target", target );
-
-        //create project context and set target name
-        final TaskletContext targetContext = new DefaultTaskletContext( context );
-        targetContext.setProperty( Project.TARGET, targetName );
-        
-        //notify listeners
-        m_listenerSupport.targetStarted( targetName );
-
-        //actually do the execution work 
-        executeTargetWork( targetName, target, targetContext );
-        
-        //notify listeners
-        m_listenerSupport.targetFinished();
-    }
-
-    /**
-     * Do the work associated with target.
-     * ie execute all tasks
-     *
-     * @param name the name of target
-     * @param target the target
-     * @param context the context
-     */
-    protected void executeTargetWork( final String name, 
-                                      final Target target, 
-                                      final TaskletContext context )
-    {
-        //check the condition associated with target.
-        //if it is not satisfied then skip target
-        final Condition condition = target.getCondition();
-        if( null != condition )
-        {
-            if( false == condition.evaluate( context ) )
-            {
-                getLogger().debug( "Skipping target " + name + 
-                                   " as it does not satisfy condition" );
-                return;
-            }
-        }
-
-        getLogger().debug( "Executing target " + name );
-
-        //execute all tasks assciated with target
-        final Iterator tasks = target.getTasks();
-        while( tasks.hasNext() )
-        {
-            final Configuration task = (Configuration)tasks.next();
-            executeTask( task, context );
-        }
-    }
-
-    /**
-     * Execute a task.
-     *
-     * @param task the task definition
-     * @param context the context 
-     * @exception AntException if an error occurs
-     */
-    protected void executeTask( final Configuration task, final TaskletContext context )
-        throws AntException
-    {
-        final String name = task.getName();
-        getLogger().debug( "Executing task " + name );
-
-        //Set up context for task...
-
-        //is Only necessary if we are multi-threaded
-        //final TaskletContext targetContext = new DefaultTaskletContext( context );
-
-        //is setting name even necessary ???
-        context.setProperty( TaskletContext.NAME, name );
-
-        //notify listeners
-        m_listenerSupport.taskletStarted( name );
-
-        //run task
-        m_taskletEngine.execute( task, context );
-
-        //notify listeners task has ended
-        m_listenerSupport.taskletFinished();
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectListener.java b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectListener.java
deleted file mode 100644
index 8d250af..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectListener.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-import org.apache.avalon.util.StringUtil;
-
-/**
- * Default listener that emulates the old ant listener notifications.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultProjectListener
-    implements ProjectListener
-{
-    protected String        m_prefix;
-
-    /**
-     * Notify listener of projectStarted event.
-     *
-     * @param projectName the projectName
-     */
-    public void projectStarted( final String projectName )
-    {
-        output( "Starting project " + projectName + "\n" );
-    }
-    
-    /**
-     * Notify listener of projectFinished event.
-     */
-    public void projectFinished()
-    {
-    }
-    
-    /**
-     * Notify listener of targetStarted event.
-     *
-     * @param targetName the name of target
-     */
-    public void targetStarted( final String targetName )
-    {
-        output( targetName + ":\n" );
-    }
-    
-    /**
-     * Notify listener of targetFinished event.
-     */
-    public void targetFinished()
-    {
-    }
-    
-    /**
-     * Notify listener of taskletStarted event.
-     *
-     * @param taskletName the name of tasklet
-     */
-    public void taskletStarted( final String taskletName )
-    {
-        m_prefix = taskletName;
-    }
-    
-    /**
-     * Notify listener of taskletFinished event.
-     */
-    public void taskletFinished()
-    {
-        m_prefix = null;
-    }
-    
-    /**
-     * Notify listener of log message event.
-     *
-     * @param message the message
-     */
-    public void log( String message )
-    {
-        output( message );
-    }
-    
-    /**
-     * Notify listener of log message event.
-     *
-     * @param message the message
-     * @param throwable the throwable
-     */
-    public void log( String message, Throwable throwable )
-    {
-        output( message + "\n" + StringUtil.printStackTrace( throwable, 5, true ) );
-    }
-
-    /**
-     * Utility class to output data.
-     * Overide in sub-classes to direct to a different destination.
-     *
-     * @param data the data
-     */
-    protected void output( final String data )
-    {
-        if( null != m_prefix ) System.out.println( "\t[" + m_prefix + "] " + data );
-        else System.out.println( data );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultTarget.java b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultTarget.java
deleted file mode 100644
index 1438938..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultTarget.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.apache.ant.configuration.Configuration;
-import org.apache.ant.util.Condition;
-
-/**
- * Default implementation of target.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultTarget
-    implements Target
-{
-    protected final ArrayList   m_dependencies     = new ArrayList();
-    protected final ArrayList   m_tasks            = new ArrayList();
-    protected final Condition   m_condition;
-
-    /**
-     * Constructor taking condition for target.
-     *
-     * @param condition the condition
-     */
-    public DefaultTarget( final Condition condition )
-    {
-        m_condition = condition;
-    }
-
-    /**
-     * Constructor for target with no condition.
-     */
-    public DefaultTarget()
-    {
-        this( null );
-    }
-    
-    /**
-     * Get condition under which target is executed.
-     *
-     * @return the condition for target or null
-     */
-    public Condition getCondition()
-    {
-        return m_condition;
-    }
-    /**
-     * Get dependencies of target
-     *
-     * @return the dependency list
-     */
-    public Iterator getDependencies()
-    {
-        return m_dependencies.iterator();
-    }
-
-    /**
-     * Get tasks in target
-     *
-     * @return the target list
-     */
-    public Iterator getTasks()
-    {
-        return m_tasks.iterator();
-    }
-
-    /**
-     * Add a dependency to target.
-     *
-     * @param dependency the dependency
-     */
-    public void addDependency( final String dependency )
-    {
-        m_dependencies.add( dependency );
-    }
-
-    /**
-     * Add task to target.
-     *
-     * @param taskConfiguration the task representation
-     */
-    public void addTask( final Configuration taskConfiguration )
-    {
-        m_tasks.add( taskConfiguration );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/LogTargetToListenerAdapter.java b/proposal/myrmidon/src/java/org/apache/ant/project/LogTargetToListenerAdapter.java
deleted file mode 100644
index 38e0a66..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/LogTargetToListenerAdapter.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-import org.apache.log.LogEntry;
-import org.apache.log.LogTarget;
-
-/**
- * Adapter between Avalon LogKit and Project listener interfaces.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class LogTargetToListenerAdapter
-    implements LogTarget
-{
-    protected final ProjectListener    m_listener;
-
-    /**
-     * Constructor taking listener to convert to.
-     *
-     * @param listener the ProjectListener
-     */
-    public LogTargetToListenerAdapter( final ProjectListener listener )
-    {
-        m_listener = listener;
-    }
-
-    /**
-     * Process a log entry.
-     *
-     * @param entry the entry
-     */
-    public void processEntry( final LogEntry entry )
-    {
-        if( null == entry.getThrowable() )
-        {
-            m_listener.log( entry.getMessage() );
-        }
-        else
-        {
-            m_listener.log( entry.getMessage(), entry.getThrowable() );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/Project.java b/proposal/myrmidon/src/java/org/apache/ant/project/Project.java
deleted file mode 100644
index a580e93..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/Project.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-import java.util.Iterator;
-import org.apache.ant.AntException;
-import org.apache.ant.tasklet.TaskletContext;
-import org.apache.avalon.Component;
-
-/**
- * Interface through which to interact with projects.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Project
-    extends Component
-{
-    // the name of currently executing project
-    String PROJECT          = "ant.project.name"; 
-
-    // the name of currently executing project
-    String PROJECT_FILE     = "ant.project.file"; 
-
-    // the name of currently executing target
-    String TARGET           = "ant.target.name"; 
-
-    /**
-     * Get name of default target.
-     *
-     * @return the default target name
-     */
-    String getDefaultTargetName();
-
-    /**
-     * Retrieve implicit target. 
-     * The implicit target is top level tasks. 
-     * Currently restricted to property tasks.
-     *
-     * @return the Target
-     */
-    Target getImplicitTarget();
-
-    /**
-     * Retrieve a target by name.
-     *
-     * @param name the name of target
-     * @return the Target or null if no target exists with name
-     */
-    Target getTarget( String name );
-
-    /**
-     * Retrieve names of all targets in project.
-     *
-     * @return the iterator of project names
-     */
-    Iterator getTargetNames();
-
-    /**
-     * Get project (top-level) context.
-     *
-     * @return the context
-     */
-    TaskletContext getContext();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/ProjectBuilder.java b/proposal/myrmidon/src/java/org/apache/ant/project/ProjectBuilder.java
deleted file mode 100644
index a6a97c1..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/ProjectBuilder.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-import java.io.File;
-import java.io.IOException;
-import org.apache.ant.AntException;
-import org.apache.avalon.Component;
-
-/**
- * Interface implemented by components that build projects from sources.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface ProjectBuilder
-    extends Component
-{
-    /**
-     * build a project from source.
-     *
-     * @param source the source
-     * @return the constructed Project
-     * @exception IOException if an error occurs
-     * @exception AntException if an error occurs
-     */
-    Project build( File source )
-        throws IOException, AntException;
-}
-
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/ProjectEngine.java b/proposal/myrmidon/src/java/org/apache/ant/project/ProjectEngine.java
deleted file mode 100644
index 6902568..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/ProjectEngine.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-import org.apache.ant.AntException;
-import org.apache.ant.tasklet.TaskletContext;
-import org.apache.ant.tasklet.engine.TaskletEngine;
-import org.apache.avalon.Component;
-
-/**
- * This is the interface between ProjectEngine and rest of the system.
- * This is the interface that tasks/frontends must use to interact with 
- * project execution.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface ProjectEngine
-    extends Component
-{
-    /**
-     * Add a listener to project events.
-     *
-     * @param listener the listener
-     */
-    void addProjectListener( ProjectListener listener );
-
-    /**
-     * Remove a listener from project events.
-     *
-     * @param listener the listener
-     */
-    void removeProjectListener( ProjectListener listener );
-
-    /**
-     * Execute a target in a particular project.
-     * Execute in the project context.
-     *
-     * @param project the Project
-     * @param target the name of the target
-     * @exception AntException if an error occurs
-     */
-    void execute( Project project, String target )
-        throws AntException;
-
-    /**
-     * Execute a target in a particular project, in a particular context.
-     *
-     * @param project the Project
-     * @param target the name of the target
-     * @param context the context
-     * @exception AntException if an error occurs
-     */
-    void execute( Project project, String target, TaskletContext context )
-        throws AntException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/ProjectListener.java b/proposal/myrmidon/src/java/org/apache/ant/project/ProjectListener.java
deleted file mode 100644
index 9495a31..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/ProjectListener.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-/**
- * The interface to implement if you want to receive 
- * notification of project status.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface ProjectListener
-{
-    /**
-     * Notify listener of projectStarted event.
-     *
-     * @param projectName the projectName
-     */
-    void projectStarted( String projectName );
-
-    /**
-     * Notify listener of projectFinished event.
-     */
-    void projectFinished();
-
-    /**
-     * Notify listener of targetStarted event.
-     *
-     * @param targetName the name of target
-     */
-    void targetStarted( String targetName );
-
-    /**
-     * Notify listener of targetFinished event.
-     */
-    void targetFinished();
-
-    /**
-     * Notify listener of taskletStarted event.
-     *
-     * @param taskletName the name of tasklet
-     */
-    void taskletStarted( String taskletName );
-
-    /**
-     * Notify listener of taskletFinished event.
-     */
-    void taskletFinished();
-
-    /**
-     * Notify listener of log message event.
-     *
-     * @param message the message
-     */
-    void log( String message );
-
-    /**
-     * Notify listener of log message event.
-     *
-     * @param message the message
-     * @param throwable the throwable
-     */
-    void log( String message, Throwable throwable );
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/ProjectListenerSupport.java b/proposal/myrmidon/src/java/org/apache/ant/project/ProjectListenerSupport.java
deleted file mode 100644
index e72a149..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/ProjectListenerSupport.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-/**
- * Support for the project listener event dispatching.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class ProjectListenerSupport
-    implements ProjectListener
-{
-    protected ProjectListener[]   m_listeners = new ProjectListener[ 0 ];
-
-    /**
-     * Add an extra project listener that wants to receive notification of listener events.
-     *
-     * @param listener the listener
-     */
-    public void addProjectListener( final ProjectListener listener )
-    {
-        final ProjectListener[] listeners = new ProjectListener[ m_listeners.length + 1 ];
-        System.arraycopy( m_listeners, 0, listeners, 0, m_listeners.length );
-        listeners[ m_listeners.length ] = listener;
-        m_listeners = listeners;
-    }
-
-    /**
-     * Remove a project listener that wants to receive notification of listener events.
-     *
-     * @param listener the listener
-     */
-    public void removeProjectListener( final ProjectListener listener )
-    {
-        int found = -1;
-
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            if( listener == m_listeners[ i ] )
-            {
-                found = i;
-                break;
-            }
-        }
-
-        if( -1 == found ) return;
-        
-        final ProjectListener[] listeners = new ProjectListener[ m_listeners.length - 1 ];
-        System.arraycopy( m_listeners, 0, listeners, 0, found );
-
-        final int count = m_listeners.length - found - 1;
-        System.arraycopy( m_listeners, found, listeners, found + 1, count );
-
-        m_listeners = listeners;
-    }
-
-    /**
-     * Fire a projectStarted event.
-     *
-     * @param projectName the projectName
-     */
-    public void projectStarted( final String projectName )
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].projectStarted( projectName );
-        }
-    }
-
-    /**
-     * Fire a projectFinished event.
-     */
-    public void projectFinished()
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].projectFinished();
-        }
-    }
-
-    /**
-     * Fire a targetStarted event.
-     *
-     * @param targetName the name of target
-     */
-    public void targetStarted( String targetName )
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].targetStarted( targetName );
-        }
-    }
-
-    /**
-     * Fire a targetFinished event.
-     */
-    public void targetFinished()
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].targetFinished();
-        }
-    }
-
-    /**
-     * Fire a targetStarted event.
-     *
-     * @param targetName the name of target
-     */
-    public void taskletStarted( String taskletName )
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].taskletStarted( taskletName );
-        }
-    }
-
-    /**
-     * Fire a taskletFinished event.
-     */
-    public void taskletFinished()
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].taskletFinished();
-        }
-    }
-
-    /**
-     * Fire a log event.
-     *
-     * @param message the log message
-     */
-    public void log( String message )
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].log( message );
-        }
-    }
-
-    /**
-     * Fire a log event.
-     *
-     * @param message the log message
-     * @param throwable the throwable to be logged
-     */
-    public void log( String message, Throwable throwable )
-    {
-        for( int i = 0; i < m_listeners.length; i++ )
-        {
-            m_listeners[ i ].log( message, throwable );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/Target.java b/proposal/myrmidon/src/java/org/apache/ant/project/Target.java
deleted file mode 100644
index 84acdf8..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/project/Target.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.project;
-
-import java.util.Iterator;
-import org.apache.ant.util.Condition;
-import org.apache.avalon.Component;
-
-/**
- * Interface to represent targets in build file.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Target
-    extends Component
-{
-    /**
-     * Get dependencies of target
-     *
-     * @return the dependency list
-     */
-    Iterator getDependencies();
-
-    /**
-     * Get tasks in target
-     *
-     * @return the target list
-     */
-    Iterator getTasks();
-
-    /**
-     * Get condition under which target is executed.
-     *
-     * @return the condition for target or null
-     */
-    Condition getCondition();
-}
-
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/AbstractTasklet.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/AbstractTasklet.java
deleted file mode 100644
index ad4bf23..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/AbstractTasklet.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet;
-
-import org.apache.ant.AntException;
-import org.apache.avalon.AbstractLoggable;
-import org.apache.avalon.Context;
-import org.apache.avalon.Initializable;
-
-/**
- * This is abstract base class for tasklets.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public abstract class AbstractTasklet
-    extends AbstractLoggable
-    implements Tasklet, Initializable
-{
-    //the user should set this in constructors of sub-classes
-    protected JavaVersion             m_requiredJavaVersion;
-
-    private TaskletContext            m_context;
-
-    /**
-     * Retrieve context from container.
-     *
-     * @param context the context
-     */
-    public void contextualize( final Context context )
-    {
-        m_context = (TaskletContext)context;
-    }
-
-    /**
-     * This will be called before run() method and checks any preconditions.
-     *
-     * Intially preconditions just include JVM version but in future it 
-     * will automagically also check if all required parameters are present.
-     *
-     * @exception AntException if an error occurs
-     */
-    public void init()
-        throws AntException
-    {
-        if( null != m_requiredJavaVersion )
-        {
-            final JavaVersion suppliedVersion = m_context.getJavaVersion();
-
-            if( m_requiredJavaVersion.isLessThan( suppliedVersion ) )
-            {
-                throw new AntException( "Task requires a JavaVersion of at least " + 
-                                        m_requiredJavaVersion + " but current version is " +
-                                        suppliedVersion );
-            }
-        }
-    }
-
-    /**
-     * Convenience method for sub-class to retrieve context.
-     *
-     * @return the context
-     */
-    protected TaskletContext getContext()
-    {
-        return m_context;
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/DataType.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/DataType.java
deleted file mode 100644
index 65f0448..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/DataType.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet;
-
-import org.apache.avalon.Component;
-
-/**
- * Base class for those classes that can appear inside the build file
- * as stand alone data types.  
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface DataType
-    extends Component
-{
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/DefaultTaskletContext.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/DefaultTaskletContext.java
deleted file mode 100644
index 7df0f01..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/DefaultTaskletContext.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet;
-
-import java.io.File;
-import org.apache.ant.AntException;
-import org.apache.avalon.DefaultContext;
-import org.apache.avalon.util.PropertyException;
-import org.apache.avalon.util.PropertyUtil; 
-import org.apache.avalon.util.io.FileUtil;
-
-/**
- * Default implementation of TaskletContext.
- * It represents the *Context* in which a task can be executed.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultTaskletContext
-    extends DefaultContext
-    implements TaskletContext
-{
-    protected File     m_baseDirectory;
-
-    /**
-     * Constructor for Context with no parent contexts.
-     */
-    public DefaultTaskletContext()
-    {
-        this( null );
-    }
-    /**
-     * Constructor.
-     */
-    public DefaultTaskletContext( final TaskletContext parent )
-    {
-        super( parent );
-
-        if( null != parent )
-        {
-            m_baseDirectory = (File)parent.get( BASE_DIRECTORY );
-        }
-    }
-
-    /**
-     * Retrieve JavaVersion running under.
-     *
-     * @return the version of JVM
-     */
-    public JavaVersion getJavaVersion()
-    {
-        return (JavaVersion)get( JAVA_VERSION );
-    }
-
-    
-    /**
-     * Retrieve Name of tasklet.
-     *
-     * @return the name
-     */
-    public String getName()
-    {
-        return (String)get( NAME );
-    }
-
-    /**
-     * Retrieve base directory.
-     *
-     * @return the base directory
-     */
-    public File getBaseDirectory()
-    {
-        return m_baseDirectory;
-    }
-
-    /**
-     * Resolve filename. 
-     * This involves resolving it against baseDirectory and
-     * removing ../ and ./ references. It also means formatting 
-     * it appropriately for the particular OS (ie different OS have 
-     * different volumes, file conventions etc)
-     *
-     * @param filename the filename to resolve
-     * @return the resolved filename
-     */
-    public File resolveFile( final String filename )
-    {
-        final File result = FileUtil.resolveFile( m_baseDirectory, filename );
-        if( null != result ) return result;
-        else return null;
-    }
-
-    /**
-     * Resolve property. 
-     * This evaluates all property substitutions based on current context.
-     *
-     * @param property the property to resolve
-     * @return the resolved property
-     */
-    public Object resolveValue( final String property )
-    {
-        try { return PropertyUtil.resolveProperty( property, this, false ); }
-        catch( final PropertyException pe )
-        {
-            throw new AntException( "Error resolving " + property + " due to " + pe.getMessage(),
-                                    pe );
-        }
-    }
-
-    /**
-     * Retrieve property for name.
-     *
-     * @param name the name of property
-     * @return the value of the property
-     */
-    public Object getProperty( final String name )
-    {
-        return get( name );
-    }
-
-    /**
-     * Set property value in current context.
-     *
-     * @param name the name of property
-     * @param value the value of property
-     */
-    public void setProperty( final String name, final Object value )
-    {
-        setProperty( name, value, CURRENT );
-    }
-    
-    /**
-     * Set property value.
-     *
-     * @param property the property
-     */
-    public void setProperty(  final String name, final Object value, final ScopeEnum scope  )
-    {
-        checkPropertyValid( name, value );
-
-        if( CURRENT == scope ) put( name, value );
-        else if( PARENT == scope )
-        {
-            if( null == m_parent ) 
-            {
-                throw new AntException( "Can't set a property with parent scope when context " +
-                                        " has no parent" );   
-            }
-            else
-            {
-                ((DefaultTaskletContext)m_parent).put( name, value );
-            }
-        }
-        else if( TOP_LEVEL == scope )
-        {
-            DefaultTaskletContext context = this;
-
-            while( null != context.m_parent )
-            {
-                context = (DefaultTaskletContext)context.m_parent;
-            }
-
-            context.put( name, value );
-        }
-        else
-        {
-            throw new AntException( "Can't set a property with an unknown " +
-                                    "property context! (" + scope + ")" );
-        }
-    }
-
-    /**
-     * put a value in context.
-     * This put method is overidden so new baseDirectory can be saved 
-     * in member variable.
-     *
-     * @param key the key
-     * @param value the value
-     */
-    public void put( final Object key, final Object value  )
-    {
-        if( key.equals( BASE_DIRECTORY ) )
-        {
-            try { m_baseDirectory = (File)value; }
-            catch( final ClassCastException cce )
-            {
-                throw new AntException( "Can not set baseDirectory to a non-file value.",
-                                        cce );
-            }
-        }
-
-        super.put( key, value );
-    }
-
-    /**
-     * Make sure property is valid if it is one of the "magic" properties.
-     *
-     * @param name the name of property
-     * @param value the value of proeprty
-     * @exception AntException if an error occurs
-     */
-    protected void checkPropertyValid( final String name, final Object value )
-        throws AntException
-    {
-        if( BASE_DIRECTORY.equals( name ) && !( value instanceof File ) )
-        {
-            throw new AntException( "Property " + BASE_DIRECTORY +
-                                    " must have a value of type " + 
-                                    File.class.getName() );
-        }
-        else if( NAME.equals( name ) && !( value instanceof String ) )
-        {
-            throw new AntException( "Property " + NAME +
-                                    " must have a value of type " + 
-                                    String.class.getName() );
-        }
-        else if( JAVA_VERSION.equals( name ) && !( value instanceof JavaVersion ) )
-        {
-            throw new AntException( "property " + JAVA_VERSION +
-                                    " must have a value of type " + 
-                                    JavaVersion.class.getName() );
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/JavaVersion.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/JavaVersion.java
deleted file mode 100644
index e4ab6a7..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/JavaVersion.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet;
-
-import org.apache.avalon.util.ValuedEnum;
-
-/**
- * Type safe wrapper class for Java Version enums.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public final class JavaVersion
-    extends ValuedEnum
-{
-    //standard enums for version of JVM
-    public final static JavaVersion  JAVA1_0  = new JavaVersion( "Java 1.0", 100 );
-    public final static JavaVersion  JAVA1_1  = new JavaVersion( "Java 1.1", 110 );
-    public final static JavaVersion  JAVA1_2  = new JavaVersion( "Java 1.2", 120 );
-    public final static JavaVersion  JAVA1_3  = new JavaVersion( "Java 1.3", 130 );
-
-    /**
-     * Private constructor so no instance except here can be defined.
-     *
-     * @param name the java version name
-     * @param value the version * 100
-     */
-    private JavaVersion( final String name, final int value )
-    {
-        super( name, value );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/Tasklet.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/Tasklet.java
deleted file mode 100644
index dbc4418..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/Tasklet.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet;
-
-import org.apache.avalon.Component;
-import org.apache.avalon.Contextualizable;
-import org.apache.avalon.Loggable;
-
-/**
- * This represents the individual tasks.
- * Particular instances can also implement Initializable
- * and/or Disposable, in which case init()/dispose() will 
- * be called at appropriate time.
- * The task can also implement Composer in which case required 
- * facilities will be passed via a ComponentManager. The actual
- * facilties is determined by particular task engine but will usually
- * include ProjectEngine and TaskEngine.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface Tasklet
-    extends Component, Loggable, Contextualizable, Runnable 
-{
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/TaskletContext.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/TaskletContext.java
deleted file mode 100644
index bc7c8c1..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/TaskletContext.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet;
-
-import java.io.File;
-import org.apache.avalon.Context;
-import org.apache.avalon.util.Enum;
-import org.apache.avalon.util.ValuedEnum;
-
-/**
- * This represents the *Context* in which a task can be executed.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface TaskletContext
-    extends Context
-{
-    //these values are used when setting properties to indicate the scope at
-    //which properties are set
-    ScopeEnum       CURRENT            = new ScopeEnum( "Current" );
-    ScopeEnum       PARENT             = new ScopeEnum( "Parent" );
-    ScopeEnum       TOP_LEVEL          = new ScopeEnum( "TopLevel" );
-
-    //these are the names of properties that every TaskContext must contain
-    String          JAVA_VERSION       = "ant.java.version";
-    String          BASE_DIRECTORY     = "ant.base.directory";
-    String          NAME               = "ant.task.name";
-
-    /**
-     * Retrieve JavaVersion running under.
-     *
-     * @return the version of JVM
-     */
-    JavaVersion getJavaVersion();
-    
-    /**
-     * Retrieve Name of tasklet.
-     *
-     * @return the name
-     */
-    String getName();
-    
-    /**
-     * Retrieve base directory.
-     *
-     * @return the base directory
-     */
-    File getBaseDirectory();
-
-    /**
-     * Resolve filename. 
-     * This involves resolving it against baseDirectory and
-     * removing ../ and ./ references. It also means formatting 
-     * it appropriately for the particular OS (ie different OS have 
-     * different volumes, file conventions etc)
-     *
-     * @param filename the filename to resolve
-     * @return the resolved file
-     */
-    File resolveFile( String filename );
-
-    /**
-     * Resolve property. 
-     * This evaluates all property substitutions based on current context.
-     *
-     * @param property the property to resolve
-     * @return the resolved property
-     */
-    Object resolveValue( String property );
-
-    /**
-     * Retrieve property for name.
-     *
-     * @param name the name of property
-     * @return the value of property
-     */
-    Object getProperty( String name );
-
-    /**
-     * Set property value in current context.
-     *
-     * @param name the name of property
-     * @param value the value of property
-     */
-    void setProperty( String name, Object value );
-    
-    /**
-     * Set property value.
-     *
-     * @param name the name of property
-     * @param value the value of property
-     * @param scope the scope at which to set property
-     */
-    void setProperty( String name, Object value, ScopeEnum scope  );
-
-    /**
-     * Safe wrapper class for Scope enums.
-     */
-    final class ScopeEnum
-        extends Enum
-    {
-        ScopeEnum( final String name )
-        {
-            super( name );
-        }
-    }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DataTypeEngine.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DataTypeEngine.java
deleted file mode 100644
index ba880d6..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DataTypeEngine.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet.engine;
-
-import org.apache.ant.tasklet.DataType;
-import org.apache.avalon.Component;
-import org.apache.avalon.camelot.FactoryException;
-import org.apache.avalon.camelot.LocatorRegistry;
-import org.apache.avalon.camelot.RegistryException;
-
-/**
- * This is basically a engine that can be used to access data-types.
- * The engine acts as a repository and factory for these types.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface DataTypeEngine
-    extends Component
-{
-    /**
-     * Retrieve registry of data-types.
-     * This is used by deployer to add types into engine.
-     *
-     * @return the registry
-     */
-    LocatorRegistry getRegistry();
-
-    /**
-     * Create a data-type of type registered under name.
-     *
-     * @param name the name of data type
-     * @return the DataType
-     * @exception RegistryException if an error occurs
-     * @exception FactoryException if an error occurs
-     */
-    DataType createDataType( String name )
-        throws RegistryException, FactoryException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultDataTypeEngine.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultDataTypeEngine.java
deleted file mode 100644
index 9105e20..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultDataTypeEngine.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet.engine;
-
-import org.apache.ant.tasklet.DataType;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.Composer;
-import org.apache.avalon.Composer;
-import org.apache.avalon.camelot.DefaultLocatorRegistry;
-import org.apache.avalon.camelot.Factory;
-import org.apache.avalon.camelot.FactoryException;
-import org.apache.avalon.camelot.Locator;
-import org.apache.avalon.camelot.LocatorRegistry;
-import org.apache.avalon.camelot.RegistryException;
-
-/**
- * This is basically a engine that can be used to access data-types.
- * The engine acts as a repository and factory for these types.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultDataTypeEngine
-    implements DataTypeEngine, Composer
-{
-    protected Factory              m_factory;
-    protected LocatorRegistry      m_registry  = new DefaultLocatorRegistry();
-    
-    /**
-     * Retrieve registry of data-types.
-     * This is used by deployer to add types into engine.
-     *
-     * @return the registry
-     */
-    public LocatorRegistry getRegistry()
-    {
-        return m_registry;
-    }
-    
-    /**
-     * Retrieve relevent services needed to deploy.
-     *
-     * @param componentManager the ComponentManager
-     * @exception ComponentManagerException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        m_factory = (Factory)componentManager.lookup( "org.apache.avalon.camelot.Factory" );
-    }
-    
-    /**
-     * Create a data-type of type registered under name.
-     *
-     * @param name the name of data type
-     * @return the DataType
-     * @exception RegistryException if an error occurs
-     * @exception FactoryException if an error occurs
-     */    
-    public DataType createDataType( final String name )
-        throws RegistryException, FactoryException
-    {
-        final Locator locator = m_registry.getLocator( name );
-        return (DataType)m_factory.create( locator, DataType.class );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java
deleted file mode 100644
index ed14415..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet.engine;
-
-import java.util.HashMap;
-import org.apache.ant.AntException;
-import org.apache.ant.configuration.Configurable;
-import org.apache.ant.configuration.Configuration;
-import org.apache.ant.configuration.Configurer;
-import org.apache.ant.configuration.DefaultConfigurer;
-import org.apache.ant.convert.engine.ConverterEngine;
-import org.apache.ant.tasklet.Tasklet;
-import org.apache.ant.tasklet.TaskletContext;
-import org.apache.avalon.AbstractLoggable;
-import org.apache.avalon.Component;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.DefaultComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.Composer;
-import org.apache.avalon.Context;
-import org.apache.avalon.Contextualizable;
-import org.apache.avalon.DefaultComponentManager;
-import org.apache.avalon.Disposable;
-import org.apache.avalon.Initializable;
-import org.apache.avalon.Loggable;
-import org.apache.avalon.camelot.DefaultFactory;
-import org.apache.avalon.camelot.DefaultLocatorRegistry;
-import org.apache.avalon.camelot.Factory;
-import org.apache.avalon.camelot.FactoryException;
-import org.apache.avalon.camelot.Locator;
-import org.apache.avalon.camelot.LocatorRegistry;
-import org.apache.avalon.camelot.RegistryException;
-import org.apache.log.Logger;
-
-public class DefaultTaskletEngine
-    extends AbstractLoggable
-    implements TaskletEngine, Composer
-{
-    protected TskDeployer          m_tskDeployer;
-    protected Factory              m_factory;
-    protected LocatorRegistry      m_locatorRegistry   = new DefaultLocatorRegistry();
-    protected Configurer           m_configurer;
-    protected DataTypeEngine       m_dataTypeEngine;
-    protected ConverterEngine      m_converterEngine;
-
-    protected ComponentManager     m_componentManager;
-
-    public TskDeployer getTskDeployer()
-    {
-        return m_tskDeployer;
-    }
-
-    public ConverterEngine getConverterEngine()
-    {
-        return m_converterEngine;
-    }
-
-    public LocatorRegistry getRegistry()
-    {
-        return m_locatorRegistry;
-    }
-
-    /**
-     * Retrieve datatype engine.
-     *
-     * @return the DataTypeEngine
-     */
-    public DataTypeEngine getDataTypeEngine()
-    {
-        return m_dataTypeEngine;
-    }
-    
-    /**
-     * Retrieve relevent services needed to deploy.
-     *
-     * @param componentManager the ComponentManager
-     * @exception ComponentManagerException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        //cache CM so it can be used while executing tasks
-        m_componentManager = componentManager;
-
-        m_factory = (Factory)componentManager.lookup( "org.apache.avalon.camelot.Factory" );
-        m_tskDeployer = (TskDeployer)componentManager.
-            lookup( "org.apache.ant.tasklet.engine.TskDeployer" );
-        m_configurer = (Configurer)componentManager.
-            lookup( "org.apache.ant.configuration.Configurer" );
-        m_dataTypeEngine = (DataTypeEngine)componentManager.
-            lookup( "org.apache.ant.tasklet.engine.DataTypeEngine" );
-        m_converterEngine = (ConverterEngine)componentManager.
-            lookup( "org.apache.ant.convert.engine.ConverterEngine" );
-    }
-
-    public void execute( final Configuration task, final TaskletContext context )
-        throws AntException
-    {
-        getLogger().debug( "Creating" );
-        final Tasklet tasklet = createTasklet( task.getName() );
-        setupLogger( tasklet );
-
-        getLogger().debug( "Contextualizing" );
-        doContextualize( tasklet, task, context );
-
-        getLogger().debug( "Composing" );
-        doCompose( tasklet, task );
-
-        getLogger().debug( "Configuring" );
-        doConfigure( tasklet, task, context );
-
-        getLogger().debug( "Initializing" );
-        doInitialize( tasklet, task );
-
-        getLogger().debug( "Running" );
-        tasklet.run();
-
-        getLogger().debug( "Disposing" );
-        doDispose( tasklet, task );
-    }
-    
-    protected Tasklet createTasklet( final String name )
-        throws AntException
-    {
-        try
-        {
-            final Locator locator = m_locatorRegistry.getLocator( name );
-            return (Tasklet)m_factory.create( locator, Tasklet.class );
-        }
-        catch( final RegistryException re )
-        {
-            throw new AntException( "Unable to locate task " + name, re );
-        }
-        catch( final FactoryException fe )
-        {
-            throw new AntException( "Unable to create task " + name, fe );
-        }
-    }
-
-    protected void doConfigure( final Tasklet tasklet, 
-                                final Configuration task,
-                                final TaskletContext context )
-        throws AntException
-    {
-        try { m_configurer.configure( tasklet, task, context ); }
-        catch( final Throwable throwable )
-        {
-            throw new AntException( "Error configuring task " +  task.getName() + " at " +
-                                    task.getLocation() + "(Reason: " + 
-                                    throwable.getMessage() + ")", throwable );
-        }
-    }
-    
-    protected void doCompose( final Tasklet tasklet, final Configuration task )
-        throws AntException
-    {
-        if( tasklet instanceof Composer )
-        {
-            try { ((Composer)tasklet).compose( m_componentManager ); }
-            catch( final Throwable throwable )
-            {
-                throw new AntException( "Error composing task " +  task.getName() + " at " +
-                                        task.getLocation() + "(Reason: " + 
-                                        throwable.getMessage() + ")", throwable );            
-            }
-        }
-    }
-
-    protected void doContextualize( final Tasklet tasklet, 
-                                    final Configuration task,
-                                    final TaskletContext context )
-        throws AntException
-    {
-        try { tasklet.contextualize( context ); }
-        catch( final Throwable throwable )
-        {
-            throw new AntException( "Error contextualizing task " +  task.getName() + " at " +
-                                    task.getLocation() + "(Reason: " + 
-                                    throwable.getMessage() + ")", throwable );            
-        }
-    }
-
-    protected void doDispose( final Tasklet tasklet, final Configuration task )
-        throws AntException
-    {
-        if( tasklet instanceof Disposable )
-        {
-            try { ((Disposable)tasklet).dispose(); }
-            catch( final Throwable throwable )
-            {
-                throw new AntException( "Error disposing task " +  task.getName() + " at " +
-                                        task.getLocation() + "(Reason: " + 
-                                        throwable.getMessage() + ")", throwable );
-            }
-        }
-    }
-
-    protected void doInitialize( final Tasklet tasklet, final Configuration task )
-        throws AntException
-    {
-        if( tasklet instanceof Initializable )
-        {
-            try { ((Initializable)tasklet).init(); }
-            catch( final Throwable throwable )
-            {
-                throw new AntException( "Error initializing task " +  task.getName() + " at " +
-                                        task.getLocation() + "(Reason: " +
-                                        throwable.getMessage() + ")", throwable );
-            }
-        }
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTskDeployer.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTskDeployer.java
deleted file mode 100644
index 12a2154..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTskDeployer.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet.engine;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Iterator;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipException;
-import java.util.zip.ZipFile;
-import org.apache.ant.convert.engine.ConverterEngine;
-import org.apache.ant.convert.engine.ConverterRegistry;
-import org.apache.ant.convert.engine.DefaultConverterInfo;
-import org.apache.avalon.Component;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.ComponentManagerException;
-import org.apache.avalon.Composer;
-import org.apache.avalon.Configuration;
-import org.apache.avalon.ConfigurationException;
-import org.apache.avalon.camelot.AbstractZipDeployer;
-import org.apache.avalon.camelot.DefaultLocator;
-import org.apache.avalon.camelot.DefaultLocatorRegistry;
-import org.apache.avalon.camelot.DeploymentException;
-import org.apache.avalon.camelot.DeployerUtil;
-import org.apache.avalon.camelot.Loader;
-import org.apache.avalon.camelot.LocatorRegistry;
-import org.apache.avalon.camelot.RegistryException;
-import org.apache.log.Logger;
-
-/**
- * This class deploys a .tsk file into a registry.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class DefaultTskDeployer
-    extends AbstractZipDeployer
-    implements Composer, TskDeployer
-{
-    protected final static String   TSKDEF_FILE     = "TASK-LIB/taskdefs.xml";
-
-    protected LocatorRegistry       m_dataTypeRegistry;
-    protected LocatorRegistry       m_taskletRegistry;
-    protected LocatorRegistry       m_converterRegistry;
-    protected ConverterRegistry     m_converterInfoRegistry;
-
-    /**
-     * Default constructor.
-     */
-    public DefaultTskDeployer()
-    {
-        super();
-        m_autoUndeploy = true;
-        m_type = "Tasklet";
-    }
-    
-    /**
-     * Retrieve relevent services needed to deploy.
-     *
-     * @param componentManager the ComponentManager
-     * @exception ComponentManagerException if an error occurs
-     */
-    public void compose( final ComponentManager componentManager )
-        throws ComponentManagerException
-    {
-        final TaskletEngine taskletEngine = (TaskletEngine)componentManager.
-            lookup( "org.apache.ant.tasklet.engine.TaskletEngine" );
-
-        m_taskletRegistry = taskletEngine.getRegistry();
-
-        final ConverterEngine converterEngine = (ConverterEngine)componentManager.
-            lookup( "org.apache.ant.convert.engine.ConverterEngine" );
-
-        m_converterInfoRegistry = converterEngine.getInfoRegistry();
-        m_converterRegistry = converterEngine.getRegistry();
-
-        final DataTypeEngine dataTypeEngine = (DataTypeEngine)componentManager.
-            lookup( "org.apache.ant.tasklet.engine.DataTypeEngine" );
-        
-        m_dataTypeRegistry = dataTypeEngine.getRegistry();
-    }
-
-    protected void loadResources( final ZipFile zipFile, final String location, final URL url )
-        throws DeploymentException
-    {
-        final Configuration taskdefs = DeployerUtil.loadConfiguration( zipFile, TSKDEF_FILE );
-
-        try
-        {
-            final Iterator tasks = taskdefs.getChildren( "task" );
-            while( tasks.hasNext() )
-            {
-                final Configuration task = (Configuration)tasks.next();
-                handleTasklet( task, url );
-            }
-            
-            final Iterator converters = taskdefs.getChildren( "converter" );
-            while( converters.hasNext() )
-            {
-                final Configuration converter = (Configuration)converters.next();
-                handleConverter( converter, url );
-            }
-
-            final Iterator datatypes = taskdefs.getChildren( "datatype" );
-            while( datatypes.hasNext() )
-            {
-                final Configuration datatype = (Configuration)datatypes.next();
-                handleDataType( datatype, url );
-            }
-        }
-        catch( final ConfigurationException ce )
-        {
-            throw new DeploymentException( "Malformed taskdefs.xml", ce );
-        }
-    }
-    
-    public void deployConverter( String name, String location, URL url )
-        throws DeploymentException
-    {
-        checkDeployment( location, url );
-        final ZipFile zipFile = DeployerUtil.getZipFileFor( getFileFor( url ) );
-        final Configuration taskdefs = DeployerUtil.loadConfiguration( zipFile, TSKDEF_FILE );
-        
-        try
-        {
-            final Iterator converters = taskdefs.getChildren( "converter" );
-            while( converters.hasNext() )
-            {
-                final Configuration converter = (Configuration)converters.next();
-                if( converter.getAttribute( "classname" ).equals( name ) )
-                {
-                    handleConverter( converter, url );
-                    break;
-                }
-            }
-        }
-        catch( final ConfigurationException ce )
-        {
-            throw new DeploymentException( "Malformed taskdefs.xml", ce );
-        }
-    }
-
-    public void deployDataType( final String name, final String location, final URL url )
-        throws DeploymentException
-    {
-        checkDeployment( location, url );
-        final ZipFile zipFile = DeployerUtil.getZipFileFor( getFileFor( url ) );
-        final Configuration datatypedefs = 
-            DeployerUtil.loadConfiguration( zipFile, TSKDEF_FILE );
-        
-        try
-        {
-            final Iterator datatypes = datatypedefs.getChildren( "datatype" );
-            while( datatypes.hasNext() )
-            {
-                final Configuration datatype = (Configuration)datatypes.next();
-                if( datatype.getAttribute( "name" ).equals( name ) )
-                {
-                    handleDataType( datatype, url );
-                    break;
-                }
-            }
-        }
-        catch( final ConfigurationException ce )
-        {
-            throw new DeploymentException( "Malformed taskdefs.xml", ce );
-        }
-    }
-    
-    public void deployTasklet( final String name, final String location, final URL url )
-        throws DeploymentException
-    {
-        checkDeployment( location, url );
-        final ZipFile zipFile = DeployerUtil.getZipFileFor( getFileFor( url ) );
-        final Configuration taskdefs = DeployerUtil.loadConfiguration( zipFile, TSKDEF_FILE );
-        
-        try
-        {
-            final Iterator tasks = taskdefs.getChildren( "task" );
-            while( tasks.hasNext() )
-            {
-                final Configuration task = (Configuration)tasks.next();
-                if( task.getAttribute( "name" ).equals( name ) )
-                {
-                    handleTasklet( task, url );
-                    break;
-                }
-            }
-        }
-        catch( final ConfigurationException ce )
-        {
-            throw new DeploymentException( "Malformed taskdefs.xml", ce );
-        }
-    }
-    
-    protected void handleConverter( final Configuration converter, final URL url )
-        throws DeploymentException, ConfigurationException
-    {
-        final String name = converter.getAttribute( "classname" );
-        final String source = converter.getAttribute( "source" );
-        final String destination = converter.getAttribute( "destination" );
-        
-        final DefaultConverterInfo info = new DefaultConverterInfo( source, destination );
-       
-        try { m_converterInfoRegistry.register( name, info ); }
-        catch( final RegistryException re )
-        {
-            throw new DeploymentException( "Error registering converter info " + 
-                                           name + " due to " + re,
-                                           re );
-        }
-
-        final DefaultLocator locator = new DefaultLocator( name, url );
-
-        try { m_converterRegistry.register( name, locator ); }
-        catch( final RegistryException re )
-        {
-            throw new DeploymentException( "Error registering converter locator " + 
-                                           name + " due to " + re,
-                                           re );
-        }
-
-        m_logger.debug( "Registered converter " + name + " that converts from " + 
-                        source + " to " + destination );
-    }
-    
-    protected void handleTasklet( final Configuration task, final URL url )
-        throws DeploymentException, ConfigurationException
-    {
-        final String name = task.getAttribute( "name" );
-        final String classname = task.getAttribute( "classname" );
-
-        final DefaultLocator info = new DefaultLocator( classname, url );
-        
-        try { m_taskletRegistry.register( name, info ); }
-        catch( final RegistryException re )
-        {
-            throw new DeploymentException( "Error registering " + name + " due to " + re,
-                                           re );
-        }
-        
-        m_logger.debug( "Registered tasklet " + name + " as " + classname );
-    }
-  
-    protected void handleDataType( final Configuration datatype, final URL url )
-        throws DeploymentException, ConfigurationException
-    {
-        final String name = datatype.getAttribute( "name" );
-        final String classname = datatype.getAttribute( "classname" );
-        
-        final DefaultLocator info = new DefaultLocator( classname, url );
-        
-        try { m_dataTypeRegistry.register( name, info ); }
-        catch( final RegistryException re )
-        {
-            throw new DeploymentException( "Error registering " + name + " due to " + re,
-                                           re );
-        }
-        
-        m_logger.debug( "Registered datatype " + name + " as " + classname );
-    }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java
deleted file mode 100644
index 558f031..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet.engine;
-
-import org.apache.ant.AntException;
-import org.apache.ant.configuration.Configuration;
-import org.apache.ant.convert.engine.ConverterEngine;
-import org.apache.ant.tasklet.engine.DataTypeEngine;
-import org.apache.ant.tasklet.TaskletContext;
-import org.apache.avalon.Component;
-import org.apache.avalon.ComponentManager;
-import org.apache.avalon.Loggable;
-import org.apache.avalon.camelot.LocatorRegistry;
-import org.apache.log.Logger;
- 
-/**
- * Engine inteface that should be implemented by all tasklet engines.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface TaskletEngine
-    extends Component
-{
-    /**
-     * Retrieve deployer for engine.
-     *
-     * @return the deployer
-     */
-    TskDeployer getTskDeployer();
-    
-    /**
-     * Retrieve locator registry associated with engine.
-     *
-     * @return the LocatorRegistry
-     */
-    LocatorRegistry getRegistry();
-
-    /**
-     * Retrieve converter engine.
-     *
-     * @return the ConverterEngine
-     */
-    ConverterEngine getConverterEngine();
-
-    /**
-     * Retrieve datatype engine.
-     *
-     * @return the DataTypeEngine
-     */
-    DataTypeEngine getDataTypeEngine();
-    
-    /**
-     * execute a task.
-     *
-     * @param task the configruation data for task
-     * @exception AntException if an error occurs
-     */
-    void execute( Configuration task, TaskletContext context )
-        throws AntException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TskDeployer.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TskDeployer.java
deleted file mode 100644
index 89d706a..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TskDeployer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.tasklet.engine;
-
-import java.net.URL;
-import org.apache.avalon.Loggable;
-import org.apache.avalon.camelot.Deployer;
-import org.apache.avalon.camelot.DeploymentException;
-import org.apache.log.Logger;
-
-/**
- * This class deploys a .tsk file into a registry.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public interface TskDeployer
-    extends Deployer, Loggable
-{
-    void deployConverter( String name, String location, URL url )
-        throws DeploymentException;
-
-    void deployDataType( String name, String location, URL url )
-        throws DeploymentException;    
-
-    void deployTasklet( String name, String location, URL url )
-        throws DeploymentException;
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/ant/util/Condition.java b/proposal/myrmidon/src/java/org/apache/ant/util/Condition.java
deleted file mode 100644
index eab77aa..0000000
--- a/proposal/myrmidon/src/java/org/apache/ant/util/Condition.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.ant.util;
-
-import org.apache.ant.AntException;
-import org.apache.avalon.Component;
-import org.apache.avalon.Context;
-import org.apache.avalon.util.PropertyException;
-import org.apache.avalon.util.PropertyUtil;
-
-/**
- * Class representing a condition.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class Condition
-    implements Component
-{
-    protected String            m_condition;
-    protected boolean           m_isIfCondition; 
-
-    public Condition( final boolean isIfCondition, final String condition )
-    {
-        m_isIfCondition = isIfCondition;
-        m_condition = condition;
-    }
-
-    public String getCondition()
-    {
-        return m_condition;
-    }
-
-    public boolean isIfCondition()
-    {
-        return m_isIfCondition;
-    }
-    
-    public boolean evaluate( final Context context )
-    {
-        try
-        {
-            final Object resolved = 
-                PropertyUtil.resolveProperty( m_condition, context, false ); 
-
-            boolean result = false;
-
-            if( null != resolved ) 
-            {
-                result = ( null != context.get( resolved ) );
-            }
-
-            if( !m_isIfCondition )
-            {
-                result = !result;
-            }
-
-            return result;
-        }
-        catch( final PropertyException pe )
-        {
-            throw new AntException( "Error resolving " + m_condition, pe );
-        }
-    }
-}
-
-
diff --git a/proposal/myrmidon/src/make/sample.xmk b/proposal/myrmidon/src/make/sample.xmk
deleted file mode 100644
index a82f67f..0000000
--- a/proposal/myrmidon/src/make/sample.xmk
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-==============================================================================
-
- Sample build file
-
-Authors:
- Peter Donald <donaldp@apache.org>
-
-Legal:
-  Copyright (c) 2000 The Apache Software Foundation. All Rights Reserved.
-
-==============================================================================
--->
-
-<project name="MySample" default="main" basedir=".">
-
-  <property name="year" value="2000"/>
-
-  <target name="main" depends="property-test" />
-
-  <target name="no-test-target" unless="do-tests">
-    <echo message="No tests done here"/>
-  </target>
-
-  <target name="test-target" depends="no-test-target" if="do-tests">
-
-    <echo message="Tests away"/>
-
-    <prim-test
-        integer="1"
-        integer2="2"
-        short="3"
-        short2="4"
-        long="5"
-        long2="6"
-        byte="7"
-        byte2="8"
-        string="aString"
-        float="1.0"
-        float2="2.0"
-        double="3.0"
-        double2="4.0"
-     />
-
-    <sub-elements-test>
-      <create-beep message="Evaluation of ant.install.dir=${ant.install.dir}" />
-      <add-beep message="Evaluation of ant.install.lib=${ant.install.lib}" />
-    </sub-elements-test>
-
-    <conf-test message="Test of configuration=${ant.install.lib}" />
-    
-    <content-test>123</content-test>
-    
-  </target>
-
-  <target name="property-test" depends="test-target">
-    <property name="blah" value="fred" />
-    <property name="${blah}" value="barney" />
-
-    <register-tasklet lib="../../dist/lib/core.tsk" 
-                      name="echo2" 
-                      classname="org.apache.ant.modules.basic.Echo" />
-
-<!--    
-    <register-tasklib lib="../../dist/lib/core.tsk" />
-    <register-converter classname="org.apache.ant.modules.basic.StringToClassConverter"
-                        source-type="java.lang.String"
-                        destination-type="java.lang.Class"
-                        lib="../../dist/lib/core.tsk" />
--->
-
-    <echo message="Doing the funky Echo with ${blah} ${fred} Year=${year}!"/>
-    <echo2 message="Luke to Echo base. Can you hear me?"/>
-
-    <ant-call target="property-test2">
-      <param name="blah" value="blah-value" />
-    </ant-call>
-
-    <property name="foo">
-      <pattern name="*.java"/>
-    </property>
-
-    <echo message="foo=${foo}" />
-
-    <register-datatype lib="../../dist/lib/core.tsk" 
-                       name="pattern2"
-                       classname="org.apache.ant.modules.basic.Pattern" />
-
-    <property name="foo2">
-      <pattern2 name="*.java"/>
-    </property>
-
-    <echo message="foo2=${foo2}" />
-
-  </target>
-
-  <target name="property-test2">
-    <echo message="This should fail ...."/>
-    <echo message="${blah}"/>
-    <echo message="Whoa - it no fail. Did you use ant-call to call me and set param blah?"/>
-  </target>
-
-</project>
\ No newline at end of file
diff --git a/proposal/myrmidon/src/manifest/ant-manifest.mf b/proposal/myrmidon/src/manifest/ant-manifest.mf
deleted file mode 100644
index 13658df..0000000
--- a/proposal/myrmidon/src/manifest/ant-manifest.mf
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: org.apache.ant.launcher.AntLoader
-Created-By: Apache Ant Project
\ No newline at end of file
diff --git a/proposal/myrmidon/src/manifest/myrmidon-manifest.mf b/proposal/myrmidon/src/manifest/myrmidon-manifest.mf
deleted file mode 100644
index 54d5fd0..0000000
--- a/proposal/myrmidon/src/manifest/myrmidon-manifest.mf
+++ /dev/null
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: org.apache.ant.Main
-Class-Path: avalonapi.jar 
-Created-By: Apache Ant Project
\ No newline at end of file
diff --git a/proposal/myrmidon/src/manifest/taskdefs.xml b/proposal/myrmidon/src/manifest/taskdefs.xml
deleted file mode 100644
index e330972..0000000
--- a/proposal/myrmidon/src/manifest/taskdefs.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<tasklib>
-
-  <!-- core tasks for operation -->
-  <task name="register-tasklet" classname="org.apache.ant.modules.core.RegisterTasklet" />
-  <task name="register-converter" classname="org.apache.ant.modules.core.RegisterConverter" />
-  <task name="register-datatype" classname="org.apache.ant.modules.core.RegisterDataType" />
-
-  <!-- tasks to test operation of engine -->
-  <task name="prim-test" classname="org.apache.ant.modules.test.PrimitiveTypesTest" />
-  <task name="sub-elements-test" classname="org.apache.ant.modules.test.SubElementTest" />
-  <task name="conf-test" classname="org.apache.ant.modules.test.ConfigurationTest" />
-  <task name="content-test" classname="org.apache.ant.modules.test.ContentTest" />
-
-  <!-- basic tasks/datatypes/coverters required in most environments -->
-  <task name="echo" classname="org.apache.ant.modules.basic.Echo" />
-  <task name="property" classname="org.apache.ant.modules.basic.Property" />
-  <task name="ant-call" classname="org.apache.ant.modules.basic.AntCall" />
-
-  <datatype name="pattern" classname="org.apache.ant.modules.basic.Pattern" />
-
-  <converter classname="org.apache.ant.modules.basic.StringToLongConverter" 
-             source="java.lang.String" 
-             destination="java.lang.Long" />
-  <converter classname="org.apache.ant.modules.basic.StringToIntegerConverter" 
-             source="java.lang.String" 
-             destination="java.lang.Integer" />
-  <converter classname="org.apache.ant.modules.basic.StringToShortConverter" 
-             source="java.lang.String" 
-             destination="java.lang.Short" />
-  <converter classname="org.apache.ant.modules.basic.StringToByteConverter" 
-             source="java.lang.String" 
-             destination="java.lang.Byte" />
-  <converter classname="org.apache.ant.modules.basic.StringToDoubleConverter" 
-             source="java.lang.String" 
-             destination="java.lang.Double" />
-  <converter classname="org.apache.ant.modules.basic.StringToFloatConverter" 
-             source="java.lang.String" 
-             destination="java.lang.Float" />
-  <converter classname="org.apache.ant.modules.basic.StringToClassConverter" 
-             source="java.lang.String" 
-             destination="java.lang.Class" />
-  <converter classname="org.apache.ant.modules.basic.StringToURLConverter" 
-             source="java.lang.String" 
-             destination="java.net.URL" />
-</tasklib>
\ No newline at end of file
diff --git a/proposal/myrmidon/src/script/ant b/proposal/myrmidon/src/script/ant
deleted file mode 100644
index 1870972..0000000
--- a/proposal/myrmidon/src/script/ant
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-
-if [ -f $HOME/.antrc ] ; then 
-  . $HOME/.antrc
-fi
-
-# Cygwin support.
-if [ "$OSTYPE" == "cygwin32" ] || [ "$OSTYPE" = "cygwin" ]; then
-  if [ ! "$JAVA_HOME" = "" ]; then
-    JAVA_HOME=`cygpath --path --unix $JAVA_HOME`
-  fi
-fi
-
-## resolve links - $0 may be a link to ant's home
-PRG=$0
-progname=`basename $0`
-  
-while [ -h "$PRG" ] ; do
-  ls=`ls -ld "$PRG"`
-  link=`expr "$ls" : '.*-> \(.*\)$'`
-  if expr "$link" : '.*/.*' > /dev/null; then
-    PRG="$link"
-  else
-    PRG="`dirname $PRG`/$link"
-  fi
-done
-  
-ANT_HOME=`dirname "$PRG"`/..
-
-if [ "$JAVA_HOME" == "" ] ; then
-
-  echo "Warning: JAVA_HOME environment variable is not set."
-  echo "  If build fails because sun.* classes could not be found"
-  echo "  you will need to set the JAVA_HOME environment variable"
-  echo "  to the installation directory of java."
-  if [ "$JAVACMD" = "" ] ; then 
-    JAVACMD=java
-  fi
-else
-  if [ "$JAVACMD" = "" ] ; then 
-    JAVACMD=$JAVA_HOME/bin/java
-  fi
-fi
-
-$JAVACMD $ANT_OPTS -jar $ANT_HOME/lib/ant.jar $@
diff --git a/proposal/myrmidon/src/script/ant.bat b/proposal/myrmidon/src/script/ant.bat
deleted file mode 100644
index b0269bd..0000000
--- a/proposal/myrmidon/src/script/ant.bat
+++ /dev/null
@@ -1,64 +0,0 @@
-@echo off
-
-if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"
-
-if not "%OS%"=="Windows_NT" goto start
-
-rem %~dp0 is name of current script under NT
-set DEFAULT_ANT_HOME=%~dp0
-
-rem : operator works similar to make : operator
-set DEFAULT_ANT_HOME=%DEFAULT_ANT_HOME:\bin\=%
-
-if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME%
-set DEFAULT_ANT_HOME=
-
-:start
-
-if not "%ANT_HOME%" == "" goto ant_home_found
-
-echo.
-echo Warning: ANT_HOME environment variable is not set.
-echo   This needs to be set for Win9x as it's command prompt 
-echo   scripting bites
-echo.
-goto end
-
-:ant_home_found
-
-if not "%JAVA_HOME%" == "" goto javaCmdSetup
-
-echo.
-echo Warning: JAVA_HOME environment variable is not set.
-echo   If build fails because sun.* classes could not be found
-echo   you will need to set the JAVA_HOME environment variable
-echo   to the installation directory of java.
-echo.
-
-rem hope that there is java command in path
-if "%JAVACMD%" == "" set JAVACMD=java
-goto argSetup
-
-rem if JAVA_HOME is set then make sure we use that java exe
-:javaCmdSetup
-if "%JAVACMD%" == "" set JAVACMD=%JAVA_HOME%\bin\java
-
-:argSetup
-
-set ANT_CMD_LINE_ARGS=
-
-rem Slurp all args...
-:setupArgs
-if "%0" == "" goto doneArgs
-set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1
-shift
-goto setupArgs
-
-:doneArgs
-rem Mmmmmm tasty - finished slurping args
-
-%JAVACMD% %ANT_OPTS% -jar %ANT_HOME%\lib\ant.jar %ANT_CMD_LINE_ARGS%
-
-:end
-if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"
-set ANT_CMD_LINE_ARGS=
\ No newline at end of file
diff --git a/proposal/myrmidon/src/script/antRun b/proposal/myrmidon/src/script/antRun
deleted file mode 100644
index f0a18f1..0000000
--- a/proposal/myrmidon/src/script/antRun
+++ /dev/null
@@ -1,9 +0,0 @@
-#! /bin/sh
-
-# Args: DIR command
-cd "$1"
-CMD="$2"
-shift
-shift
-
-exec $CMD "$@"
diff --git a/proposal/myrmidon/src/script/antRun.bat b/proposal/myrmidon/src/script/antRun.bat
deleted file mode 100644
index fe0d1ce..0000000
--- a/proposal/myrmidon/src/script/antRun.bat
+++ /dev/null
@@ -1,18 +0,0 @@
-@echo off
-
-cd %1
-set ANT_RUN_CMD=%2
-shift
-shift
-
-set PARAMS=
-:loop
-if "%1" == "" goto runCommand
-set PARAMS=%PARAMS% %1
-shift
-goto loop
-
-:runCommand
-echo %ANT_RUN_CMD% %PARAMS%
-%ANT_RUN_CMD% %PARAMS%
-
diff --git a/proposal/myrmidon/src/xdocs/design.html b/proposal/myrmidon/src/xdocs/design.html
deleted file mode 100644
index 2b3cee0..0000000
--- a/proposal/myrmidon/src/xdocs/design.html
+++ /dev/null
@@ -1,224 +0,0 @@
-
-<html>
-<head>
-    <title>Myrmidon: The Ant2.0 Proposal</title>
-</head>
-<body BGCOLOR="#ffffff">
-
-<center>
-  <h1>Myrmidon: The Ant2.0 Proposal</h1>
-  <i>by Peter Donald <a href="mailto:donaldp@apache.org">&lt;donaldp@apache.org&gt;</a></i>
-</center>
-
-<br />
-
-<div align="center">
-  <table border="0" width="60%">
-    <tr>
-      <td width="100%">
-        <i>Myrmidon is a proposal for <a href="http://jakarta.apache.org/ant">Ant</a> 2.0, a 
-        java based build tool. Unlike other proposals it was specifically designed as 
-        both a tool a an API library that can be reused in other domains.</i>
-      </td>
-    </tr>
-  </table>
-</div>
-
-<br />
-
-<h3>To do and what not to do</h3>
-
-<blockquote>
-  <p>
-    There is a number of issues that this proposal addresses and a number of issues that 
-    have been deliberately elided. The focus is currently at the lower levels - namely
-    the task execution engine, the notion of contexts/scopes, loading of tasklets, 
-    datatypes and converters etc. While it does implement a Project engine API is still 
-    being discussed on ant-dev and this proposal just adopts Ant1.x's model until a better
-    understanding is gained of what is required.
-  </p>
-
-  <p>
-    Neither this document nor the proposal is intended to be a vision statement. Rather it 
-    is a description of how it could be implemented based on commonly accepted needs 
-    requested on ant lists and discussed by ant-dev. The vision statement is more 
-    strongly associated with the Project API and extentions (CJAN, import project trees,
-    preprocessing via xslt/css/whatever, templating etc). And thus is not addressed here.
-  </p>
-</blockquote>
-
-<h3>The Prime Directive: Execute tasks</h3>
-
-<blockquote>
-  <p>
-    One of the primary concerns of ant is providing a task execution environment (TEE). 
-    The TEE provides a number of services to tasks. The TEE manages the lifecycle of 
-    the tasks. This includes providing the tasks with a logger instance, context 
-    information and access to peer components. The lifecycle also involves executing 
-    init(), run() and dispose() methods at appropriate times.
-  </p>
-
-  <p>
-    Instead of reinventing the wheel this proposal instead reuses the Avalon framework
-    that already provides facilities for many of the concepts required. It already has 
-    interfaces/classes to model concepts of context, logger, containers etc.
-  </p>
-  
-  <p>
-    One of the requirements identified was the need for dynamic interpretation and 
-    instantiation of tasks. To implement this there needs to be an abstraction layer 
-    between task object instances and the objects that are manipulated by projects 
-    and tools outside tasklet API. This abstraction has the same requirements as 
-    Configuration objects in Avalon and thus the task proxies are represented by 
-    Avalons Configuration object.
-  </p>
-</blockquote>
-
-<h3>SOC, IOC and the alphabet soup</h3>
-
-<blockquote>
-  <p>
-    The design of Myrmidon follows many of the design patterns found in Avalon. The strongest
-    influence cna be seen from the meta-patterns; Separation of Concerns (SOC) and Inversion of 
-    Control (IOC). 
-  </p>
-
-  <p>
-    SOC essentially is a design pattern used to separate the system accroding to relevent
-    dimensions. (SOC is often called multi-dimensional SOC). The definition of "relevent"
-    is domain specific and in our case there is a number of dimensions. For instance you 
-    will notice that there is a separation between project, tasklet, conversion and datatype 
-    functionality. Where in Ant1.x these were only partially separated or tightly coupled 
-    there is now decoupling. This separation allows easy reuse of parts in other projects. ie 
-    It is now extremely easy to reuse the tasklet api in other tools (such as Installshield 
-    type apps or Cron-like deamons etc).
-  </p>
-
-  <p>
-    Another dimension in which myrmidon is separated is by users. For instance there is 
-    a separation between engine code and client code. The client code is the code used by 
-    those who implement the components. For instance tasklet developers only have to 
-    look at client code for tasklets and never look at implementation of engine.
-  </p>
-
-  <p>
-    Inversion of Control (IOC) aka the Holywood Principle (Don't call us - we'll call you) is
-    another pattern applied within Myrmidon. In this pattern it is the container that provides
-    facilities and executes lifecycle by calling methods of child components. So instead of the 
-    component calling methods to lookup or create peer components or method managing it's 
-    own lifecycle the container is responsible for these functions. 
-  </p>
-
-  <p>
-    These approach should be familiar to a servlet or EJB developer as they are also based on 
-    SOC and IOC except they do it at a lower resolution. For more detailed explanation of 
-    these design approaches have a look at <a 
-    href="http://java.apache.org/framework/developer/index.html">
-    http://java.apache.org/framework/developer/index.html</a>.
-  </p>
-
-  <p>
-    The result of these design choices is a more flexable and reusable components.
-  </p>
-</blockquote>
-
-<h3>Enough theory - give me Nuts and Bolts</h3>
-
-<blockquote>
-  <p>
-    The code is separated into 5 different sections. These are the project, tastlet,
-    converter, datatype and frontend APIs. The project API is concerned with building 
-    and representing a project. The tasklet API is concerned with executing tasks in a 
-    particular environment. The converter API is concerned with converting instances of one
-    type into another type. The datatype API is used to register, load and instantiate 
-    instances of named datatypes. The frontend API involves instantiating and managing 
-    all the other components and making it easy to build different frontends (CLI, GUI, 
-    Servlet).
-  </p>
-
-  <p>
-    When Myrmidon is started it interacts with FrontEnd API. It aquires a ProjectBuilder 
-    instance from FrontEnd API and uses it to build a project. It then aquires a 
-    ProjectEngine instance from FrontEnd again and uses it to execute the created project.
-    This project will first execute the implicit target (which includes all of properties 
-    outside target element). And then execute the default or specified target. Each target 
-    executes it's dependencies first and then checks it's condition to see if it should 
-    execute itself. Each target contains a list of tasks (in the form of Configuraiton 
-    objects). These are passed to the tasklet API that instantiates and executes the tasks. 
-    The tasklet API instantiates the relevent task and then applies rules to use the 
-    Configuration object to configure the task. In some cases this involves resolving 
-    properties and converting values to the correct type required by task. The convertion
-    is done by Converter API. Properties are associations between a name and a value, the 
-    types of the value aremanaged by the DataType API and accessed via the Property task.
-  </p>
-
-  <p>
-    Now if you wanted to change a certain component of the system - lets say the ProjectBuilder
-    component. You instead want to use a component that you wrote yourself that builds a project
-    with the result of a xslt + xml -> xml process so that you can use static templating. The 
-    way to do this would be to set the property "ant.comp.builder" to 
-    "com.biz.ant.MyXSLTProjectBuilder" before handing the properties to the FrontEnd API. The 
-    FrontEnd API would then wire together the components appropriately and the same process as 
-    documented above would be used. Other components can be replaced in a similar manner. For 
-    a full list of properties that can be set see the default FrontEnd implementation.
-  </p>
-
-  <p>
-    Now instead of replacing a component in the system say you wanted to add an extra task. In 
-    this case you would create a task "com.biz.ant.tasks.ProcessFile" that extends 
-    "org.apache.ant.tasklet.AbstractTasklet". You would then implement run() method to do the
-    work and and setter methods to accept parameters. The run method can throw AntException if
-    the task fails for any reason. The setter methods are in format of Ant1.x setters with one 
-    extention. The extention allows '-' characters to appear in xml names and these will be 
-    transferred into capitalisation of next character in java names. ie file-permission 
-    attribute --&gt; setFilePermission() method. After implementing this task you would have 
-    to define it in taskdef.xml of it's archive or else define it with a taskdef construct.
-  </p>
-  
-  <p>
-    In a similar method new converters and datatypes can be added to the system. For example
-    if you needed to add a TestSet datatype that held a list of test names then this would 
-    be possible. You could also add a converter that converted a list of comma separated 
-    strings into a TestSet.    
-  </p>
-
-  <p>
-    The one thing that this proposal does not address is validation concerns. You will notice
-    that the above is mainly aimed to reduce the complexity for task developers. Where in 1.x
-    you had to manage convertion manually (depending on version of Ant) and also had to explcitly
-    incorporate support for datatypes manually. The one other concern that was coded into every
-    task was validation. ie Were the correct parameters set ? It would be desirable to be able to
-    associate meta-information with the task that indicated the required parameters. This would 
-    reduce the workload on task developers even more and encourage better task structure. This 
-    is a future TODO.
-  </p>
-
-</blockquote>
-
-<h3>A Rose by any other name ...</h3>
-
-<blockquote>
-  <p>
-    The name Myrmidon is a derivation of a mythological name for some anst that were turned 
-    into soldiers by the god Zeus. It came to mean "a subordinate who executes orders 
-    unquestioningly" which seemed suitable for a task execution/build tool. A more complete
-    description stolen from <a href="http://bondi-blue.parlez.com/previous_words/myrmidon.txt">
-    http://bondi-blue.parlez.com/previous_words/myrmidon.txt</a>.
-  </p>
-
-  <quote>
-    <i>The appellation Myrmidon was derived from the Greek word "myrmex",
-    meaning ant.  According to Greek mythology, the Myrmidons were
-    transformed into humans by the god Zeus as an act of kindness to his
-    son Aeacus.  King Aeacus, captivated by a colony of ants, prayed
-    that he should receive an increase in population equal to the
-    number of ants before him.  When he awoke the next day, the ants
-    were his human subjects.  Thereafter, they were known as the
-    Myrmidons.  See "The Iliad" for Homers' account of the Myrmidons
-    during the Trojan War.</i>
-  </quote>
-
-</blockquote>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/proposal/myrmidon/tools/bin/ant b/proposal/myrmidon/tools/bin/ant
deleted file mode 100644
index 981f084..0000000
--- a/proposal/myrmidon/tools/bin/ant
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /bin/sh
-
-if [ -f $HOME/.antrc ] ; then 
-  . $HOME/.antrc
-fi
-
-if [ "$ANT_HOME" = "" ] ; then
-  # try to find ANT
-  if [ -d /opt/ant ] ; then 
-    ANT_HOME=/opt/ant
-  fi
-
-  if [ -d ${HOME}/opt/ant ] ; then 
-    ANT_HOME=${HOME}/opt/ant
-  fi
-
-  ## resolve links - $0 may be a link to ant's home
-  PRG=$0
-  progname=`basename $0`
-  
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '.*/.*' > /dev/null; then
-	PRG="$link"
-    else
-	PRG="`dirname $PRG`/$link"
-    fi
-  done
-  
-  ANT_HOME=`dirname "$PRG"`/..
-
-fi
-
-# Allow .antrc to specifiy flags to java cmd
-if [ "$JAVACMD" = "" ] ; then 
-  JAVACMD=java
-fi
-
-LOCALCLASSPATH=`echo $ANT_HOME/lib/*.jar | tr ' ' ':'`
-
-if [ "$CLASSPATH" != "" ] ; then
-  LOCALCLASSPATH=$LOCALCLASSPATH:$CLASSPATH
-fi
-
-if [ "$JAVA_HOME" != "" ] ; then
-  if test -f $JAVA_HOME/lib/tools.jar ; then
-    LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar
-  fi
-
-  if test -f $JAVA_HOME/lib/classes.zip ; then
-    LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip
-  fi
-fi
-
-$JAVACMD -classpath $LOCALCLASSPATH -Dant.home=${ANT_HOME} $ANT_OPTS org.apache.tools.ant.Main $@
-
diff --git a/proposal/myrmidon/tools/bin/ant.bat b/proposal/myrmidon/tools/bin/ant.bat
deleted file mode 100755
index 597475a..0000000
--- a/proposal/myrmidon/tools/bin/ant.bat
+++ /dev/null
@@ -1,36 +0,0 @@
-@echo off
-rem find ANT_HOME
-if not "%ANT_HOME%"=="" goto checkJava
-
-rem check for ant in Program Files on system drive
-if not exist "%SystemDrive%\Program Files\ant" goto checkSystemDrive
-set ANT_HOME=%SystemDrive%\Program Files\ant
-goto checkJava
-
-:checkSystemDrive
-rem check for ant in root directory of system drive
-if not exist "%SystemDrive%\ant" goto noAntHome
-set ANT_HOME=%SystemDrive%\ant
-goto checkJava
-
-:noAntHome
-echo ANT_HOME is not set and ant could not be located. Please set ANT_HOME.
-goto end
-
-:checkJava
-if "%JAVACMD%" == "" set JAVACMD=java
-
-set LOCALCLASSPATH=
-for %%i in (%ANT_HOME%\lib\*.jar) do call %ANT_HOME%\bin\lcp.bat %%i
-set LOCALCLASSPATH=%LOCALCLASSPATH%;%CLASSPATH%
-
-if "%JAVA_HOME%" == "" goto runAnt
-if exist %JAVA_HOME%\lib\tools.jar call %ANT_HOME%\bin\lcp.bat %JAVA_HOME%\lib\tools.jar
-if exist %JAVA_HOME%\lib\classes.zip call %ANT_HOME%\bin\lcp.bat %JAVA_HOME%\lib\classes.zip
-
-:runAnt
-%JAVACMD% -classpath "%LOCALCLASSPATH%" -Dant.home="%ANT_HOME%" %ANT_OPTS% org.apache.tools.ant.Main %1 %2 %3 %4 %5 %6 %7 %8 %9
-
-:end
-set LOCALCLASSPATH=
-
diff --git a/proposal/myrmidon/tools/bin/antRun b/proposal/myrmidon/tools/bin/antRun
deleted file mode 100644
index 4c38b18..0000000
--- a/proposal/myrmidon/tools/bin/antRun
+++ /dev/null
@@ -1,13 +0,0 @@
-#! /bin/sh
-
-# Args: DIR command
-cd $1
-CMD=$2
-shift
-shift
-
-if test -f $CMD.sh; then
-  CMD="sh $CMD.sh"
-fi
-
-echo $CMD $@ | sh
diff --git a/proposal/myrmidon/tools/bin/antRun.bat b/proposal/myrmidon/tools/bin/antRun.bat
deleted file mode 100755
index 08e0351..0000000
--- a/proposal/myrmidon/tools/bin/antRun.bat
+++ /dev/null
@@ -1,9 +0,0 @@
-@echo off
-
-cd %1
-set ANT_RUN_CMD=%2
-shift
-shift
-
-%ANT_RUN_CMD% %1 %2 %3 %4 %5 %6 %7 %8 %9
-
diff --git a/proposal/myrmidon/tools/bin/lcp.bat b/proposal/myrmidon/tools/bin/lcp.bat
deleted file mode 100755
index 8feb0d0..0000000
--- a/proposal/myrmidon/tools/bin/lcp.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-set LOCALCLASSPATH=%LOCALCLASSPATH%;%1
-
diff --git a/proposal/myrmidon/tools/lib/ant.jar b/proposal/myrmidon/tools/lib/ant.jar
deleted file mode 100644
index f9bb3a7..0000000
--- a/proposal/myrmidon/tools/lib/ant.jar
+++ /dev/null
Binary files differ
diff --git a/src/antidote/ChangeLog b/src/antidote/ChangeLog
deleted file mode 100644
index b9bf026..0000000
--- a/src/antidote/ChangeLog
+++ /dev/null
@@ -1,153 +0,0 @@
-2000-11-27  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/ActionManager.java: Added ability to
-	generate popup menus from a list of action IDs. 
-
-2000-11-24  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/Console.java: Added context colorization.
-
-2000-11-20  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/command/DisplayErrorCmd.java: Added
-	code to allow display of stack backtrace if needed.
-
-2000-11-18  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/customizer/PropertiesPropertyEditor.java:
-	Added proper editing capability. Rows are added and removed
-	automatically. 
-	
-	* org/apache/tools/ant/gui/customizer/XXXPropertyEditor.java:
-	Removed stray event firing upon setting value of property to edit.
-
-2000-11-16  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/customizer/StringPropertyEditor.java:
-	Changed underlying widget type to JTextPane so that it would
-	accomidate multi-line strings property.
-
-	* org/apache/tools/ant/gui/acs/ACSTreeNodeElement.java: Fixed
-	nasty java.lang.IllegalAccessException bug that I thought was
-	related to Java 1.3 Blackdown RC1, but wasn't. It was related to
-	using Jikes, which interprests method resolution differently than
-	javac, resulting in a call trying to access a private method
-	implementation of a public interface.
-
-	* org/apache/tools/ant/gui/ResourceManager.java: Added convenience
-	method for getting resource images for a given class.
-
-	* org/apache/tools/ant/gui/AntAction.java: Added toggle property.
-
-	* org/apache/tools/ant/gui/ActionManager.java: Added ability to
-	handle toggle actions to menu bar (still need to add support to
-	tool bar).
-
-	* org/apache/tools/ant/gui/EventResponder.java: Added emacs
-	notifier command.
-
-	* org/apache/tools/ant/gui/ide/EmacsNotifier.java: Imported.
-
-	* org/apache/tools/ant/gui/ProjectProxy.java: Added code to add
-	listeners registered with the AppContext to the build.
-
-	* org/apache/tools/ant/gui/AppContext.java: Now allows registering
-	of build listeners to be added to project at build time.
-
-	* org/apache/tools/ant/gui/Main.java: Added loading of build file
-	provided on command line.
-
-2000-11-14  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/Antidote.java: Added top area widget,
-	which is *not* managed inside a split pane.
-
-	* org/apache/tools/ant/gui/ProjectNavigator.java: Added minimum
-	size to keep resizing of parent from hiding widget.
-
-	* org/apache/tools/ant/gui/ActionManager.java: Large functionality
-	addtion for allowing action enabled/disabled state to be defined
-	in the configuration file. The triggering of state changes is
-	based on the firing of specific events.
-
-	* org/apache/tools/ant/gui/AntAction.java: Broke out from inner
-	class of ActionManager to its own self (I'm my own man!).
-
-	* org/apache/tools/ant/gui/command/CloseCmd.java: Added firing of
-	ProjectClosedEvent so state updates could occur.
-
-	* org/apache/tools/ant/gui/resources/action.properties: Added
-	enabledOn and disabledOn event specifications.
-
-	* org/apache/tools/ant/gui/Console.java: Improved reporting level
-	handling (some events weren't getting reported).
-
-2000-11-10  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/PropertyEditor.java: Added new
-	DynamicCustomizer class instead of HTML based info.
-
-2000-11-09  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/ProjectProxy.java: Started rework of
-	project data model, using elements from the XML parser directly
-	through the new Ant Construction Set package.
-
-2000-11-08  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/About.java: Useless tweaking inspired
-	by procrastination.
-
-2000-11-05  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/LogLevelEnum.java: Added log level
-	enumeration for use with combo boxes (drops nicely into default model).
-
-	* org/apache/tools/ant/gui/event/BuildEventType.java: Added
-	delivering of event to a BuildListener based on enumeration value.
-
-	* org/apache/tools/ant/gui/ProjectProxy.java: Added generation of
-	BuildEvent on project start and finish, as the project itself
-	doesn't generate theses events (unfortunately).
-
-	* org/apache/tools/ant/gui/Console.java: Added filtering level,
-	and clearing of buffer when a new build starts.
-
-	* org/apache/tools/ant/gui/AntEditor.java: Added automatic border
-	for all subclasses.
-
-2000-11-04  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/ProjectProxy.java: Added inner class to
-	execute the build in a separate thread.
-
-	* org/apache/tools/ant/gui/event/EventBus.java: Added check to see
-	if postEvent() is being called on the AWTEvent thread, and if not,
-	post the dispatching of the event to that thread. This is needed
-	as most of the listeners will be bound to GUI components and will
-	be updating their state (which must occur on the event thread).
-
-	* org/apache/tools/ant/gui/ProjectProxy.java: Added a
-	BuildListener to forward events to the EventBus.
-
-2000-11-03  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/Antidote.java: Removed hard-coded
-	Console class.
-
-	* org/apache/tools/ant/gui/Console.java: Changed to a real
-	AntEditor class, initialized by the config file.
-
-2000-11-02  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/event/EventBus.java: Added interrupt
-	level support.
-
-	* org/apache/tools/ant/gui/About.java: Created
-	
-2000-11-01  Simeon H.K. Fitch  <simeon@fitch.net>
-
-	* org/apache/tools/ant/gui/Main.java: Added XMLHelper.init() call
-	
-	* build.xml: Updated run target to include ant.jar in classpath.
-
diff --git a/src/antidote/README b/src/antidote/README
deleted file mode 100644
index a759736..0000000
--- a/src/antidote/README
+++ /dev/null
@@ -1,68 +0,0 @@
-
-                                A N T I D O T E
- 
-  What is it? 
-  -----------
-  
-  Antidote is the Java based GUI interface to the Ant build tool.
-
-  Status
-  ------
-  
-  Antidote is in the early stages of development. Its usefulnes is limited, and
-  will not be distributed with the binary versions of Ant until it is deemed
-  featureful and robust enough for end user use. That being said, it currently
-  will load an Ant build.xml file, allow you to edit some of the file's
-  properties, save it, and launch a build starting at any target in the
-  project. 
-
-  The Latest Version
-  ------------------
-
-  The latest version is the current CVS version, which may or may not be useful
-  at any given time. The source code is not being base-lined at any specific
-  version at this time.
-
-  Documentation
-  -------------
-
-  Any documentation that exists for Antidote can be found in the antidote/docs
-  directory. Documentation is primarily developement based documentation as
-  Antidote is not yet mature enough for reliable user documentation.
-
-  Building
-  --------
-
-  Antidote requres JAXP 1.0.1 from Sun (http://java.sun.com/xml). Some time in
-  the future it is hoped at any w3c based XML will be usable, but at the 
-  current time the Sun library is needed. The easiest way to install the
-  jaxp.jar and parsers.jar file that comes with the distribution is to copy 
-  them into your $JAVA_HOME/jre/lib/ext directory.
-
-  There is a build.xml file in the same directory as this file that will work
-  with Ant 1.2. It is recommended that Ant be built first (from ../..), 
-  followed by this directory. By default, the compiled classes will be written
-  to ~/built/antidote/classes, but the JAR file and launch scripts are written
-  to the Ant build directory (~/build/ant).
-
-  Running
-  -------
-
-  Antidote requires at least Java 1.2 to run. 
-
-  Upon successful building of Ant and Antidote (in that order), go to
-  ~/build/ant/bin and run "antidote". You will probably have to set the
-  environment variable "ANT_HOME" to "~/build/ant" in the shell that you launch
-  antidote from. If desired, you can provide the build file to launch at statup
-  as the first argument on the command line to "antidote".
-
-  Licensing
-  ---------
-
-  This software is licensed under the terms you may find in the file 
-  named "LICENSE" provided with this distribution.
-
-  Thanks for using Antidote.
-
-                                          The Apache Jakarta Project
-                                         <http://jakarta.apache.org/>
diff --git a/src/antidote/TODO b/src/antidote/TODO
deleted file mode 100644
index 7d6de3d..0000000
--- a/src/antidote/TODO
+++ /dev/null
@@ -1,69 +0,0 @@
-TODO List:
-
-    * Add editors for defining file sets, and other "sets".
-
-    * Write wizzard framework.
-
-    * Implement a build progress reporter.
-
-    * Implement a "Worker Thread" pattern that allows workers to have
-      their work done in a thread property registered with Antidote, and
-      provide support to that worker to provide progress updates via
-      the GUI. Should also provide support for hour-glass cursor
-      handling, and AWT event blocking until task is completed. This
-      would be used for things such as loading files or other tasks
-      that the user must wait for completion.
-
-    * Add menu option to select the compiler to use, which then sets
-      the "build.compiler" property. Better yet, create a generic menu 
-      building capability that allows the setting of a property from a 
-      list of options.
-
-    * Add ability to put an "all" or "don't care" specifyer on the action
-      "enableOn" and "disableOn" properties.
-
-    * Add ability to view task dependencies more fully.
-
-    * Add better editors for specific tasks.
-
-    * Add a Progress Monitor for file loading (especially for slow boxen like
-      mine) .
-
-    * Implement some for of refid hyperlinking functionality.
-
-    * Implement context sensitive menus for the console window, allowing
-      an error to be selected and invoked in IDE.
-
-    * Write preferences framwork, including persistence support.
-
-    * Provide some sort of class path debugging support.
-
-    * Add "syntax" colorization to the console window {done}, 
-      with a preferences editor for setting up the styles {not-done}.
-
-    * Figure out an approach to gracefully stopping a running build.
-
-    * Add error handler for SAX parser to better report loading errors.
-
-    * Add support to ActionManager to handle toggle actions in tool bar. Also
-      need a better way of detecting the selected state of the action button.
-
-    * Project properties viewer, including the ability to view
-      dependencies (local and cascading).
-
-    * Acquire or implement a logging facility.
-
-    * Eat more dog food.
-
-(pending Ant 2.0)
-    
-    * Need Ant API access to:
-        - Tasks within a Target
-        - The topo sorted task list to get flattened dependencies
-        - The build setup code to recduce code replication.
-        - Normalize the Ant data model to represent a more consistent
-          tree structure, and more bean-like API.
-
-    * Better define the data model architecture, and how it interfaces
-      with the Ant data model.
-
diff --git a/src/antidote/bin/antidote b/src/antidote/bin/antidote
deleted file mode 100755
index 22e167a..0000000
--- a/src/antidote/bin/antidote
+++ /dev/null
@@ -1,48 +0,0 @@
-#! /bin/sh
-
-if [ -f $HOME/.antrc ] ; then 
-  . $HOME/.antrc
-fi
-
-if [ "$ANT_HOME" = "" ] ; then
-  # try to find ANT
-  if [ -d /opt/ant ] ; then 
-    ANT_HOME=/opt/ant
-  fi
-
-  if [ -d ${HOME}/opt/ant ] ; then 
-    ANT_HOME=${HOME}/opt/ant
-  fi
-
-  ## resolve links - $0 may be a link to ant's home
-  PRG=$0
-  progname=`basename $0`
-  
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '.*/.*' > /dev/null; then
-	PRG="$link"
-    else
-	PRG="`dirname $PRG`/$link"
-    fi
-  done
-  
-  ANT_HOME=`dirname "$PRG"`/..
-
-fi
-
-# Allow .antrc to specifiy flags to java cmd
-if [ "$JAVACMD" = "" ] ; then 
-  JAVACMD=java
-fi
-
-LOCALCLASSPATH=`echo $ANT_HOME/lib/*.jar | tr ' ' ':'`
-
-if [ "$CLASSPATH" != "" ] ; then
-  LOCALCLASSPATH=$CLASSPATH:$LOCALCLASSPATH
-fi
-
-
-$JAVACMD -classpath $LOCALCLASSPATH -Dant.home=${ANT_HOME} org.apache.tools.ant.gui.Main $@
-
diff --git a/src/antidote/bin/antidote.bat b/src/antidote/bin/antidote.bat
deleted file mode 100644
index f7f74c9..0000000
--- a/src/antidote/bin/antidote.bat
+++ /dev/null
@@ -1,48 +0,0 @@
-@echo off
-
-rem Slurp the command line arguments.  This loop allows for an unlimited number of 
-rem agruments (up to the command line limit, anyway).
-
-set ANT_CMD_LINE_ARGS=
-
-:setupArgs
-if %1a==a goto doneArgs
-set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1
-shift
-goto setupArgs
-
-:doneArgs
-rem The doneArgs label is here just to provide a place for the argument list loop
-rem to break out to.
-
-rem find ANT_HOME
-if not "%ANT_HOME%"=="" goto checkJava
-
-rem check for ant in Program Files on system drive
-rem if not exist "%SystemDrive%\Program Files\ant" goto checkSystemDrive
-rem set ANT_HOME=%SystemDrive%\Program Files\ant
-rem goto checkJava
-
-rem :checkSystemDrive
-rem check for ant in root directory of system drive
-rem if not exist "%SystemDrive%\ant" goto noAntHome
-rem set ANT_HOME=%SystemDrive%\ant
-rem goto checkJava
-
-:noAntHome
-echo ANT_HOME is not set and ant could not be located. Please set ANT_HOME.
-goto end
-
-:checkJava
-if "%JAVACMD%" == "" set JAVACMD=java
-
-set LOCALCLASSPATH="%CLASSPATH%"
-for %%i in ("%ANT_HOME%\lib\*.jar") do call "%ANT_HOME%\bin\lcp.bat" "%%i"
-
-%JAVACMD% -classpath %LOCALCLASSPATH% -Dant.home="%ANT_HOME%" org.apache.tools.ant.gui.Main %ANT_CMD_LINE_ARGS%
-goto end
-
-:end
-set LOCALCLASSPATH=
-set ANT_CMD_LINE_ARGS=
-
diff --git a/src/antidote/build.xml b/src/antidote/build.xml
deleted file mode 100644
index 2104bcf..0000000
--- a/src/antidote/build.xml
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="Antidote" default="main" basedir=".">
-
-  <!-- Give user a chance to override without editing this file 
-       (and without typing -D each time it compiles it) -->
-  <property file="${user.home}/.ant.properties" />
-
-  <property name="Name" value="Antidote"/>
-  <property name="name" value="antidote"/>
-  <property name="version" value="0.1"/>
-
-  <property name="ant.home" value="../../"/>
-  <property name="src.bin.dir" value="bin"/>
-  <property name="src.etc.dir" value="etc"/>
-  <property name="src.dir" value="."/>
-  <property name="docs.dir" value="docs"/>
-  <property name="build.dir" value="../../../build/antidote"/>
-  <property name="ant.build.dir" value="../../../build/ant"/>
-  <property name="lib.dir" value="${ant.build.dir}/lib"/>
-  <property name="bin.dir" value="${ant.build.dir}/bin"/>
-  <property name="build.classes" value="${build.dir}/classes"/>
-  <property name="build.javadocs" value="${build.dir}/javadocs"/>
-  <property name="ant.dist.dir" value="../../../dist/ant"/>
-
-  <path id="classpath">
-    <pathelement location="${lib.dir}/ant.jar"/>
-  </path>
-  <property name="packages" value="org.apache.tools.ant.gui.*"/>
-  <property name="manifest" value="etc/manifest"/>
-
-  <!-- =================================================================== -->
-  <!-- Set some the defaults the user can override in .ant.properties      -->
-  <!-- =================================================================== -->
-  <property name="build.compiler" value="modern"/>
-  <property name="build.compiler.emacs" value="on"/>
-
-  <!-- =================================================================== -->
-  <!-- Define a global set of patterns that can be referenced by           -->
-  <!-- its id attribute                                                    -->
-  <!-- =================================================================== -->
-  <patternset id="chmod.patterns">
-    <include name="**/antidote" />
-  </patternset>
-
-  <!-- =================================================================== -->
-  <!-- Prepares the build directory                                        -->
-  <!-- =================================================================== -->
-  <target name="prepare">
-    <mkdir dir="${build.dir}"/>
-    <mkdir dir="${ant.build.dir}"/>
-    <tstamp />
-  </target>
-
-  <!-- =================================================================== -->
-  <!-- Compiles the source code                                            -->
-  <!-- =================================================================== -->
-  <target name="compile" depends="prepare">
-    <mkdir dir="${build.classes}"/>
-
-    <javac srcdir="${src.dir}"
-           destdir="${build.classes}"
-           debug="on"
-           deprecation="on"
-           optimize="off" >
-      <classpath refid="classpath" />
-    </javac>
- 
-    <copy todir="${build.classes}">
-      <fileset dir="${src.dir}">
-        <include name="**/*.properties" />
-        <include name="**/*.gif" />
-      </fileset>
-    </copy>
-
-    <filter token="VERSION" value="${version}" />
-    <filter token="DATE" value="${TODAY}" />
-    <filter token="TIME" value="${TSTAMP}" />
-    <copy    todir="${build.classes}" 
-             overwrite="true"
-             filtering="on">
-      <fileset dir="${src.dir}">
-        <include name="**/version.txt" />
-      </fileset>
-    </copy>
-  </target>
-
-  <!-- =================================================================== -->
-  <!-- Creates the jar archive                                             -->
-  <!-- =================================================================== -->
-  <target name="jar" depends="compile">
-    <mkdir dir="${lib.dir}"/>
-    <jar jarfile="${lib.dir}/${name}.jar"
-         basedir="${build.classes}"
-         includes="org/**"
-         manifest="${manifest}"
-    />
-  </target>
-
-  <!-- =================================================================== -->
-  <!-- Creates the binary structure                                        -->
-  <!-- =================================================================== -->
-  <target name="main" depends="jar" description="Creates the binary structure">
-     <mkdir dir="${bin.dir}"/>
-     <copy todir="${bin.dir}">
-       <fileset dir="${src.bin.dir}"/>
-     </copy>
-     <chmod perm="+x">
-       <fileset dir="${bin.dir}">
-         <patternset refid="chmod.patterns"/>
-       </fileset>
-     </chmod>
-     <fixcrlf srcdir="${bin.dir}" includes="antidote" cr="remove"/>
-     <fixcrlf srcdir="${bin.dir}" includes="*.bat" cr="add"/>
-  </target>
-
-  <!-- =================================================================== -->
-  <!-- Creates the API documentation                                       -->
-  <!-- =================================================================== -->
-  <target name="javadocs" depends="prepare" description="Creates the API documentation">
-    <mkdir dir="${build.javadocs}"/>
-    <javadoc packagenames="${packages}"
-             sourcepath="${basedir}/${src.dir}"
-             destdir="${build.javadocs}"
-             author="true"
-             private="true"
-             version="true"
-             windowtitle="${Name} API"
-             doctitle="${Name}"
-             bottom="Copyright &#169; 2000 Apache Software Foundation. All Rights Reserved.">
-      <group title="Antidote" packages="org.apache.tools.ant.gui*" />
-    </javadoc>
-  </target>
-
-  <!-- =================================================================== -->
-  <!-- Creates the distribution                                            -->
-  <!-- =================================================================== -->
-  <target name="dist" depends="main,jar,javadocs" description="Creates the distribution">
-     <mkdir dir="${ant.dist.dir}"/>
-     <mkdir dir="${ant.dist.dir}/bin"/>
-     <mkdir dir="${ant.dist.dir}/lib"/>
-     <mkdir dir="${ant.dist.dir}/docs"/>
-     <mkdir dir="${ant.dist.dir}/docs/api"/>
-     <mkdir dir="${ant.dist.dir}/src"/>
-
-     <copy todir="${ant.dist.dir}/src">
-       <fileset dir="${src.dir}"/>
-     </copy>
-     <copy todir="${ant.dist.dir}/lib">
-       <fileset dir="${lib.dir}"/>
-     </copy>
-
-     <copy todir="${ant.dist.dir}/bin">
-       <fileset dir="bin"/>
-     </copy>
-     <copy todir="${ant.dist.dir}/docs">
-       <fileset dir="${docs.dir}"/>
-     </copy>
-     <copy todir="${ant.dist.dir}/docs/api">
-       <fileset dir="${build.javadocs}"/>
-     </copy>
-
-     <fixcrlf srcdir="${ant.dist.dir}/bin" includes="antidote" cr="remove"/>
-     <fixcrlf srcdir="${ant.dist.dir}/bin" includes="*.bat" cr="add"/>
-     <chmod perm="+x">
-       <fileset dir="${ant.dist.dir}/bin">
-         <patternset refid="chmod.patterns"/>
-       </fileset>
-     </chmod>
-
-     <copy file="README" tofile="${ant.dist.dir}/README"/>
-     <copy file="WHATSNEW" tofile="${ant.dist.dir}/WHATSNEW"/>
-     <copy file="TODO" tofile="${ant.dist.dir}/TODO"/>
-     <copy file="LICENSE" tofile="${ant.dist.dir}/LICENSE"/>
-  </target>
-
-  <!-- =================================================================== -->
-  <!-- Packages the distribution with ZIP                                  -->
-  <!-- =================================================================== -->
-  <target name="dist-zip" depends="dist">
-    <zip zipfile="${Name}-${version}.zip" basedir="${ant.dist.dir}" includes="**"/>
-  </target>
-
-  <!-- =================================================================== -->
-  <!-- Packages the distribution with TAR-GZIP                             -->
-  <!-- =================================================================== -->
-  <target name="dist-tgz" depends="dist">
-    <tar tarfile="${Name}-${version}.tar" basedir="${ant.dist.dir}" includes="**"/>
-    <gzip zipfile="${Name}-${version}.tar.gz" src="${Name}-${version}.tar"/>
-  </target>
-
-  <!-- =================================================================== -->
-  <!-- Cleans up generated stuff                                           -->
-  <!-- =================================================================== -->
-  <target name="clean">
-    <delete dir="${build.dir}"/>
-    <delete dir="${ant.dist.dir}"/>
-  </target>
-
-  <!-- =================================================================== -->
-  <!-- Total cleanup                                                       -->
-  <!-- =================================================================== -->
-  <target name="total-clean" depends="clean">
-    <delete dir="${bin.dir}"/>
-    <delete file="${lib.dir}/${name}.jar"/>
-    <delete file="${Name}-${version}.zip"/>
-    <delete file="${Name}-${version}.tar"/>
-    <delete file="${Name}-${version}.tar.gz"/>
-  </target>
-
-
-</project>
-
diff --git a/src/antidote/docs/design-overview.html b/src/antidote/docs/design-overview.html
deleted file mode 100644
index 4436afc..0000000
--- a/src/antidote/docs/design-overview.html
+++ /dev/null
@@ -1,253 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "strict.dtd">
-<HTML> 
-  <HEAD> 
-     <TITLE>Antidote Design Overview</TITLE> 
-  </HEAD> 
-
-  <BODY> 
-
-    <H1>Antidote Design Overview</H1>
-
-    <P>Version 0.2 (2000/12/18)</P>
-
-    <P>Authors: 
-    <A HREF="mailto:simeon@fitch.net">Simeon H.K. Fitch</A>
-    </P>
-
-    <H2>Introduction</H2> 
-
-    <P>The purpose of this document is to communicate the overall
-    structure and design patters used in Antidote, the GUI for
-    Ant. This document is a work in progress, as well as a living
-    document, and it is most likely not be in full synchronization with
-    the source code. Therefore, if there is any doubt, view the source
-    ;-)</P>
-
-    <H2>Overview</H2>
-    
-    <P>The Antidote architecture design aims to provide a high level
-    of modularity and extensibility. Ideally the components of
-    Antidote will be able to be assembled in different configurations
-    to provide the type of application or plug-in desired.</P>
-
-    <P>To acheive this modularity, a high level of decoupling is
-    necessary. The standard UI design approach of providing separation
-    of view (presentation) from model (data) is applied, leveraging
-    the built-in Ant data model where possible, as well as the
-    predifined Swing model interfaces. Furthermore, the architecture
-    is highly event driven, whereby modules communicate via a shared
-    communications channel.</P>
-    
-    <P>To a large extent, the configuration of application modules is
-    driven by localized configuration files, allowing new modules or
-    data views to be added, as well as providing multi-language
-    support.</P>
-
-    <P>The diagram below conveys a high altitude view of the
-    application's structure. As the application grows, new components
-    will be plugged in to what will be described as the <TT>EventBus</TT>.
-
-    <TT><PRE>
-
-Antidote Component Architecture
-
-   +---------------+ +----------------+ +-------------+ +-------------+
-   |               | |                | |             | |             |  
-   | ActionManager | | EventResponder | |  AntModule  | |  AntModule  |
-   |               | |                | |(ProjectNav) | |(SourceEdit) |  
-   +---------------+ +----------------+ +-------------+ +-------------+
-           |                  ^               ^               ^
-           |                  |               |               |
-      ActionEvent         EventObject      AntEvent       AntEvent
-           |                  |               |               |
-           v                  v               v               v
-  /---------------------------------------------------------------------\
- /                                                                       \
-<                                   EventBus                              >
- \                                                                       /
-  \---------------------------------------------------------------------/
-           |                  ^               ^               ^
-           |                  |               |               |
-      EventObject         ChangeEvent      BuildEvent     EventObject
-           |                  |               |               |
-           v                  |               |               v
-   +---------------+ +----------------+ +-------------+ +--------------+
-   |               | |                | |             | |              |  
-   |   Console     | |  ProjectProxy  | |    Ant      | | (Your Module)|
-   |               | |                | |             | |              |  
-   +---------------+ +----------------+ +-------------+ +--------------+
-
-    </TT></PRE>
-
-    <H2>Event Bus</H2>
-
-    <P>The backbone of the application is the <TT>EventBus</TT>. Any
-    component of the application can post events to the
-    <TT>EventBus</TT>. Components that wish to receive events are
-    called <TT>BusMember</TT>s.</P>
-
-    <P>The <TT>EventBus</TT> will dispatch any object of type
-    <TT>java.util.Event</TT>, which means that Ant <TT>BuildEvent</TT>
-    objects, as well as <TT>AWTEvent</TT> objects can be posted (if desired). A
-    new class of events called <TT>AntEvent</TT> is defined for Antidote
-    specific events, which have the additional capability of being
-    cancelled mid-dispatch.</P>
-
-    <P>Each <TT>BusMember</TT> must provide a <TT>BusFilter</TT> instance,
-    which is the members' means of telling the bus which
-    events it is interested in. This allows a <TT>BusMember</TT> to,
-    say, only receive <TT>AntEvent</TT> objects.</P>
-
-    <P>When a <TT>BusMember</TT> registers itself with the
-    <TT>EventBus</TT>, it must provide a (so called) <I>interrupt
-    level</I> which is a integer value defining a relative ordering
-    for dispatching <TT>EventObject</TT>s to <TT>BusMember</TT>s. The
-    purpose of this is to allow certain <TT>BusMember</TT> instances
-    to see an event before others, and in the case of <TT>AntEvent</TT
-    objects, keep the event from propogating onward. The
-    <TT>EventBus</TT> class defines the interrupt level constants
-    <TT>VETOING=1</TT>, <TT>MONITORING=5</TT>, and <TT>RESPONDING=10</TT> to
-    help define categories of members. The implied purpose being that:
-    <UL>
-
-      <LI><TT>VETOING</TT>: Listens for certain types of events, and
-      may process them in a non-default manner to determine if the
-      event should be cancelled before being dispatched to the
-      <TT>RESPONDING</TT> group. 
-
-      <LI><TT>MONITORING</TT>: Just listens for events, like a logger
-      or status monitor.</LI>
-
-      <LI><TT>RESPONDING</TT>: Process events in a default manner,
-      knowing that the event has passed any <TT>VETOING</TT> members.</LI>
-
-    </UL>
-
-    Within a specific interrupt level, the order in which members will
-    receive events is undefied. A <TT>BusMember</TT> may be registered
-    at a level that is +/- of one of the defined levels, as long as it
-    follows the constraint <TT>MONITORING <= interruptLevel <=
-    MAX_INTERRUPT</TT>.</P>
-
-
-    <H2>Actions and ActionManager</H2>
-
-    <P>Extensive use of the <TT>javax.swing.Action</TT> interface is
-    made for defining the set of menu and tool bar options that are
-    available. The configuration file <TT>action.properties</TT>
-    exists to define what should appear in the menu and toolbar, how
-    it is displayed, and the <TT>Action</TT> command name that is
-    dispatched when the user invokes that action. A class called
-    <TT>ActionManager</TT> exists for not only processing the
-    configuration file, but also for dispatching invoked action events
-    to the <TT>EventBus</TT>, and for controlling the enabled state of
-    an <TT>Action</TT>. When a new menu item or toolbar button is
-    desired, first it is added to the <TT>action.properties</TT> file,
-    and then the code to respond to it is added to the
-    <TT>EventResponder</TT> (see below).
-
-
-    <H2>Commands and EventResponder</H2> 
-
-    <P>At some point in the stages of event processing, an event may
-    require the data model to be modified, or some other task be
-    performed. The <TT>Command</TT> interface is defined to classify
-    code which performs some task or operation. This is distinct from
-    an <TT>Action</TT>, which is a user request for an operation. A
-    <TT>Command</TT> class is the encapsulation of the operation
-    itself.</P>
-
-    <P>When an <TT>Action</TT> generates an <TT>ActionEvent</TT>, the
-    event is posted to the <TT>EventBus</TT> which delivers the event
-    to all interested <TT>BusMember</TT>s. It eventually makes it to
-    the <TT>EventResponder</TT> instance (registered at the
-    <TT>RESPONDING</TT> interrupt level), which is responsible for
-    translating specific events into <TT>Command</TT> objects, and
-    then executing the <TT>Command</TT> object. For example, when the
-    user selects the "Open..." menu option, an <TT>ActionEvent</TT> is
-    generated by the Swing <TT>MenuItem</TT> class, which is then
-    posted to the <TT>EventBus</TT> by the <TT>ActionManager</TT>. The
-    <TT>ActionEvent</TT> is delivered to the <TT>EventResponder</TT>,
-    which converts the <TT>ActionEvent</TT> into a <TT>Command</TT>
-    instance. The <TT>EventResponder</TT> then calls the method
-    <TT>Command.execute()</TT> to invoke the command (which displays a
-    dialog for selecting a file to open).</P>
-
-    <P>When adding new <TT>Action</TT>s or general tasks to the
-    application, a <TT>Command</TT> object should be created to
-    encapsulate the behavior. This includes most operations which
-    modify the state of the data model.</P>
-
-    <P>The purpose of this encapsulation is to allow the clean
-    separation of making a request, and servicing a request. Due to
-    various conditions in the application state, the actualy response
-    to a request may change, as well as who services it. This
-    design approach facilitates that.</P>
-
-    <H2>Data Model and Views</H2>
-
-    <P><I>NB: This part of the architecture is not fleshed out very well. There
-    needs to be a discussion of the degree to which the Antidote development
-    should be able to impose changes on the Ant data model, and to what level
-    that model should be mirrored in the Antidote code base. The coupling
-    between them should be kept low, and at the same time changes to one should
-    affect the other minimally. Still, features like property change events and
-    bean introspection (or BeanInfo) may be needed to be added to the Ant data
-    model. Right now the data model is encapsulated in the package
-    <TT>org.apache.tools.ant.gui.acs</TT> (where "<TT>acs</TT>" stands for "Ant
-    Construction Set").</I></P>
-
-    <H2>Application Context</H2>
-
-    <P>In order to keep the coupling amoung application modules to a
-    minimum, a single point of reference is needed for coordination
-    and data sharing. The class <TT>AppContext</TT> is the catch-all
-    class for containing the application state. Most modules and
-    <TT>Command</TT> classes require an instance of the
-    <TT>AppContext</TT> class. Because all state information in
-    contained in an <TT>AppContext</TT> instance, multiple instances
-    of Antidote can run inside the same JVM as long as each has it's
-    own <TT>AppContext</TT>. (Interestingly, two instances of the
-    Antidote could conceivably share an <TT>AppContext</TT> instance
-    through RMI, allowing remote interaction/collaboration.)</P>
-
-    <H2>Configuration and ResourceManager</H2>
-    
-    <P>Full "i18n" support should be assumed in modern applications,
-    and all user viewable strings should be defined in a configuration
-    file. For Antidote this configuraiton file is
-    <TT>antidote.properties</TT>, which is located (with other UI
-    resources) in the subpackage "resources".</P>
-
-    <P>To aid in the lookup of text properties, as well as other
-    resources like icons, a class called <TT>ResourceManager</TT> is
-    defined. There are various convenience methods attached to this
-    class, which will likely grow to make looking up configuration
-    values as easy as possible.</P>
-
-    <P>The organization of configuration properties is based on the
-    fully qualifed path of the class that requires the property. For
-    example, the "about" box contains a messages, so it looks for the
-    property "<TT>org.apache.tools.ant.gui.About.message</TT>" for the text
-    message it should display. Therefore, the <TT>ResourceManager</TT>
-    method <TT>getString()</TT> takes a <TT>Class</TT> instance as
-    well as a <TT>String</TT> key. Please see the
-    <TT>ResourceManager</TT> documentation for more information. Given
-    this support, no user visible strings should appear in the source
-    code itself.</P>
-
-    <H2>Other Resources</H2>
-    
-    <P>Other information about development on Antidote:</P>
-    <UL>
-      <LI><A HREF="uml/index.html">Antidote UML Static Class Diagrams</A></LI>
-      <LI><A HREF="gui-requirements.html">Antidote Feature Wishlist</A></LI>
-      <LI><A HREF="new-module-howto.html">Antidote Module HOWTO</A></LI>
-    </UL>
-
-    <HR>
-    <P ALIGN="center">Copyright &copy; 2000 Apache Software Foundation. All
-    rights Reserved.</P>
-
-  </BODY>
-</HTML>
diff --git a/src/antidote/docs/gui-ideas.txt b/src/antidote/docs/gui-ideas.txt
deleted file mode 100644
index 7d19005..0000000
--- a/src/antidote/docs/gui-ideas.txt
+++ /dev/null
@@ -1,335 +0,0 @@
-(NOTE: the following text is a vision for an Ant GUI by Stefan Vaillant
-<mailto:Stephan.Vaillant@nokia.com> called Anttool. It is included here in the
-Antidote docs section as it provides a better vision for what the GUI should be
-than the current requirements document, and should be considered an integral
-part of the long-term plans for Antidote. Simeon Fitch)
-
-
------------------------------------------------------------------------
-
-********************
-**Anttool Proposal**
-********************
-
-By: Stefan Vaillant <mailto:Stephan.Vaillant@nokia.com>
-
------------------------------------------------------------------------
-
-Anttool Overview:
------------------
-
-With Anttool a user can manage the build process for existing ant build files.
-By using the grafical user interface, the user can adjust certain properties to
-his environment, start and cancel builds, monitor their progress and call
-appropiate programs to fix problems.  It is not possible to modify the build
-file. Instead, an external XML editor or antidote should be used.
-
-
-For inexperienced users, the tool provides an easy and efficient way to install
-open source software: load software to the local system, build it and install
-it.  The tool can be used without any knowledge of XML or the ant DTD.  Instead,
-the user just adjusts the relevant properties to his environment and starts the
-build.
-
-For programmers, the tool supports the basic build/test/edit cycle.  Given an
-existing ant build file, the programmer can use the grafical user interface to
-execute individual targets, browse the effects of the build and start editors to
-fix problems that occured during the build.
-
-
-I general, anttool is ment for users who see the build file as a black-box: They
-are not primarily interested in the internal structure of the build file nor in
-modifiying it.  Instead, they want to call ant with the appropiate arguments and
-want to see, what is the result of the build.
-
-Therefore, anttool only shows targets and properties that are relevant for these
-users. Tasks are not shown at all.
-
-
-Anttool User Interface:
------------------------
-
-The user interface of anttool is devided into two panels: The "Control Panel"
-shows all loaded build files and their targets.  The "Project Panel" shows
-details for one project, including the logging information from the last
-build(s), the editable properties of an build and relevant files of that build.
-
-By default, the user interface does not show targets or properties that have no
-description or a descriuption starting with a ".".  These targets or properties
-are called "hidden" in the following text.
-
-
-The Control Panel:
-------------------
-
-The Control Panel shows a tree with all loaded projects.  For each project the
-non-hidden targets are shown.  (Anttool can be configured to show also hidden
-targets, see Configuration below).
-
-If you move the cursor over a project or target, a description for it will be
-shown as a tooltip.
-
-Two icons are prefixing the name of the project or target: one is visualizing
-the state of the project or target, the other is a button to start or cancel the
-project or target.  The state icon can have the following different colors:
-	- green if the execution was successfull.
-	- yellow if an execution is needed because the output files are
-      out-of-date [not possible with current ant version?]
-	- red if the execution resulted in errors.
-	- white (i.e. nothing) if the state is unknown
-[Alternative: what about buttons labeled with the target name?
- The button is used for start/stopping the build.
- No tree required then. ]
-
-	
-If you select a node in the tree, the Project Panel (see below) will show
-details for the relevant project.
-
-If you right-click on a node in the tree, a pop-up menu will show the following
-commands:
-	edit: open XML editor at selected element
-	open: in new window  [? is that needed]
-		
-		
-The Project Panel:
-------------------
-
-The Project Panel consists of three tabs: 
-
-The "Build Log" tab shows information about the last build(s), the "Properties"
-tab shows non-hidden properties and the "Files" tab shows files relevant for the
-project.
-
-The Build Log Tab:
-
-In this tab you can monitor the build on detail.  A tree shows the executed
-targets of a build, their tasks and log messages for each task.  The start time
-is noted after the build name.
-
-In the pop-up menu, you can choose from the following commands:
-		edit: open editor for shown file at shown location.
-		show log level->Error/Warning/Info/Verbose/Debug
-			(only the items possible are shown,
-			 see configuration.)
-
-The Properties Tab:
-
-The properties tab shows all non-hidden properties of the project.  (optionally,
-also hidden properties can be shown, see Configuratin below.)
-
-Each Property is shown as follows:
-	<Name>: <entry field>     <reset checkbox>
-where
-       	<Name> is name of the property, with "." and "-" replaced by " "
-	and first letters capatilized.
-	<entry field> is a text field to enter a value for the properts.
-	In some cases, special benas are shown:
-		Name ends with ".dir"	=> provide a file chooser to select a directory
-		Name ends with ".lib"   => provide a file chooser to select .jar file
-		Name is "build.compiler" => provide combo box with possible compilers.
-			[selecting JDK's seems not well support in ant?
-			 If you have e.g. JDK 1.2.1 and 1.2.2 installed,
-	 		 how to easily select the compiler version?]
-		Name ends with ".jdk"   => let the user select one of the configures
-JDK's
-			[more general then build.compiler, but supported by ant?]
-		Name ends with ".file"  => provide a file chooser
-	<reset checkbox> resets the value to the (default) value that is
-contained in the .xml file
-
-All values entered are save in a file
-$HOME/.ant/<full-path-build-file>.property.  (See also Configuration.)
-
-If property values are changed, then ant is called with
-main("-Dproperty1=value1 ..").
-	
-[show also (class)pathes as property, use id instead of name?  But: is that
- required? Why not simply define individual properties for the required
- libraries and combine them then to a path.  ]
-		
-
-	
-The File Set Tab:
-
-This tab show files that are releated to the project.  For each non-hidden
-fileset of the project, the id of the fileset is shown and all files included to
-that fileset.
-
-If you right-click on a file, a pop-up menu is shown with which you can start
-programs to deal with these files.  The relevant configuration information is
-extracted from the existing operation system settings.
-
-[or: one tab for each fileset?] 
-
-Repository:
------------
-
-[This needs some more work.]
-
-Anttool also simplyfies the loading of source files form the web.  By using the
-repository mechanism of anttool, you can perform the complete workflow from
-download to install with just a few mouse clicks:
-
-	select one out of the Repositories from the main menu.
-		Anttool will query the server for a list of up-to-date
-		packages.
-		
-	select one of the presented packages
-		Anttool will then download the selected package:
-		In case a .zip (or similar) package was selected,
-		the file is downloaded and
-		unpacked to "/Users/"<name>.
-		In case a CVS repository was selected, 
-		the files are downloaded to "/Users/"<name>.
-		
-		Afterwards
-		a file with the name "build.xml" is searched 
-		and loaded to anttool.
-		Optionally, the file "$HOME/.ant/default.properties"
-		is copied to "$HOME/.ant/<full-path-build-file>.properties,
-		overwriting the defaults in the downloaded build file
-		with your preferences (e.g. installation directory, JDK, ...)
-		[copy only relevant properties?]		
-
-	check if the properties in the selected project match your intention.
-
-	press "start" on the project
-		
-
-Anttool Configuration:
------------------------
-
-The menu "Tools" in the menu bar allows you to adjust Anttool behavior to your
-preferences and environment.
-
-The following menu entries are available:
-
-Configure JDKs:
-	Can be used to configure the JDKs available
-	on your system. The configured values are offered
-	for properties that end with ".jdk".
-	
-	The screen offers a table to edit a set of names
-	and pathes.
-	By pressing "rescan" the system is scanned for new JDKs
-	by consulting the installed software.
-
-	[Should there be one combo box
-		Anttool JDK:   <internal|JDK list|....>
-	 that indicates the JDK that should be used to run ant?
-	 Should that be even project specific setting?
-	]
-
-Configure Repository: [better name?]
-	Anttool is aware of certain places where Anttool supporting software
-	can be found on the internet.
-	These URLs can be configured here.
-	These repositories are offered to the user when he selects 
-	the "Repository" menu in the menu bar.
-
-	The screen offers a table to edit a set of names
-	and URLs.
-
-Configure Libraries:
-	Can be used to configure the libraries available
-	on your system. The configured values are offered
-	for properties that end with ".lib".
-	
-	The screen offers a table to edit a set of names
-	and pathes.
-	By pressing "rescan" the system is scanned for new libraries
-	by searching below a directory.
-
-
-Preferences:
-	show hidden targets: bool 
-		[or: offer addition menu to start hidden targets?]
-	show hidden filesets: bool
-	show hidden properties: bool	
-
-	log level used for build: ...
-	number of log files saved: 
-	number of log files shown in UI:
-
-	Directory to save property values:
-
-	file name remembered in file menu: 
-
-	checkig for new files in filesets: [seconds]	
-	autoload new buildfile: [seconds, 0= never]
-
-
-General features:
------------------
-The menubar menu's are 
-	File
-		Open...
-		Close
-		-------
-		1 buildfile.xml
-		2 ....
-		3 ...
-		------
-		Exit
-	Repository
-		Apache...		as configured
-		<name2>...	        
-		....	      	
-	Options
-		Configure JDKs...
-		Configure Repository...
-		Configure Libraries...
-		Preferences...
-		Look&Feel...
-	Help
-		Antool Help...
-		Ant Web Home		calls netscape
-		-----------
-		About...
-
-
-Build files can be dragged and dropped into anttool.	
-
-The set off loaded build files should be saved on exit and
-reloaded on restart automatically.
-
-
-
-Technical questions on the internals of anttool
------------------------------------------------
-- How to detect if a target needs to be run (yellow color)?
-  Seems not be possible currently.
-  One solution [what will ant 2.0 contain?]:
-	Define new abstract class "MonitoredTask", inherited from Task.
-	Copy, Javac, javadoc, etc inherit from these.
-	MonitoredTask defines:
-		execute() { prepareTask(); if (executionNeeded) { perform() }; }
-		executionNeeded: boolean // signals that I need to run because output is
-older than input
-		perform()
-		performMap() // what will happen with each file, i.e.
-				Main.java  -> Main.class
-				UI.java    -> UI.class
-				...
-			     or
-			        Main.class -> lib.jar
-				UI.class   -> lib.jar
-			     size of Map should be equal to number of steps reported in loggin.
-
-  Only "executionNeeded" is required to add a yellow flag for targets.  The
-  performMap would be nice to have. It could be used later to show a finegrained
-  graph (or matrix) about what is happening during a build.
-
-  Add configuration item on how often call the funtions (i.e. how often to do
-  the polling.)
-	
-- How to do the calling of the external tools?
-	XML editor? (how to generate the dtd? How to execute "antstructure"
-    withour changing the build file.)
-	How to simulate the windows functionality for e.g. open java source with
-    JBuilder?
-		How to read the registry information?
-		How to do DDE calls?
-
-- is there any free installation tool for java?
-	(to install anttool itself)
diff --git a/src/antidote/docs/gui-requirements.html b/src/antidote/docs/gui-requirements.html
deleted file mode 100644
index 079684a..0000000
--- a/src/antidote/docs/gui-requirements.html
+++ /dev/null
@@ -1,250 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "strict.dtd">
-<HTML> 
-  <HEAD> 
-	 <TITLE>Ant GUI Feature List</TITLE> 
-  </HEAD> 
-  <BODY> 
-    <H1>Ant GUI Feature List</H1>
-    <P>Version 0.4 (2000/11/06)</P>
-    <P>Authors: 
-    <A HREF="mailto:simeon@fitch.net">Simeon H.K. Fitch</A>,
-    <A HREF="mailto:chris@christophertodd.com">Chris Todd</A>,
-    <A HREF="mailto:clint.combs@contrado.com">Clint Combs</A>,
-    <A HREF="mailto:conor@ebinteractive.com.au">Conor MacNeill</A>,
-    <A HREF="mailto:matthew.k.heun@gaerospace.com">Matthew Kuperus Heun</A>,
-    <A HREF="mailto:duncan@x180.com">James Duncan Davidson</A>
-    
-    
-    <P>The purpose of this document is to capture the proposed feature list for
-    the Ant Graphical User Interface. This is not a hard requirements
-    specification; you won't find the word "shall" in it (other than that one
-    time). :-)</P>
-
-    <P>In general, the purpose of the GUI is to allow the quick generation and
-    modification of Ant build files, helping the user define their build process
-    and track down build problems. For it to be successful it must make the user
-    more efficient and productive, insofar as their involvement in build
-    management and use of Ant goes. It should first address the needs of the
-    novice Ant user, and then add abilities for the "power" user. This does not
-    imply that the UI should be "dumbed down", it just means that usability
-    should come before slick but complicated features.</P>
-
-    <P>The features are in a loose order of expressed interested by
-    contributors.</P>
-
-    <!-- Section List -->
-    <OL TYPE="A">
-
-
-      <LI><H2>Build Management</H2></LI>
-      <P>Once a build file is created, the user will want to start and
-      stop it from the UI. This will serve both as a testing facility as well as
-      a general compile tool. Monitoring of the build can occur through the Ant
-      BuildListener interface.</P>
-      <OL>
-        <LI>Build execution.</LI>
-        <OL TYPE="a">
-          <LI>Initiate a build starting from any task.</LI>
-          <LI>Stop a currently active build.</LI>
-        </OL>
-        <LI>Build monitoring.</LI>
-        <OL TYPE="a">
-          <LI>Provide feedback on the current status of the build.<BR>
-          <I>This is where you can have more fun with the directed graph view,
-          where the current build activity is highlighted on the screen, making
-          the whole thing behave like a dynamic state transition diagram. You
-          can then highlight the node where the build fails, etc.</I></LI>
-          <LI>Show log messages from the build, allowing the user to determine
-          the task they originated from.</LI>
-          <LI>Provide the ability to filter logged messages, adn to display the
-          messages in color codes corresponding to logging levels.</LI>
-          <LI>Allow the installation of custom log listeners</LI>
-          <LI>Record runtime statistics to determine bottleneck in the build
-          process<BR>
-          <I>This may be of limited use, as calling &lt;javac&gt; probably takes
-          the most time. But maybe not.</I></LI> 
-        </OL>
-      </OL>
-      <BR>
-
-      <LI><H2>Build Wizard (auto-configure)</H2></LI>
-      <P>To make starting a new project with Ant as easy as possible, the a
-      wizard type of UI can be used where the user provides some basic
-      information and the application deduces what a default build.xml file for
-      it should look like.</P>
-      <OL>
-        <LI>Project attributes.</LI>
-        <OL TYPE="a">
-          <LI>Provide input for the required project attributes.<BR>
-          <I>This probably means project name and default target.</I></LI>
-        </OL>
-        <LI>Project directories.</LI>
-        <OL TYPE="a">
-          <LI>Ask for the source directory.</LI>
-          <LI>Ask for the destination directory.</LI>
-          <LI>Ask for the necessary JAR files.</LI>
-        </OL>
-        <LI>Project properties.</LI>
-        <OL TYPE="a">
-          <LI>Provide a default set of project properties.<BR>
-          <I>In here would be things like classpath, build.compiler, version,
-          etc.</I></LI>
-          <LI>Allow the user to add to or remove from properties the default set
-          of properties.</LI>
-        </OL>
-        <LI>Task creation</LI>
-        <OL TYPE="a">
-          <LI>Provide a list of "standard" tasks to insert into the project.<BR>
-          <I>This would be tasks like &lt;javac&gt; and
-          &lt;javadoc&gt;.</I></LI>
-          <LI>Generate default init, compile, javadoc, and clean targets.</LI>
-        </OL>
-        <LI>Creation review.</LI>
-        <OL TYPE="a">
-          <LI>Provide a review of the contents of the generated build.xml
-          file.</LI>
-          <LI>Allow the user to go back to any step in the process to change a
-          setting.</LI> 
-          <LI>Prompt the user to save the build.xml file.</LI>
-        </OL>
-      </OL>
-      <BR>
-
-
-      <LI><H2>IDE Integration</H2></LI>
-      <P>Components of the Ant GUI shoule support plugging into IDEs and code
-      editors.</P>
-      <OL>
-        <LI>Emacs</LI>
-        <OL TYPE="a">
-          <LI>Provide support for launching builds from emacs, and notification
-          of errors.</LI>
-        </OL>
-        <LI>JEdit</LI>
-        <OL TYPE="a">
-          <LI>Provide JEdit plug-in.</LI>
-        </OL>
-        <LI>ProjectBuilder</LI>
-        <OL TYPE="a">
-          <LI>Provide integration with OSX ProjectBuilder.</LI>
-        </OL>
-        <LI>NetBeans</LI>
-        <OL TYPE="a">
-          <LI>Provide integration with the NetBeans IDE.</LI>
-        </OL>
-      </OL>
-      <BR>
-
-
-      <LI><H2>Project Editing</H2></LI>
-      <P>The Ant UI will be centered around the project file. All operations of
-      the UI will be on a project, whether it be existing or new. <I>How
-      sub-projects are handled (i.e. via the &lt;ant&gt; task) needs to be
-      determined.</I></P>
-      <OL>
-        <LI>Load a project.</LI>
-        <OL TYPE="a">
-          <LI>Read the native Ant XML format as defined by the Ant users'
-          manual.</LI>
-          <LI>When possible, automatically handle changes in the Ant element
-          set, or at least changes to the task set, as well as the valid set of
-          attributes.<BR>
-          <I>Possible approach: load "default.properties", use
-          introspection to discover attribute set, then reference some other
-          mechanism for attributes that are manifested as properties.</I>
-          </LI>
-          <LI>Report errors in the XML source.</LI> 
-          <LI>Provide a list of recently opened documents for 
-          quick reloading.</LI>
-        </OL>
-        <LI>View project contents.</LI>
-        <OL TYPE="a">
-          <LI>View the project in it's XML source format.</LI>
-          <LI>View the project in a non-source format.<BR>
-          <I>This is left ambiguous to keep the implementation out of the
-          requirements. The different presentation formats are likely to evolve
-          over time.</I>
-          </LI>
-          <LI>View the project properties.</LI>
-          <LI>View the project contents (tasks).</LI>
-        </OL>
-        <LI>Modify a project.</LI>
-        <OL TYPE="a">
-          <LI>Edit via the XML source.</LI> 
-          <LI>Edit properties via a property sheet.</LI>
-          <LI>Provide facility for editing XML references used in the build
-          file.</LI> 
-        </OL>
-        <LI>Save a project.</LI>
-        <OL TYPE="a">
-          <LI>Save to the native Ant XML format as defined by the Ant users'
-          manual.</LI> 
-          <LI>Default save name is "build.xml".</LI>
-          <LI>Verify before overwriting existing file when in "Save as"
-          mode.</LI> 
-        </OL>
-        <LI>Create a new project.</LI>
-        <OL TYPE="a">
-          <LI>Define a project name.</LI>
-          <LI>Define the default target.</LI>
-          <LI>Define the project base directory.</LI>
-        </OL>
-      </OL>
-      <BR>
-
-
-      <LI><H2>Task Editing</H2></LI>
-      <P>Tasks define what it is that Ant is to do, and will be the object most
-      edited in the UI. <U>Task</U> <I>is to</I> <U>Paragraph</U> <I>as</I>
-      <U>Project</U> <I>is to</I> <U>Document</U>.  
-      <OL>
-        <LI>View tasks.</LI>
-        <OL TYPE="a">
-          <LI>View a sorted list of tasks.<BR>
-          <I>Provide sorting based on name, depth in dependency tree, how many
-          tasks depend in it...</I></LI>
-          <LI>View tasks as a directed graph.<BR>
-          <I>Need a good graph editing library. Looked at <A
-          HREF="http://gef.tigris.org">GEF</A> but it still needs a lot of
-          work, to make it easily reusable. Long term status unknown.</I></LI>
-          <LI>View tasks as a dependency tree.</LI>
-          <LI>View task as a properties sheet.</LI>
-          <LI>Provide dependency viewing, both immediate and "flattened"
-          views.</LI> 
-        </OL>        
-        <LI>Modify task.</LI>
-        <OL TYPE="a">
-          <LI>Allow editing of a task via a property sheet.</LI>
-          <LI>Allow editing of a task via XML source.</LI>
-          <LI>Allow the graphical editing of task dependencies<BR>
-          <I>This is where you can go hog wild with the component wiring type of
-          UI. </I></LI>
-          <LI>Allow non-graphical editing of dependencies.</LI>
-          <LI>Provide detection of circular dependencies.</LI>
-          <LI>Facilitate definition of conditional tasks with evaluation
-          editor.</LI> 
-        </OL>
-      </OL>
-      <BR>
-
-      <LI><H2>Build File Source Editing</H2></LI>
-      <P>This section listes desired features for editing the Ant build file
-      directly. Some components of this could be met by a generic XML editing
-      capability, but other parts will be Ant specific features.</P>
-      <OL>
-        <LI>XML Editor.</LI>
-        <OL TYPE="a">
-          <LI>Provide syntax higlighting.</LI>
-          <LI>Provide auto-indentation.</LI>
-          <LI>Provide smart tag completion.</LI>
-          <LI>Provide visual highlighting of syntax errors.</LI>
-          <LI>Support auto-reparsing of contents and model update.</LI>
-        </OL>
-    </OL>
-
-    <HR>
-    <P ALIGN="center">Copyright &copy; 2000 Apache Software Foundation. All
-    rights Reserved.</P>
-
-  </BODY>
-</HTML>
diff --git a/src/antidote/docs/new-module-howto.html b/src/antidote/docs/new-module-howto.html
deleted file mode 100644
index db01408..0000000
--- a/src/antidote/docs/new-module-howto.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "strict.dtd">
-<HTML> 
-  <HEAD> 
-     <TITLE>Antidote New Module HOWTO</TITLE> 
-  </HEAD> 
-
-  <BODY> 
-
-    <H1>Antidote New Module HOWTO</H1>
-
-    <P>Version 0.1 (2000/12/18)</P>
-
-    <P>Authors: 
-    <A HREF="mailto:simeon@fitch.net">Simeon H.K. Fitch</A>
-    </P>
-
-    <H2>Introduction</H2> 
-    
-    <P>The purpose of this document is to provide an overview of the
-    basic steps one must undertake to add a new module to
-    Antidote. Please see <A HREF="design-overview.html">The Antidote
-    Design Overview</A> for information on what a module is and how it
-    fits into Antidote. If you've already got all that, then read
-    on!</P>
-
-    <P>NB: <I>Please submit updates and criticisms to this, particularly
-    areas that were unclear, missing, or difficult to follow.</I></P>
-
-    <H2>1) Specialize <TT>org.apache.tools.ant.gui.core.AntModule</TT></H2>
-
-    <P>All modules must inherit from the <TT>AntModule</TT>
-    class. This will probably irritate some of you, but it essentially
-    enforces inheritance from <TT>javax.swing.JComponent</TT> and
-    provides encapsulated handling of the <TT>AppContext</TT> instance
-    that is so important to this class.</P>
-
-    <P>Your module is required to implement the
-    <TT>AntModule.contextualize(AppContext)</TT> method. The first
-    thing this method should do is call
-    <TT>AntModule.setContext(AppContext)</TT>, and then it is safe for
-    it to begin constructing its display, using whatever resources it
-    needs from the given <TT>AppContext</TT> instance. Think of this
-    in a similar manner to <TT>Applet.init()</TT> or
-    <TT>Servlet.init()</TT>.
-
-    <H2>2) Update 
-       <TT>org/apache/tools/ant/gui/resources/antidote.properties</TT></H2>
-
-    <H3>2a) Externalize All Displayable Strings</H3>
-
-    <P>All displayable strings must be externalized to the
-    <TT>antidote.properties</TT> file, and looked up via the
-    <TT>AppContext.getResources()</TT> method after the
-    <TT>AntModule.contextualize()</TT> method has been called. Follow
-    the naming convention currently used in the properties file and
-    you should have to problems. This task should be done
-    <B>during</B> development of your module. Under no cercumstances
-    should your module be submitted or committed without this task
-    being completed. Remember that Antidote has an international
-    audience.</P>
-
-    <H3>2b) Add Module to List of Auto-Loaded Modules</H3>
-
-    <P>Look for the properties with the format
-    <TT>org.apache.tools.ant.gui.Antidote.xxx.modules</TT> where
-    <TT>xxx</TT> is one of {left | right | top | bottom}. Depending on
-    where you want your module to appear, and the order that you want
-    it to appear in relationship to the other modules, add the class
-    name of your module appropriately. If multiple modules are listed
-    for a single property (via a comma delimited list), then each
-    module will have it's own tab in a <TT>javax.swing.JTabbedPane</TT>.
-
-    <P>NB:<I>This goofy way of constructing the main screen will probably 
-    change to something much more general (but not as general as, say 
-    <A HREF="http://www.alphaworks.ibm.com/tech/bml">BML</A>).</P>
-
-    <H2>Run it!</H2>
-    <P>That should be all you need to do, at least to get your module
-    plugged in. Check out the source code for
-    <TT>ProjectNavigator</TT> and <TT>PropertyEditor</TT> for module
-    examples that use the various facilities of the Antidote
-    framework.</P>
-
-    <HR>
-    <P ALIGN="center">Copyright &copy; 2000 Apache Software Foundation. All
-    rights Reserved.</P>
-
-  </BODY>
-</HTML>
diff --git a/src/antidote/docs/uml/index.html b/src/antidote/docs/uml/index.html
deleted file mode 100644
index 4f685e9..0000000
--- a/src/antidote/docs/uml/index.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "strict.dtd">
-<HTML> 
-  <HEAD> 
-     <TITLE>Antidote UML Static Class Diagrams</TITLE> 
-  </HEAD> 
-
-  <BODY> 
-
-    <H1>Antidote UML Static Class Diagrams</H1>
-
-    <P>Version 0.1 (2000/12/19)</P>
-
-    <P>Authors: 
-    <A HREF="mailto:simeon@fitch.net">Simeon H.K. Fitch</A>
-    </P>
-
-    <H2>Diagram Images</H2>
-
-    <P>The following UML static class diagrams were generated using <A
-    HREF="http://www.togethersoft.com">Together/J</A>, reverse engineering the
-    existing code. They are no means guaranteed to be kept up to date, and are
-    only a snapshot of development in progress. Their purpose is to help give
-    people a quick glance a the class structure of the various packages that
-    make up.</P>
-
-    <OL>
-    <LI><A HREF="org-apache-tools-ant-gui.gif">org.apache.tools.ant.gui</A></LI>
-    <LI><A HREF="org-apache-tools-ant-gui-acs.gif">org.apache.tools.ant.gui.acs</A></LI>
-    <LI><A HREF="org-apache-tools-ant-gui-core.gif">org.apache.tools.ant.gui.core</A></LI>
-    <LI><A HREF="org-apache-tools-ant-gui-command.gif">org.apache.tools.ant.gui.command</A></LI>
-    <LI><A HREF="org-apache-tools-ant-gui-customizer.gif">org.apache.tools.ant.gui.customizer</A></LI>
-    <LI><A HREF="org-apache-tools-ant-gui-event.gif">org.apache.tools.ant.gui.event</A></LI>
-    <LI><A HREF="org-apache-tools-ant-gui-ide.gif">org.apache.tools.ant.gui.ide</A></LI>
-    <LI><A HREF="org-apache-tools-ant-gui-modules.gif">org.apache.tools.ant.gui.modules</A></LI>
-    <LI><A HREF="org-apache-tools-ant-gui-modules-console.gif">org.apache.tools.ant.gui.modules.console</A></LI>
-    <LI><A HREF="org-apache-tools-ant-gui-modules-edit.gif">org.apache.tools.ant.gui.modules.edit</A></LI>
-    <LI><A HREF="org-apache-tools-ant-gui-util.gif">org.apache.tools.ant.gui.util</A></LI>
-    </OL>
-
-    <HR>
-    <P ALIGN="center">Copyright &copy; 2000 Apache Software Foundation. All
-    rights Reserved.</P>
-  </BODY>
-</HTML>
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-acs.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-acs.gif
deleted file mode 100644
index 215b26d..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui-acs.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-command.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-command.gif
deleted file mode 100644
index d8f28a2..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui-command.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-core.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-core.gif
deleted file mode 100755
index da7c4c7..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui-core.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-customizer.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-customizer.gif
deleted file mode 100644
index a7a0d8b..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui-customizer.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-event.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-event.gif
deleted file mode 100644
index 16dff21..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui-event.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-ide.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-ide.gif
deleted file mode 100644
index b8fe343..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui-ide.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-modules-console.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-modules-console.gif
deleted file mode 100755
index fced09c..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui-modules-console.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-modules-edit.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-modules-edit.gif
deleted file mode 100755
index 0bf9f76..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui-modules-edit.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-modules.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-modules.gif
deleted file mode 100755
index 6530e8f..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui-modules.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-util.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-util.gif
deleted file mode 100644
index 482c86d..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui-util.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui.gif
deleted file mode 100644
index 59ab84f..0000000
--- a/src/antidote/docs/uml/org-apache-tools-ant-gui.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/etc/manifest b/src/antidote/etc/manifest
deleted file mode 100644
index c06eb52..0000000
--- a/src/antidote/etc/manifest
+++ /dev/null
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: org.apache.tools.ant.gui.Main
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/About.java b/src/antidote/org/apache/tools/ant/gui/About.java
deleted file mode 100644
index aa07f16..0000000
--- a/src/antidote/org/apache/tools/ant/gui/About.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui;
-import org.apache.tools.ant.gui.util.WindowUtils;
-
-import org.apache.tools.ant.gui.core.AppContext;
-import javax.swing.*;
-import java.io.IOException;
-import java.util.*;
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-
-/**
- * Dialog displaying information on the application.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class About extends JDialog {
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */
-	public About(AppContext context) {
-		super(context.getParentFrame(), true);
-		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-
-		String version = null;
-		String date = null;
-
-		Properties props = new Properties();
-
-		try {
-			props.load(getClass().getResourceAsStream("version.txt"));
-		}
-		catch(IOException ex) {
-			// XXX log me.
-			ex.printStackTrace();
-			return;
-		}
-
-		version = props.getProperty("VERSION", "??");
-		date = props.getProperty("DATE", "??");
-
-		String message = context.getResources().getMessage(
-			getClass(), "message", 
-			new Object[] { version, date });
-
-		String title = context.getResources().getString(
-			getClass(), "title");
-		setTitle(title);
-
-        JTextPane contents = new JTextPane();
-        contents.setContentType("text/html");
-        contents.setText(message);
-        contents.setEditable(false);
-        // XXX Still not sure why this is necessary. JTextPane doesn't 
-        // seem to report a "true" preferred size.
-        contents.setPreferredSize(
-            new Dimension(contents.getPreferredSize().width, 450));
-		getContentPane().add(BorderLayout.CENTER, contents);
-
-		// Add the OK button.
-		JButton ok = new JButton(
-			context.getResources().getString(getClass(), "ok"));
-		ok.addActionListener(new ActionHandler());
-		JPanel p = new JPanel();
-		p.add(ok);
-		getContentPane().add(BorderLayout.SOUTH, p);
-
-        getRootPane().setDefaultButton(ok);
-
-
-		// Just go ahead and show it...
-		pack();
-		WindowUtils.centerWindow(context.getParentFrame(), this);
-		setVisible(true);
-	}
-
-	/** Handles press of the OK button. */
-	private class ActionHandler implements ActionListener {
-		public void actionPerformed(ActionEvent e) {
-			WindowUtils.sendCloseEvent(About.this);
-		}
-	}
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/Antidote.java b/src/antidote/org/apache/tools/ant/gui/Antidote.java
deleted file mode 100644
index 6f9eb6e..0000000
--- a/src/antidote/org/apache/tools/ant/gui/Antidote.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui;
-import org.apache.tools.ant.gui.core.*;
-import javax.swing.*;
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.lang.reflect.Constructor;
-
-/**
- * The root class for the Ant GUI. Assembles all the graphical components
- * based on the configuration files.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class Antidote extends JComponent {
-    /** Source of application state data. */
-    private AppContext _context = null;
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public Antidote(AppContext context) {
-        setLayout(new BorderLayout());
-
-        _context = context;
-
-        // Add the various modules to the editing area.
-        JSplitPane splitter = new JSplitPane();
-        splitter.add(JSplitPane.LEFT, populateModules("left"));
-        splitter.add(JSplitPane.RIGHT, populateModules("right"));
-        // This is necessary because, frankly, the JSplitPane widget
-        // sucks, and doesn't provide enought (working) control over the
-        // initial size of it's subcomponents. setDividerLocation(double)
-        // doesn't seem to work until after the widget is visible.
-        splitter.setPreferredSize(new Dimension(500, 300));
-
-        // Top bottom splitter. 
-        JSplitPane splitter2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
-        splitter2.setOneTouchExpandable(true);
-
-        splitter2.add(JSplitPane.TOP, splitter);
-        splitter2.add(JSplitPane.BOTTOM, populateModules("bottom"));
-
-        add(BorderLayout.CENTER, splitter2);
-        splitter2.resetToPreferredSizes();
-
-        add(BorderLayout.NORTH, populateModules("top"));
-
-        setPreferredSize(new Dimension(640, 480));
-    }
-
-
-	/** 
-	 * Instantiate the configured modules.
-	 * 
-     * @return Component containing the modules(s).
-	 */
-    private JComponent populateModules(String prefix) {
-
-        String[] classNames = _context.getResources().
-            getStringArray(getClass(), prefix + ".modules");
-
-        AntModule[] modules = new AntModule[classNames.length];
-
-        for(int i = 0; i < classNames.length; i++) {
-            try {
-                Class type = Class.forName(classNames[i]);
-
-                modules[i] = (AntModule) type.newInstance();
-                modules[i].contextualize(_context);
-            }
-            catch(Exception ex) {
-                // XXX log me.
-                ex.printStackTrace();
-            }
-        }
-
-        if(modules.length == 1) {
-            return modules[0];
-        }
-        else if(modules.length > 1) {
-            JTabbedPane tabbed = new JTabbedPane(JTabbedPane.BOTTOM);
-
-            for(int i = 0; i < modules.length; i++) {
-                tabbed.addTab(modules[i].getName(), modules[i]);
-            }
-            return tabbed;
-        }
-        else {
-            return new JLabel("I shouldn't be here...");
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/Args.java b/src/antidote/org/apache/tools/ant/gui/Args.java
deleted file mode 100644
index 9c9581a..0000000
--- a/src/antidote/org/apache/tools/ant/gui/Args.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.gui;
-import org.apache.tools.ant.gui.core.ResourceManager;
-
-/**
- * Class encapsulating the parsing of command-line arguments for Antidote.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class Args {
-
-    private ResourceManager _resources = null;
-    private boolean _wizardMode = false;
-    private String _fileName = null;
-    private boolean _debugMode = false;
-
-    /** 
-     * Ctor for parsing command line arguments.
-     * 
-     * @param args Arguments to parse.
-     */
-    public Args(String[] args) {
-        for(int i = 0; i < args.length; i++) {
-            String arg = args[i];
-            if(i == args.length - 1 && !arg.startsWith("-")) {
-                _fileName = arg;
-            }
-            else if(arg.startsWith("-h")) {
-                System.out.println(getUsage());
-                System.exit(0);
-            }
-            else if(arg.equals("-wizard")) {
-                _wizardMode = true;
-            }
-            else if(arg.equals("-debug")) {
-                _debugMode = true;
-            }
-            else {
-                String msg = getResources().getMessage(
-                    "invalidArg", new Object[] { arg });
-                abort(msg);
-            }
-        }
-    }
-
-    /** 
-     * Get the resources, loading them if necessary.
-     * 
-     * @return Loaded resources.
-     */
-    private ResourceManager getResources() {
-        if(_resources == null) {
-            _resources = new ResourceManager(
-                "org.apache.tools.ant.gui.resources.args");
-        }
-        return _resources;
-    }
-
-    /** 
-     * Print message and exit.
-     * 
-     * @param error Error message to print.
-     */
-    private void abort(String error) {
-        System.err.println(error);
-        System.err.println(getUsage());
-        System.exit(1);
-    }
-
-    /** 
-     * Get the command line usage of Antidote.
-     * 
-     * @return Command line usage help.
-     */
-    public String getUsage() {
-        return getResources().getString("usage");
-    }
-
-    /** 
-     * Get the build filename.
-     * 
-     * @return Build file name.
-     */
-    public String getBuildFile() {
-        return _fileName;
-    }
-
-    /** 
-     * Determine if wizard mode was requested for generating a new 
-     * build file.
-     * 
-     * @return True if wizard mode, false otherwise.
-     */
-    public boolean isWizardMode() {
-        return _wizardMode;
-    }
-
-    /** 
-     * Determine if debug mode was requested.
-     * 
-     * @return True if debug mode, false otherwise.
-     */
-    public boolean isDebugMode() {
-        return _debugMode;
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/Main.java b/src/antidote/org/apache/tools/ant/gui/Main.java
deleted file mode 100644
index 5047a0a..0000000
--- a/src/antidote/org/apache/tools/ant/gui/Main.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui;
-import org.apache.tools.ant.gui.core.*;
-import org.apache.tools.ant.gui.util.XMLHelper;
-import org.apache.tools.ant.gui.wizard.Wizard;
-import org.apache.tools.ant.gui.wizard.build.BuildData;
-import org.apache.tools.ant.gui.wizard.WizardListener;
-import org.apache.tools.ant.gui.command.LoadFileCmd;
-import org.apache.tools.ant.gui.event.EventBus;
-import org.apache.tools.ant.gui.acs.ACSFactory;
-import javax.swing.*;
-import java.awt.BorderLayout;
-import java.io.File;
-
-/**
- * Launch point for the Antidote GUI. Configurs it as an application.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class Main {
-	/** 
-	 * Application start.
-	 * 
-	 * @param args TBD
-	 */
-    public static void main(String[] args) {
-        XMLHelper.init();
-
-        Args settings = new Args(args);
-
-
-        try {
-            JFrame f = new JFrame("Antidote");
-            f.setDefaultCloseOperation(3 /*JFrame.EXIT_ON_CLOSE*/);
-            AppContext context = new AppContext(f);
-
-            if(!settings.isWizardMode()) {
-                EventResponder resp = new EventResponder(context);
-                Antidote gui = new Antidote(context);
-
-                JMenuBar menu = context.getActions().createMenuBar();
-                f.setJMenuBar(menu);
-                f.getContentPane().add(BorderLayout.CENTER, gui);
-                f.getContentPane().add(BorderLayout.NORTH, 
-                                       context.getActions().createToolBar());
-                
-                // Add the project selection menu.
-                ProjectSelectionMenu ps = new ProjectSelectionMenu(context);
-                ps.insertInto(menu);
-                
-                // Add debugging items.
-                if(settings.isDebugMode()) {
-                    context.getEventBus().addMember(
-                        EventBus.VETOING, new EventDebugMonitor());
-                }
-
-                // Load a build file if one is provided.
-                if(settings.getBuildFile() != null) {
-                    LoadFileCmd load = new LoadFileCmd(context);
-                    load.setFile(new File(settings.getBuildFile()));
-                    load.run();
-                }
-            }
-            else {
-                // We are in wizard mode. Create it.
-                Wizard wiz = new Wizard(new BuildData());
-                // XXX this is temporary for testing. Eventually
-                // it will launch the regular antidote screen with the
-                // results of the wizard.
-                wiz.addWizardListener(new WizardListener() {
-                        public void finished(Object model) {
-                            BuildData data = (BuildData) model;
-                            System.out.println(data.createProject());
-                            System.exit(0);
-                        }
-                        public void canceled() {
-                            System.exit(0);
-                        }
-
-                    });
-
-                f.getContentPane().add(BorderLayout.CENTER, wiz);
-            }
-
-            ImageIcon icon = 
-                context.getResources().loadImageIcon("icon-small.gif");
-            if(icon != null) {
-                f.setIconImage(icon.getImage());
-            }
-            else {
-                System.out.println("Application icon not found.");
-            }
-
-            f.pack();
-            f.setVisible(true);
-
-        }
-        catch(Exception ex) {
-            ex.printStackTrace();
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSBeanDescriptor.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSBeanDescriptor.java
deleted file mode 100644
index 2912e30..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSBeanDescriptor.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import org.apache.tools.ant.gui.core.ResourceManager;
-import java.beans.*;
-
-/**
- * Specialized BeanDescriptor for providing more descriptive information.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-class ACSBeanDescriptor extends BeanDescriptor {
-    public ACSBeanDescriptor(BaseBeanInfo type) {
-        super(type.getType(), type.getCustomizerType());
-        setDisplayName(
-            type.getResources().getString(type.getClass(), "beanName"));
-        setShortDescription(
-            type.getResources().getString(type.getClass(), "beanDescription"));
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSDefaultElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSDefaultElement.java
deleted file mode 100644
index eb82fa6..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSDefaultElement.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import com.sun.xml.tree.ElementNode;
-
-/**
- * Default element used when no other element is specificed.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSDefaultElement extends ACSElement {
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ACSDefaultElement() {
-
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSElement.java
deleted file mode 100644
index e04835b..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSElement.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import com.sun.xml.tree.ElementNode;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeSupport; 
-
-/**
- * Abstract base class for all Ant Construction Set
- * elements. Depends on the JAXP XML library from Sun.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch */
-public abstract class ACSElement extends ElementNode {
-    /** Name of the 'xmlString' property. */
-    public static final String XML_STRING = "xmlString";
-
-    /** Event support. */
-    private PropertyChangeSupport _propSupport = null;
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    protected ACSElement() {
-    }
-
-	/** 
-	 * Get the display name of this.
-	 * 
-	 * @return Display name.
-	 */
-    public String getDisplayName() {
-        return getTagName();
-    }
-
-	/** 
-	 * Get the XML representation of this.
-	 * 
-	 * @return XML representation.
-	 */
-    public String getXMLString() {
-        return toString();
-    }
-
-	/** 
-	 * Set the given attribute.
-	 * 
-	 * @param name Name of the attribute.
-	 * @param value Value of the attribute.
-	 */
-    public void setAttribute(String name, String value) {
-        if(value == null && getAttribute(name).length() != 0) {
-            removeAttribute(name);
-        }
-        else {
-            super.setAttribute(name, value);
-        }
-    }
-
-	/** 
-	 * Add a change listener.
-	 * 
-	 * @param l Listener to add.
-	 */
-    public void addPropertyChangeListener(PropertyChangeListener l) {
-        if(_propSupport == null) {
-            _propSupport = new PropertyChangeSupport(this);
-        }
-        _propSupport.addPropertyChangeListener(l);
-    }
-
-
-	/** 
-	 * Remove a change listener
-	 * 
-	 * @param l Listener to remove.
-	 */
-    public void removePropertyChangeListener(PropertyChangeListener l) {
-        if(_propSupport == null) {
-            _propSupport = new PropertyChangeSupport(this);
-        }
-        _propSupport.removePropertyChangeListener(l);
-    }
-
-	/** 
-	 * Fire a change event to all listener.
-	 * 
-	 * @param propName Name of the property.
-	 * @param oldValue The old value.
-	 * @param newValue The new value.
-	 */
-    protected void firePropertyChange(
-        String propName, Object oldValue, Object newValue) {
-        
-        if(_propSupport != null) {
-            _propSupport.firePropertyChange(propName, oldValue, newValue);
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java
deleted file mode 100644
index 65c391c..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import javax.xml.parsers.*;
-import java.io.IOException;
-import java.io.File;
-import java.net.URL;
-import org.w3c.dom.*;
-import org.xml.sax.SAXException;
-import com.sun.xml.parser.Parser;
-import com.sun.xml.tree.SimpleElementFactory;
-import com.sun.xml.tree.XmlDocument;
-import com.sun.xml.tree.XmlDocumentBuilder;
-import java.util.Properties;
-import java.util.Enumeration;
-import com.sun.xml.parser.Resolver;
-
-/**
- * Factory for loading Ant Construction set elements.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSFactory {
-    /** Singleton instance of the factory. */
-    private static ACSFactory _instance = null;
-
-    /** Element maping. */
-    private static final Properties _elementMap = new Properties();
-
-    static {
-        try {
-            // First we bootstrap our knowledge of the Ant tasks by reading
-            // in the taskdef definitions and assigning them the default
-            // task element class.
-            _elementMap.load(org.apache.tools.ant.taskdefs.Ant.class.
-                          getResourceAsStream("defaults.properties"));
-            Enumeration enum = _elementMap.propertyNames();
-            while(enum.hasMoreElements()) {
-                String name = (String) enum.nextElement();
-                // XXX the name of the class needs to be stored externally.
-                _elementMap.setProperty(
-                    name, "org.apache.tools.ant.gui.acs.ACSTaskElement");
-            }
-
-            // Then we add/override the local definitions.
-            _elementMap.load(ACSFactory.class.
-                             getResourceAsStream("acs-element.properties"));
-        }
-        catch(Throwable ex) {
-            // If something wrong happens here we can't do much more...
-            ex.printStackTrace();
-            System.exit(1);
-        }
-    }
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    private ACSFactory() {
-
-    }
-
-	/** 
-	 * Get an instance of the factory.
-	 * 
-	 * @return Factory instance.
-	 */
-    public static ACSFactory getInstance() {
-        if(_instance == null) {
-            _instance = new ACSFactory();
-        }
-        return _instance;
-    }
-
-	/** 
-	 * Load a project from the given XML file.
-     * XXX fix me.
-	 * 
-	 * @param location Location of the file.
-	 * @return Loaded project.
-	 */
-    public ACSProjectElement load(File location) throws IOException {
-        return load(new URL("file", null, location.getPath()));
-    }
-
-	/** 
-	 * Load a project from the given XML file.
-     * XXX fix me.
-	 * 
-	 * @param location Location of the file.
-	 * @return Loaded project.
-	 */
-    public ACSProjectElement load(URL location) throws IOException {
-        XmlDocument doc = null;
-
-        try {
-            SAXParser sax = SAXParserFactory.newInstance().newSAXParser();
-            Parser parser = (Parser) sax.getParser();
-            XmlDocumentBuilder builder = new XmlDocumentBuilder();
-            builder.setIgnoringLexicalInfo(false);
-            SimpleElementFactory fact = new SimpleElementFactory();
-            fact.addMapping(_elementMap, ACSFactory.class.getClassLoader());
-
-            builder.setElementFactory(fact);
-            
-            parser.setDocumentHandler(builder);
-            parser.setEntityResolver(new Resolver());
-            //parser.setErrorHandler();
-
-            sax.parse(location.openStream(), null);
-
-            doc = builder.getDocument();
-
-        }
-        catch(ParserConfigurationException ex) {
-            ex.printStackTrace();
-            throw new IOException(ex.getMessage());
-        }
-        catch(SAXException ex) {
-            ex.printStackTrace();
-            throw new IOException(ex.getMessage());
-        }
-
-        return (ACSProjectElement) doc.getDocumentElement();
-    }
-
-    /** 
-     * Create a new, empty project.
-     * 
-     * @return Empty project.
-     */
-    public ACSProjectElement createProject() {
-        SimpleElementFactory fact = new SimpleElementFactory();
-        fact.addMapping(_elementMap, ACSFactory.class.getClassLoader());
-        XmlDocument doc = new XmlDocument();
-        doc.setElementFactory(fact);
-        return (ACSProjectElement) doc.createElement("project");
-    }
-
-
-    /** 
-     * Create a new target.
-     * 
-     * @param project Project the target is assigned to.
-     * @return New, unnamed target.
-     */
-    public ACSTargetElement createTarget(ACSProjectElement project) {
-        ACSTargetElement retval = (ACSTargetElement) project.
-            getOwnerDocument().createElement("target");
-        indent(project, 1);
-        project.appendChild(retval);
-        return retval;
-    }
-
-    /** 
-     * Create a new task.
-     * 
-     * @param target Target the task is assigned to.
-     * @return New, unnamed task.
-     */
-    public ACSTaskElement createTask(ACSTargetElement target) {
-        ACSTaskElement retval = (ACSTaskElement) target.
-            getOwnerDocument().createElement("task");
-        indent(target, 2);
-        target.appendChild(retval);
-        return retval;
-    }
-
-    /** 
-     * Create a new property.
-     * 
-     * @param node the Node to assign the property to.
-     * @return New, unnamed property.
-     */
-    public ACSPropertyElement createProperty(ACSElement node) {
-        ACSPropertyElement retval = (ACSPropertyElement) node.
-            getOwnerDocument().createElement("property");
-        // XXX fixme.
-        indent(node, 1);
-        node.appendChild(retval);
-        return retval;
-    }
-
-    /** 
-     * Insert a new line and indentation at the end of the given
-     * node in preparation for a new element being added.
-     * 
-     * @param node Node to append indent to.
-     * @param level Indentation level.
-     */
-    private void indent(ACSElement node, int level) {
-        StringBuffer buf = new StringBuffer("\n");
-        for(int i = 0; i < level; i++) {
-            buf.append("    ");
-        }
-
-        Text text = node.getOwnerDocument().createTextNode(buf.toString());
-        node.appendChild(text);
-    }
-
-
-	/** 
-	 * Test code
-	 * 
-	 * @param args  XML file to parse.
-	 */
-    public static void main(String[] args) {
-        try {
-            ACSFactory f = ACSFactory.getInstance();
-
-            System.out.println(f.load(new File(args[0])));
-        }
-        catch(Exception ex) {
-            ex.printStackTrace();
-        }
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSNamedElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSNamedElement.java
deleted file mode 100644
index 50cde38..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSNamedElement.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import com.sun.xml.tree.ElementNode;
-import java.util.StringTokenizer;
-
-/**
- * Class representing an element with a name and description.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSNamedElement extends ACSTreeNodeElement {
-    /** The 'name' property name. */
-    public static final String NAME = "name";
-    /** The discription property name. */
-    public static final String DESCRIPTION = "description";
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ACSNamedElement() {
-
-    }
-
-	/** 
-	 * Get the target name.
-	 * 
-	 * @return Target name.
-	 */
-    public String getName() {
-        return getAttribute(NAME);
-    }
-
-	/** 
-	 * Set the name.
-	 * 
-	 * @param name New name value.
-	 */
-    public void setName(String name) {
-        String old = getName();
-        setAttribute(NAME, name);
-        firePropertyChange(NAME, old, name);
-    }
-
-	/** 
-	 * Get the long description of the target.
-	 * 
-	 * @return Target description.
-	 */
-    public String getDescription() {
-        return getAttribute(DESCRIPTION);
-    }
-
-	/** 
-	 * Set the description
-	 * 
-	 * @param description New description value.
-	 */
-    public void setDescription(String description) {
-        String old = getDescription();
-        setAttribute(DESCRIPTION, description);
-        firePropertyChange(DESCRIPTION, old, description);
-    }
-
-	/** 
-	 * Get the display name.
-	 * 
-	 * @return Display name.
-	 */
-    public String getDisplayName() {
-        return getName();
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElement.java
deleted file mode 100644
index 02743ab..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElement.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import com.sun.xml.tree.ElementNode;
-import java.net.URL;
-import java.io.File;
-
-/**
- * Class representing a project element in the build file.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSProjectElement extends ACSNamedElement {
-    /** The 'default' property name. */
-    public static final String DEFAULT = "default";
-    /** The 'basdir' property name. */
-    public static final String BASEDIR = "basedir";
-    /** Property name of the persistence location. */
-    public static final String LOCATION = "location";
-    /** The location where this project is persisted. */
-    private URL _location = null;
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ACSProjectElement() {
-    }
-
-	/** 
-	 * Get the type that this BeanInfo represents.
-	 * 
-	 * @return Type.
-	 */
-    public Class getType() {
-        return ACSProjectElement.class;
-    }
-
-	/** 
-	 * Get the name of the default target.
-	 * 
-	 * @return Default target name.
-	 */
-    public String getDefault() {
-        return getAttribute(DEFAULT);
-    }
-
-	/** 
-	 * Set the name of the default target.
-	 * 
-	 * @param def Name of the default target.
-	 */
-    public void setDefault(String def) {
-        String old = getDefault();
-        setAttribute(DEFAULT, def);
-        firePropertyChange(DEFAULT, old, def);
-    }
-
-	/** 
-	 * Get the specified base directory for the build.
-	 * 
-	 * @return Base directory
-	 */
-    public String getBasedir() {
-        return getAttribute(BASEDIR);
-    }
-
-	/** 
-	 * Set the base directory for builds.
-	 * 
-	 * @param baseDir Build base directory.
-	 */
-    public void setBasedir(String baseDir) {
-        String old = getBasedir();
-        setAttribute(BASEDIR, baseDir);
-        firePropertyChange(BASEDIR, old, baseDir);
-    }
-
-    /** 
-     * Get the location where this project is persisted.
-     * 
-     * @return Saved location, or null if not persisted.
-     */
-    public URL getLocation() {
-        return _location;
-    }
-
-    /** 
-     * Set the loction where the project is persisted.
-     * 
-     * @param location Location of project.
-     */
-    public void setLocation(URL location) {
-        URL old = _location;
-        _location = location;
-        firePropertyChange(LOCATION, old, _location);
-    }
-
-    /** 
-     * Set the loction where the project is persisted.
-     * 
-     * @param location Location of project as a file.
-     */
-    public void setLocation(File location) {
-        try {
-            setLocation(new URL("file", null, location.getAbsolutePath()));
-        }
-        catch(java.net.MalformedURLException ex) {
-            // No reason why this should happen.
-            // xxx Log me.
-            ex.printStackTrace();
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElementBeanInfo.java
deleted file mode 100644
index 3903a77..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElementBeanInfo.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import org.apache.tools.ant.gui.customizer.DynamicCustomizer;
-import java.beans.*;
-
-/**
- * BeanInfo for the ACSProjectElement class.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSProjectElementBeanInfo extends BaseBeanInfo {
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ACSProjectElementBeanInfo() {
-    }
-
-	/** 
-	 * Get the type that this BeanInfo represents.
-	 * 
-	 * @return Type.
-	 */
-    public Class getType() {
-        return ACSProjectElement.class;
-    }
-
-	/** 
-	 * Get the customizer type.
-	 * 
-	 * @return Customizer type.
-	 */
-    public Class getCustomizerType() {
-        return Customizer.class;
-    }
-
-	/** 
-	 * Get the property descriptors.
-	 * 
-     * @return Property descriptors.
-	 */
-    public PropertyDescriptor[] getPropertyDescriptors() {
-        PropertyDescriptor[] retval = null;
-
-        try {
-            retval = new PropertyDescriptor[] {
-                new PropertyDescriptor(ACSProjectElement.NAME, 
-                                       ACSProjectElement.class),
-                new PropertyDescriptor(ACSProjectElement.DESCRIPTION, 
-                                       ACSProjectElement.class),
-                new PropertyDescriptor(ACSProjectElement.DEFAULT, 
-                                       ACSProjectElement.class),
-                new PropertyDescriptor(ACSProjectElement.BASEDIR, 
-                                       ACSProjectElement.class)
-
-            };
-            retval[0].setDisplayName(getResources().getString(
-                getClass(),ACSProjectElement.NAME));
-            retval[1].setDisplayName(getResources().getString(
-                getClass(),ACSProjectElement.DESCRIPTION));
-            retval[2].setDisplayName(getResources().getString(
-                getClass(),ACSProjectElement.DEFAULT));
-            retval[3].setDisplayName(getResources().getString(
-                getClass(),ACSProjectElement.BASEDIR));
-
-            setSortingOrder(retval);
-        }
-        catch(IntrospectionException ex) {
-            ex.printStackTrace();
-            throw new Error(ex.toString());
-        }
-
-        return retval;
-    }
-
-    /** Customizer for this bean info. */
-    public static class Customizer extends DynamicCustomizer {
-        public Customizer() {
-            super(ACSProjectElement.class);
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElement.java
deleted file mode 100644
index 5c9ad5f..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElement.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import com.sun.xml.tree.ElementNode;
-
-/**
- * Element containing a property definition.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSPropertyElement extends ACSTreeNodeElement {
-    /** The 'name' property name. */
-    public static final String NAME = "name";
-    /** The 'value' property name. */
-    public static final String VALUE = "value";
-    /** The file to load properties from. */
-    public static final String FILE = "file";
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ACSPropertyElement() {
-    }
-
-	/** 
-	 * Get the display name of this.
-	 * 
-	 * @return Display name.
-	 */
-    public String getDisplayName() {
-        String file = getFile();
-
-        if(file == null || file.trim().length() == 0) {
-            return getName();
-        }
-        else {
-            return "file: " + file;
-        }
-    }
-
-	/** 
-	 * Get the property name.
-	 * 
-	 * @return Property name.
-	 */
-    public String getName() {
-        return getAttribute(NAME);
-    }
-
-	/** 
-	 * Set the property name.
-	 * 
-	 * @param name Property name.
-	 */
-    public void setName(String name) {
-        String old = getName();
-        setAttribute(NAME, name);
-        firePropertyChange(NAME, old, name);
-    }
-
-	/** 
-	 * Get the property value.
-	 * 
-	 * @return Property value.
-	 */
-    public String getValue() {
-        return getAttribute(VALUE);
-    }
-
-	/** 
-	 * Set the property value.
-	 * 
-	 * @param name Property value.
-	 */
-    public void setValue(String value) {
-        String old = getValue();
-        setAttribute(VALUE, value);
-        firePropertyChange(VALUE, old, value);
-    }
-
-	/** 
-	 * Get the external property file.
-	 * 
-	 * @return Property file.
-	 */
-    public String getFile() {
-        return getAttribute(FILE);
-    }
-
-	/** 
-	 * Set the external property file.
-	 * 
-	 * @param name Property file.
-	 */
-    public void setFile(String file) {
-        String old = getFile();
-        setAttribute(FILE, file);
-        firePropertyChange(FILE, old, file);
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElementBeanInfo.java
deleted file mode 100644
index 0c98722..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElementBeanInfo.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import org.apache.tools.ant.gui.customizer.DynamicCustomizer;
-import java.beans.*;
-
-/**
- * BeanInfo for the ACSPropertyElement class.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSPropertyElementBeanInfo extends BaseBeanInfo {
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ACSPropertyElementBeanInfo() {
-    }
-
-	/** 
-	 * Get the type that this BeanInfo represents.
-	 * 
-	 * @return Type.
-	 */
-    public Class getType() {
-        return ACSPropertyElement.class;
-    }
-
-	/** 
-	 * Get the customizer type.
-	 * 
-	 * @return Customizer type.
-	 */
-    public Class getCustomizerType() {
-        return Customizer.class;
-    }
-
-	/** 
-	 * Get the property descriptors.
-	 * 
-     * @return Property descriptors.
-	 */
-    public PropertyDescriptor[] getPropertyDescriptors() {
-        PropertyDescriptor[] retval = null;
-
-        try {
-            retval = new PropertyDescriptor[] {
-                new PropertyDescriptor(ACSPropertyElement.FILE, 
-                                       ACSPropertyElement.class),
-                new PropertyDescriptor(ACSPropertyElement.NAME, 
-                                       ACSPropertyElement.class),
-                new PropertyDescriptor(ACSPropertyElement.VALUE, 
-                                       ACSPropertyElement.class)
-            };
-
-            retval[0].setDisplayName(getResources().getString(
-                getClass(),ACSPropertyElement.FILE));
-            retval[1].setDisplayName(getResources().getString(
-                getClass(),ACSPropertyElement.NAME));
-            retval[2].setDisplayName(getResources().getString(
-                getClass(),ACSPropertyElement.VALUE));
-
-            setSortingOrder(retval);
-        }
-        catch(IntrospectionException ex) {
-            ex.printStackTrace();
-            throw new Error(ex.toString());
-        }
-
-        return retval;
-    }
-
-    /** Customizer for this bean info. */
-    public static class Customizer extends DynamicCustomizer {
-        public Customizer() {
-            super(ACSPropertyElement.class);
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElement.java
deleted file mode 100644
index 4df8ef8..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElement.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import com.sun.xml.tree.ElementNode;
-import java.util.StringTokenizer;
-
-/**
- * Class representing a build target.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSTargetElement extends ACSNamedElement {
-
-    /** Dependency property name. */
-    public static final String DEPENDS = "depends";
-    /** 'if' clause property name. */
-    public static final String IF = "if";
-    /** 'unless' clause property name. */
-    public static final String UNLESS = "unless";
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ACSTargetElement() {
-
-    }
-
-	/** 
-	 * Get the set of dependency names. 
-	 * 
-	 * @return Dependency names.
-	 */
-    public String[] getDepends() {
-        String depends = getAttribute(DEPENDS);
-        StringTokenizer tok = new StringTokenizer(depends,",");
-        String[] retval = new String[tok.countTokens()];
-        for(int i = 0; i < retval.length; i++) {
-            retval[i] = tok.nextToken().trim();
-        }
-        
-        return retval;
-    }
-
-	/** 
-	 * Set the list of dependency names.
-	 * 
-	 * @param depends Dependency names.
-	 */
-    public void setDepends(String[] depends) {
-        String old = getAttribute(DEPENDS);
-        StringBuffer buf = new StringBuffer();
-        for(int i = 0; depends != null && i < depends.length; i++) {
-            buf.append(depends[i]);
-            if(i < depends.length - 1) {
-                buf.append(", ");
-            }
-        }
-        setAttribute(DEPENDS, buf.toString());
-        firePropertyChange(DEPENDS, old, buf.toString());
-    }
-
-	/** 
-	 * Get the 'if' clause.
-	 * 
-	 * @return 'if' clause.
-	 */
-    public String getIf() {
-        return getAttribute(IF);
-    }
-    
-	/** 
-	 * Set the 'if' clause.
-	 * 
-	 * @param val 'if' clause value.
-	 */
-    public void setIf(String val) {
-        String old = getIf();
-        setAttribute(IF, val);
-        firePropertyChange(IF, old, val);
-    }
-
-	/** 
-	 * Get the 'unless' clause.
-	 * 
-	 * @return 'unless' clause.
-	 */
-    public String getUnless() {
-        return getAttribute(UNLESS);
-    }
-
-	/** 
-	 * Set the 'unless' clause.
-	 * 
-	 * @param val 'unless' clase value.
-	 */
-    public void setUnless(String val) {
-        String old = getUnless();
-        setAttribute(UNLESS, val);
-        firePropertyChange(UNLESS, old, val);
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElementBeanInfo.java
deleted file mode 100644
index 949ae12..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElementBeanInfo.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-import org.apache.tools.ant.gui.customizer.DynamicCustomizer;
-
-import java.beans.*;
-
-/**
- * BeanInfo for the ACSTargetElement class.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSTargetElementBeanInfo extends BaseBeanInfo {
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ACSTargetElementBeanInfo() {
-    }
-
-	/** 
-	 * Get the type that this BeanInfo represents.
-	 * 
-	 * @return Type.
-	 */
-    public Class getType() {
-        return ACSTargetElement.class;
-    }
-
-	/** 
-	 * Get the customizer type.
-	 * 
-	 * @return Customizer type.
-	 */
-    public Class getCustomizerType() {
-        return Customizer.class;
-    }
-
-	/** 
-	 * Get the property descriptors.
-	 * 
-     * @return Property descriptors.
-	 */
-    public PropertyDescriptor[] getPropertyDescriptors() {
-        PropertyDescriptor[] retval = null;
-
-        try {
-            retval = new PropertyDescriptor[] {
-                new PropertyDescriptor(ACSTargetElement.NAME, 
-                                       ACSTargetElement.class),
-                new PropertyDescriptor(ACSTargetElement.DESCRIPTION,
-                                       ACSTargetElement.class),
-                new PropertyDescriptor(ACSTargetElement.DEPENDS,
-                                       ACSTargetElement.class),
-                new PropertyDescriptor(ACSTargetElement.IF,
-                                       ACSTargetElement.class),
-                new PropertyDescriptor(ACSTargetElement.UNLESS,
-                                       ACSTargetElement.class),
-                new PropertyDescriptor(ACSTargetElement.XML_STRING, 
-                                       ACSTargetElement.class,
-                                       "getXMLString", null)
-            };
-
-            // Set display names.
-            retval[0].setDisplayName(getResources().getString(
-                getClass(),ACSTargetElement.NAME));
-            retval[1].setDisplayName(getResources().getString(
-                getClass(),ACSTargetElement.DESCRIPTION));
-            retval[2].setDisplayName(getResources().getString(
-                getClass(),ACSTargetElement.DEPENDS));
-            retval[3].setDisplayName(getResources().getString(
-                getClass(),ACSTargetElement.IF));
-            retval[4].setDisplayName(getResources().getString(
-                getClass(),ACSTargetElement.UNLESS));
-            retval[5].setDisplayName(getResources().getString(
-                getClass(),ACSTargetElement.XML_STRING));
-
-            setSortingOrder(retval);
-        }
-        catch(IntrospectionException ex) {
-            ex.printStackTrace();
-            throw new Error(ex.toString());
-        }
-
-        return retval;
-    }
-
-
-    /** Customizer for this bean info. */
-    public static class Customizer extends DynamicCustomizer {
-        public Customizer() {
-            super(ACSTargetElement.class);
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java
deleted file mode 100644
index 42ef9bc..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import org.w3c.dom.Node;
-import org.w3c.dom.NamedNodeMap;
-import java.util.*;
-
-/**
- * Element containing a property definition.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSTaskElement extends ACSTreeNodeElement {
-    /** Property name for the task type. */
-    public static final String TASK_TYPE = "taskType";
-    /** Property name for attributes. It's called "namedValues" so
-     *  it doesn't collide with the Node.getAttributes() method. */
-    public static final String NAMED_VALUES = "namedValues";
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ACSTaskElement() {
-    }
-
-	/** 
-	 * Get the task type.
-	 * 
-	 * @return Task type.
-	 */
-    public String getTaskType() {
-        return getTagName();
-    }
-
-    /** 
-     * Set the task type.
-     * 
-     * @param type Type name.
-     */
-    public void setTaskType(String type) {
-        setTag(type);
-    }
-
-	/** 
-	 * Get the attributes (named value mappings). This method is not named
-     * getAttributes() because there is already a method of that name in
-     * the Node interface.
-	 * 
-	 * @return Name-value mappings.
-	 */
-    public Properties getNamedValues() {
-        Properties retval = new Properties();
-
-        NamedNodeMap attribs = getAttributes();
-        for(int i = 0, len = attribs.getLength(); i < len; i++) {
-            Node n = attribs.item(i);
-            retval.setProperty(n.getNodeName(), n.getNodeValue());
-        }
-        return retval;
-    }
-
-
-	/** 
-	 * Set the attributes. This method sets the Node attirbutes using 
-     * the given Map containing name-value pairs.
-	 * 
-	 * @param attributes New attribute set.
-	 */
-    public void setNamedValues(Properties props) {
-        // XXX this code really sucks. It is really annoying that the 
-        // DOM interfaces don't have a general "setAttributes()" or
-        // "removeAllAttributes()" method, but instead make you 
-        // remove each attribute individually, or require you to figure
-        // out what the differences are between the two. 
-
-        // Although this is very inefficient, I'm taking the conceptually
-        // simplistic approach to this and brute force removing the existing 
-        // set and replacing it with a brand new set. If this becomes a 
-        // performance concern (which I doubt it will) it can be optimized 
-        // later.
-
-        Properties old = getNamedValues();
-
-        Enumeration enum = old.propertyNames();
-        while(enum.hasMoreElements()) {
-            String name = (String) enum.nextElement();
-            removeAttribute(name);
-        }
-        
-        enum = props.propertyNames();
-        while(enum.hasMoreElements()) {
-            String key = (String) enum.nextElement();
-            setAttribute(key, props.getProperty(key));
-        }
-
-        firePropertyChange(NAMED_VALUES, old, props);
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElementBeanInfo.java
deleted file mode 100644
index 59a23ab..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElementBeanInfo.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import org.apache.tools.ant.gui.customizer.DynamicCustomizer;
-import java.beans.*;
-
-/**
- * BeanInfo for the ACSTaskElement class.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ACSTaskElementBeanInfo extends BaseBeanInfo {
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ACSTaskElementBeanInfo() {
-    }
-
-	/** 
-	 * Get the type that this BeanInfo represents.
-	 * 
-	 * @return Type.
-	 */
-    public Class getType() {
-        return ACSTaskElement.class;
-    }
-
-	/** 
-	 * Get the customizer type.
-	 * 
-	 * @return Customizer type.
-	 */
-    public Class getCustomizerType() {
-        return Customizer.class;
-    }
-
-	/** 
-	 * Get the property descriptors.
-	 * 
-     * @return Property descriptors.
-	 */
-    public PropertyDescriptor[] getPropertyDescriptors() {
-        PropertyDescriptor[] retval = null;
-
-        try {
-            retval = new PropertyDescriptor[] {
-                new PropertyDescriptor(ACSTaskElement.TASK_TYPE, 
-                                       ACSTaskElement.class,
-                                       "getTaskType", null),
-                new PropertyDescriptor(ACSTaskElement.NAMED_VALUES, 
-                                       ACSTaskElement.class),
-                new PropertyDescriptor(ACSTaskElement.XML_STRING, 
-                                       ACSTaskElement.class,
-                                       "getXMLString", null)
-            };
-
-            retval[0].setDisplayName(getResources().getString(
-                getClass(),ACSTaskElement.TASK_TYPE));
-            retval[1].setDisplayName(getResources().getString(
-                getClass(),ACSTaskElement.NAMED_VALUES));
-            retval[2].setDisplayName(getResources().getString(
-                getClass(),ACSTaskElement.XML_STRING));
-
-            setSortingOrder(retval);
-        }
-        catch(IntrospectionException ex) {
-            ex.printStackTrace();
-            throw new Error(ex.toString());
-        }
-
-        return retval;
-    }
-
-    /** Customizer for this bean info. */
-    public static class Customizer extends DynamicCustomizer {
-        public Customizer() {
-            super(ACSTaskElement.class);
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTreeNodeElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTreeNodeElement.java
deleted file mode 100644
index 70c1f02..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTreeNodeElement.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import com.sun.xml.tree.ElementNode;
-import javax.swing.tree.TreeNode;
-import java.util.*;
-
-/**
- * Abstract base class for all ACSElement classes that are also tree node.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public abstract class ACSTreeNodeElement extends ACSElement {
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/BaseBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/BaseBeanInfo.java
deleted file mode 100644
index 5168351..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/BaseBeanInfo.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-import org.apache.tools.ant.gui.core.ResourceManager;
-import org.apache.tools.ant.gui.customizer.DynamicCustomizer;
-import java.beans.*;
-import javax.swing.ImageIcon;
-import java.awt.Image;
-
-/**
- * Abstract base class for ACS BeanInfo classes.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-abstract class BaseBeanInfo extends SimpleBeanInfo {
-    /** Property name for specifiying a sorting order. */
-    public static final String SORT_ORDER = DynamicCustomizer.SORT_ORDER;
-    /** Resource provider for bean info. */
-    private static ResourceManager _resources = new ResourceManager();
-
-    /** Icon for this. */
-    private Image _icon = null;
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    protected BaseBeanInfo() {
-        // Load the icon.
-        ImageIcon img = _resources.getImageIcon(getClass(), "icon");
-        if(img != null) {
-            _icon = img.getImage();
-        }
-    }
-
-	/** 
-	 * Get the local resources.
-	 * 
-	 * @return Resources.
-	 */
-    ResourceManager getResources() {
-        return _resources;
-    }
-
-	/** 
-	 * Get the bean descriptor.
-	 * 
-	 * @return Bean descriptor.
-	 */
-    public BeanDescriptor getBeanDescriptor() {
-        return new ACSBeanDescriptor(this);
-    }
-
-	/** 
-	 * Get the icon for displaying this bean.
-	 * 
-	 * @param kind Kind of icon. XXX currently ignored
-	 * @return Image for bean, or null if none.
-	 */
-    public Image getIcon(int kind) {
-        // XXX kind is currently ignored.
-        return _icon;
-    }
-
-	/** 
-	 * Set the sorting order property of the given objects based
-     * on the order that they appear in the array. 
-	 * 
-	 * @param vals FeatureDescriptors to set sorting order property for.
-	 */
-    protected void setSortingOrder(FeatureDescriptor[] vals) {
-        for(int i = 0; i < vals.length; i++) {
-            vals[i].setValue(SORT_ORDER, new Integer(i));
-        }
-    }
-
-	/** 
-	 * Get the type that this BeanInfo represents.
-	 * 
-	 * @return Type.
-	 */
-    public abstract Class getType();
-
-	/** 
-	 * Get the type of the customizer to use. 
-	 * 
-	 * @return Customizer to use.
-	 */
-    public abstract Class getCustomizerType();
-
-    /**
-     * Gets the beans <code>PropertyDescriptor</code>s.
-     * 
-     * @return An array of PropertyDescriptors describing the editable
-     * properties supported by this bean.  May return null if the
-     * information should be obtained by automatic analysis.
-     * <p>
-     * If a property is indexed, then its entry in the result array will
-     * belong to the IndexedPropertyDescriptor subclass of PropertyDescriptor.
-     * A client of getPropertyDescriptors can use "instanceof" to check
-     * if a given PropertyDescriptor is an IndexedPropertyDescriptor.
-     */
-    public abstract PropertyDescriptor[] getPropertyDescriptors();
-
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeModel.java b/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeModel.java
deleted file mode 100644
index ffe8034..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeModel.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-
-
-import javax.swing.tree.*;
-import javax.swing.event.TreeModelListener;
-import javax.swing.event.TreeModelEvent;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.apache.tools.ant.gui.acs.*;
-import java.util.*;
-
-/**
- * Provides a tree model view of the Project class. XXX This
- * is a major hack right now that needs to be cleaned up.
- *
- * @version $Revision$ 
- * @author Simeon H.K. Fitch */
-public class ElementTreeModel implements TreeModel {
-    /** Root of the tree. */
-    private ACSProjectElement _root = null;
-    /** List of listeners. */
-    private List _listeners = new ArrayList();
-
-    public ElementTreeModel(ACSProjectElement root) {
-        _root = root;
-    }
-
-    /**
-     * Returns the root of the tree.  Returns null only if the tree has
-     * no nodes.
-     *
-     * @return  the root of the tree
-     */
-    public Object getRoot() {
-        return _root;
-    }
-
-    /** 
-     * Gets the set of children that this tree model is interested in.
-     * NB: This is <b>really</b> inefficient, but may not be an issue given
-     * the number of times it is ultimately called. A profiler definately needs
-     * to be applied here.
-     * 
-     * @param parent Parent to extract children from.
-     */
-    private List getChildren(Node parent) {
-        NodeList children = parent.getChildNodes();
-        int length = children.getLength();
-
-        List retval = new ArrayList(length);
-        for(int i = 0; i < length; i++) {
-            // XXX This is where we will eventually add dynamic filtering
-            // capabilities.
-            Node n = children.item(i);
-            if(n instanceof ACSTreeNodeElement) {
-                retval.add(n);
-            }
-        }
-
-        return retval;
-    }
-
-    /**
-     * Returns the child of <I>parent</I> at index <I>index</I> in the parent's
-     * child array.  <I>parent</I> must be a node previously obtained from
-     * this data source. This should not return null if <i>index</i>
-     * is a valid index for <i>parent</i> (that is <i>index</i> >= 0 &&
-     * <i>index</i> < getChildCount(<i>parent</i>)).
-     *
-     * @param   parent  a node in the tree, obtained from this data source
-     * @return  the child of <I>parent</I> at index <I>index</I>
-     */
-    public Object getChild(Object parent, int index) {
-        if(parent instanceof Node) {
-            Node n = (Node) parent;
-            List children = getChildren(n);
-            return children.get(index);
-        }
-        else {
-            return null;
-        }
-    }
-
-
-    /**
-     * Returns the number of children of <I>parent</I>.  Returns 0 if the node
-     * is a leaf or if it has no children.  <I>parent</I> must be a node
-     * previously obtained from this data source.
-     *
-     * @param   parent  a node in the tree, obtained from this data source
-     * @return  the number of children of the node <I>parent</I>
-     */
-    public int getChildCount(Object parent) {
-        if(parent instanceof Node) {
-            Node n = (Node) parent;
-            return getChildren(n).size();
-        }
-        else {
-            return 0;
-        }
-    }
-
-    /**
-     * Returns true if <I>node</I> is a leaf.  It is possible for this method
-     * to return false even if <I>node</I> has no children.  A directory in a
-     * filesystem, for example, may contain no files; the node representing
-     * the directory is not a leaf, but it also has no children.
-     *
-     * @param   node    a node in the tree, obtained from this data source
-     * @return  true if <I>node</I> is a leaf
-     */
-    public boolean isLeaf(Object node) {
-        if(node instanceof Node) {
-            Node n = (Node) node;
-            return getChildren(n).size() == 0;
-        }
-        else {
-            return true;
-        }
-
-    }
-
-    /**
-     * Returns the index of child in parent.
-     */
-    public int getIndexOfChild(Object parent, Object child) {
-        if(parent instanceof Node && child instanceof Node) {
-            Node n = (Node) parent;
-            List children = getChildren(n);
-            int count = children.size();
-            for(int i = 0; i < count; i++) {
-                if(children.get(i) == child) return i;
-            }
-        }
-        return -1;
-    }
-
-    /**
-      * Messaged when the user has altered the value for the item identified
-      * by <I>path</I> to <I>newValue</I>.  If <I>newValue</I> signifies
-      * a truly new value the model should post a treeNodesChanged
-      * event.
-      *
-      * @param path path to the node that the user has altered.
-      * @param newValue the new value from the TreeCellEditor.
-      */
-    public void valueForPathChanged(TreePath path, Object newValue) {
-        // XXX What should the implementation be here?
-        fireNodeChanged((Node) path.getLastPathComponent());
-    }
-
-
-    /**
-     * Adds a listener for the TreeModelEvent posted after the tree changes.
-     *
-     * @see     #removeTreeModelListener
-     * @param   l       the listener to add
-     */
-    public void addTreeModelListener(TreeModelListener l) {
-        _listeners.add(l);
-    }
-
-    /**
-     * Removes a listener previously added with <B>addTreeModelListener()</B>.
-     *
-     * @see     #addTreeModelListener
-     * @param   l       the listener to remove
-     */  
-    public void removeTreeModelListener(TreeModelListener l) {
-        _listeners.remove(l);
-    }
-
-    /** 
-     * Get the list of nodes from the root to the
-     * given node.
-     * 
-     * @param startNode Node to get path for.
-     */
-    public Node[] getPathToRoot(Node startNode) {
-        return getPathToRoot(startNode, 0);
-    }
-
-    /** 
-     * A recursive method for generating a list of nodes defining
-     * the path from the given node to the root.
-     * 
-     * @param node Node to get path for.
-     * @param depth The number of calls taken towards the root.
-     */
-    private Node[] getPathToRoot(Node node, int depth) {
-        Node[] retval = null;
-
-        depth++;
-        if(node == _root || node.getParentNode() == null) {
-            retval = new Node[depth];
-        }
-        else {
-            retval = getPathToRoot(node.getParentNode(), depth);
-        }
-
-        retval[retval.length - depth] = node;
-        return retval;
-    }
-
-
-    /** 
-     * Fire a node change event.
-     * 
-     * @param node Node that changed.
-     */
-    public void fireNodeChanged(Node node) {
-        TreeModelEvent event = new TreeModelEvent(this, getPathToRoot(node));
-
-        // XXX This doen't support modifying the list during dispatch...
-        Iterator it = _listeners.iterator();
-        while(it.hasNext()) {
-            TreeModelListener l = (TreeModelListener) it.next();
-            l.treeNodesChanged(event);
-        }
-    }
-
-    /** 
-     * Fire a node change event.
-     * 
-     * @param node Node that changed.
-     */
-    public void fireNodeAdded(Node node) {
-        Node parent = node.getParentNode();
-        TreeModelEvent event = null;
-        if(parent == null) {
-            event = new TreeModelEvent(this, getPathToRoot(node));
-        }
-        else {
-            Node[] path = getPathToRoot(parent);
-            int[] indicies = null;
-            Node[] children = new Node[] { node };
-
-            // XXX Right now we assume that the node was added at the end.
-            // This may not be the case in the future.
-            if(parent.getLastChild() == node) {
-                List filteredChildren = getChildren(parent);
-                indicies = new int[] { filteredChildren.indexOf(node) };
-            }
-            else {
-                throw new UnsupportedOperationException(
-                    "Haven't implemented non-append notification yet.");
-            }
-
-            event = new TreeModelEvent(this, path, indicies, children);
-        }
-
-        // XXX This doen't support modifying the list during dispatch...
-        Iterator it = _listeners.iterator();
-        while(it.hasNext()) {
-            TreeModelListener l = (TreeModelListener) it.next();
-            l.treeNodesInserted(event);
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeSelectionModel.java b/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeSelectionModel.java
deleted file mode 100644
index 677fc71..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeSelectionModel.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.acs;
-import org.apache.tools.ant.gui.acs.ACSElement;
-import org.apache.tools.ant.gui.acs.ACSTargetElement;
-
-import javax.swing.tree.DefaultTreeSelectionModel;
-import javax.swing.tree.TreePath;
-import java.util.*;
-
-/**
- * Selection model for the currently selected targets.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ElementTreeSelectionModel extends DefaultTreeSelectionModel {
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public ElementTreeSelectionModel() {
-        setSelectionMode(DISCONTIGUOUS_TREE_SELECTION);
-    }
-
-	/** 
-	 * Convenience method for providing the set of currently selected
-     * elements. NB: It returns all of the nodes in the selection path, 
-     * so the root node will be a selected element whenever a child is 
-     * selected.
-	 * 
-     * @return the currently selected elements.
-	 */
-    public ACSElement[] getSelectedElements() {
-        TreePath[] path = getSelectionPaths();
-        List values = new LinkedList();
-        for(int i = 0; path != null && i < path.length; i++) {
-            TreePath curr = path[i];
-            for(int j = 0; j < curr.getPathCount(); j++) {
-                Object item = curr.getPathComponent(j);
-                if(item instanceof ACSElement) {
-                    values.add(item);
-                }
-            }
-        }
-
-        ACSElement[] retval = new ACSElement[values.size()];
-        values.toArray(retval);
-        return retval;
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/acs-element.properties b/src/antidote/org/apache/tools/ant/gui/acs/acs-element.properties
deleted file mode 100644
index b872754..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/acs-element.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Property file mapping DOM nodes to Java class names.
-#
-
-# The default element
-*Element=org.apache.tools.ant.gui.acs.ACSDefaultElement
-
-# Specific elements.
-project=org.apache.tools.ant.gui.acs.ACSProjectElement
-property=org.apache.tools.ant.gui.acs.ACSPropertyElement
-target=org.apache.tools.ant.gui.acs.ACSTargetElement
-task=org.apache.tools.ant.gui.acs.ACSTaskElement
diff --git a/src/antidote/org/apache/tools/ant/gui/acs/package.html b/src/antidote/org/apache/tools/ant/gui/acs/package.html
deleted file mode 100644
index 73f3f6e..0000000
--- a/src/antidote/org/apache/tools/ant/gui/acs/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<HTML><BODY> <H1>Ant Construction Set</H1> 
-
-<P>This package contains the tools for constructing and manipulating an Ant
-build file</P>
-
-<P><B>NB</B>: Requires the <A HREF="http://java.sun.com/xml">Java API for XML
-Parsing</A> from Sun.</P>
-</BODY>
-</HTML>
diff --git a/src/antidote/org/apache/tools/ant/gui/command/AboutCmd.java b/src/antidote/org/apache/tools/ant/gui/command/AboutCmd.java
deleted file mode 100644
index cfc1b44..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/AboutCmd.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.About;
-import java.awt.Window;
-import java.awt.event.WindowEvent;
-
-
-/**
- * Handler for the About command.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class AboutCmd extends AbstractCommand {
-
-	/** 
-	 * Standard constructor. 
-	 * 
-	 */
-    public AboutCmd(AppContext context) {
-        super(context);
-    }
-
-	/** 
-	 * Show the about box.
-	 * 
-	 */
-    public void run() {
-		new About(getContext());
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/AbstractCommand.java b/src/antidote/org/apache/tools/ant/gui/command/AbstractCommand.java
deleted file mode 100644
index 20d2137..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/AbstractCommand.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-
-
-/**
- * Convenience base class for Command implementations.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public abstract class AbstractCommand implements Command {
-	/** Application context. */
-	private AppContext _context = null;
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    protected AbstractCommand(AppContext context) {
-        _context = context;
-    }
-
-	/** 
-	 * Get the application context that was provided to setContext();
-	 * 
-	 * @return Application context.
-	 */
-    protected AppContext getContext() {
-        return _context;
-    }
-
-	/** 
-	 * Run the command. From interface Runnable.
-	 * 
-	 */
-    public abstract void run();
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/BuildCmd.java b/src/antidote/org/apache/tools/ant/gui/command/BuildCmd.java
deleted file mode 100644
index 740f9a9..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/BuildCmd.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
-q *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.ErrorEvent;
-import org.apache.tools.ant.gui.acs.ACSProjectElement;
-import org.apache.tools.ant.gui.acs.ACSTargetElement;
-
-/**
- * Starts an Ant build.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class BuildCmd extends AbstractCommand {
-
-    /** Project to build. */
-    private ACSProjectElement _project = null;
-    /** Targets to build. */
-    private ACSTargetElement[] _targets = null;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 */
-    public BuildCmd(AppContext context) { 
-        super(context);
-    }
-
-    /** 
-     * Set the specific project to build (instead of the default).
-     * 
-     * @param project Project to build.
-     */
-    public void setProject(ACSProjectElement project) {
-        _project = project;
-    }
-
-    /** 
-     * Set the specific targets to build (instead of the default).
-     * 
-     * @param targets Array of targets to build.
-     */
-    public void setTargets(ACSTargetElement[] targets) {
-        _targets = targets;
-    }
-
-	/** 
-	 * Start the Ant build.
-	 * 
-	 */
-    public void run() {
-        if(_project == null) {
-            _project = getContext().getSelectionManager().getSelectedProject();
-        }
-
-        if(_targets == null) {
-            _targets = getContext().getSelectionManager().getSelectedTargets();
-        }
-
-        if(_project != null) {
-            try {
-                getContext().getProjectManager().build(_project, _targets);
-            }
-            catch(Throwable ex) {
-                getContext().getEventBus().postEvent(
-                    new ErrorEvent(getContext(), ex));
-            }
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java b/src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java
deleted file mode 100644
index 68a35d6..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.util.ChangeLookAndFeel;
-
-/**
- * ChangeLookAndFeel command.
- *
- * @version $Revision$
- * @author Erik Meade
- * @author Simeon Fitch
- */
-public class ChangeLookAndFeelCmd extends AbstractCommand {
-	/**
-	 * Standard ctor.
-	 *
-	 */
-    public ChangeLookAndFeelCmd(AppContext context) {
-        super(context);
-    }
-
-	/**
-	 * Successfully do nothing.
-	 *
-	 */
-    public void run() {
-		new ChangeLookAndFeel(getContext());
-	}
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/CloseCmd.java b/src/antidote/org/apache/tools/ant/gui/command/CloseCmd.java
deleted file mode 100644
index fa050b1..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/CloseCmd.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.ProjectClosedEvent;
-import org.apache.tools.ant.gui.event.ProjectSelectedEvent;
-import org.apache.tools.ant.gui.acs.ACSProjectElement;
-
-
-/**
- * Handler for the close command.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class CloseCmd extends AbstractCommand {
-
-    /** Project to close. */
-    private ACSProjectElement _project = null;
-
-	/** 
-	 * Standard constructor. 
-	 * 
-	 */
-    public CloseCmd(AppContext context) {
-        super(context);
-    }
-
-    /** 
-     * Set the specific project to close (instead of the default).
-     * 
-     * @param project Project to close.
-     */
-    public void setProject(ACSProjectElement project) {
-        _project = project;
-    }
-
-	/** 
-	 * Send a close event to the parent window. 
-	 * 
-	 */
-    public void run() {
-        if(_project == null) {
-            _project = getContext().getSelectionManager().getSelectedProject();
-        }
-
-        if(_project != null) {
-            getContext().getProjectManager().close(_project);
-            getContext().getEventBus().postEvent(
-                new ProjectClosedEvent(getContext()));
-
-            ACSProjectElement[] open = 
-                getContext().getProjectManager().getOpen();
-            if(open != null && open.length > 0) {
-                getContext().getEventBus().postEvent(
-                    new ProjectSelectedEvent(getContext(), open[0]));
-            }
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/Command.java b/src/antidote/org/apache/tools/ant/gui/command/Command.java
deleted file mode 100644
index 30ef35e..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/Command.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-
-
-
-/**
- * Interface for commands. 
- * Details TBD
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public interface Command extends Runnable {
-	/** 
-	 * Run the command. From interface Runnable.
-	 * 
-	 */
-    void run();
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/DisplayErrorCmd.java b/src/antidote/org/apache/tools/ant/gui/command/DisplayErrorCmd.java
deleted file mode 100644
index d66f794..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/DisplayErrorCmd.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.util.StackFrame;
-import javax.swing.*;
-import java.awt.FlowLayout;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-
-/**
- * Command for displaying an arbitrary error message to the user.
- *
- * @version $Revision$ 
- * @author Simeon H.K. Fitch 
- */
-public class DisplayErrorCmd extends AbstractCommand {
-    /** Text description of error. */
-    private String _message = null;
-    /** Throwable associated with the error. */
-    private Throwable _ex = null;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */
-    public DisplayErrorCmd(AppContext context) {
-        this(context, null, null);
-    }
-
-	/** 
-	 * No Throwable constructor.
-	 * 
-	 * @param context Application context.
-	 * @param message Error message.
-	 */
-    public DisplayErrorCmd(AppContext context, String message) {
-        this(context, message, null);
-    }
-
-	/** 
-	 * Standard constuctor.
-	 * 
-	 * @param context Application context.
-	 * @param message Error message.
-	 * @param ex Throwable assocated with error.
-	 */
-    public DisplayErrorCmd(AppContext context, String message, Throwable ex) {
-        super(context);
-        _message = message;
-        _ex = ex;
-    }
-
-	/** 
-	 * Set the error message.
-	 * 
-	 * @param message Error message.
-	 */
-    public void setMessage(String message) {
-        _message = message;
-    }
-
-	/** 
-	 * Set the throwable associated with the error.
-	 * 
-	 * @param ex Throwable associated with the error.
-	 */
-    public void setThrowable(Throwable ex) {
-        _ex = ex;
-    }
-
-	/** 
-	 * Display the error.
-	 * 
-	 */
-    public void run() {
-        String title = getContext().getResources().
-            getString(getClass(), "title"); 
-
-        JOptionPane.showMessageDialog(
-            getContext().getParentFrame(), new MsgPanel(),
-            title, JOptionPane.ERROR_MESSAGE);
-    }
-
-    // Panel for assembling the error information.
-    private class MsgPanel extends JPanel implements ActionListener {
-        public MsgPanel() {
-            setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
-            add(new JLabel(_message));
-            if(_ex != null) {
-                add(new JLabel(_ex.getMessage()));
-                JButton b = new JButton(getContext().getResources().
-                                        getString(DisplayErrorCmd.class, 
-                                                  "expand"));
-                b.addActionListener(this);
-                add(Box.createVerticalStrut(20));
-                add(b);
-            }
-        }
-        // Called when the user clicks the expand button.
-        public void actionPerformed(ActionEvent e) {
-            JComponent source = (JComponent) e.getSource();
-            JComponent parent = (JComponent) source.getParent();
-            parent.remove(source);
-            JTextArea text = new JTextArea();
-            text.setEditable(false);
-            text.setText(StackFrame.toString(_ex));
-            parent.add(new JScrollPane(text));
-            SwingUtilities.windowForComponent(parent).pack();
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/EmacsNotifyCmd.java b/src/antidote/org/apache/tools/ant/gui/command/EmacsNotifyCmd.java
deleted file mode 100644
index 38813eb..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/EmacsNotifyCmd.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.ide.EmacsNotifier;
-
-/**
- * Toggle on or off the sending of error events to emacs so that 
- * it can display the source of the error.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class EmacsNotifyCmd extends AbstractCommand {
-    /** A global notifier can be used as it stores no state. */
-    private static EmacsNotifier _notifier = new EmacsNotifier();
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */
-    public EmacsNotifyCmd(AppContext context) {
-        super(context);
-    }
-
-	/** 
-	 * Turn on or off the notifying of emacs.
-	 * 
-	 */
-    public void run() {
-        if(getContext().getProjectManager().
-           isRegisteredBuildListener(_notifier)) {
-            getContext().getProjectManager().removeBuildListener(_notifier);
-        }
-        else {
-            getContext().getProjectManager().addBuildListener(_notifier);
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/ExitCmd.java b/src/antidote/org/apache/tools/ant/gui/command/ExitCmd.java
deleted file mode 100644
index 774225e..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/ExitCmd.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.util.WindowUtils;
-
-import java.awt.Window;
-import java.awt.event.WindowEvent;
-
-
-/**
- * Handler for an exit command .
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ExitCmd extends AbstractCommand {
-	/** 
-	 * Standard constructor. 
-	 * 
-	 * @param context Application context.
-	 */
-    public ExitCmd(AppContext context) {
-        super(context);
-    }
-
-	/** 
-	 * Send a close event to the parent window. 
-	 * 
-	 */
-    public void run() {
-        // Manually send a window close event to the window.
-		WindowUtils.sendCloseEvent(getContext().getParentFrame());
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/LoadFileCmd.java b/src/antidote/org/apache/tools/ant/gui/command/LoadFileCmd.java
deleted file mode 100644
index bf1289f..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/LoadFileCmd.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.ErrorEvent;
-import org.apache.tools.ant.gui.event.NewProjectEvent;
-import org.apache.tools.ant.gui.acs.ACSProjectElement;
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Command for reading in a build file and initializing the data model.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class LoadFileCmd extends  AbstractCommand {
-    /** The file to load. */
-    private File _file = null;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */
-    public LoadFileCmd(AppContext context) {
-        super(context);
-    }
-
-	/** 
-	 * Set the file to load.
-	 * 
-	 * @param file File to load.
-	 */
-    public void setFile(File file) {
-        _file = file;
-    }
-
-	/** 
-	 * Open the file and load it.
-	 * 
-	 */
-    public void run() {
-        if(!_file.exists()) {
-            String message = getContext().getResources().getMessage(
-                getClass(), "noFile", new Object[] { _file.toString() });
-
-            getContext().getEventBus().
-                postEvent(new ErrorEvent(getContext(), message));
-        }
-        else {
-            try {
-                ACSProjectElement project =
-                    getContext().getProjectManager().open(_file);
-                getContext().getEventBus().postEvent(
-                    new NewProjectEvent(getContext(), project));
-            }
-            catch(Exception ex) {
-                String message = getContext().getResources().getMessage(
-                    getClass(), "loadError", 
-                    new Object[] { _file.toString() });
-
-                getContext().getEventBus().
-                    postEvent(new ErrorEvent(getContext(), message, ex));
-            }
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewProjectCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewProjectCmd.java
deleted file mode 100644
index f43d78e..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/NewProjectCmd.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.NewProjectEvent;
-import org.apache.tools.ant.gui.acs.ACSProjectElement;
-
-/**
- * Command for creating a new project.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class NewProjectCmd extends AbstractCommand {
-    /** New project count for this session. Used to create default names, 
-     *  numbered as a convenience. */
-    private static int _count = 1;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */
-    public NewProjectCmd(AppContext context) {
-        super(context);
-    }
-
-    /** 
-     * Create a new project and make it active.
-     * 
-     */
-    public void run() {
-        ACSProjectElement project = 
-            getContext().getProjectManager().createNew();
-        project.setName(getContext().getResources().
-                        getString(getClass(), "defName") + " " + _count++);
-        getContext().getEventBus().postEvent(
-            new NewProjectEvent(getContext(), project));
-        
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java
deleted file mode 100644
index ee20902..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.NewPropertyEvent;
-import org.apache.tools.ant.gui.acs.*;
-
-/**
- * Command for creating a new propertyh.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class NewPropertyCmd extends AbstractCommand {
-    /** New count for this session. Used to create default names, 
-     *  numbered as a convenience. */
-    private static int _count = 1;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */ 
-    public NewPropertyCmd(AppContext context) {
-        super(context);
-    }
-
-    /** 
-     * Create a new property and make it active.
-     * 
-     */
-    public void run() {
-        ACSElement[] vals = getContext().getSelectionManager().
-            getSelectedElements();
-        if(vals != null && vals.length > 0) {
-            ACSPropertyElement retval = 
-                ACSFactory.getInstance().createProperty(vals[vals.length - 1]);
-            getContext().getEventBus().postEvent(
-                new NewPropertyEvent(getContext(),  retval));
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewTargetCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewTargetCmd.java
deleted file mode 100644
index 3487d7e..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/NewTargetCmd.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.NewTargetEvent;
-import org.apache.tools.ant.gui.acs.*;
-
-/**
- * Command for creating a new target.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class NewTargetCmd extends AbstractCommand {
-    /** New project count for this session. Used to create default names, 
-     *  numbered as a convenience. */
-    private static int _count = 1;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */
-    public NewTargetCmd(AppContext context) {
-        super(context);
-    }
-
-    /** 
-     * Create a new target and make it active.
-     * 
-     */
-    public void run() {
-        ACSProjectElement project = getContext().getSelectionManager().
-            getSelectedProject();
-        ACSTargetElement retval = 
-            ACSFactory.getInstance().createTarget(project);
-        retval.setName(getContext().getResources().
-                        getString(getClass(), "defName") + " " + _count++);
-        getContext().getEventBus().postEvent(
-            new NewTargetEvent(getContext(),  retval));
-        
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java
deleted file mode 100644
index e392fdc..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.NewTaskEvent;
-import org.apache.tools.ant.gui.acs.*;
-
-/**
- * Command for creating a new task.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class NewTaskCmd extends AbstractCommand {
-    /** New count for this session. Used to create default names, 
-     *  numbered as a convenience. */
-    private static int _count = 1;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */
-    public NewTaskCmd(AppContext context) {
-        super(context);
-    }
-
-    /** 
-     * Create a new task and make it active.
-     * 
-     */
-    public void run() {
-        ACSTargetElement[] targets = getContext().getSelectionManager().
-            getSelectedTargets();
-        if(targets != null && targets.length > 0) {
-            ACSTaskElement retval = 
-                ACSFactory.getInstance().createTask(targets[0]);
-            retval.setTaskType("javac");
-            getContext().getEventBus().postEvent(
-                new NewTaskEvent(getContext(),  retval));
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/NoOpCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NoOpCmd.java
deleted file mode 100644
index fc898fd..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/NoOpCmd.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-
-/**
- * NoOp command.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class NoOpCmd extends AbstractCommand {
-	/** 
-     * Standard ctor.
-     * 
-	 * @param context Application context.
-	 */
-    public NoOpCmd(AppContext context) {
-        super(context);
-    }
-
-	/** 
-	 * Successfully do nothing.
-	 * 
-	 */
-    public void run() {}
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/OpenCmd.java b/src/antidote/org/apache/tools/ant/gui/command/OpenCmd.java
deleted file mode 100644
index 192e378..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/OpenCmd.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.OpenRequestEvent;
-import org.apache.tools.ant.gui.core.XMLFileFilter;
-import javax.swing.JFileChooser;
-import javax.swing.filechooser.FileFilter;
-import java.io.File;
-
-/**
- * Command to execute the opening of a file. A dialog is presented to the
- * user for selecting a build file to open. If a file is selected then an
- * OpenRequestEvent is posted.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class OpenCmd extends AbstractCommand {
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */
-    public OpenCmd(AppContext context) {
-        super(context);
-    }
-
-	/** 
-	 * Display a dialog asking the user to select a file to open.
-     * If one is selected then an event is posted requesting the open 
-     * operation be completed.
-	 * 
-	 */
-    public void run() {
-        FileFilter filter = new XMLFileFilter(getContext().getResources());
-
-        JFileChooser chooser = new JFileChooser();
-        chooser.addChoosableFileFilter(filter);
-        int val = chooser.showOpenDialog(getContext().getParentFrame());
-        if(val == JFileChooser.APPROVE_OPTION) {
-            File selected = chooser.getSelectedFile();
-            getContext().getEventBus().postEvent(
-                new OpenRequestEvent(getContext(), selected));
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/SaveAsCmd.java b/src/antidote/org/apache/tools/ant/gui/command/SaveAsCmd.java
deleted file mode 100644
index 4059cd1..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/SaveAsCmd.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.ErrorEvent;
-import org.apache.tools.ant.gui.acs.ACSProjectElement;
-import java.io.*;
-import org.apache.tools.ant.gui.core.XMLFileFilter;
-import javax.swing.JFileChooser;
-import javax.swing.filechooser.FileFilter;
-import javax.swing.JOptionPane;
-import java.net.URL;
-import java.net.MalformedURLException;
-
-
-/**
- * Command for doing a "Save as" type of save.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class SaveAsCmd extends AbstractCommand {
-    /** File to save to. */
-    private URL _location = null;
-    /** Project to save. */
-    private ACSProjectElement _project = null;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */
-    public SaveAsCmd(AppContext context) {
-        super(context);
-    }
-
-	/** 
-	 * Set the location to save to
-	 * 
-	 * @param location location to save to.
-	 */
-    public void setLocation(URL location) {
-        _location = location;
-    }
-
-    /** 
-     * Set the specific project to save (instead of the default).
-     * 
-     * @param project Project to save.
-     */
-    public void setProject(ACSProjectElement project) {
-        _project = project;
-    }
-
-
-	/** 
-	 * Save the project to the current file name.
-	 * 
-	 */
-    public void run() {
-        FileFilter filter = new XMLFileFilter(getContext().getResources());
-
-        if(_project == null) {
-            _project = getContext().getSelectionManager().getSelectedProject();
-        }
-
-        if(_project != null) {
-            // If no location is specified, then this truly is a SaveAs 
-            // command. Provide the user the UI to select the output.
-            if(_location == null) {
-                JFileChooser chooser = new JFileChooser();
-                chooser.addChoosableFileFilter(filter);
-                int val = chooser.showSaveDialog(
-                    getContext().getParentFrame());
-                if(val == JFileChooser.APPROVE_OPTION) {
-                    File file = chooser.getSelectedFile();
-                    if(file.exists()) {
-                        String title = getContext().getResources().
-                            getString(SaveCmd.class, "title");
-                        String message = getContext().getResources().
-                            getMessage(SaveCmd.class, "overwrite", 
-                                       new Object[] { file.toString()});
-                        val = JOptionPane.showConfirmDialog(
-                            getContext().getParentFrame(), message, title, 
-                            JOptionPane.YES_NO_OPTION);
-                        // If cancelled unset file.
-                        if(val != JOptionPane.YES_OPTION) {
-                            return;
-                        }
-                    }
-                    try {
-                        _location = new URL(
-                            "file", null, file.getAbsolutePath());
-                    }
-                    catch(MalformedURLException ex) {
-                        // Shouldn't happen. Save will just not
-                        // happen.
-                        ex.printStackTrace();
-                    }
-                }
-            }
-            
-            // If a location is now available, do the save operation.
-            if(_location != null) {
-                try {
-                    getContext().getProjectManager().saveAs(
-                        _project, _location);
-                }
-                catch(IOException ex) {
-                    String message = getContext().getResources().getMessage(
-                        SaveCmd.class, "saveError", 
-                        new Object[] { _location.toString() });
-                    
-                    getContext().getEventBus().
-                        postEvent(new ErrorEvent(getContext(), message, ex));
-                }
-            }
-        }
-        else {
-            // We shouldn't ever get here.
-            String message = getContext().getResources().getString(
-                SaveCmd.class, "noProject"); 
-            
-            getContext().getEventBus().
-                postEvent(new ErrorEvent(getContext(), message));
-            
-        }
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/command/SaveCmd.java b/src/antidote/org/apache/tools/ant/gui/command/SaveCmd.java
deleted file mode 100644
index e46df90..0000000
--- a/src/antidote/org/apache/tools/ant/gui/command/SaveCmd.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.command;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.acs.ACSProjectElement;
-
-/**
- * Command to execute the saving of the current build file.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class SaveCmd extends SaveAsCmd {
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 */
-    public SaveCmd(AppContext context) {
-        super(context);
-        ACSProjectElement project = 
-            getContext().getSelectionManager().getSelectedProject();
-        if(project != null) {
-            setLocation(project.getLocation());
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/ActionManager.java b/src/antidote/org/apache/tools/ant/gui/core/ActionManager.java
deleted file mode 100644
index b832c29..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/ActionManager.java
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import org.apache.tools.ant.gui.event.*;
-import org.apache.tools.ant.gui.command.Command;
-import javax.swing.*;
-import java.util.*;
-import java.lang.reflect.Constructor;
-
-/**
- * Manager of antidote actions. Receives its configuration from the action
- * ResourceBundle.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ActionManager {
-    /** Parameters for the Command constructor. */
-    private static final Class[] COMMAND_CTOR_PARAMS = { AppContext.class };
-
-    /** Externalized resources. */
-    private ResourceManager _resources = null;
-
-    /** Array of action identifiers. */
-    private String[] _actionIDs = null;
-
-    /** Look table of all defined actions. */
-    private Map _actions = new HashMap();
-
-    /** Event bus. */
-    private EventBus _bus = null;
-    /** Class for storing the event type to action type
-     *  mapping for setting enabled state. */
-    private EventToActionMapper _mapper = null;
-
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param bus Event bus to post events to.
-     * @param resources Location of resources.
-	 */
-    public ActionManager(EventBus bus, ResourceManager resources) {
-        _bus = bus;
-        _resources = resources;
-        bus.addMember(EventBus.RESPONDING, new Enabler());
-
-        _mapper = new EventToActionMapper();
-
-        // Configure the set of actions.
-        String[] names = _resources.getStringArray("actions");
-        _actionIDs = new String[names.length];
-        for(int i = 0; i < _actionIDs.length; i++) {
-            _actionIDs[i] = names[i];
-            AntAction action = new AntAction(_resources, _bus, _actionIDs[i]);
-            _actions.put(_actionIDs[i], action);
-
-            // For each action we need to add the reverse event trigger
-            // lookup.
-            _mapper.addAction(action);
-        }
-    }
-
-	/** 
-	 * Create a menubar for the application based on the configuration file.
-	 * 
-	 * @return Menubar.
-	 */
-    public JMenuBar createMenuBar() {
-        JMenuBar retval = new JMenuBar();
-        Map menus = new HashMap();
-
-        String toTok = _resources.getString("menus");
-        StringTokenizer tok = new StringTokenizer(toTok, ", ");
-        while(tok.hasMoreTokens()) {
-            String name = tok.nextToken();
-            JMenu menu = new JMenu(name);
-
-            // XXX should be in config file
-            menu.setMnemonic(name.charAt(0));
-
-            // XXX need to i18n here...
-            if(name.equalsIgnoreCase("help")) {
-                try {
-                    retval.setHelpMenu(menu);
-                }
-                catch(Error err) {
-                    // Catch the "not implemented" error in
-                    // some (all?) Swing implementations
-                    retval.add(menu);
-                }
-            }
-            else {
-                retval.add(menu);
-            }
-            menus.put(name, menu);
-        }
-
-        for(int i = 0; i < _actionIDs.length; i++) {
-            AntAction action = (AntAction) _actions.get(_actionIDs[i]);
-            String parent = action.getParentMenuName();
-            if(parent != null) {
-                JMenu menu = (JMenu) menus.get(parent);
-                // A well configured file shouldn't cause this,
-                // but be safe anyway.
-                if(menu == null) {
-                    menu = new JMenu(parent);
-                    retval.add(menu);
-                    menus.put(parent, menu);
-                }
-
-                // See if we should add a separator.
-                if(action.isPreceededBySeparator() && 
-                   menu.getMenuComponentCount() > 0) {
-                    menu.addSeparator();
-                }
-
-                if(!action.isToggle()) {
-                    JMenuItem item = menu.add(action);
-                    item.setAccelerator(action.getAccelerator());
-                    addNiceStuff(item, action);
-                }
-                else {
-                    JCheckBoxMenuItem b = 
-                        new JCheckBoxMenuItem(action.getName());
-                    b.setActionCommand(action.getID());
-                    b.addActionListener(action);
-                    // XXX eck. This is a 1.3 feature. Fix ME!
-                    // Need to provide binding between action and widget.
-//                    b.setAction(action);
-                    addNiceStuff(b, action);
-                    menu.add(b);
-                }
-
-            }
-        }
-
-        return retval;
-    }
-
-	/** 
-	 * Create a tool bar based on the current configuration.
-	 * 
-	 * @return Toolbar ready for action.
-	 */
-    public JToolBar createToolBar() {
-        JToolBar retval = new JToolBar();
-        
-        for(int i = 0; i < _actionIDs.length; i++) {
-            AntAction action = (AntAction) _actions.get(_actionIDs[i]);
-            // If it has an icon, then we add it to the toolbar.
-            if(action.getIcon() != null) {
-                if(action.isPreceededBySeparator()) {
-                    retval.addSeparator();
-                }
-
-                JButton button = retval.add(action);
-                button.setText(null);
-
-                addNiceStuff(button, action);
-            }
-        }
-
-        return retval;
-    }
-
-	/** 
-	 * Create a popup menu with the given actionIDs.
-     * XXX check this for object leak. Does the button
-     * get added to the action as a listener? There are also some
-     * changes to this behavior in 1.3.
-	 * 
-	 * @param actionIDs List of action IDs for actions
-     *  to appear in popup menu.
-	 * @return Popup menu to display.
-	 */
-    public JPopupMenu createPopup(String[] actionIDs) {
-        JPopupMenu retval = new JPopupMenu();
-
-        for(int i = 0; i < actionIDs.length; i++) {
-            AntAction action = (AntAction) _actions.get(actionIDs[i]);
-            if(action != null) {
-                AbstractButton button = retval.add(action);
-                addNiceStuff(button, action);
-            }
-        }
-
-        return retval;
-    }
-
-	/** 
-	 * Get the command assocaited with the Action with the given id.
-	 * 
-	 * @param actionID Id of action to get command for.
-	 * @return Command associated with action, or null if none available.
-	 */
-    public Command getActionCommand(String actionID, AppContext context) {
-        Command retval = null;
-        AntAction action = (AntAction) _actions.get(actionID);
-        if(action != null) {
-            Class clazz = action.getCommandClass();
-            if(clazz != null) {
-                try {
-                    Constructor ctor = 
-                        clazz.getConstructor(COMMAND_CTOR_PARAMS);
-                    retval = (Command) ctor.newInstance(
-                        new Object[] { context });
-                }
-                catch(Exception ex) {
-                    // XXX log me.
-                    ex.printStackTrace();
-                }
-            }
-        }
-        return retval;
-    }
-
-
-	/** 
-	 * Add tool tip, Mnemonic, etc.
-	 * 
-	 * @param button Button to work on. 
-	 * @param action Associated action.
-	 */
-    private void addNiceStuff(AbstractButton button, AntAction action) {
-        // Set the action command so that it is consitent
-        // no matter what language the display is in.
-        button.setActionCommand(action.getID());
-
-        // XXX this should be moved to the config file.
-        String label = button.getText();
-        if(label != null) {
-            button.setMnemonic(label.charAt(0));
-        }
-
-        String tip = action.getShortDescription();
-        if(tip != null) {
-            button.setToolTipText(tip);
-        }
-    }
-
-
-    /** Class for updating the enabled status of icons based
-     *  on the events seen. */
-    private class Enabler implements BusMember {
-        private final Filter _filter = new Filter();
-
-        /** 
-         * Get the filter to that is used to determine if an event should
-         * to to the member.
-         * 
-         * @return Filter to use.
-         */
-        public BusFilter getBusFilter() {
-            return _filter;
-        }
-        
-        /** 
-         * Receives all events.
-         * 
-         * @param event Event to post.
-         * @return true if event should be propogated, false if
-         * it should be cancelled.
-         */
-        public boolean eventPosted(EventObject event) {
-            _mapper.applyEvent(event);
-            return true;
-        }
-    }
-
-    /** Class providing filtering for project events. */
-    private static class Filter implements BusFilter {
-        /** 
-         * Determines if the given event should be accepted.
-         * 
-         * @param event Event to test.
-         * @return True if event should be given to BusMember, false otherwise.
-         */
-        public boolean accept(EventObject event) {
-            return true;
-        }
-    }
-
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/AntAction.java b/src/antidote/org/apache/tools/ant/gui/core/AntAction.java
deleted file mode 100644
index 8f994d6..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/AntAction.java
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import javax.swing.*;
-import java.net.URL;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.*;
-
-import org.apache.tools.ant.gui.event.EventBus;
-
-/**
- * Class representing an action in the Antidote application. 
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class AntAction extends AbstractAction {
-    /** Property name for the parent menu item. */
-    public static final String PARENT_MENU_NAME = "parentMenuName";
-    public static final String SEPARATOR = "separator";
-    public static final String ACCELERATOR = "accelerator";
-    public static final String ENABLED = "enabled";
-    public static final String ENABLE_ON = "enableOn";
-    public static final String DISABLE_ON = "disableOn";
-    public static final String TOGGLE = "toggle";
-    public static final String COMMAND = "command";
-
-    /** Property resources. */
-    private  ResourceManager _resources =  null;
-    /** Event bus. */
-    private EventBus _bus = null;
-    /** Unique id. */
-    private String _id = null;
-
-    /** Events that the action should cause transition to the 
-     *  enabled(true) state. */
-    private Class[] _enableOn = null;
-    /** Events that the action should cause transition to the 
-     *  enabled(false) state. */
-    private Class[] _disableOn = null;
-    /** Flag indicating toggle action. */
-    private boolean _toggle = false;
-
-
-    /** 
-     * Standard ctor.
-     * 
-     * @param id Unique id for the action
-     */
-    public AntAction(ResourceManager resources, EventBus bus, String id) {
-        _resources = resources;
-        _bus = bus;
-        _id = id;
-        putValue(NAME, getString("name"));
-        putValue(SHORT_DESCRIPTION, getString("shortDescription"));
-        putValue(PARENT_MENU_NAME, getString(PARENT_MENU_NAME));
-        putValue(SEPARATOR, getString(SEPARATOR));
-
-
-        // Set the default enabled state.
-        String enabled = getString(ENABLED);
-        if(enabled != null) {
-            setEnabled(Boolean.valueOf(enabled).booleanValue());
-        }
-
-        // Set an accellerator if any.
-        String accelerator = getString(ACCELERATOR);
-        if(accelerator != null) {
-            putValue(ACCELERATOR, KeyStroke.getKeyStroke(accelerator));
-        }
-
-        // Check to see if action is a toggle action.
-        String toggle = getString(TOGGLE);
-        if(toggle != null) {
-            _toggle = Boolean.valueOf(toggle).booleanValue();
-        }
-
-        // See if there is a command associated with the action.
-        String command = getString(COMMAND);
-        if(command != null) {
-            try {
-                Class cmd = Class.forName(command);
-                putValue(COMMAND, cmd);
-            }
-            catch(Exception ex) {
-                // XXX log me.
-                ex.printStackTrace();
-            }
-        }
-
-        // Add an icon if any (which means it'll show up on the tool bar).
-        String iconName = getString("icon");
-        if(iconName != null) {
-            putValue(SMALL_ICON, _resources.loadImageIcon(iconName));
-        }
-
-        _enableOn = resolveClasses(getString(ENABLE_ON));
-        _disableOn = resolveClasses(getString(DISABLE_ON));
-
-    }
-        
-	/** 
-	 * Convenience method for looking put a resource with the name
-     * "id.key". Will return null if the resource doesn't exist.
-	 * 
-	 * @param key Key name for the action.
-	 * @return String resource for composite key, or null if not found.
-	 */
-    private String getString(String key) {
-        String retval = null;
-        try {
-            retval = _resources.getString(_id + "." + key);
-        }
-        catch(MissingResourceException ex) {
-            // Its ok to be missing a resource name...
-            // Too bad the API throws an exception in this case. 
-        }
-        return retval;
-    }
-
-
-	/** 
-	 * Parse out the list of classes from the given string and
-     * resolve them into classes.
-	 * 
-	 * @param classNames Comma delimited list of class names.
-	 */
-    private Class[] resolveClasses(String classNames) {
-        if(classNames == null) return null;
-
-        StringTokenizer tok = new StringTokenizer(classNames, ", ");
-        Vector vals = new Vector();
-        while(tok.hasMoreTokens()) {
-            String name = tok.nextToken();
-            try {
-                vals.addElement(Class.forName(name));
-            }
-            catch(ClassNotFoundException ex) {
-                //XXX log me.
-                System.err.println(
-                    "Warning: the event class " + name + 
-                    " was not found. Please check config file.");
-            }
-        }
-
-        Class[] retval = new Class[vals.size()];
-        vals.copyInto(retval);
-        return retval;
-    }
-
-    /** 
-     * Unique id for the action.
-     * 
-     * @return Action id.
-     */
-    public String getID() {
-        return _id;
-    }
-
-    /** 
-     * Get the name of the menu in the menu bar that this action shoul
-     * appear under.
-     * 
-     * @return Menu to appear under, or null if not a menu action.
-     */
-    public String getParentMenuName() {
-        return (String) getValue(PARENT_MENU_NAME);
-    }
-        
-    /** 
-     * Get the localized name for the action.
-     * 
-     * @return Name
-     */
-    public String getName() {
-        return (String) getValue(NAME);
-    }
-        
-    /** 
-     * Get the short description. Used in tool tips.
-     * 
-     * @return Short description.
-     */
-    public String getShortDescription() {
-        return (String) getValue(SHORT_DESCRIPTION);
-    }
-        
-    /** 
-     * Determine if a separator should appear before the action.
-     * 
-     * @return True if add separator, false otherwise.
-     */
-    public boolean isPreceededBySeparator() {
-        return Boolean.valueOf(
-            String.valueOf(getValue(SEPARATOR))).booleanValue();
-    }
-
-    /** 
-     * Get the icon.
-     * 
-     * @return Icon for action, or null if none.
-     */
-    public Icon getIcon() {
-        return (Icon) getValue(SMALL_ICON);
-    }
-
-	/** 
-	 * Get the accelerator keystroke.
-	 * 
-	 * @return Accelerator
-	 */
-    public KeyStroke getAccelerator() {
-        return (KeyStroke) getValue(ACCELERATOR);
-    }
-
-
-	/** 
-	 * Get the event types which should cause this to go to the
-     * enabled state.
-	 * 
-	 */
-    public Class[] getEnableOnEvents() {
-        return _enableOn;
-    }
-
-	/** 
-	 * Get the event types which should cause this to go to 
-     * this disabled state.
-	 * 
-	 */
-    public Class[] getDisableOnEvents() {
-        return _disableOn;
-    }
-
-	/** 
-	 * True if this is a toggle action, false otherwise.
-	 * 
-	 * @return True if this is a toggle action, false otherwise.
-	 */
-    public boolean isToggle() {
-        return _toggle;
-    }
-
-
-	/** 
-	 * Get the assciated command class.
-	 * 
-	 * @return Command class.
-	 */
-    public Class getCommandClass() {
-        return (Class) getValue(COMMAND);
-    }
-
-    /** 
-     * Pass the action on to the EventBus.
-     * 
-     * @param e Event to forward.
-     */
-    public void actionPerformed(ActionEvent e) {
-        _bus.postEvent(e);
-    }
-}
-
diff --git a/src/antidote/org/apache/tools/ant/gui/core/AntModule.java b/src/antidote/org/apache/tools/ant/gui/core/AntModule.java
deleted file mode 100644
index 9543d49..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/AntModule.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import javax.swing.JComponent;
-import javax.swing.BorderFactory;
-
-/**
- * Abstract base class for a "module", which is really anything that
- * can send or receive events, or edit or view the model.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public abstract class AntModule extends JComponent {
-
-    /** The application context. */
-    private AppContext _context = null;
-
-    /** 
-     * Default constructor.
-     */
-    protected AntModule() {
-        // Create a dummy border so that the widget will at least have a
-        // minimal display in a bean environment.
-        setBorder(BorderFactory.createTitledBorder(getClass().getName()));
-    }
-
-    /** 
-     * This method is called after instantiation when the application context
-     * is available for constructing the class' display. Think of this in
-     * a similar manner to Applet.init() or Servlet.init(). It should 
-     * immediately call #setContext() with the given parameter.
-     * 
-     * @param context Valid application context providing
-     *                all required resources.  
-     */
-    public abstract void contextualize(AppContext context);
-
-    /** 
-     * Set the application context.
-     * 
-     * @param context Application context.
-     */
-    protected void setContext(AppContext context) {
-        _context = context;
-        setBorder(_context == null ? null : 
-                  BorderFactory.createTitledBorder(getName()));
-    }
-
-    /** 
-     * Get the application context.
-     * 
-     * @return Application context.
-     */
-    public AppContext getContext() {
-        if(_context == null) {
-            throw new IllegalStateException(
-                "The AppContext has not been set.");
-        }
-        return _context;
-    }
-    /** 
-     * Get the name of the editor.
-     * 
-     * @return Editor's name.
-     */
-    public String getName() {
-        return getContext().getResources().getString(getClass(), "name");
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/AppContext.java b/src/antidote/org/apache/tools/ant/gui/core/AppContext.java
deleted file mode 100644
index 556c029..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/AppContext.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.gui.event.*;
-import org.apache.tools.ant.gui.acs.ACSProjectElement;
-import org.apache.tools.ant.gui.acs.ACSTargetElement;
-import java.awt.Frame;
-import java.util.*;
-
-/**
- * A container for the state information for the application. Provides
- * a centeralized place to gain access to resources and data.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class AppContext {
-    /** Event bus. */
-    private EventBus _eventBus = new EventBus();
-    /** Application resources. */
-    private ResourceManager _resources = new ResourceManager();
-    /** The project manager. */
-    private ProjectManager _projectManager = new ProjectManager();
-    /** Thing that keeps track of the current selection state. */
-    private SelectionManager _selectionManager = new SelectionManager();
-
-    /** Application actions. */
-    private ActionManager _actions = 
-        new ActionManager(_eventBus, new ResourceManager(
-            "org.apache.tools.ant.gui.resources.action"));
-
-    /** Parent frame used in various operations. XXX what do we do 
-     *  in the applet context. */
-    private Frame _parentFrame = null;
-
-    /** 
-     * Constructor of apps that don't have a graphical
-     * component (e.g. web based).
-     *  
-     */
-    public AppContext() {
-        this(null);
-    }
-
-    /** 
-     * Standard constructor.
-     * 
-     * @param parent Parent frame. XXX may go away.
-     */
-    public AppContext(Frame parent) {
-        _parentFrame = parent;
-        BuildEventForwarder handler = new BuildEventForwarder(this);
-        _projectManager.addBuildListener(handler);
-        _eventBus.addMember(EventBus.MONITORING, _selectionManager);
-    }
-
-	/** 
-	 * Get the parent frame. XXX may change...
-	 * 
-	 * @return Parent frame.
-	 */
-    public Frame getParentFrame() {
-        return _parentFrame;
-    }
-
-	/** 
-	 * Get the localized resources.
-	 * 
-	 * @return Resources.
-	 */
-    public ResourceManager getResources() {
-        return _resources;
-    }
-
-	/** 
-	 * Get the action manager.
-	 * 
-	 * @return Action manager.
-	 */
-    public ActionManager getActions() {
-        return _actions;
-    }
-
-	/** 
-	 * Get the event bus.
-	 * 
-	 * @return EventBus.
-	 */
-    public EventBus getEventBus() {
-        return _eventBus;
-    }
-
-    /** 
-     * Get the project manager.
-     * 
-     * @return Project manager.
-     */
-    public ProjectManager getProjectManager() {
-        return _projectManager;
-    }
-
-    /** 
-     * Get the selection manager.
-     * 
-     * @return Selection manager.
-     */
-    public SelectionManager getSelectionManager() {
-        return _selectionManager;
-    }
-}
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/core/BuildEventForwarder.java b/src/antidote/org/apache/tools/ant/gui/core/BuildEventForwarder.java
deleted file mode 100644
index b59bbfa..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/BuildEventForwarder.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import org.apache.tools.ant.gui.event.*;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.BuildEvent;
-
-/**
- * BuildListener for forwarding events to the EventBus.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class BuildEventForwarder implements BuildListener {
-
-    /** Application context. */
-    private AppContext _context = null;
-
-    public BuildEventForwarder(AppContext context) {
-        _context = context;
-    }
-
-    /**
-     *  Fired before any targets are started.
-     */
-    public void buildStarted(BuildEvent event){
-        postEvent(event, BuildEventType.BUILD_STARTED);
-        // We doubly post this event.
-        _context.getEventBus().postEvent(
-            new BuildStartedEvent(_context, event));
-    }
-
-    /**
-     *  Fired after the last target has finished. This event
-     *  will still be thrown if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void buildFinished(BuildEvent event) {
-        postEvent(event, BuildEventType.BUILD_FINISHED);
-        // We doubly post this event.
-        _context.getEventBus().postEvent(
-            new BuildFinishedEvent(_context, event));
-    }
-
-    /**
-     *  Fired when a target is started.
-     *
-     *  @see BuildEvent#getTarget()
-     */
-    public void targetStarted(BuildEvent event) {
-        postEvent(event, BuildEventType.TARGET_STARTED);
-    }
-
-    /**
-     *  Fired when a target has finished. This event will
-     *  still be thrown if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void targetFinished(BuildEvent event) {
-        postEvent(event, BuildEventType.TARGET_FINISHED);
-    }
-
-    /**
-     *  Fired when a task is started.
-     *
-     *  @see BuildEvent#getTask()
-     */
-    public void taskStarted(BuildEvent event) {
-        postEvent(event, BuildEventType.TASK_STARTED);
-    }
-
-    /**
-     *  Fired when a task has finished. This event will still
-     *  be throw if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void taskFinished(BuildEvent event) {
-        postEvent(event, BuildEventType.TASK_FINISHED);
-    }
-
-    /**
-     *  Fired whenever a message is logged.
-     *
-     *  @see BuildEvent#getMessage()
-     *  @see BuildEvent#getPriority()
-     */
-    public void messageLogged(BuildEvent event) {
-        postEvent(event, BuildEventType.MESSAGE_LOGGED);
-    }
-
-	/** 
-	 * Forward the event.
-	 * 
-	 * @param event Event to forward.
-	 * @param type Description of how the event came in.
-	 */
-    private void postEvent(BuildEvent event, BuildEventType type) {
-        _context.getEventBus().postEvent(
-            new AntBuildEvent(_context, event, type));
-    }
-
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/EventDebugMonitor.java b/src/antidote/org/apache/tools/ant/gui/core/EventDebugMonitor.java
deleted file mode 100644
index 2bad987..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/EventDebugMonitor.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import org.apache.tools.ant.gui.event.BusMember;
-import org.apache.tools.ant.gui.event.BusFilter;
-import java.util.EventObject;
-
-/**
- * Class that prints all events to stderr.
- *
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class EventDebugMonitor implements BusMember {
-
-    /** Filter for all events. */
-    private final Filter _filter = new Filter();
-
-    /** 
-     * Defatult ctor.
-     * 
-     */
-    public EventDebugMonitor() {
-    }
-
-    /** 
-     * Get the filter to that is used to determine if an event should
-     * to to the member.
-     * 
-     * @return Filter to use.
-     */
-    public BusFilter getBusFilter() {
-        return _filter;
-    }
-        
-    /** 
-     * Called when an event is to be posed to the member.
-     * 
-     * @param event Event to post.
-     * @return true if event should be propogated, false if
-     * it should be cancelled.
-     */
-    public boolean eventPosted(EventObject event) {
-        System.err.println(event);
-        return true;
-    }
-
-    /** Filter for all events. */
-    private static class Filter implements BusFilter {
-        public boolean accept(EventObject event) {
-            return true;
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/EventResponder.java b/src/antidote/org/apache/tools/ant/gui/core/EventResponder.java
deleted file mode 100644
index 99c5715..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/EventResponder.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import org.apache.tools.ant.gui.event.*;
-import org.apache.tools.ant.gui.command.*;
-import java.util.EventObject;
-import java.awt.event.ActionEvent;
-import javax.swing.*;
-
-/**
- * The purpose of this class is to watch for events that require some sort
- * of action, like opening a file.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class EventResponder {
-
-    /** The application context. */
-    private AppContext _context = null;
-
-	/** 
-	 * Standard constructor. 
-	 * 
-	 * @param context Application context.
-	 */
-    public EventResponder(AppContext context) {
-        _context = context;
-
-        // XXX This needs to be changed, along with the event bus,
-        // to allow the EventResponder to be the last listener
-        // to receive the event. This will allow the addition
-        // of event filters to yank an event out of the bus, sort of 
-        // like an interrupt level.
-        _context.getEventBus().addMember(
-			EventBus.RESPONDING, new ActionResponder());
-        _context.getEventBus().addMember(
-			EventBus.RESPONDING, new AntResponder());
-    }
-
-    /** Handler for bus events. */
-    private class ActionResponder implements BusMember {
-        private final ActionFilter _filter = new ActionFilter();
-
-        /** 
-         * Get the filter to that is used to determine if an event should
-         * to to the member.
-         * 
-         * @return Filter to use.
-         */
-        public BusFilter getBusFilter() {
-            return _filter;
-        }
-        
-        /** 
-         * Called when an event is to be posed to the member.
-         * 
-         * @param event Event to post.
-         * @return true if event should be propogated, false if
-         * it should be cancelled.
-         */
-        public boolean eventPosted(EventObject event) {
-            String command = ((ActionEvent)event).getActionCommand();
-
-            Command cmd = 
-                _context.getActions().getActionCommand(command, _context);
-            if(cmd != null) {
-                cmd.run();
-                return false;
-            }
-            else {
-				// XXX log me.
-                System.err.println("Unhandled action: " + command);
-                // XXX temporary.
-                new DisplayErrorCmd(
-                    _context, 
-                    "Sorry. \"" + command + 
-                    "\" not implemented yet. Care to help out?").run();
-                return true;
-            }
-        }
-    }
-
-    /** Filter for action events. */
-    private static class ActionFilter implements BusFilter {
-        public boolean accept(EventObject event) {
-            return event instanceof ActionEvent;
-        }
-    }
-
-    /** Handler for bus events. */
-    private class AntResponder implements BusMember {
-        private final AntFilter _filter = new AntFilter();
-
-        /** 
-         * Get the filter to that is used to determine if an event should
-         * to to the member.
-         * 
-         * @return Filter to use.
-         */
-        public BusFilter getBusFilter() {
-            return _filter;
-        }
-        
-        /** 
-         * Called when an event is to be posed to the member.
-         * 
-         * @param event Event to post.
-         * @return true if event should be propogated, false if
-         * it should be cancelled.
-         */
-        public boolean eventPosted(EventObject event) {
-            AntEvent e = (AntEvent) event;
-            Command cmd = e.createDefaultCmd();
-            cmd.run();
-            return cmd instanceof NoOpCmd;
-        }
-    }
-
-    /** Filter for ant events. */
-    private static class AntFilter implements BusFilter {
-        public boolean accept(EventObject event) {
-            return event instanceof AntEvent;
-        }
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/EventToActionMapper.java b/src/antidote/org/apache/tools/ant/gui/core/EventToActionMapper.java
deleted file mode 100644
index a3d24bd..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/EventToActionMapper.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-import java.util.*;
-
-/**
- * The purpose of this class is to manage the 
- * mappings between event type and action enabled state.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-class EventToActionMapper {
-
-    /** Lookup for enable(true) events. Key is event type, value is
-     *  a list of actions that are changed by the event. */
-    private Map _enableOn = new HashMap();
-    /** Lookup for enable(false) events. Key is event type, value is
-     *  a list of actions that are changed by the event. */
-    private Map _disableOn = new HashMap();
-
-
-	/** 
-	 * Defaul ctor.
-	 * 
-	 */
-    public EventToActionMapper() {
-    }
-
-	/** 
-	 * Add an action.
-	 * 
-	 * @param action Action to add.
-	 */
-    public void addAction(AntAction action) {
-        putAction(action, action.getEnableOnEvents(), _enableOn);
-        putAction(action, action.getDisableOnEvents(), _disableOn);
-    }
-
-	/** 
-	 * For the given action store it in the event type mapping
-     * for each of the given types.
-	 * 
-	 * @param action Action to store.
-	 * @param clazzes Array of types to store it under.
-	 * @param storage The place to store the association.
-	 */
-    private void putAction(AntAction action, Class[] clazzes, Map storage) {
-        if(clazzes == null) return;
-
-        for(int i = 0; i < clazzes.length; i++) {
-            List values = (List) storage.get(clazzes[i]);
-            if(values == null) {
-                values = new ArrayList(1);
-                storage.put(clazzes[i], values);
-            }
-
-            values.add(action);
-        }
-    }
-	/** 
-	 * For the given event change the state of any actions that 
-     * have been registered as needing a transition as a result of
-     * the event.
-	 * 
-	 * @param event The event to apply.
-	 */
-    public void applyEvent(EventObject event) {
-        if(event == null) return;
-
-        List vals = null;
-
-        vals = (List) _enableOn.get(event.getClass());
-        changeState(vals, true);
-
-        vals = (List) _disableOn.get(event.getClass());
-        changeState(vals, false);
-    }
-
-	/** 
-	 * Set the enabled state of the given actions.
-	 * 
-	 * @param actions List of AntActions to set state for.
-	 * @param state The state to set them to.
-	 */
-    private void changeState(List actions, boolean state) {
-        if(actions == null) return;
-
-        for(int i = 0, len = actions.size(); i < len; i++) {
-            AntAction action = (AntAction) actions.get(i);
-            action.setEnabled(state);
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/ProjectManager.java b/src/antidote/org/apache/tools/ant/gui/core/ProjectManager.java
deleted file mode 100644
index 226bbf0..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/ProjectManager.java
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.ProjectHelper;
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.gui.acs.*;
-import org.apache.tools.ant.gui.event.BuildEventType;
-import java.io.*;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.*;
-
-/**
- * This class is responsible for managing the currently open projects,
- * and the loading of new projects.
- * 
- * XXX need to add property change listeners support.
- *
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ProjectManager {
-
-    /** Set of open projects. */
-    private List _projects = new ArrayList(1);
-    /** List of build listeners to register when build starts. */
-    private List _buildListeners = new LinkedList();
-    /** The current thread executing a build. */
-    private Thread _buildThread = null;
-
-    public ProjectManager() {
-    }
-
-    /** 
-     * Get all the open projects.
-     * 
-     * @return an array of all open projects.
-     */
-    public ACSProjectElement[] getOpen() {
-        ACSProjectElement[] retval = new ACSProjectElement[_projects.size()];
-        _projects.toArray(retval);
-        return retval;
-    }
-
-    /** 
-     * Save the given project.
-     * 
-     * @param project Project to save.
-     */
-    public void save(ACSProjectElement project) throws IOException {
-        saveAs(project, null);
-    }
-
-
-    /** 
-     * Save the given project to the given location.
-     * 
-     * @param project Project to save.
-     * @param location Location to save to.
-     */
-    public void saveAs(ACSProjectElement project, URL location) 
-        throws IOException {
-
-        if(location == null) {
-            location = project.getLocation();
-        }
-        if(location == null) {
-            // This shouldn't happen.
-            throw new IOException("Logic error: Save location mising.");
-        }
-
-        Writer out = null;
-        try {
-            // XXX for some reason the URLConnection for protocol type "file"
-            // doesn't support output (at least that is what the exception
-            // says. I don't know if I'm doing something wrong or not, but 
-            // since we need to handle files differently (which is fine
-            // right now since files are all we really support anyway.
-            if(location.getProtocol().equals("file")) {
-                out = new FileWriter(location.getFile());
-            }
-            else {
-                // XXX This is here for future support of FTP/HTTP and
-                // the like. JDBC will have to be dealt with differently.
-                URLConnection connection = location.openConnection();
-                connection.setDoInput(false);
-                connection.setDoOutput(true);
-                out = new OutputStreamWriter(connection.getOutputStream());
-            }
-
-            // Persist the project.
-            project.write(out);
-            out.flush();
-            project.setLocation(location);
-        }
-        finally {
-            try { out.close(); } catch(Exception ex) {}
-        }
-    }
-
-    /** 
-     * Open the project persisted at the given location
-     * 
-     * @param location Location of project file.
-     * @return Successfully loaded project.
-     * @throws IOException thrown if there is a problem opening the project.
-     */
-    public ACSProjectElement open(File location) throws IOException {
-        return open(new URL("file", null, location.getPath()));
-    }
-
-    /** 
-     * Open the project persisted at the given location
-     * 
-     * @param location Location of project file.
-     * @return Successfully loaded project.
-     * @throws IOException thrown if there is a problem opening the project.
-     */
-    public ACSProjectElement open(URL location) throws IOException {
-        ACSProjectElement retval = null;
-        retval = ACSFactory.getInstance().load(location);
-        retval.setLocation(location);
-        _projects.add(retval);
-        return retval;
-    }
-
-    /** 
-     * Create a new, unpopulated project.
-     * 
-     * @return Unpopulated project.
-     */
-    public ACSProjectElement createNew() {
-        ACSProjectElement retval = ACSFactory.getInstance().createProject();
-        _projects.add(retval);
-        return retval;
-    }
-
-    /** 
-     * Remove the given project from the set of active projects. 
-     * 
-     * @param project Project to close.
-     */
-    public void close(ACSProjectElement project) {
-        _projects.remove(project);
-    }
-
-	/** 
-	 * Build the project with the given target (or the default target
-     * if none is selected.  Build occurs on a separate thread, so method
-     * returns immediately.
-	 * 
-     * @param project Project to build.
-     * @param targets Targets to build in project.
-	 */
-    public void build(ACSProjectElement project, ACSTargetElement[] targets) 
-        throws BuildException {
-        _buildThread = new Thread(new BuildRunner(project, targets));
-        _buildThread.start();
-    }
-
-	/** 
-	 * Add a build listener.
-	 * 
-	 * @param l Listener to add.
-	 */
-    public void addBuildListener(BuildListener l) {
-        synchronized(_buildListeners) {
-            _buildListeners.add(l);
-        }
-    }
-
-	/** 
-	 * Remove a build listener.
-	 * 
-	 * @param l Listener to remove.
-	 */
-    public void removeBuildListener(BuildListener l) {
-        synchronized(_buildListeners) {
-            _buildListeners.remove(l);
-        }
-    }
-
-	/** 
-	 * Determine if the given BuildListener is registered.
-	 * 
-	 * @param l Listener to test for.
-	 * @return True if listener has been added, false if unknown.
-	 */
-    public boolean isRegisteredBuildListener(BuildListener l) {
-        synchronized(_buildListeners) {
-            return _buildListeners.contains(l);
-        }
-    }
-
-	/** 
-	 * Get the set of current build listeners.
-	 * 
-     * @return Set of current build listeners.
-	 */
-    public BuildListener[] getBuildListeners() {
-        synchronized(_buildListeners) {
-            BuildListener[] retval = new BuildListener[_buildListeners.size()];
-            _buildListeners.toArray(retval);
-            return retval;
-        }
-    }
-
-    /** Class for executing the build in a separate thread. */
-    private class BuildRunner implements Runnable {
-        /** The project to execute build on. */
-        private ACSProjectElement _project = null;
-        /** Targets to build. */
-        private ACSTargetElement[] _targets = null;
-        /** The Ant core representation of a project. */
-        private Project _antProject = null;
-
-        /** 
-         * Standard ctor.
-         * 
-         * @param project Project to execute build on.
-         * @param targets Targets to build. 
-         */
-        public BuildRunner(ACSProjectElement project, 
-                           ACSTargetElement[] targets) throws BuildException {
-            _project = project;
-            _targets = targets;
-
-            URL location = _project.getLocation();
-            if(location == null) {
-                // XXX this needs to be changed so that if the project is
-                // not saved, or the persistence mechanism is remote
-                // then a temporary version is saved first.
-                throw new BuildException("Project must be saved first");
-            }
-
-            // XXX hopefully we will eventually be able to save
-            // project files to any type of URL. Right now the Ant core
-            // only supports Files.
-            if(!location.getProtocol().equals("file")) {
-                throw new IllegalArgumentException(
-                    "The Ant core only supports building from locally " +
-                    "stored build files.");
-            }
-
-            File f = new File(location.getFile());
-
-            _antProject = new Project();
-            _antProject.init();
-            // XXX there is a bunch of stuff in the class
-            // org.apache.tools.ant.Main that needs to be
-            // refactored out so that it doesn't have to be
-            // replicated here.
-            
-            // XXX need to provide a way to pass in externally
-            // defined properties.  Perhaps define an external
-            // Antidote properties file. JAVA_HOME may have to be set, 
-            // as well as checking the .ant.properties
-            _antProject.setUserProperty(
-                "ant.file" , f.getAbsolutePath());
-            ProjectHelper.configureProject(_antProject, f);
-        }
-
-        /** 
-         * Convenience method for causeing the project to fire a build event.
-         * Implemented because the corresponding method in the Project class
-         * is not publically accessible.
-         * 
-         * @param event Event to fire.
-         */
-        private void fireBuildEvent(BuildEvent event, BuildEventType type) {
-            Enumeration enum = _antProject.getBuildListeners().elements();
-            while(enum.hasMoreElements()) {
-                BuildListener l = (BuildListener) enum.nextElement();
-                type.fireEvent(event, l);
-            }
-        }
-
-        /** 
-         * Run the build.
-         * 
-         */
-        public void run() {
-            synchronized(_antProject) {
-                // Add the build listeners
-                BuildListener[] listeners = getBuildListeners();
-                for(int i = 0; i < listeners.length; i++) {
-                    _antProject.addBuildListener(listeners[i]);
-                }
-                
-                try {
-                    
-                    fireBuildEvent(new BuildEvent(
-                        _antProject), BuildEventType.BUILD_STARTED);
-                    
-                    
-                    Vector targetNames = new Vector();
-                    if(_targets == null || _targets.length == 0) {
-                        targetNames.add(_antProject.getDefaultTarget());
-                    }
-                    else {
-                        for(int i = 0; i < _targets.length; i++) {
-                            targetNames.add(_targets[i].getName());
-                        }
-                    }
-                    
-                    // Execute build on selected targets. XXX It would be 
-                    // nice if the Project API supported passing in target 
-                    // objects rather than String names.
-                    _antProject.executeTargets(targetNames);
-                }
-                catch(BuildException ex) {
-                    BuildEvent errorEvent = new BuildEvent(_antProject);
-                    errorEvent.setException(ex);
-                    errorEvent.setMessage(ex.getMessage(), Project.MSG_ERR);
-                    fireBuildEvent(errorEvent, BuildEventType.MESSAGE_LOGGED);
-                }
-                finally {
-                    fireBuildEvent(new BuildEvent(
-                        _antProject), BuildEventType.BUILD_FINISHED);
-                    
-                    // Remove the build listeners.
-                    for(int i = 0; i < listeners.length; i++) {
-                        _antProject.removeBuildListener(listeners[i]);
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/ProjectSelectionMenu.java b/src/antidote/org/apache/tools/ant/gui/core/ProjectSelectionMenu.java
deleted file mode 100644
index a3b83f6..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/ProjectSelectionMenu.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import org.apache.tools.ant.gui.event.*;
-import org.apache.tools.ant.gui.acs.ACSProjectElement;
-import javax.swing.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.*;
-import java.beans.PropertyChangeEvent;
-
-/**
- * Specialization of JMenu providing selectability of the currently
- * open projects.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ProjectSelectionMenu extends JMenu {
-    /** Application context. */
-    private AppContext _context = null;
-    /** Current set of menus. */
-    private Map _menus = new HashMap();
-        
-
-    /** 
-     * Standard ctor.
-     * 
-     * @param context Application context.
-     */
-    public ProjectSelectionMenu(AppContext context) {
-        super(context.getResources().getString(
-            ProjectSelectionMenu.class, "name"), true);
-        _context = context;
-        _context.getEventBus().addMember(
-            EventBus.MONITORING, new ProjectListener());
-        setMnemonic(getText().charAt(0));
-    }
-
-    /** 
-     * Replace or add the JMenu called "Projects" with this.
-     * 
-     * @param menuBar Menu bar to insert into.
-     */
-    public void insertInto(JMenuBar menuBar) {
-        // Iterate of the menu items looking for the one with the same name
-        // as ours.
-        int count = menuBar.getComponentCount();
-        for(int i = 0; i < count; i++) {
-            JMenuItem menu = (JMenuItem) menuBar.getComponent(i);
-            if(menu.getText().equals(getText())) {
-                menuBar.remove(menu);
-                menuBar.add(this, i);
-                return;
-            }
-        }
-
-        // Getting here we didn't find a menu with the same name.
-        add(this);
-    }
-
-
-    /** Listener for updating the contents of the menu. */
-    private class ProjectListener implements BusMember {
-        /** Event filter. */
-        private final Filter _filter = new Filter();
-        /** Action handler. */
-        private final ActionHandler _handler = new ActionHandler();
-        /** 
-         * Get the filter to that is used to determine if an event should
-         * to to the member.
-         * 
-         * @return Filter to use.
-         */
-        public BusFilter getBusFilter() {
-            return _filter;
-        }
-
-        /** 
-         * Called when an event is to be posed to the member.
-         * 
-         * @param event Event to post.
-         * @return true if event should be propogated, false if
-         * it should be cancelled.
-         */
-        public boolean eventPosted(EventObject event) {
-            // Clear out our existing members
-            removeAll();
-            _menus.clear();
-
-            ACSProjectElement[] projects = 
-                _context.getProjectManager().getOpen();
-            for(int i = 0; i < projects.length; i++) {
-                JMenuItem menu = new JMenuItem(projects[i].getName());
-                menu.addActionListener(_handler);
-                _menus.put(menu, projects[i]);
-                add(menu);
-            }
-            return true;
-        }
-    }
-
-    /** Filter for project related events. */
-    private static class Filter implements BusFilter {
-        public boolean accept(EventObject event) {
-            // We want events related to projects.
-            return event instanceof ProjectSelectedEvent ||
-                event instanceof ProjectClosedEvent || 
-                (event instanceof PropertyChangeEvent && 
-                 ((PropertyChangeEvent)event).getSource() 
-                 instanceof ACSProjectElement);
-        }
-    }
-
-    /** Handler for selecting the project. */
-    private class ActionHandler implements ActionListener {
-        public void actionPerformed(ActionEvent e) {
-            ACSProjectElement project = 
-                (ACSProjectElement) _menus.get(e.getSource());
-            _context.getEventBus().postEvent(
-                new ProjectSelectedEvent(_context, project));
-        }
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java b/src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java
deleted file mode 100644
index 16ff059..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import java.util.*;
-import java.text.MessageFormat;
-import javax.swing.ImageIcon;
-import java.net.URL;
-import java.io.File;
-
-/**
- * Singleton class for accessing various resources by the application.
- * Relies on the resource bundles for resource values.
- *
- * @version $Revision$ 
- * @author Simeon H.K. Fitch 
- */
-public class ResourceManager {
-
-    /** Path to default resources. */
-    private static final String RESOURCE_PKG = 
-        "org.apache.tools.ant.gui.resources";
-    /** Path to default resources. */
-    private static final String DEF_PROPERTIES = 
-        RESOURCE_PKG + ".antidote";
-
-    /** Image path. */
-    private static final String IMG_PATH = 
-        '/' + RESOURCE_PKG.replace('.', '/');
-
-    /** Resources to reference. */
-    private ResourceBundle _resources = null;
-
-    /** 
-     * Default ctor. Uses the default properties file for antidote.
-     * 
-     */
-    public ResourceManager() {
-        this(DEF_PROPERTIES);
-    }
-
-    /** 
-     * Standard ctor.
-     * 
-     * @param propName Fully qualified name of the resources to use.
-     */
-    public ResourceManager(String propName) {
-        _resources = ResourceBundle.getBundle(propName);
-    }
-
-    /** 
-     * Generate a composit key from the given class and key name.
-     * 
-     * @param clazz Class to find resource for.
-     * @param name Name of the resource.
-     * @return Composite key.
-     */
-    private String getKey(Class clazz, String name) {
-        name = name == null ? "" : name;
-
-        return clazz == null ? name : clazz.getName() + "." + name;
-    }
-
-    /** 
-     * Get non-qualified String resource.
-     * 
-     * @param name Name of the resource.
-     * @return Value of the resource.
-     */
-    public String getString(String name) {
-        return getString(null, name);
-    }
-
-    /** 
-     * Get a string resource for the given class.
-     * 
-     * @param clazz Class to get resource for.
-     * @param name Name of the string resource.
-     * @return String resource for the given class.
-     */
-    public String getString(Class clazz, String name) {
-        if(name == null) {
-            return null;
-        }
-
-        try {
-            return _resources.getString(getKey(clazz, name));
-        }
-        catch(MissingResourceException ex) {
-            return null;
-        }
-    }
-
-    /** 
-     * Get a non-qualified array of string resources for the given class.
-     * 
-     * @param name Name of the string resource.
-     * @return Array of string resources for the given class.
-     */
-    public String[] getStringArray(String name) {
-        return getStringArray(null, name);
-    }
-    /** 
-     * Get an array of string resources for the given class.
-     * 
-     * @param clazz Class to get resource for.
-     * @param name Name of the string resource.
-     * @return Array of string resources for the given class.
-     */
-    public String[] getStringArray(Class clazz, String name) {
-        if(name == null) {
-            return null;
-        }
-
-        String key = getKey(clazz, name);
-
-        String toTok = null;
-        try {
-            toTok = _resources.getString(key);
-        }
-        catch(MissingResourceException ex) {
-            // Ignore as we are doing a cascading lookup.
-        }
-
-        if(toTok == null) {
-            try {
-                return _resources.getStringArray(key);
-            }
-            catch(MissingResourceException ex) {
-                return null;
-            }
-        }
-        else {
-            StringTokenizer tok = new StringTokenizer(toTok, ", ");
-            String[] retval = new String[tok.countTokens()];
-            for(int i = 0; i < retval.length; i++) {
-                retval[i] = tok.nextToken();
-            }
-            return retval;
-        }
-    }
-
-    /** 
-     * Get the boolean resource for the given name. Case
-     * insensitive values of "yes" or "true" evaluate to TRUE.
-     * All others, including undefined resources evaluate to FALSE.
-     * 
-     * @param name Name of the boolean resource.
-     * @return True if defined as true, false otherwise.
-     */
-    public boolean getBoolean(String name) {
-        return getBoolean(null, name);
-    }
-
-    /** 
-     * Get the boolean resource for the given class. Case
-     * insensitive values of "yes" or "true" evaluate to TRUE.
-     * All others, including undefined resources evaluate to FALSE.
-     * 
-     * @param clazz Class to get resource for.
-     * @param name Name of the boolean resource.
-     * @return True if defined as true, false otherwise.
-     */
-    public boolean getBoolean(Class clazz, String name) {
-        if(name == null) {
-            return false;
-        }
-
-        String key = getKey(clazz, name);
-
-        String value = "";
-        try {
-            value = _resources.getString(key);
-        }
-        catch(MissingResourceException ex) {
-            return false;
-        }
-
-        return value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes");
-    }
-
-    /** 
-     * Get the non-qualified Class type resource for the given key.
-     * 
-     * @param name Name of the resourdce.
-     * @return Class associated with the key name.
-     */
-    public Class getClass(String name) 
-        throws ClassNotFoundException {
-        return getClass(null, name);
-    }
-
-    /** 
-     * Get the Class type resource for the given class and key name.
-     * 
-     * @param clazz Class requesting the resource.
-     * @param name Name of the resource.
-     * @return Class associated with the key name.
-     */
-    public Class getClass(Class clazz, String name) 
-        throws ClassNotFoundException {
-
-        String key = getKey(clazz, name);
-        try {
-            String value = _resources.getString(key);
-            return Class.forName(value);
-        }
-        catch(MissingResourceException ex) {
-            return null;
-        }
-
-    }
-
-
-    /** 
-     * Generate a localized message using the given set of arguments to 
-     * format the message with.
-     * 
-     * @param name Name of the message.
-     * @param arguments Arguments to the message.
-     * @return The formatted message.
-     */
-    public String getMessage(String name, Object[] arguments) {
-        return getMessage(null, name, arguments);
-    }
-
-    /** 
-     * Generate a localized message using the given set of arguments to 
-     * format the message with.
-     * 
-     * @param clazz Class to get message resource for.
-     * @param name Name of the message.
-     * @param arguments Arguments to the message.
-     * @return The formatted message.
-     */
-    public String getMessage(Class clazz, String name, Object[] arguments) {
-        String format = getString(clazz, name);
-        return MessageFormat.format(format, arguments);
-    }
-
-    /** 
-     * Get the image as an ImageIcon assigned to the given class with the
-     * given key.
-     * 
-     * @param clazz The class to load icon for.
-     * @param key The key for looking up the icon.
-     * @return Image as an ImageIcon, or null if not found.
-     */
-    public ImageIcon getImageIcon(Class clazz, String key) {
-        return loadImageIcon(getString(clazz, key));
-    }
-
-    /** 
-     * Get the image as an ImageIcon with the given file name. 
-     * For example "open.gif". The image is loaded from the resources package.
-     * 
-     * @param fileName Image file to load.
-     * @return Image as an ImageIcon, or null if not found.
-     */
-    public ImageIcon loadImageIcon(String fileName) {
-        if(fileName == null) return null;
-
-        ImageIcon icon = null;
-        URL location = getClass().getResource(IMG_PATH + "/" + fileName);
-        if(location != null) {
-            icon = new ImageIcon(location);
-        }
-        return icon;
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/SelectionManager.java b/src/antidote/org/apache/tools/ant/gui/core/SelectionManager.java
deleted file mode 100644
index ca24214..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/SelectionManager.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import org.apache.tools.ant.gui.event.*;
-import org.apache.tools.ant.gui.command.*;
-import org.apache.tools.ant.gui.acs.*;
-import java.util.EventObject;
-import java.awt.event.ActionEvent;
-import javax.swing.*;
-
-/**
- * State management class for keeping track of what build file elements are
- * currently selected. It monitors the EventBus for selection events and
- * Records the current state. It should be registered with the EventBus
- * at the MONITORING level.
- *
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class SelectionManager implements BusMember {
-    /** The filter for getting the correct events.*/
-    private final Filter _filter = new Filter();
-
-    /** The currently selected project. */
-    private ACSProjectElement _project = null;
-    /** The current set of selected targets. */
-    private ACSTargetElement[] _targets = null;
-    /** The current set of selected elements. */
-    private ACSElement[] _elements = null;
-
-    public SelectionManager() {
-    }
-
-    /** 
-     * Get the filter to that is used to determine if an event should
-     * to to the member.
-     * 
-     * @return Filter to use.
-     */
-    public BusFilter getBusFilter() {
-        return _filter;
-    }
-    
-
-    /** 
-     * Get the currently selected project.
-     * 
-     * @return Current project.
-     */
-    public ACSProjectElement getSelectedProject() {
-        return _project;
-    }
-
-    /** 
-     * Get the selected elements that are targets.
-     * 
-     */
-    public ACSTargetElement[] getSelectedTargets() {
-        return _targets;
-    }
-
-    /** 
-     * Get the selected elements.
-     * 
-     */
-    public ACSElement[] getSelectedElements() {
-        return _elements;
-    }
-
-    /** 
-     * Called when an event is to be posed to the member.
-     * 
-     * @param event Event to post.
-     * @return true if event should be propogated, false if
-     * it should be cancelled.
-     */
-    public boolean eventPosted(EventObject event) {
-        _elements = ((ElementSelectionEvent)event).getSelectedElements();
-
-        if(event instanceof TargetSelectionEvent) {
-            _targets = ((TargetSelectionEvent)event).getSelectedTargets();
-        }
-        else if(event instanceof ProjectSelectedEvent) {
-            _project = ((ProjectSelectedEvent)event).getSelectedProject();
-        }
-        return true;
-    }
-
-    /** Filter for ElementSelectionEvent objects. */
-    private static class Filter implements BusFilter {
-        public boolean accept(EventObject event) {
-            return event instanceof ElementSelectionEvent;
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/core/XMLFileFilter.java b/src/antidote/org/apache/tools/ant/gui/core/XMLFileFilter.java
deleted file mode 100644
index 795f9d8..0000000
--- a/src/antidote/org/apache/tools/ant/gui/core/XMLFileFilter.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.core;
-
-import javax.swing.filechooser.FileFilter;
-import java.io.File;
-
-/**
- * FileFilter for showing only XML files.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class XMLFileFilter extends FileFilter {
-
-    /** Text description of filter. */
-    private String _description = null;
-
-
-    /** 
-     * Standard constructor.
-     * 
-     * @param resources Access to text resources.
-     */
-    public XMLFileFilter(ResourceManager resources) {
-        _description = resources.getString(getClass(), "description");
-    }
-
-    /** 
-     * Accept files that end with ".xml".
-     * 
-     * @param f File to test.
-     * @return True if accepted, false otherwise.
-     */
-    public boolean accept(File f) {
-        if(f.isDirectory()) return true;
-
-        String name = f.getName().toLowerCase();
-        return name.endsWith(".xml");
-    }
-
-    /** 
-     * Human readable description of filter.
-     * 
-     * @return Description.
-     */
-    public String getDescription() {
-        return _description;
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/.wrapper b/src/antidote/org/apache/tools/ant/gui/customizer/.wrapper
deleted file mode 100755
index 5995815..0000000
--- a/src/antidote/org/apache/tools/ant/gui/customizer/.wrapper
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh 
-# Wrapper script for launching Java files without having to type the 
-# package prefix. To use make a link to this file with the same name
-# as the class you want to run.
-
-# Edit this line to represent the package that your class belongs to.
-PACKAGE=org.apache.tools.ant.gui.customizer
-
-# Set your application's classpath here.
-CLASSPATH=$HOME/build/antidote/classes:$HOME/build/ant/lib/ant.jar
-
-# Compose the fully qualified class name.
-START=$PACKAGE.`basename $0`
-
-# Java runtime path.
-EXE=/usr/java1.3/bin/java
-
-# Set any runtime options here
-OPTS="-classpath $CLASSPATH"
-
-# Turn the JIT off if the variable "DEBUG" is set in the environment.
-if [ ! -z $DEBUG ]; then 
-	OPTS="$OPTS -Djava.compiler=NONE"
-fi
-
-# Launch the program.
-#echo $EXE $OPTS $START $*
-exec $EXE $OPTS $START $*
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/AbstractPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/AbstractPropertyEditor.java
deleted file mode 100644
index 1feb702..0000000
--- a/src/antidote/org/apache/tools/ant/gui/customizer/AbstractPropertyEditor.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.customizer;
-
-import java.beans.*;
-import java.awt.Graphics;
-import java.awt.Component;
-import java.awt.Rectangle;
-import java.awt.Dimension;
-import javax.swing.JComponent;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusAdapter;
-
-/**
- * Abstract base class for the custom type property editors.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public abstract class AbstractPropertyEditor implements PropertyEditor {
-
-    /** Bean property change property name. */
-    public static final String BEAN_PROP = "BeanEditorProperty";
-    /** Event listener support. */
-    private PropertyChangeSupport _listeners = new PropertyChangeSupport(this);
-
-    /** 
-     * Default constructor.
-     * 
-     */
-    protected AbstractPropertyEditor() {
-    }
-
-    /**
-     * Paint a representation of the value into a given area of screen
-     * real estate.  Note that the propertyEditor is responsible for doing
-     * its own clipping so that it fits into the given rectangle.
-     * <p>
-     * If the PropertyEditor doesn't honor paint requests (see isPaintable)
-     * this method should be a silent noop.
-     * <p>
-     * The given Graphics object will have the default font, color, etc of
-     * the parent container.  The PropertyEditor may change graphics attributes
-     * such as font and color and doesn't need to restore the old values.
-     *
-     * @param gfx  Graphics object to paint into.
-     * @param box  Rectangle within graphics object into which we should paint.
-     */
-    public void paintValue(Graphics gfx, Rectangle box) {
-        Object o = getValue();
-        String s = o == null ? "<null>" : o.toString();
-        gfx.drawString(s, box.x, box.y);
-    }
-
-
-    /** 
-     * Fire a property change event to listeners.
-     * 
-     * @param oldValue Old value.
-     * @param newValue New value.
-     */
-    public void firePropertyChange(Object oldValue, Object newValue) {
-        _listeners.firePropertyChange(BEAN_PROP, oldValue, newValue);
-    }
-
-    /** 
-     * Add a property change listener. XXX This may cause undesired
-     * side affects with merging property changes with JPanel class.
-     * Need to test for a while.
-     * 
-     * @param l Change listener.
-     */
-    public void addPropertyChangeListener(PropertyChangeListener l) {
-        _listeners.addPropertyChangeListener(l);
-    }
-
-    /** 
-     * Remove a property change listener. 
-     * 
-     * @param l Change listener.
-     */
-    public void removePropertyChangeListener(PropertyChangeListener l) {
-        _listeners.removePropertyChangeListener(l);
-    }
-
-    /**
-     * @return  True if the class will honor the paintValue method.
-     */
-    public boolean isPaintable() {
-        return true;
-    }
-
-    /**
-     * If the property value must be one of a set of known tagged values, 
-     * then this method should return an array of the tags.  This can
-     * be used to represent (for example) enum values.  If a PropertyEditor
-     * supports tags, then it should support the use of setAsText with
-     * a tag value as a way of setting the value and the use of getAsText
-     * to identify the current value.
-     *
-     * @return The tag values for this property.  May be null if this 
-     *   property cannot be represented as a tagged value.
-     *  
-     */
-    public String[] getTags() {
-        return null;
-    }
-
-    /**
-     * A PropertyEditor may choose to make available a full custom Component
-     * that edits its property value.  It is the responsibility of the
-     * PropertyEditor to hook itself up to its editor Component itself and
-     * to report property value changes by firing a PropertyChange event.
-     * <P>
-     * The higher-level code that calls getCustomEditor may either embed
-     * the Component in some larger property sheet, or it may put it in
-     * its own individual dialog, or ...
-     *
-     * @return A java.awt.Component that will allow a human to directly
-     *      edit the current property value.  May be null if this is
-     *      not supported.
-     */
-    public Component getCustomEditor() {
-        return getChild();
-    }
-
-    /**
-     * @return  True if the propertyEditor can provide a custom editor.
-     */
-    public boolean supportsCustomEditor() {
-        return true;
-    }
-
-    /**
-     * This method is intended for use when generating Java code to set
-     * the value of the property.  It should return a fragment of Java code
-     * that can be used to initialize a variable with the current property
-     * value.
-     * <p>
-     * Example results are "2", "new Color(127,127,34)", "Color.orange", etc.
-     *
-     * @return A fragment of Java code representing an initializer for the
-     *      current value.
-     */
-    public String getJavaInitializationString() {
-        return "";
-    }
-
-    /** 
-     * Get the child editing component. 
-     * 
-     * @return Child editing component.
-     */
-    protected abstract Component getChild();
-
-    /** Helper class for detecting changes and generating change events
-     *  on a focus lost event. */
-    protected static class FocusHandler extends FocusAdapter {
-        /** Last value of the editor. */
-        private Object _value = null;
-        /** Editor of interest. */
-        private AbstractPropertyEditor _editor = null;
-
-        /** 
-         * Standard constructor.
-         * 
-         * @param editor Editor of interest.
-         */
-        public FocusHandler(AbstractPropertyEditor editor) {
-            _editor = editor;
-        }
-
-        /** 
-         * Called when focus is gained.
-         * 
-         * @param e Focus event.
-         */
-        public void focusGained(FocusEvent e) {
-            _value = _editor.getValue();
-        }
-        
-        /** 
-         * Called when focus is lost. Checks to see if value changed and
-         * fires a change event if needed.
-         * 
-         * @param e Focus event.
-         */
-        public void focusLost(FocusEvent e) {
-            if((_value != null && !_value.equals(_editor.getValue())) ||
-               (_value == null && _editor.getValue() != null)) {
-                _editor.firePropertyChange(_value, _editor.getValue());
-            }
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/DoublePropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/DoublePropertyEditor.java
deleted file mode 100644
index 560de00..0000000
--- a/src/antidote/org/apache/tools/ant/gui/customizer/DoublePropertyEditor.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.customizer;
-
-import javax.swing.*;
-import java.awt.Component;
-
-/**
- * Custom property editor for editing double values.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class DoublePropertyEditor extends AbstractPropertyEditor {
-    /** Editing widget. */
-    private JTextField _widget = null;
-
-    /** 
-     * Default ctor.
-     * 
-     */
-    public DoublePropertyEditor() {
-        _widget = new JTextField();
-        _widget.addFocusListener(new FocusHandler(this));
-    }
-
-    /** 
-     * Get the child editing component. Uses JComponent so we can have tool
-     * tips, etc.
-     * 
-     * @return Child editing component.
-     */
-    protected Component getChild() {
-        return _widget;
-    }
-
-    /**
-     * This method is intended for use when generating Java code to set
-     * the value of the property.  It should return a fragment of Java code
-     * that can be used to initialize a variable with the current property
-     * value.
-     * <p>
-     * Example results are "2", "new Color(127,127,34)", "Color.orange", etc.
-     *
-     * @return A fragment of Java code representing an initializer for the
-     *      current value.
-     */
-    public String getJavaInitializationString() {
-        return "new Double(" + getAsText() + ")";
-    }
-
-    /**
-     * Set (or change) the object that is to be edited.  Builtin types such
-     * as "int" must be wrapped as the corresponding object type such as
-     * "java.lang.Integer".
-     *
-     * @param value The new target object to be edited.  Note that this
-     *     object should not be modified by the PropertyEditor, rather 
-     *     the PropertyEditor should create a new object to hold any
-     *     modified value.
-     */
-    public void setValue(Object value) {
-        Object old = _widget.getText();
-        if(!(value instanceof Double)) {
-            value = new Double(0);
-        }
-
-        _widget.setText(value.toString());
-    }
-
-    /**
-     * @return The value of the property.  Builtin types such as "int" will
-     * be wrapped as the corresponding object type such as "java.lang.Integer".
-     */
-    public Object getValue() {
-        Double retval = null;
-        try {
-            retval = new Double(_widget.getText());
-        }
-        catch(NumberFormatException ex) {
-            retval = new Double(0);
-            _widget.setText(retval.toString());
-        }
-        return retval;
-    }
-
-    /**
-     * Set the property value by parsing a given String.  May raise
-     * java.lang.IllegalArgumentException if either the String is
-     * badly formatted or if this kind of property can't be expressed
-     * as text.
-     * @param text  The string to be parsed.
-     */
-    public void setAsText(String text) {
-        Object old = _widget.getText();
-        Double val = null;
-        try {
-            val = new Double(text);
-        }
-        catch(NumberFormatException ex) {
-            val = new Double(0);
-        }
-        text = val.toString();
-        _widget.setText(text);
-    }
-
-    /**
-     * @return The property value as a human editable string.
-     * <p>   Returns null if the value can't be expressed 
-     *       as an editable string.
-     * <p>   If a non-null value is returned, then the PropertyEditor should
-     *       be prepared to parse that string back in setAsText().
-     */
-    public String getAsText() {
-        return _widget.getText();
-    } 
-}
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/DynamicCustomizer.java b/src/antidote/org/apache/tools/ant/gui/customizer/DynamicCustomizer.java
deleted file mode 100644
index b374ceb..0000000
--- a/src/antidote/org/apache/tools/ant/gui/customizer/DynamicCustomizer.java
+++ /dev/null
@@ -1,608 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.customizer;
-
-import org.apache.tools.ant.gui.util.LabelFieldGBC;
-import java.lang.reflect.*;
-import java.beans.*;
-import javax.swing.*;
-import java.util.*;
-import java.io.File;
-import java.awt.*;
-
-/**
- * Widget for dynamically constructing a property editor based on the 
- * an Object's BeanInfo. Essentially a property sheet.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class DynamicCustomizer extends JPanel implements Customizer, Scrollable {
-	static {
-		PropertyEditorManager.registerEditor(
-			String.class, StringPropertyEditor.class);
-		PropertyEditorManager.registerEditor(
-			String[].class, StringArrayPropertyEditor.class);
-		PropertyEditorManager.registerEditor(
-			int.class, IntegerPropertyEditor.class);
-		PropertyEditorManager.registerEditor(
-			Integer.class, IntegerPropertyEditor.class);
-		PropertyEditorManager.registerEditor(
-			double.class, DoublePropertyEditor.class);
-		PropertyEditorManager.registerEditor(
-			Double.class, DoublePropertyEditor.class);
-		PropertyEditorManager.registerEditor(
-			Properties.class, PropertiesPropertyEditor.class);
-		PropertyEditorManager.registerEditor(
-			File.class, FilePropertyEditor.class);
-		PropertyEditorManager.registerEditor(
-			Object.class, ObjectPropertyEditor.class);
-	}
-
-    /** Property name that PropertyDescriptors can save in their property
-     *  dictionaries for for specifiying a display sorting order. The value
-     *  sould be of type Integer. */
-    public static final String SORT_ORDER = "sortOrder";
-
-	/** The type that this editor instance can handle. */
-	private Class _type = null;
-	/** The value currently being edited. */
-	private Object _value = null;
-	/** Mapping from PropertyDescriptor to PropertyEditor. */
-	private Map _prop2Editor = new HashMap();
-	/** Mapping from PropertyEditor to field PropertyDescriptor. */
-	private Map _editor2Prop = new HashMap();
-	/** Listener for receiving change events from the editors. */
-	private EditorChangeListener _eListener = new EditorChangeListener();
-    /** Read-only flag. */
-    private boolean _readOnly = false;
-    /** List of property change listeners interested when the bean
-     *  being edited has been changed. */
-    private java.util.List _changeListeners = new LinkedList();
-    /** Flag to trun off event propogation. */
-    private boolean _squelchChangeEvents = false;
-
-	/** 
-     * Standard constructor.
-     *
-     * @param type Type that you are going to be creating and editor for.
-     */
-    public DynamicCustomizer(Class type) {
-        this(type, false);
-    }
-
-	/** 
-     * Standard constructor.
-     *
-     * @param type Type that you are going to be creating and editor for.
-     * @param readOnly Set to true to create a read-only customizer.
-     */
-    public DynamicCustomizer(Class type, boolean readOnly) {
-        super(new GridBagLayout());
-        _readOnly = readOnly;
-        _type = type;
-        
-        LabelFieldGBC gbc = new LabelFieldGBC();
-        try {
-            BeanInfo info = Introspector.getBeanInfo(type);
-            // Set up pretty display stuff.
-            setBorder(BorderFactory.createTitledBorder(
-                info.getBeanDescriptor().getDisplayName()));
-            setToolTipText(info.getBeanDescriptor().getShortDescription());
-
-            // Get the properties and sort them.
-            PropertyDescriptor[] props = info.getPropertyDescriptors();
-            Arrays.sort(props, new PropertyComparator());
-            for(int i = 0; i < props.length; i++) {
-                // Ignore the "class" property, if it is provided.
-                if(props[i].getName().equals("class")) continue;
-                // Create a label for the field.
-                JLabel label = new JLabel(props[i].getDisplayName() + ":");
-                
-                // Lookup the editor.
-                PropertyEditor editor = getEditorForProperty(props[i]);
-
-                // Add a listener to the editor so we know when to update
-                // the bean's fields.
-                editor.addPropertyChangeListener(_eListener);
-                
-                // XXX What we need to do right here is provide a component
-                // that makes use of the "paintable" capability of the editor.
-                Component comp = editor.getCustomEditor();
-                if(comp == null) {
-                    comp = new JLabel("<No editor available.>");
-                    ((JLabel)comp).setBorder(BorderFactory.createEtchedBorder());
-                }
-                
-                // See if it is a read-only property. If so, then just
-                // display it.
-                if(_readOnly || props[i].getWriteMethod() == null) {
-                    comp.setEnabled(false);
-                }
-
-                // Setup the accellerator key.
-                label.setLabelFor(comp);
-                label.setDisplayedMnemonic(label.getText().charAt(0));
-
-                // Set the tool tip text, if any.
-                String tip = props[i].getShortDescription();
-                if(tip != null) {
-                    label.setToolTipText(tip);
-                    if(comp instanceof JComponent) {
-                        ((JComponent)comp).setToolTipText(tip);
-                    }
-                }
-
-                // Add the label and fields.
-                add(label, gbc.forLabel());
-                add(comp, gbc.forField());
-
-                // Set the mappings between editor and property, etc. for
-                // quick lookup later.
-                _prop2Editor.put(props[i], editor);
-                _editor2Prop.put(editor, props[i]);
-            }
-            // Filler...
-            add(new JLabel(), gbc.forLastLabel());
-
-        }
-        catch(Exception ex) {
-            ex.printStackTrace();
-        }
-    }
-
-
-    /** 
-     * Set the object to be edited.
-     * 
-     * @param value The object to be edited.
-     */
-    public void setObject(Object value) {
-        if(!(_type.isInstance(value))) {
-            throw new IllegalArgumentException(
-                value.getClass() + " is not of type " + _type);
-        } 
-        _value = value;
-        
-        // Disable event generation.
-        _squelchChangeEvents = true;
-
-        // Iterate over each property, doing a lookup on the associated editor
-        // and setting the editor's value to the value of the property.
-        Iterator it = _prop2Editor.keySet().iterator();
-        while(it.hasNext()) {
-            PropertyDescriptor desc = (PropertyDescriptor) it.next();
-            PropertyEditor editor = (PropertyEditor) _prop2Editor.get(desc);
-            Method reader = desc.getReadMethod();
-            if(reader != null) {
-                try {
-                    Object val = reader.invoke(_value, null);
-                    editor.setValue(val);
-                }
-                catch(IllegalAccessException ex) {
-                    ex.printStackTrace();
-                }
-                catch(InvocationTargetException ex) {
-                    ex.getTargetException().printStackTrace();
-                }
-            }
-        }
-
-        // Enable event generation.
-        _squelchChangeEvents = false;
-
-    }
-
-	/** 
-	 * Get the appropriate editor for the given property.
-	 * 
-	 * @param prop Property to get editor for.
-	 * @return Editor to use, or null if none found.
-	 */
-    private PropertyEditor getEditorForProperty(PropertyDescriptor prop) {
-        PropertyEditor retval = null;
-        Class type = prop.getPropertyEditorClass();
-        if(type != null) {
-            try {
-                retval = (PropertyEditor) type.newInstance();
-            }
-            catch(Exception ex) {
-                ex.printStackTrace();
-            }
-        }
-        // Handle case where there is no special editor
-        // associated with the property. In that case we ask the 
-        // PropertyEditor manager for the editor registered for the
-        // given property type.
-        if(retval == null) {
-            Class t = prop.getPropertyType();
-            if(t != null) {
-                retval = PropertyEditorManager.findEditor(t);
-            }
-        }
-
-        // In the worse case we resort to the generic editor for Object types.
-        if(retval == null) {
-            retval = PropertyEditorManager.findEditor(Object.class);
-        }
-
-        return retval;
-    }
-
-	/** 
-	 * Add the given listener. Will receive a change event for 
-     * changes to the bean being edited.
-	 * 
-	 * @param l Listner to add.
-	 */
-    public void addPropertyChangeListener(PropertyChangeListener l) {
-        _changeListeners.add(l);
-    }
-
-
-	/** 
-	 * Remove the given property change listener.
-	 * 
-	 * @param l Listener to remove.
-	 */
-    public void removePropertyChangeListener(PropertyChangeListener l) {
-        _changeListeners.remove(l);
-    }
-
-	/** 
-	 * Fire a property change event to each listener.
-	 * 
-	 * @param bean Bean being edited. 
-	 * @param propName Name of the property.
-	 * @param oldValue Old value.
-	 * @param newValue New value.
-	 */
-    protected void firePropertyChange(Object bean, String propName, 
-                                      Object oldValue, Object newValue) {
-
-        PropertyChangeEvent e = new PropertyChangeEvent(
-            bean, propName, oldValue, newValue);
-
-        Iterator it = _changeListeners.iterator();
-        while(it.hasNext()) {
-            PropertyChangeListener l = (PropertyChangeListener) it.next();
-            l.propertyChange(e);
-        }
-    }
-
-    /**
-     * Returns the preferred size of the viewport for a view component.
-     * For example the preferredSize of a JList component is the size
-     * required to acommodate all of the cells in its list however the
-     * value of preferredScrollableViewportSize is the size required for
-     * JList.getVisibleRowCount() rows.   A component without any properties
-     * that would effect the viewport size should just return 
-     * getPreferredSize() here.
-     * 
-     * @return The preferredSize of a JViewport whose view is this Scrollable.
-     * @see JViewport#getPreferredSize
-     */
-    public Dimension getPreferredScrollableViewportSize() {
-        Dimension size = getPreferredSize();
-        Dimension retval = new Dimension();
-        retval.width = size.width > 600 ? 600 : size.width;
-        retval.height = size.height > 400 ? 400 : size.height;
-        return retval;
-    }
-
-
-    /**
-     * Components that display logical rows or columns should compute
-     * the scroll increment that will completely expose one new row
-     * or column, depending on the value of orientation.  Ideally, 
-     * components should handle a partially exposed row or column by 
-     * returning the distance required to completely expose the item.
-     * <p>
-     * Scrolling containers, like JScrollPane, will use this method
-     * each time the user requests a unit scroll.
-     * 
-     * @param visibleRect The view area visible within the viewport
-     * @param orientation Either SwingConstants.VERTICAL or 
-     *                    SwingConstants.HORIZONTAL.
-     * @param direction Less than zero to scroll up/left, 
-     *                  greater than zero for down/right.
-     * @return The "unit" increment for scrolling in the specified direction
-     * @see JScrollBar#setUnitIncrement
-     */
-    public int getScrollableUnitIncrement(Rectangle visibleRect, 
-                                          int orientation, int direction) {
-        return 1;
-    }
-
-
-    /**
-     * Components that display logical rows or columns should compute
-     * the scroll increment that will completely expose one block
-     * of rows or columns, depending on the value of orientation. 
-     * <p>
-     * Scrolling containers, like JScrollPane, will use this method
-     * each time the user requests a block scroll.
-     * 
-     * @param visibleRect The view area visible within the viewport
-     * @param orientation Either SwingConstants.VERTICAL or 
-     *                    SwingConstants.HORIZONTAL.
-     * @param direction Less than zero to scroll up/left, 
-     *                  greater than zero for down/right.
-     * @return The "block" increment for scrolling in the specified direction.
-     * @see JScrollBar#setBlockIncrement
-     */
-    public int getScrollableBlockIncrement(Rectangle visibleRect, 
-                                           int orientation, int direction) {
-        return orientation == SwingConstants.VERTICAL ? 
-            visibleRect.height / 2 : visibleRect.width / 2;
-    }
-    
-
-    /**
-     * Return true if a viewport should always force the width of this 
-     * Scrollable to match the width of the viewport.  For example a noraml 
-     * text view that supported line wrapping would return true here, since it
-     * would be undesirable for wrapped lines to disappear beyond the right
-     * edge of the viewport.  Note that returning true for a Scrollable
-     * whose ancestor is a JScrollPane effectively disables horizontal
-     * scrolling.
-     * <p>
-     * Scrolling containers, like JViewport, will use this method each 
-     * time they are validated.  
-     * 
-     * @return True if a viewport should force the Scrollables 
-     *         width to match its own.
-     */
-    public boolean getScrollableTracksViewportWidth() {
-        return true;
-    }
-
-    /**
-     * Return true if a viewport should always force the height of this 
-     * Scrollable to match the height of the viewport.  For example a 
-     * columnar text view that flowed text in left to right columns 
-     * could effectively disable vertical scrolling by returning
-     * true here.
-     * <p>
-     * Scrolling containers, like JViewport, will use this method each 
-     * time they are validated.  
-     * 
-     * @return True if a viewport should force the Scrollables 
-     *         height to match its own.
-     */
-    public boolean getScrollableTracksViewportHeight() {
-        return false;
-    }
-
-
-    /** Class for receiving change events from the PropertyEditor objects. */
-    private class EditorChangeListener implements PropertyChangeListener {
-        public void propertyChange(PropertyChangeEvent e) {
-            if(_squelchChangeEvents) return;
-
-            PropertyEditor editor = (PropertyEditor) e.getSource();
-            PropertyDescriptor prop =
-                (PropertyDescriptor) _editor2Prop.get(editor);
-            Method writer = prop.getWriteMethod();
-            if(writer != null) {
-                try {
-                    Object[] params = { editor.getValue() };
-                    writer.invoke(_value, params);
-                    setObject(_value);
-                    firePropertyChange(
-                        _value, prop.getName(), null, editor.getValue());
-                }
-                catch(IllegalAccessException ex) {
-                    ex.printStackTrace();
-                }
-                catch(InvocationTargetException ex) {
-                    ex.getTargetException().printStackTrace();
-                }
-            }
-        }
-    }
-
-
-    /** Comparator for sorting PropertyDescriptor values. */
-    private static class PropertyComparator implements Comparator {
-        public int compare(Object o1, Object o2) {
-            PropertyDescriptor p1 = (PropertyDescriptor)o1;
-            PropertyDescriptor p2 = (PropertyDescriptor)o2;
-
-            Integer i1 = (Integer) p1.getValue(SORT_ORDER);
-            Integer i2 = (Integer) p2.getValue(SORT_ORDER);
-            
-            if(i1 == null && i2 == null) {
-                return p1.getName().compareTo(p2.getName());
-            }
-            else if(i1 != null) {
-                return i1.compareTo(i2);
-            }
-            else {
-                return i2.compareTo(i1) * -1;
-            }
-        }
-    }
-
-
-    /*----------------------------------------------------------------------*/
-
-    /** Class for testing this. */
-    private static class TestClass implements Cloneable {
-        private String _String = "This string is my name.";
-        private String[] _StringArray = { "one", "two", "three" };
-        private int _int = Integer.MIN_VALUE;
-        private Integer _Integer = new Integer(Integer.MAX_VALUE);
-        private double _double = Double.MIN_VALUE;
-        private Double _Double = new Double(Double.MAX_VALUE);
-        private Properties _Properties = System.getProperties();
-        private File _File = new File("/");
-        private Object _Object = new Font("Monospaced", Font.PLAIN, 12);
-        private JButton _button = new JButton("I'm a button!");
-
-        public void setName(String string) {
-            _String = string;
-        }
-        public String getName() {
-            return _String;
-        }
-
-        public void setStringArray(String[] array) {
-            _StringArray = array;
-        }
-        public String[] getStringArray() {
-            return _StringArray;
-        }
-
-        public void setInt(int val) {
-            _int = val;
-        }
-        public int getInt() {
-            return _int;
-        }
-
-        public void setInteger(Integer val) {
-            _Integer = val;
-        }
-        public Integer getInteger() {
-            return _Integer;
-        }
-
-        public void setDoub(double val) {
-            _double = val;
-        }
-        public double getDoub() {
-            return _double;
-        }
-
-        public void setDouble(Double val) {
-            _Double = val;
-        }
-        public Double getDouble() {
-            return _Double;
-        }
-
-        public void setProperties(Properties props) {
-            _Properties = props;
-        }
-        public Properties getProperties() {
-            return _Properties;
-        }
-
-        public void setFile(File f) {
-            _File = f;
-        }
-        public File getFile() {
-            return _File;
-        }
-        
-        public void setButton(JButton button) {
-            _button = button;
-        }
-
-        public JButton getButton() {
-            return _button;
-        }
-
-        public void setObject(Object o) {
-            _Object = o;
-        }
-
-        public Object getObject() {
-            return _Object;
-        }
-
-        public Object clone() {
-            try {
-                return super.clone();
-            }
-            catch(CloneNotSupportedException ex) {
-                return null;
-            }
-        }
-    }
-
-
-    /** 
-     * Test code.
-     * 
-     * @param args First arg is the class name to create
-     */
-    public static void main(String[] args) {
-
-        try {
-            Class type = null;
-            Object instance = null;
-            if(args.length > 0) {
-                type = Class.forName(args[0]);
-                instance = type.newInstance();
-            }
-            else {
-                type = TestClass.class;
-                instance = new TestClass();
-                ((TestClass)instance).setObject(new TestClass());
-            }
-
-            JFrame f = new JFrame(type.getName());
-            DynamicCustomizer custom = new DynamicCustomizer(type);
-            custom.setObject(instance);
-            f.getContentPane().add(new JScrollPane(custom));
-            f.pack();
-            f.setVisible(true);
-        }
-        catch(Exception ex) {
-            ex.printStackTrace();
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/FilePropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/FilePropertyEditor.java
deleted file mode 100644
index 1b6758a..0000000
--- a/src/antidote/org/apache/tools/ant/gui/customizer/FilePropertyEditor.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.customizer;
-
-import javax.swing.*;
-import javax.swing.filechooser.FileFilter;
-import java.awt.Component;
-import java.awt.BorderLayout;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-import javax.swing.border.BevelBorder;
-import java.io.File;
-
-
-/**
- * Custom property editor for File types.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class FilePropertyEditor extends AbstractPropertyEditor {
-    /** Area for typing in the file name. */
-    private JTextField _widget = null;
-    /** Container for the editor. */
-    private JPanel _container = null;
-    /** File filter to use. */
-    private FileFilter _filter = null;
-
-    /** 
-     * Default ctor.
-     * 
-     */
-    public FilePropertyEditor() {
-        _container = new JPanel(new BorderLayout());
-
-        _widget = new JTextField();
-
-        _widget.addFocusListener(new FocusHandler(this));
-
-        _container.add(_widget, BorderLayout.CENTER);
-
-        JButton b = new JButton("Browse...");
-        b.addActionListener(new ActionHandler());
-        _container.add(b, BorderLayout.EAST);
-    }
-
-    /** 
-     * Get the child editing component. Uses JComponent so we can have tool
-     * tips, etc.
-     * 
-     * @return Child editing component.
-     */
-    protected Component getChild() {
-        return _container;
-    }
-
-    /** 
-     * File filter to use with chooser.
-     * 
-     * @param filter File filter.
-     */
-    public void setFileFilter(FileFilter filter) {
-        _filter = filter;
-    }
-
-    /**
-     * This method is intended for use when generating Java code to set
-     * the value of the property.  It should return a fragment of Java code
-     * that can be used to initialize a variable with the current property
-     * value.
-     * <p>
-     * Example results are "2", "new Color(127,127,34)", "Color.orange", etc.
-     *
-     * @return A fragment of Java code representing an initializer for the
-     *      current value.
-     */
-    public String getJavaInitializationString() {
-        return "new File(" + getAsText() + ")";
-    }
-
-    /**
-     * Set (or change) the object that is to be edited.  Builtin types such
-     * as "int" must be wrapped as the corresponding object type such as
-     * "java.lang.Integer".
-     *
-     * @param value The new target object to be edited.  Note that this
-     *     object should not be modified by the PropertyEditor, rather 
-     *     the PropertyEditor should create a new object to hold any
-     *     modified value.
-     */
-    public void setValue(Object value) {
-        if(value == null) {
-            value = new File("");
-        }
-
-        if(!(value instanceof File)) {
-            throw new IllegalArgumentException(
-                value.getClass().getName() + " is not of type File");
-        }
-
-        Object old = _widget.getText();
-
-        _widget.setText(((File)value).getPath());
-    }
-
-    /**
-     * @return The value of the property.  Builtin types
-     * such as "int" will be wrapped as the corresponding
-     * object type such as "java.lang.Integer".  */
-    public Object getValue() {
-        File retval = null;
-        retval = new File(_widget.getText());
-        return retval;
-    }
-
-    /**
-     * Set the property value by parsing a given String.  May raise
-     * java.lang.IllegalArgumentException if either the String is
-     * badly formatted or if this kind of property can't be expressed
-     * as text.
-     * @param text  The string to be parsed.
-     */
-    public void setAsText(String text) throws IllegalArgumentException {
-        File f = new File(text);
-        _widget.setText(f.getPath());
-    }
-
-    /**
-     * @return The property value as a human editable string.
-     * <p>   Returns null if the value can't be expressed 
-     *       as an editable string.
-     * <p>   If a non-null value is returned, then the PropertyEditor should
-     *       be prepared to parse that string back in setAsText().
-     */
-    public String getAsText() {
-        return new File(_widget.getText()).getAbsolutePath();
-    } 
-
-    /** Handler for presses of the browse button. */
-    private class ActionHandler implements ActionListener {
-        public void actionPerformed(ActionEvent e) {
-            JFileChooser chooser = null;
-            chooser = new JFileChooser();
-            chooser.setSelectedFile((File) getValue());
-
-
-            _filter = (_filter == null ? 
-                       chooser.getAcceptAllFileFilter() : _filter);
-            chooser.setFileFilter(_filter);
-            chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
-            if(chooser.showDialog(getChild(), "Select") == 
-               JFileChooser.APPROVE_OPTION) {
-                Object oldValue = getValue();
-                Object newValue = chooser.getSelectedFile();
-
-                setValue(newValue);
-                firePropertyChange(oldValue, newValue);
-            }
-        }
-    }
-
-}
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/IntegerPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/IntegerPropertyEditor.java
deleted file mode 100644
index 587a989..0000000
--- a/src/antidote/org/apache/tools/ant/gui/customizer/IntegerPropertyEditor.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.customizer;
-
-import javax.swing.*;
-import java.awt.Component;
-
-/**
- * Custom property editor for integer types.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class IntegerPropertyEditor extends AbstractPropertyEditor {
-    /** Editing widget. */
-    private JTextField _widget = null;
-
-    /** 
-     * Default ctor.
-     * 
-     */
-    public IntegerPropertyEditor() {
-        _widget = new JTextField();
-        _widget.addFocusListener(new FocusHandler(this));
-    }
-
-    /** 
-     * Get the child editing component. Uses JComponent so we can have tool
-     * tips, etc.
-     * 
-     * @return Child editing component.
-     */
-    protected Component getChild() {
-        return _widget;
-    }
-
-    /**
-     * This method is intended for use when generating Java code to set
-     * the value of the property.  It should return a fragment of Java code
-     * that can be used to initialize a variable with the current property
-     * value.
-     * <p>
-     * Example results are "2", "new Color(127,127,34)", "Color.orange", etc.
-     *
-     * @return A fragment of Java code representing an initializer for the
-     *      current value.
-     */
-    public String getJavaInitializationString() {
-        return "new Integer(" + getAsText() + ")";
-    }
-
-    /**
-     * Set (or change) the object that is to be edited.  Builtin types such
-     * as "int" must be wrapped as the corresponding object type such as
-     * "java.lang.Integer".
-     *
-     * @param value The new target object to be edited.  Note that this
-     *     object should not be modified by the PropertyEditor, rather 
-     *     the PropertyEditor should create a new object to hold any
-     *     modified value.
-     */
-    public void setValue(Object value) {
-        Object old = _widget.getText();
-        if(!(value instanceof Integer)) {
-            value = new Integer(0);
-        }
-
-        _widget.setText(value.toString());
-    }
-
-    /**
-     * @return The value of the property.  Builtin types such as "int" will
-     * be wrapped as the corresponding object type such as "java.lang.Integer".
-     */
-    public Object getValue() {
-        Integer retval = null;
-        try {
-            retval = new Integer(_widget.getText());
-        }
-        catch(NumberFormatException ex) {
-            retval = new Integer(0);
-            _widget.setText(retval.toString());
-        }
-        return retval;
-    }
-
-    /**
-     * Set the property value by parsing a given String.  May raise
-     * java.lang.IllegalArgumentException if either the String is
-     * badly formatted or if this kind of property can't be expressed
-     * as text.
-     * @param text  The string to be parsed.
-     */
-    public void setAsText(String text) {
-        Object old = _widget.getText();
-        Integer val = null;
-        try {
-            val = new Integer(text);
-        }
-        catch(NumberFormatException ex) {
-            val = new Integer(0);
-        }
-        text = val.toString();
-        _widget.setText(text);
-    }
-
-    /**
-     * @return The property value as a human editable string.
-     * <p>   Returns null if the value can't be expressed 
-     *       as an editable string.
-     * <p>   If a non-null value is returned, then the PropertyEditor should
-     *       be prepared to parse that string back in setAsText().
-     */
-    public String getAsText() {
-        return _widget.getText();
-    } 
-
-
-}
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/ObjectPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/ObjectPropertyEditor.java
deleted file mode 100644
index 4b6965d..0000000
--- a/src/antidote/org/apache/tools/ant/gui/customizer/ObjectPropertyEditor.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.customizer;
-
-import javax.swing.*;
-import java.awt.*;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-import java.lang.reflect.Method;
-import javax.swing.border.BevelBorder;
-
-/**
- * Custom property editor for generic Object types. Useful for 
- * complex objects where using the DynamicCustomizer may be useful.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ObjectPropertyEditor extends AbstractPropertyEditor {
-    /** Area for typing in the file name. */
-    private JTextField _widget = null;
-    /** Container for the editor. */
-    private JPanel _container = null;
-    /** The current object value. */
-    private Object _value = null;
-    /** The editing button. */
-    private JButton _button = null;
-    /** Flag to indicate that cancellation of editing is supported. */
-    private boolean _supportCancel = true;
-    /** Original value. Only used if _supportCancel is true. */
-    private Object _original = null;
-
-    /** 
-     * Default ctor.
-     * 
-     */
-    public ObjectPropertyEditor() {
-        _container = new JPanel(new BorderLayout());
-        
-        _widget = new JTextField(25);
-        _widget.setEditable(false);
-        _widget.addFocusListener(new FocusHandler(this));
-        _widget.setBorder(
-            BorderFactory.createBevelBorder(BevelBorder.LOWERED));
-
-        _container.add(_widget, BorderLayout.CENTER);
-
-        _button = new JButton("Edit...");
-        _button.addActionListener(new ActionHandler());
-        _container.add(_button, BorderLayout.EAST);
-    }
-
-    /** 
-     * Get the child editing component. Uses JComponent so we can have tool
-     * tips, etc.
-     * 
-     * @return Child editing component.
-     */
-    protected Component getChild() {
-        return _container;
-    }
-
-
-    /**
-     * This method is intended for use when generating Java code to set
-     * the value of the property.  It should return a fragment of Java code
-     * that can be used to initialize a variable with the current property
-     * value.
-     * <p>
-     * Example results are "2", "new Color(127,127,34)", "Color.orange", etc.
-     *
-     * @return A fragment of Java code representing an initializer for the
-     *      current value.
-     */
-    public String getJavaInitializationString() {
-        return null;
-    }
-
-    /**
-     * Set (or change) the object that is to be edited.  Builtin types such
-     * as "int" must be wrapped as the corresponding object type such as
-     * "java.lang.Integer".
-     *
-     * @param value The new target object to be edited.  Note that this
-     *     object should not be modified by the PropertyEditor, rather 
-     *     the PropertyEditor should create a new object to hold any
-     *     modified value.
-     * @exception IllegalArgumentException thrown if value can't be cloned.
-     */
-    public void setValue(Object value) {
-
-        if(_supportCancel && value != _value) {
-            try {
-                _value = makeClone(value);
-            }
-            catch(CloneNotSupportedException ex){
-                // If cloning doesn't work then we can't support a "cancel"
-                // option on the editing dialog.
-                _supportCancel = false;
-            }
-            _original = value;
-        }
-        
-        _value = value;
-
-        _button.setEnabled(_value != null);
-
-        _widget.setText(getAsString(_value));
-    }
-
-    /** 
-     * Convert the given value into some appropriate string. NB: This method
-     * can be continually improved to be made more and more smart over time.
-     * 
-     * @param value Value to convert.
-     * @return String value to display.
-     */
-    private String getAsString(Object value) {
-        String retval = null;
-        if(value == null) {
-            retval = "<null>";
-        }
-
-        // We try to be smart by querying for various, logical string 
-        // representation of the value.
-        if(retval == null) {
-            try {
-                Method m = value.getClass().getMethod("getName", null);
-                retval = (String) m.invoke(value, null);
-            }
-            catch(Exception ex) {
-            }
-        }
-        if(retval == null) {
-            try {
-                Method m = value.getClass().getMethod("getLabel", null);
-                retval = (String) m.invoke(value, null);
-            }
-            catch(Exception ex) {
-            }
-            
-        }
-        if(retval == null) {
-            try {
-                Method m = value.getClass().getMethod("getText", null);
-                retval = (String) m.invoke(value, null);
-            }
-            catch(Exception ex) {
-            }
-        }
-
-        if(retval == null) {
-            retval = value.toString();
-        }
-
-        if(retval.length() > 256) {
-            retval = retval.substring(0, 253) + "...";
-        }
-
-        return retval;
-    }
-
-    /** 
-     * Attampt to make a clone of the given value.
-     * 
-     * @param value Value to clone.
-     * @return Cloned value, or null if value given was null.
-     * @exception IllegalArgumentException thrown if value can't be cloned.
-     */
-    private Object makeClone(Object value) throws CloneNotSupportedException {
-        Object retval = null;
-        if(value != null) {
-            try {
-                Method m = value.getClass().getMethod("clone", null);
-                retval = m.invoke(value, null);
-            }
-            catch(Throwable ex) {
-                throw new CloneNotSupportedException(
-                    "This editor only supports types that have publically " +
-                    "accessible clone() methods.\n" + 
-                    value.getClass().getName() + 
-                    " does not have such a method.");
-            }
-        }
-        return retval;
-    }
-
-    /**
-     * @return The value of the property.  Builtin types
-     * such as "int" will be wrapped as the corresponding
-     * object type such as "java.lang.Integer".  */
-    public Object getValue() {
-        return _value;
-    }
-
-    /**
-     * Set the property value by parsing a given String.  May raise
-     * java.lang.IllegalArgumentException if either the String is
-     * badly formatted or if this kind of property can't be expressed
-     * as text.
-     * @param text  The string to be parsed.
-     */
-    public void setAsText(String text) throws IllegalArgumentException {
-        throw new IllegalArgumentException("String conversion not supported.");
-    }
-
-    /**
-     * @return The property value as a human editable string.
-     * <p>   Returns null if the value can't be expressed 
-     *       as an editable string.
-     * <p>   If a non-null value is returned, then the PropertyEditor should
-     *       be prepared to parse that string back in setAsText().
-     */
-    public String getAsText() {
-        return null;
-    } 
-
-    /** Handler for presses of the edit button. */
-    private class ActionHandler implements ActionListener {
-        public void actionPerformed(ActionEvent e) {
-            if(_value == null) return;
-            Class type = _value.getClass();
-            DynamicCustomizer c = new DynamicCustomizer(type);
-            c.setObject(_value);
-
-            int returnVal = JOptionPane.OK_OPTION;
-            if(_supportCancel) {
-                returnVal = JOptionPane.showConfirmDialog(
-                    getChild(), new JScrollPane(c), "Editing...", 
-                    JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
-            }
-            else {
-                JOptionPane.showMessageDialog(
-                    getChild(), new JScrollPane(c), "Editing...",
-                    JOptionPane.PLAIN_MESSAGE);
-                returnVal = JOptionPane.OK_OPTION;
-            }
-
-            if(returnVal == JOptionPane.OK_OPTION) {
-                Object oldValue = _original;
-                Object newValue = _value;
-
-                setValue(newValue);
-                firePropertyChange(oldValue, newValue);
-            } 
-            else {
-                try {
-                    _value = makeClone(_original);
-                }
-                catch(CloneNotSupportedException ex) {
-                    // XXX log me. Shouldn't have gotten here as
-                    // the test for cloneability should have already been done.
-                    ex.printStackTrace();
-                    _supportCancel = false;
-                }
-            }
-        }
-    }
-
-}
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/PropertiesPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/PropertiesPropertyEditor.java
deleted file mode 100644
index 9474359..0000000
--- a/src/antidote/org/apache/tools/ant/gui/customizer/PropertiesPropertyEditor.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.customizer;
-
-import javax.swing.*;
-import javax.swing.table.AbstractTableModel;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.BorderLayout;
-import java.util.*;
-
-/**
- * Custom property editor for the Properties class.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class PropertiesPropertyEditor extends AbstractPropertyEditor {
-    /** Recommended size for widgets inside a JScrollPane, as communicated
-     *  through the setPreferredScrollableViewportSize() method. */
-    protected static final Dimension VIEWPORT_SIZE = new Dimension(200, 50);
-
-    /** Container. */
-    private JPanel _widget = null;
-    /* The current properties being edited. */
-    private Properties _properties = null;
-    /** The table editor for the properties. */
-    private JTable _table = null;
-
-    /** 
-     * Default ctor.
-     * 
-     */
-    public PropertiesPropertyEditor() {
-        _widget = new JPanel(new BorderLayout());
-        _widget.addFocusListener(new FocusHandler(this));
-
-        _table = new JTable();
-        _table.setPreferredScrollableViewportSize(VIEWPORT_SIZE);
-        JScrollPane scroller = new JScrollPane(_table);
-        _widget.add(BorderLayout.CENTER, scroller);
-    }
-
-    /** 
-     * Get the child editing component. Uses JComponent so we can have tool
-     * tips, etc.
-     * 
-     * @return Child editing component.
-     */
-    protected Component getChild() {
-        return _widget;
-    }
-
-    /**
-     * This method is intended for use when generating Java code to set
-     * the value of the property.  It should return a fragment of Java code
-     * that can be used to initialize a variable with the current property
-     * value.
-     * <p>
-     * Example results are "2", "new Color(127,127,34)", "Color.orange", etc.
-     *
-     * @return A fragment of Java code representing an initializer for the
-     *      current value.
-     */
-    public String getJavaInitializationString() {
-        return "new Properties()";
-    }
-
-    /**
-     * Set (or change) the object that is to be edited.  Builtin types such
-     * as "int" must be wrapped as the corresponding object type such as
-     * "java.lang.Integer".
-     *
-     * @param value The new target object to be edited.  Note that this
-     *     object should not be modified by the PropertyEditor, rather 
-     *     the PropertyEditor should create a new object to hold any
-     *     modified value.
-     */
-    public void setValue(Object value) {
-        if(value == null) {
-            value = new Properties();
-        }
-
-        if(!(value instanceof Properties)) {
-            throw new IllegalArgumentException(
-                value.getClass().getName() + " is not of type Properties.");
-        }
-
-        Object old = _properties;
-        _properties = (Properties) ((Properties) value).clone();
-
-        PropertiesTableModel model = new PropertiesTableModel();
-        _table.setModel(model);
-        _table.clearSelection();
-    }
-
-    /**
-     * @return The value of the property.  Builtin types
-     * such as "int" will be wrapped as the corresponding
-     * object type such as "java.lang.Integer".  
-     */
-    public Object getValue() {
-        return _properties;
-    }
-
-    /**
-     * Set the property value by parsing a given String.  May raise
-     * java.lang.IllegalArgumentException if either the String is
-     * badly formatted or if this kind of property can't be expressed
-     * as text.
-     * @param text  The string to be parsed.
-     */
-    public void setAsText(String text) throws IllegalArgumentException {
-        throw new IllegalArgumentException("Cannot be expressed as a String");
-    }
-
-    /**
-     * @return The property value as a human editable string.
-     * <p>   Returns null if the value can't be expressed 
-     *       as an editable string.
-     * <p>   If a non-null value is returned, then the PropertyEditor should
-     *       be prepared to parse that string back in setAsText().
-     */
-    public String getAsText() {
-        return null;
-    } 
-
-    /** Table model view of the Properties object. */
-    private class PropertiesTableModel extends AbstractTableModel {
-        private static final int NAME = 0;
-        private static final int VALUE = 1;
-
-        private List _keys = null;
-
-        public PropertiesTableModel() {
-            // We need to store the property keys in an array
-            // so that the ordering is preserved.
-            _keys = new ArrayList(_properties.keySet());
-            Collections.sort(_keys);
-        }
-
-        /** 
-         * Get the number of rows. 
-         * 
-         * @return Number of rows.
-         */
-        public int getRowCount() {
-            return _properties.size() + 1;
-        }
-
-        /** 
-         * Get the number of columns.
-         * 
-         * @return 2
-         */
-        public int getColumnCount() {
-            return 2;
-        }
-
-        /** 
-         * Get the editing and display class of the given column.
-         * 
-         * @return String.class
-         */
-        public Class getColumnClass(int column) {
-            return String.class;
-        }
-
-        /** 
-         * Get the header name of the column.
-         * 
-         * @param column Column index.
-         * @return Name of the column.
-         */
-        public String getColumnName(int column) {
-            // XXX fix me.
-            return column == NAME ? "Name" : "Value";
-        }
-
-        /** 
-         * Determine if the given cell is editable.
-         * 
-         * @param row Cell row.
-         * @param column Cell column.
-         * @return true
-         */
-        public boolean isCellEditable(int row, int column) {
-            return true;
-        }
-
-        /** 
-         * Get the object at the given table coordinates.
-         * 
-         * @param row Table row.
-         * @param column Table column.
-         * @return Object at location, or null if none.
-         */
-        public Object getValueAt(int row, int column) {
-            if(row < _properties.size()) {
-                switch(column) {
-                  case NAME: 
-                      return _keys.get(row);
-                  case VALUE: 
-                      return _properties.getProperty((String)_keys.get(row));
-                }
-            }
-            return null;
-        }
-        /** 
-         * Set the table value at the given location.
-         * 
-         * @param value Value to set.
-         * @param row Row.
-         * @param column Column.
-         */
-        public void setValueAt(Object value, int row, int column) {
-            String k = null;
-            String v = null;
-
-            String currKey = (String) getValueAt(row, NAME);
-            switch(column) {
-              case NAME: 
-                  k = String.valueOf(value);
-                  if(row < _keys.size()) {
-                      _keys.set(row, k);
-                  }
-                  else {
-                      _keys.add(k);
-                  }
-                  String currValue = null;
-                  if(currKey != null) {
-                      currValue = _properties.getProperty(currKey);
-                      _properties.remove(currKey);
-                  }
-                  v = currValue == null ? "" : currValue;
-                  break;
-              case VALUE:
-                  v = String.valueOf(value);
-                  k = currKey;
-                  if(k == null || k.length() == 0) {
-                      k = "key-for-" + v;
-                  }
-                  break;
-            }
-
-            if(k.length() > 0) {
-                _properties.setProperty(k, v);
-            }
-
-            fireTableRowsUpdated(row, row);
-            // Fire change in outer class.
-            firePropertyChange(null, _properties);
-        }
-    }
-}
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/StringArrayPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/StringArrayPropertyEditor.java
deleted file mode 100644
index fa17dfe..0000000
--- a/src/antidote/org/apache/tools/ant/gui/customizer/StringArrayPropertyEditor.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.customizer;
-
-import javax.swing.*;
-import javax.swing.border.BevelBorder;
-import java.awt.Component;
-import java.util.StringTokenizer;
-
-/**
- * Custom property editor for String arrays.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class StringArrayPropertyEditor extends AbstractPropertyEditor {
-    private JTextField _widget = null;
-
-    /** 
-     * Default ctor.
-     * 
-     */
-    public StringArrayPropertyEditor() {
-        _widget = new JTextField() ;
-        _widget.setBorder(
-            BorderFactory.createBevelBorder(BevelBorder.LOWERED));
-        _widget.addFocusListener(new FocusHandler(this));
-    }
-
-    /** 
-     * Get the child editing component. Uses JComponent so we can have tool
-     * tips, etc.
-     * 
-     * @return Child editing component.
-     */
-    protected Component getChild() {
-        return _widget;
-    }
-
-    /**
-     * This method is intended for use when generating Java code to set
-     * the value of the property.  It should return a fragment of Java code
-     * that can be used to initialize a variable with the current property
-     * value.
-     * <p>
-     * Example results are "2", "new Color(127,127,34)", "Color.orange", etc.
-     *
-     * @return A fragment of Java code representing an initializer for the
-     *      current value.
-     */
-    public String getJavaInitializationString() {
-        return getAsText();
-    }
-
-    /**
-     * Set (or change) the object that is to be edited.  Builtin types such
-     * as "int" must be wrapped as the corresponding object type such as
-     * "java.lang.Integer".
-     *
-     * @param value The new target object to be edited.  Note that this
-     *     object should not be modified by the PropertyEditor, rather 
-     *     the PropertyEditor should create a new object to hold any
-     *     modified value.
-     */
-    public void setValue(Object value) {
-        if(value == null) {
-            value = new String[0];
-        }
-        if(!(value instanceof String[])) {
-            throw new IllegalArgumentException(
-                "Value must be of type String[].");
-        }
-        String old = _widget.getText();
-
-        String[] vals = (String[]) value;
-        StringBuffer buf = new StringBuffer();
-
-        for(int i = 0; i < vals.length; i++) {
-            buf.append(vals[i]);
-            if(i < vals.length - 1) {
-                buf.append(", ");
-            }
-        }
-        _widget.setText(buf.toString());
-    }
-
-    /**
-     * @return The value of the property.  Builtin types such as "int" will
-     * be wrapped as the corresponding object type such as "java.lang.Integer".
-     */
-    public Object getValue() {
-        String vals = _widget.getText();
-        StringTokenizer tok = new StringTokenizer(vals,",");
-        String[] retval = new String[tok.countTokens()];
-        for(int i = 0; i < retval.length; i++) {
-            retval[i] = tok.nextToken().trim();
-        }
-
-        return retval;
-    }
-
-    /**
-     * Set the property value by parsing a given String.  May raise
-     * java.lang.IllegalArgumentException if either the String is
-     * badly formatted or if this kind of property can't be expressed
-     * as text.
-     * @param text  The string to be parsed.
-     */
-    public void setAsText(String text) throws IllegalArgumentException {
-        Object old = _widget.getText();
-        _widget.setText(text);
-    }
-
-    /**
-     * @return The property value as a human editable string.
-     * <p>   Returns null if the value can't be expressed 
-     *       as an editable string.
-     * <p>   If a non-null value is returned, then the PropertyEditor should
-     *       be prepared to parse that string back in setAsText().
-     */
-    public String getAsText() {
-        return _widget.getText();
-    } 
-
-
-}
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/StringPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/StringPropertyEditor.java
deleted file mode 100644
index 00b7562..0000000
--- a/src/antidote/org/apache/tools/ant/gui/customizer/StringPropertyEditor.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.customizer;
-
-import javax.swing.*;
-import java.awt.Component;
-import javax.swing.border.BevelBorder;
-
-/**
- * Custom property editor for string types.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class StringPropertyEditor extends AbstractPropertyEditor {
-    private JTextArea _widget = null;
-
-    /** 
-     * Default ctor.
-     * 
-     */
-    public StringPropertyEditor() {
-        _widget = new JTextArea() {
-                public boolean isManagingFocus() {
-                    return false;
-                }
-            };
-
-        _widget.setLineWrap(true);
-        _widget.addFocusListener(new FocusHandler(this));
-        _widget.setBorder(
-            BorderFactory.createBevelBorder(BevelBorder.LOWERED));
-    }
-
-    /** 
-     * Get the child editing component. Uses JComponent so we can have tool
-     * tips, etc.
-     * 
-     * @return Child editing component.
-     */
-    protected Component getChild() {
-        return _widget;
-    }
-
-    /**
-     * This method is intended for use when generating Java code to set
-     * the value of the property.  It should return a fragment of Java code
-     * that can be used to initialize a variable with the current property
-     * value.
-     * <p>
-     * Example results are "2", "new Color(127,127,34)", "Color.orange", etc.
-     *
-     * @return A fragment of Java code representing an initializer for the
-     *      current value.
-     */
-    public String getJavaInitializationString() {
-        return getAsText();
-    }
-
-    /**
-     * Set (or change) the object that is to be edited.  Builtin types such
-     * as "int" must be wrapped as the corresponding object type such as
-     * "java.lang.Integer".
-     *
-     * @param value The new target object to be edited.  Note that this
-     *     object should not be modified by the PropertyEditor, rather 
-     *     the PropertyEditor should create a new object to hold any
-     *     modified value.
-     */
-    public void setValue(Object value) {
-        if(value == null) {
-            value = "";
-        }
-
-        Object old = _widget.getText();
-        _widget.setText(String.valueOf(value));
-    }
-
-    /**
-     * @return The value of the property.  Builtin types
-     * such as "int" will be wrapped as the corresponding
-     * object type such as "java.lang.Integer".  */
-    public Object getValue() {
-        String retval = _widget.getText();
-        return retval;
-    }
-
-    /**
-     * Set the property value by parsing a given String.  May raise
-     * java.lang.IllegalArgumentException if either the String is
-     * badly formatted or if this kind of property can't be expressed
-     * as text.
-     * @param text  The string to be parsed.
-     */
-    public void setAsText(String text) throws IllegalArgumentException {
-        Object old = _widget.getText();
-        _widget.setText(text);
-    }
-
-    /**
-     * @return The property value as a human editable string.
-     * <p>   Returns null if the value can't be expressed 
-     *       as an editable string.
-     * <p>   If a non-null value is returned, then the PropertyEditor should
-     *       be prepared to parse that string back in setAsText().
-     */
-    public String getAsText() {
-        return _widget.getText();
-    } 
-
-
-}
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/event/AntBuildEvent.java b/src/antidote/org/apache/tools/ant/gui/event/AntBuildEvent.java
deleted file mode 100644
index 29828d4..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/AntBuildEvent.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.gui.util.StackFrame;
-import org.apache.tools.ant.gui.command.Command;
-import org.apache.tools.ant.gui.command.NoOpCmd;
-import org.apache.tools.ant.gui.core.AppContext;
-import java.util.EventObject;
-
-/**
- * Wrapper event for the events generated during an Ant build.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class AntBuildEvent extends AntEvent {
-
-    /** The original event we are wrapping. */
-    private BuildEvent _buildEvent = null;
-    /** The type of event we are wrapping. */
-    private BuildEventType _type = null;
-
-    /**
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-	 */
-    public AntBuildEvent(AppContext context, 
-                         BuildEvent buildEvent, BuildEventType type) {
-        super(context);
-        _buildEvent = buildEvent;
-        _type = type;
-
-        if(_buildEvent == null || _type == null) {
-            throw new IllegalArgumentException("Null parameter passed");
-        }
-    }
-
-	/** 
-	 * Get the wrapped build event.
-	 * 
-	 * @return Build event.
-	 */
-    public BuildEvent getEvent() {
-        return _buildEvent;
-    }
-
-	/** 
-	 * Get the build event type.
-	 * 
-	 * @return Event type.
-	 */
-    public BuildEventType getType() {
-        return _type;
-    }
-
-	/** 
-	 * Create a string representation of this.
-	 * 
-	 * @return String representation.
-	 */
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-
-        if(_buildEvent.getMessage() != null) {
-            buf.append(_buildEvent.getMessage());
-            buf.append('\n');
-        }
-
-        if(_buildEvent.getException() != null) {
-            buf.append(StackFrame.toString(_buildEvent.getException()));
-        }
-
-        return buf.toString();
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/AntEvent.java b/src/antidote/org/apache/tools/ant/gui/event/AntEvent.java
deleted file mode 100644
index eb0873e..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/AntEvent.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.command.Command;
-import org.apache.tools.ant.gui.command.NoOpCmd;
-import org.apache.tools.ant.gui.core.AppContext;
-import java.util.EventObject;
-
-/**
- * Base class for all Ant specific events. Details TBD.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public abstract class AntEvent extends EventObject {
-
-	/** Flag indicating that the event has been cancelled. */
-	private boolean _cancelled = false;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-	 */
-    protected AntEvent(AppContext context) {
-        super(context);
-    }
-
-	/** 
-	 * Get the application context.
-	 * 
-	 * @return Application context.
-	 */
-    protected AppContext getContext() {
-        return (AppContext) getSource();
-    }
-
-
-	/** 
-	 * Override to create the appropriate default response
-	 * command to this event.
-	 * 
-	 * @return Command representing an appropriate response to this event.  
-     */
-    public Command createDefaultCmd() {
-        return new NoOpCmd(getContext());
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/BuildEventType.java b/src/antidote/org/apache/tools/ant/gui/event/BuildEventType.java
deleted file mode 100644
index f04e04e..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/BuildEventType.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.BuildEvent;
-import java.lang.reflect.Method;
-
-/**
- * Enumeration class of the different contexts in which Ant will generate
- * a BuildEvent.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class BuildEventType {
-    /** Enum value. */
-    private int _value = 0;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param value Index value.
-	 */
-    private BuildEventType(int value) {
-        _value = value;
-    }
-
-	/** 
-	 * Get the enumeration value.
-	 * 
-	 * @return 
-	 */
-    public int getValue() {
-        return _value;
-    }
-
-	/** 
-	 * Pseudo abstract method for firing an event to a build listener
-     * based on our enumation value. I overridded by the individual instances.
-	 * 
-	 * @param e Event to fire.
-	 * @param l Listener to send event to.
-	 */
-    public void fireEvent(BuildEvent e, BuildListener l) {
-        try {
-            Method method = 
-                BuildListener.class.getMethod(_methodNameMap[_value], 
-                                              _listenerMethodParam);
-            method.invoke(l, new Object[] { e });
-        }
-        catch(Exception ex) {
-            // XXX log me.
-            ex.printStackTrace();
-        }
-    }
-
-	/** 
-	 * Get the enumeration value with the given index value.
-	 * 
-	 * @param value Index value.
-	 * @return Enumeration value.
-	 */
-    public static BuildEventType fromInt(int value) {
-        return _objectMap[value];
-    }
-
-	/** 
-	 * Determine if the given object is logically equal to this one.
-	 * 
-	 * @param o Object to compare to 
-	 * @return True if equal, false otherwise.
-	 */
-    public boolean equals(Object o) {
-        if(o instanceof BuildEventType) {
-            return ((BuildEventType)o)._value == _value;
-        }
-        return false;
-    }
-	/** 
-	 * Generate a hash value.
-	 * 
-	 * @return Hash value.
-	 */
-    public int hashValue() {
-        return _value;
-    }
-
-	/** 
-	 * Provide a string representation of this. 
-	 * 
-	 * @return String representation.
-	 */
-    public String toString() {
-        return _stringMap[_value];
-    }
-
-
-    /* Index values. */ 
-    public static final int BUILD_STARTED_VAL = 0;
-    public static final int BUILD_FINISHED_VAL = 1;
-    public static final int TARGET_STARTED_VAL = 2;
-    public static final int TARGET_FINISHED_VAL = 3;
-    public static final int TASK_STARTED_VAL = 4;
-    public static final int TASK_FINISHED_VAL = 5;
-    public static final int MESSAGE_LOGGED_VAL = 6;
-
-    /* Enumeration values. */ 
-    public static final BuildEventType BUILD_STARTED = 
-      new BuildEventType(BUILD_STARTED_VAL);
-    public static final BuildEventType BUILD_FINISHED = 
-      new BuildEventType(BUILD_FINISHED_VAL);
-    public static final BuildEventType TARGET_STARTED = 
-      new BuildEventType(TARGET_STARTED_VAL);
-    public static final BuildEventType TARGET_FINISHED = 
-      new BuildEventType(TARGET_FINISHED_VAL);
-    public static final BuildEventType TASK_STARTED = 
-      new BuildEventType(TASK_STARTED_VAL);
-    public static final BuildEventType TASK_FINISHED = 
-      new BuildEventType(TASK_FINISHED_VAL);
-    public static final BuildEventType MESSAGE_LOGGED = 
-      new BuildEventType(MESSAGE_LOGGED_VAL);
-
-    /** Index to object mapping. */
-    private static final BuildEventType[] _objectMap = {
-        BUILD_STARTED,
-        BUILD_FINISHED,
-        TARGET_STARTED,
-        TARGET_FINISHED,
-        TASK_STARTED,
-        TASK_FINISHED,
-        MESSAGE_LOGGED
-    };
-
-    /** String map. XXX needs to be localized. */
-    private static final String[] _stringMap = {
-        "Build Started",
-        "Build Finished",
-        "Target Started",
-        "Target Finished",
-        "Task Started",
-        "Task Finished",
-        "Message Logged"
-    };
-
-    /** Map of corresponding method names in the BuildListener intereface. */
-    private static final String[] _methodNameMap = {
-        "buildStarted",
-        "buildFinished",
-        "targetStarted",
-        "targetFinished",
-        "taskStarted",
-        "taskFinished",
-        "messageLogged"
-    };
-
-    private static final Class[] _listenerMethodParam = { BuildEvent.class };
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/BuildFinishedEvent.java b/src/antidote/org/apache/tools/ant/gui/event/BuildFinishedEvent.java
deleted file mode 100644
index 110f7d5..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/BuildFinishedEvent.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.gui.core.AppContext;
-
-
-/**
- * Build finished. This event is a duplication of the information posted as
- * an AntBuildEvent when a build finishes.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class BuildFinishedEvent extends AntEvent {
-
-    /** The originating event from Ant. */
-    private BuildEvent _orig = null;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context The application context.
-	 * @param orig The originating event.
-	 */
-    public BuildFinishedEvent(AppContext context, BuildEvent orig) {
-        super(context);
-        _orig = orig;
-    }
-
-	/** 
-	 * Get the originating event.
-	 * 
-	 * @return Originating event.
-	 */
-    public BuildEvent getBuildEvent() {
-        return _orig;
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/BuildStartedEvent.java b/src/antidote/org/apache/tools/ant/gui/event/BuildStartedEvent.java
deleted file mode 100644
index aa5a123..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/BuildStartedEvent.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.gui.core.AppContext;
-
-
-/**
- * Build started. This event is a duplication of the information posted as
- * an AntBuildEvent when a build starts.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class BuildStartedEvent extends AntEvent {
-
-    /** The originating event from Ant. */
-    private BuildEvent _orig = null;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context The application context.
-	 * @param orig The originating event.
-	 */
-    public BuildStartedEvent(AppContext context, BuildEvent orig) {
-        super(context);
-        _orig = orig;
-    }
-
-	/** 
-	 * Get the originating event.
-	 * 
-	 * @return Originating event.
-	 */
-    public BuildEvent getBuildEvent() {
-        return _orig;
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/BusFilter.java b/src/antidote/org/apache/tools/ant/gui/event/BusFilter.java
deleted file mode 100644
index 9cd1827..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/BusFilter.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import java.util.EventObject;
-
-
-/**
- * Interace for determining whether an event should be given to a BusMember
- * instance.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public interface BusFilter {
-	/** 
-	 * Determines if the given event should be accepted.
-	 * 
-	 * @param event Event to test.
-	 * @return True if event should be given to BusMember, false otherwise.
-	 */
-    boolean accept(EventObject event);
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/BusMember.java b/src/antidote/org/apache/tools/ant/gui/event/BusMember.java
deleted file mode 100644
index e2fd127..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/BusMember.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-
-import java.util.EventObject;
-
-/**
- * Interface for classes that want to be a member of the EventBus.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public interface BusMember {
-	/** 
-	 * Get the filter to that is used to determine if an event should
-     * to to the member.
-	 * 
-	 * @return Filter to use.
-	 */
-    BusFilter getBusFilter();
-
-	/** 
-	 * Called when an event is to be posed to the member.
-	 * 
-	 * @param event Event to post.
-     * @return true if event should be propogated, false if
-     * it should be cancelled.
-     */
-    boolean eventPosted(EventObject event);
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/ElementSelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ElementSelectionEvent.java
deleted file mode 100644
index d7da26d..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/ElementSelectionEvent.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.acs.*;
-import org.apache.tools.ant.gui.command.Command;
-import org.apache.tools.ant.gui.command.DisplayErrorCmd;
-import org.apache.tools.ant.gui.core.AppContext;
-
-import java.lang.reflect.Array;
-import java.util.*;
-
-/**
- * Event indicating that the current set of selected targets has changed.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ElementSelectionEvent extends AntEvent {
-
-    /** New set of selected elements. */
-    private ACSElement[] _selected = null;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-     * @param selected the selected Elements.
-	 */
-    protected ElementSelectionEvent(AppContext context, 
-                                    ACSElement[] selected) {
-        super(context);
-        _selected = selected;
-    }
-
-	/** 
-	 * Current set of selected elements.
-	 * 
-     * @return selected element set.
-	 */
-    public ACSElement[] getSelectedElements() {
-        return _selected;
-    }
-
-
-    /** 
-     * Get only those events of a specific type.
-     * 
-     * @param type Specific type to get values for, or null if none.
-     */
-    protected ACSElement[] getFiltered(Class type) {
-        ACSElement[] retval = null;
-        List vals = new ArrayList(1);
-        if(_selected != null) {
-            for(int i = 0; i < _selected.length; i++) {
-                if(type.isInstance(_selected[i])) {
-                    vals.add(_selected[i]);
-                }
-            }
-        }
-
-        if(vals.size() > 0) {
-            retval = (ACSElement[]) Array.newInstance(type, vals.size());
-            vals.toArray(retval);
-        }
-        return retval;
-    }
-
-	/** 
-	 * Factory method for creating the appropriate specialization of this
-     * for communicating an element selection.
-	 * 
-	 * @param context App context.
-	 * @param selected The set of selected events. The last elemetn in the 
-     *                 array is used to determine the specialization of this
-     *                 that should be returned.
-	 * @return Event to communicate selection to.
-	 */
-    public static ElementSelectionEvent createEvent(AppContext context, 
-                                                    ACSElement[] selected) {
-        ElementSelectionEvent retval = null;
-
-        if(selected != null && selected.length > 0) {
-            Class type = selected[selected.length - 1].getClass();
-            if(type.isAssignableFrom(ACSTargetElement.class)) {
-                retval = new TargetSelectionEvent(context, selected);
-            }
-            else if(type.isAssignableFrom(ACSTaskElement.class)) {
-                retval = new TaskSelectionEvent(context, selected);
-            }
-            else if(type.isAssignableFrom(ACSPropertyElement.class)) {
-                retval = new PropertySelectionEvent(context, selected);
-            }
-            else if(type.isAssignableFrom(ACSProjectElement.class)) {
-                retval = new ProjectSelectedEvent(
-                    context, (ACSProjectElement) selected[0]);
-            }
-            else {
-                // For elements without a specific event
-                // type just send and instance of this.
-                retval = new ElementSelectionEvent(context, selected);
-            }
-        }
-        else {
-            retval = new NullSelectionEvent(context);
-        }
-
-        return retval;
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/ErrorEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ErrorEvent.java
deleted file mode 100644
index dba93c9..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/ErrorEvent.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.command.DisplayErrorCmd;
-import org.apache.tools.ant.gui.command.Command;
-import org.apache.tools.ant.gui.util.StackFrame;
-
-
-/**
- * Event fired whenever there is an error of any sort.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ErrorEvent extends AntEvent {
-    /** Text description of error. */
-    private String _message = null;
-    /** Throwable associated with the error. */
-    private Throwable _ex = null;
-
-	/** 
-	 * Standard constructor.
-	 * 
-	 * @param context Application context.
-	 * @param message Message about the error.
-	 * @param ex Throwable associated with the error.
-	 */
-    public ErrorEvent(AppContext context, String message, Throwable ex) {
-        super(context);
-        _message = message;
-        _ex = ex;
-    }
-
-	/** 
-	 * Message centric constructor.
-	 * 
-	 * @param context Application context.
-	 * @param message Message to display.
-	 */
-    public ErrorEvent(AppContext context, String message) { 
-        this(context, message, null);
-    }
-
-	/** 
-	 * Throwable centric constructor.
-	 * 
-	 * @param context Application context.
-	 * @param ex Throwable behind the error.
-	 */
-    public ErrorEvent(AppContext context, Throwable ex) {
-        this(context, ex.getMessage(), ex);
-    }
-
-	/** 
-	 * Create the appropriate response command to this event.
-	 * 
-	 * @return Command representing an appropriate response to this event.
-	 */
-    public Command createDefaultCmd() {
-        Command retval = new DisplayErrorCmd(getContext(), _message, _ex);
-        return retval;
-    }
-
-	/** 
-	 * Create human readable version of this.
-	 * 
-	 * @return String representation.a
-	 */
-    public String toString() {
-        StringBuffer buf = new StringBuffer("Error: ");
-
-        if(_message != null) {
-            buf.append(_message);
-            buf.append('\n');
-        }
-        if(_ex != null) {
-            buf.append(StackFrame.toString(_ex));
-        }
-        return buf.toString();
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/EventBus.java b/src/antidote/org/apache/tools/ant/gui/event/EventBus.java
deleted file mode 100644
index d37f839..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/EventBus.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-
-import java.util.*;
-import javax.swing.SwingUtilities;
-/**
- * An event "bus" providing a centralized place for posting
- * and recieving generic application events. To receive events a class must 
- * implement the "BusMember" interface. When registering as a member, an
- * "interrupt level" is provided, which specifies a relative ordering level
- * that the member wishes to receive events for. By convention, a member
- * can be registered at the MONITORING, VETOING, or RESPONDING levels, which
- * correspond to recieving events first to receiving events last. If a member
- * receives an event, the event is of type AntEvent, and the member calls the 
- * AntEvent.cancel() method, the event is not then delivered
- * to subsequent members. Members also indicate interest in an event
- * by providing an instance of the BusFilter interface.<BR>
- *
- * NB: This class is overly simple right now, but will eventually
- * be expanded to do better event filtering, interrupt levels, etc. 
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
-*/
-public class EventBus {
-	/** The default "vetoing" interrupt level, used by bus members
-	 *  whose role is to veto request events or otherwise handle an
-	 *  event before it is processed by the default handler. */
-	public static final int VETOING = 1;
-	/** The default "monitoring" interrupt level, used by members who
-	 * are only listeners/monitors of events. */
-	public static final int MONITORING = 5;
-	/** The default "responding" interrupt level, for members who service
-	 *  events in a default manner. */
-	public static final int RESPONDING = 10;
-
-	/** The maximum valid interrupt value. */
-	public static final int MAX_INTERRUPT = 15;
-
-    /** Set of bus members, with a list for each interrupt level. */
-    private List[] _memberSet = new List[MAX_INTERRUPT];
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-    public EventBus() {
-    }
-
-	/** 
-	 * Add a member to the bus. 
-	 * 
-	 * @param intLevel Interrupt level.
-	 * @param member Member to add.
-	 */
-    public void addMember(int intLevel, BusMember member) {
-		if(intLevel < 1 || intLevel > MAX_INTERRUPT) {
-			throw new IllegalArgumentException(
-				"Invalid interrupt level: " + intLevel);
-		}
-        synchronized(_memberSet) {
-			List list = _memberSet[intLevel - 1];
-			if(list == null) {
-				list = new LinkedList();
-				_memberSet[intLevel - 1] = list;
-			}
-            list.add(member);
-        }
-    }
-
-
-	/** 
-	 * Remove a member from the bus.
-	 * 
-	 * @param member Member to remove.
-	 */
-    public void removeMember(BusMember member) {
-        synchronized(_memberSet) {
-			// XXX lets hope we don't do too much removing. Yuck...
-			for(int i = 0; i < _memberSet.length; i++) {
-				if(_memberSet[i] == null) continue;
-				_memberSet[i].remove(member);
-			}
-        }
-    }
-
-	/** 
-	 * Method used for sending an event to the bus.
-	 * 
-	 * @param event Event to post.
-	 */
-    public void postEvent(EventObject event) {
-        EventDispatcher disp = new EventDispatcher(event);
-
-        // Events need to be dispatched on the AWTEvent thread, as the UI
-        // components assume that.
-        if(SwingUtilities.isEventDispatchThread()) {
-            disp.run();
-        }
-        else {
-            SwingUtilities.invokeLater(disp);
-        }
-    }
-
-    /** Class that performs the duty of dispatching events to the members. */
-    private class EventDispatcher implements Runnable {
-        /** Event to dispatch. */
-        private EventObject _event = null;
-        
-        /** 
-         * Standard ctor.
-         * 
-         * @param event Event to dispatch.
-         */
-        public EventDispatcher(EventObject event) {
-            _event = event;
-        }
-
-        /** 
-         * Perform dispatching.
-         * 
-         */
-        public void run() {
-            synchronized(_memberSet) {
-              outerLoop:
-                for(int i = 0; i < _memberSet.length; i++) {
-                    if(_memberSet[i] == null) continue;
-                    
-                    Iterator it = _memberSet[i].iterator();
-                    while(it.hasNext()) {
-                        BusMember next = (BusMember) it.next();
-                        BusFilter filter = next.getBusFilter();
-                        if(filter == null || filter.accept(_event)) {
-                            // If false then callee canceled the event
-                            // propogation.
-                            if(!next.eventPosted(_event)) {
-                                break outerLoop;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewElementEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewElementEvent.java
deleted file mode 100644
index 2b8474a..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/NewElementEvent.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.acs.ACSElement;
-/**
- * Tag interface for indicating that an event is related to creating new
- * build definition elements.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public interface NewElementEvent {
-    /** 
-     * Get the element that has been added.
-     * 
-     * @return New element.
-     */
-    ACSElement getNewElement();
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewProjectEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewProjectEvent.java
deleted file mode 100644
index 8515110..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/NewProjectEvent.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.acs.ACSProjectElement;
-import org.apache.tools.ant.gui.acs.ACSElement;
-
-/**
- * Event providing notification that a new project has been
- * created or opened and selected. NB: Still not convinced that
- * subclassing ProjectSelectedEvent is the correct thing to
- * do, but it saves some time right now. It basically
- * assumes that any new project added to the project manager
- * is then selected.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class NewProjectEvent extends ProjectSelectedEvent 
-    implements NewElementEvent {
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-	 */
-    public NewProjectEvent(
-        AppContext context, ACSProjectElement project) {
-        super(context, project);
-        if(project == null) {
-            throw new IllegalArgumentException("A new project can't be null.");
-        }
-    }
-
-    /** 
-     * Get the newly added project.
-     * 
-     * @return New project.
-     */
-    public ACSElement getNewElement() {
-        return getSelectedProject();
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java
deleted file mode 100644
index 08a169d..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.acs.ACSElement;
-import org.apache.tools.ant.gui.acs.ACSPropertyElement;
-import org.apache.tools.ant.gui.core.AppContext;
-
-/**
- * Event fired when a new property is created.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class NewPropertyEvent extends PropertySelectionEvent 
-    implements NewElementEvent {
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-     * @param prop the new property.
-	 */
-    public NewPropertyEvent(AppContext context, 
-                            ACSPropertyElement prop) {
-        super(context, new ACSElement[] { prop });
-        if(prop == null) {
-            throw new IllegalArgumentException(
-                "A new property can't be null.");
-        }
-    }
-
-    /** 
-     * Get the newly added task.
-     * 
-     * @return New task.
-     */
-    public ACSElement getNewElement() {
-        return getSelectedProperties()[0];
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewTargetEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewTargetEvent.java
deleted file mode 100644
index 75a099a..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/NewTargetEvent.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.acs.ACSElement;
-import org.apache.tools.ant.gui.acs.ACSTargetElement;
-import org.apache.tools.ant.gui.core.AppContext;
-
-/**
- * Event fired when a new target is created.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class NewTargetEvent extends TargetSelectionEvent 
-    implements NewElementEvent {
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-     * @param target the new target.
-	 */
-    public NewTargetEvent(AppContext context, 
-                          ACSTargetElement target) {
-        super(context, new ACSElement[] { target });
-        if(target == null) {
-            throw new IllegalArgumentException("A new target can't be null.");
-        }
-    }
-
-    /** 
-     * Get the newly added target.
-     * 
-     * @return New target.
-     */
-    public ACSElement getNewElement() {
-        return getSelectedTargets()[0];
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java
deleted file mode 100644
index 72a20ee..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.acs.ACSElement;
-import org.apache.tools.ant.gui.acs.ACSTaskElement;
-import org.apache.tools.ant.gui.core.AppContext;
-
-/**
- * Event fired when a new target is created.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class NewTaskEvent extends TaskSelectionEvent 
-    implements NewElementEvent {
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-     * @param target the new task.
-	 */
-    public NewTaskEvent(AppContext context, 
-                        ACSTaskElement task) {
-        super(context, new ACSElement[] { task });
-        if(task == null) {
-            throw new IllegalArgumentException("A new task can't be null.");
-        }
-    }
-
-    /** 
-     * Get the newly added task.
-     * 
-     * @return New task.
-     */
-    public ACSElement getNewElement() {
-        return getSelectedTasks()[0];
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/NullSelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NullSelectionEvent.java
deleted file mode 100644
index 7439fd8..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/NullSelectionEvent.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.acs.ACSElement;
-import org.apache.tools.ant.gui.core.AppContext;
-
-/**
- * Event fired when no elements are selected.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class NullSelectionEvent extends ElementSelectionEvent {
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-     * @param selected the selected Elements.
-	 */
-    public NullSelectionEvent(AppContext context) {
-        super(context, null);
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/OpenRequestEvent.java b/src/antidote/org/apache/tools/ant/gui/event/OpenRequestEvent.java
deleted file mode 100644
index 4f3cd60..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/OpenRequestEvent.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.command.Command;
-import org.apache.tools.ant.gui.command.LoadFileCmd;
-
-import java.io.File;
-/**
- * Event for requesting that the given file be opened.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class OpenRequestEvent extends AntEvent {
-    /** The file to open. */
-    private File _file = null;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context Application context.
-	 * @param file File to be opened.
-	 */
-    public OpenRequestEvent(AppContext context, File file) {
-        super(context);
-        _file = file;
-    }
-
-	/** 
-	 * Create the appropriate response command to this event, which is to
-     * load in a build file.
-	 * 
-	 * @return Load command.
-	 */
-    public Command createDefaultCmd() {
-        LoadFileCmd load = new LoadFileCmd(getContext());
-        load.setFile(_file);
-        return load;
-    }
-}
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/event/ProjectClosedEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ProjectClosedEvent.java
deleted file mode 100644
index a157cbd..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/ProjectClosedEvent.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.core.AppContext;
-
-
-/**
- * Provides notification that the project was closed.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ProjectClosedEvent extends AntEvent {
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context The application context.
-	 */
-    public ProjectClosedEvent(AppContext context) {
-        super(context);
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/ProjectSelectedEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ProjectSelectedEvent.java
deleted file mode 100644
index 86dab9c..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/ProjectSelectedEvent.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.acs.ACSProjectElement;
-import org.apache.tools.ant.gui.acs.ACSElement;
-
-/**
- * Event providing notification of a change in the currently selected project.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ProjectSelectedEvent extends ElementSelectionEvent {
-    /** The selected project. */
-    private ACSProjectElement _project = null;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-	 */
-    public ProjectSelectedEvent(
-        AppContext context, ACSProjectElement project) {
-        super(context, new ACSElement[] { project });
-        _project = project;
-    }
-
-    /** 
-     * Get the selected project, or null if there are no
-     * open projects.
-     * 
-     * @return Selected project, or null if no projects selected.
-     */
-    public ACSProjectElement getSelectedProject() {
-        return _project;
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/PropertySelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/PropertySelectionEvent.java
deleted file mode 100644
index 5d2a532..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/PropertySelectionEvent.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.acs.ACSElement;
-import org.apache.tools.ant.gui.acs.ACSPropertyElement;
-import org.apache.tools.ant.gui.core.AppContext;
-
-/**
- * Event fired when one or more tasks are selected.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class PropertySelectionEvent extends ElementSelectionEvent {
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-     * @param selected the selected Elements.
-	 */
-    public PropertySelectionEvent(AppContext context, 
-                              ACSElement[] selected) {
-        super(context, selected);
-    }
-
-    /** 
-     * Get the selected properties.
-     * 
-     */
-    public ACSPropertyElement[] getSelectedProperties() {
-        return (ACSPropertyElement[]) getFiltered(ACSPropertyElement.class);
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/TargetSelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/TargetSelectionEvent.java
deleted file mode 100644
index 8ae33e2..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/TargetSelectionEvent.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.acs.ACSElement;
-import org.apache.tools.ant.gui.acs.ACSTargetElement;
-import org.apache.tools.ant.gui.core.AppContext;
-
-/**
- * Event fired when one or more targets are selected.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class TargetSelectionEvent extends ElementSelectionEvent {
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-     * @param selected the selected Elements.
-	 */
-    public TargetSelectionEvent(AppContext context, 
-                                ACSElement[] selected) {
-        super(context, selected);
-    }
-
-    /** 
-     * Get the selected targets.
-     * 
-     */
-    public ACSTargetElement[] getSelectedTargets() {
-        return (ACSTargetElement[]) getFiltered(ACSTargetElement.class);
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/event/TaskSelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/TaskSelectionEvent.java
deleted file mode 100644
index 69f703b..0000000
--- a/src/antidote/org/apache/tools/ant/gui/event/TaskSelectionEvent.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.event;
-import org.apache.tools.ant.gui.acs.ACSElement;
-import org.apache.tools.ant.gui.acs.ACSTaskElement;
-import org.apache.tools.ant.gui.core.AppContext;
-
-/**
- * Event fired when one or more tasks are selected.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class TaskSelectionEvent extends ElementSelectionEvent {
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param context application context.
-     * @param selected the selected Elements.
-	 */
-    public TaskSelectionEvent(AppContext context, 
-                              ACSElement[] selected) {
-        super(context, selected);
-    }
-
-    /** 
-     * Get the selected tasks.
-     * 
-     */
-    public ACSTaskElement[] getSelectedTasks() {
-        return (ACSTaskElement[]) getFiltered(ACSTaskElement.class);
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/ide/EmacsNotifier.java b/src/antidote/org/apache/tools/ant/gui/ide/EmacsNotifier.java
deleted file mode 100644
index 6497cc2..0000000
--- a/src/antidote/org/apache/tools/ant/gui/ide/EmacsNotifier.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.gui.ide;
-
-import org.apache.tools.ant.taskdefs.ExecTask;
-import org.apache.tools.ant.Project;
-import java.util.StringTokenizer;
-import java.io.File;
-
-/**
- * FileErrorNotifier specialization for sending file error
- * messages to emacs via the emacsclient command. This
- * command <i>must</i> be in the runtime path of the JVM for
- * it to be found.  
- * <p> Install the notifier by running Ant as follows:<br> 
- * <code> 
- * &nbsp;&nbsp;ant -listener net.noemis.ant.EmacsNotifier 
- * </code>
- * 
- * @version $Revision$ 
- * @author <a href="mailto:simeon@fitch.net">Simeon H.K. Fitch</a> */
-public class EmacsNotifier extends FileErrorNotifier {
-    /** Command to run to communicate with emacs. */
-	// XXX This should only be a default. A property should be checked
-	// for the actual version. Should Project.getProperty() or 
-	// Project.getUserProperty() be used???
-    private static final String EMACS = "emacsclient";
-
-	/** 
-	 * Called when a message has been logged indicating that
-	 * there is an error of some sort at the given file and
-	 * line number.  Sends a message bto emacs to make emacs
-	 * visit the file and place the mark at the source of
-	 * the error.
-	 * 
-	 * @param file File containing the error.
-	 * @param lineNum Line number of error.  
-	 */
-	protected void fireFileErrorNotification(
-		Project project, File file, int lineNum) {
-		// Launch our command using the built in exec support.
-		ExecTask exec = (ExecTask) project.createTask("exec");
-		// Construct the command to communicate with emacs.
-		// Command has the form:
-		//     emacsclient [-n] [--no-wait] [+LINENUMBER] FILENAME
-		exec.setExecutable(EMACS);
-		exec.createArg().setValue("-n");
-		exec.createArg().setValue("--no-wait");
-		exec.createArg().setValue("+" + lineNum);
-		exec.createArg().setValue(file.toString());
-		exec.setFailonerror(false);
-		exec.execute();
-	}
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/ide/FileErrorNotifier.java b/src/antidote/org/apache/tools/ant/gui/ide/FileErrorNotifier.java
deleted file mode 100644
index 3f35ac4..0000000
--- a/src/antidote/org/apache/tools/ant/gui/ide/FileErrorNotifier.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.gui.ide;
-
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.Project;
-import java.util.StringTokenizer;
-import java.io.File;
-
-/**
- * Abstract base class for BuildListener specializations interested
- * in notification of build errors in source files.
- *
- * @version $Revision$ 
- * @author <a href="mailto:simeon@fitch.net">Simeon H.K. Fitch</a>
- */
-abstract class FileErrorNotifier implements BuildListener {
-    /** Command to run to communicate with emacs. */
-    private static final String EMACS = "emacsclient";
-
-    /**
-     * Fired whenever a message is logged. Parses error messages looking
-     * for a filename and line number specification, which when found
-	 * is then sent to the method <code>fireFileErrorNotification()</code>
-     * source of the error. Only the first error is processed.
-     *
-	 * @param event Incoming event that is filtered for error messages.
-     */
-    public void messageLogged(BuildEvent event) {
-        if(event.getPriority() == Project.MSG_ERR ||
-           event.getPriority() == Project.MSG_WARN) {
-            StringTokenizer tok = new StringTokenizer(event.getMessage(), ":");
-            File file = null;
-            int line = -1;
-            
-            if(tok.hasMoreTokens()) {
-                file = new File(tok.nextToken());
-                if(tok.hasMoreTokens()) {
-                    try {
-                        line = Integer.parseInt(tok.nextToken());
-                    }
-                    catch(NumberFormatException ex) {
-                        // Allow execption to fall through as we test
-                        // success by the value of 'line' below.
-                    }
-                }
-            }
-
-            // Test for successful filename and line number detection.
-            if(file != null && line > 0 && file.exists()) {
-                // Since we only want to trigger on the first error, 
-                // remove ourself from being notified of others.
-				// XXX are there any reasons this should occur after
-				// notification?
-                event.getProject().removeBuildListener(this);
-
-				// Send notification.
-				fireFileErrorNotification(event.getProject(), file, line);
-            }
-        }
-    }
-
-	/** 
-	 * Called when a message has been logged indicating that there
-	 * is an error of some sort at the given file and line number.
-	 * 
-	 * @param file File containing the error.
-	 * @param lineNum Line number of error.
-	 */
-	protected abstract void fireFileErrorNotification(
-		Project project, File file, int lineNum);
-
-    // Event types that are ignored. Looks like we really need a
-    //  BuildAdapter class...
-    /** Ignored */
-    public void buildStarted(BuildEvent event) {
-    }
-    /** Ignored */
-    public void buildFinished(BuildEvent event) {
-    }
-    /** Ignored */
-    public void targetStarted(BuildEvent event) {
-    }
-    /** Ignored */
-    public void targetFinished(BuildEvent event) {
-    }
-    /** Ignored */
-    public void taskStarted(BuildEvent event) {
-    }
-    /** Ignored */
-    public void taskFinished(BuildEvent event) {
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/modules/TargetMonitor.java b/src/antidote/org/apache/tools/ant/gui/modules/TargetMonitor.java
deleted file mode 100644
index f3d582c..0000000
--- a/src/antidote/org/apache/tools/ant/gui/modules/TargetMonitor.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.modules;
-import org.apache.tools.ant.gui.core.*;
-import org.apache.tools.ant.gui.event.*;
-import org.apache.tools.ant.gui.acs.ACSElement;
-import org.apache.tools.ant.gui.acs.ACSTargetElement;
-import org.apache.tools.ant.gui.acs.ElementTreeSelectionModel;
-import javax.swing.*;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.text.Document;
-import java.awt.BorderLayout;
-import java.awt.Insets;
-import java.awt.Dimension;
-import java.util.EventObject;
-
-/**
- * A widget for displaying the currently selected targets.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class TargetMonitor extends AntModule {
-        
-    /** Place to display selected targets. */
-    private JLabel _text = null;
-
-    /** Default text. */
-    private String _defText = null;
-
-    /** 
-     * Default ctor.
-     * 
-     */
-    public TargetMonitor() {
-    }
-
-    /** 
-     * Using the given AppContext, initialize the display.
-     * 
-     * @param context Application context.
-     */
-    public void contextualize(AppContext context) {
-        setContext(context);
-        context.getEventBus().addMember(EventBus.RESPONDING, new Handler());
-
-        setLayout(new BorderLayout());
-
-        _text = new JLabel();
-        _text.setForeground(UIManager.getColor("TextField.foreground"));
-        add(BorderLayout.NORTH, _text);
-
-
-        _defText = context.getResources().getString(getClass(), "defText");
-        setText(_defText);
-    }
-
-    /** 
-     * Set the displayed text. 
-     * 
-     * @param text Text to display.
-     */
-    private void setText(String text) {
-        _text.setText("<html>&nbsp;&nbsp;" + text + "</html>");
-    }
-
-
-    /** Class for handling project events. */
-    private class Handler implements BusMember {
-        private final Filter _filter = new Filter();
-
-        /** 
-         * Get the filter to that is used to determine if an event should
-         * to to the member.
-         * 
-         * @return Filter to use.
-         */
-        public BusFilter getBusFilter() {
-            return _filter;
-        }
-        
-        /** 
-         * Called when an event is to be posed to the member.
-         * 
-         * @param event Event to post.
-         * @return true if event should be propogated, false if
-         * it should be cancelled.
-         */
-        public boolean eventPosted(EventObject event) {
-            ElementSelectionEvent e = (ElementSelectionEvent) event;
-            String text = _defText;
-            ACSElement[] selected = e.getSelectedElements();
-
-            if(selected != null && selected.length > 0) {
-                StringBuffer buf = new StringBuffer();
-                String name = null;
-
-                for(int i = 0; i < selected.length; i++) {
-                    if(selected[i] instanceof ACSTargetElement) {
-                        name = ((ACSTargetElement)selected[i]).getName();
-                        if( buf.toString().indexOf( name ) < 0 ) {
-                            if(buf.length() > 0) {
-                                buf.append(", ");
-                            }
-                            buf.append( name );
-                        }
-                    }
-                }
-
-                if(buf.length() > 0) {
-                    text = buf.toString();
-                }
-            }
-
-            setText(text);
-
-            return true;
-        }
-    }
-
-    /** Class providing filtering for project events. */
-    private static class Filter implements BusFilter {
-        /** 
-         * Determines if the given event should be accepted.
-         * 
-         * @param event Event to test.
-         * @return True if event should be given to BusMember, false otherwise.
-         */
-        public boolean accept(EventObject event) {
-            return event instanceof ElementSelectionEvent;
-        }
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/modules/console/BuildConsole.java b/src/antidote/org/apache/tools/ant/gui/modules/console/BuildConsole.java
deleted file mode 100644
index 30c926a..0000000
--- a/src/antidote/org/apache/tools/ant/gui/modules/console/BuildConsole.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.modules.console;
-
-import org.apache.tools.ant.gui.core.AntModule;
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.*;
-import javax.swing.*;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.text.*;
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.Dimension;
-import java.awt.Color;
-import java.util.EventObject;
-import java.util.Date;
-
-/**
- * Logging console display.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class BuildConsole extends AntModule {
-    /** Area where messages are printed. */
-    private JTextPane _text = null;
-    /** Selection of logging levels. */
-    private JComboBox _logLevel = null;
-    /** Display styles. */
-    private ConsoleStyleContext _styles = null;
-	/** ClearLog Button. */
-	private JButton _clearLog = null;
-    
-	/** 
-	 * Default ctor.
-	 */
-    public BuildConsole() {
-    }
-
-
-	/** 
-	 * Using the given AppContext, initialize the display.
-	 * 
-	 * @param context Application context.
-	 */
-    public void contextualize(AppContext context) {
-        setContext(context);
-        context.getEventBus().addMember(EventBus.MONITORING, new Handler());
-        setLayout(new BorderLayout());
-
-        _styles = new ConsoleStyleContext();
-        _text = new JTextPane(_styles.getStyledDocument());
-        _text.setEditable(false);
-        JScrollPane scroller = new JScrollPane(_text);
-        scroller.setVerticalScrollBarPolicy(
-            JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
-        add(BorderLayout.CENTER, scroller);
-
-        JPanel controls = new JPanel(new FlowLayout(FlowLayout.LEFT));
-        JLabel label = new JLabel(
-            context.getResources().getString(getClass(), "logLevel"));
-        controls.add(label);
-        _logLevel = new JComboBox(LogLevelEnum.getValues());
-        _logLevel.setSelectedItem(LogLevelEnum.INFO);
-        controls.add(_logLevel);
-        
-        // Padding.
-        controls.add(Box.createHorizontalStrut(10));
-		_clearLog = new JButton(
-            context.getResources().getString(
-                getClass(), "clearLog"));
-		_clearLog.addActionListener(new ActionHandler());
-		controls.add(_clearLog);
-
-        add(BorderLayout.NORTH, controls);
-
-    }
-
-
-    /** 
-     * Clear the contents of the console.
-     * 
-     */
-    private void clearDisplay() {
-        Document doc = _text.getDocument();
-        try {
-            doc.remove(0, doc.getLength());
-        }
-        catch(Exception ex) {
-            // Intentionally ignored.
-        }
-    }
-
-    /** Class for handling project events. */
-    private class Handler implements BusMember {
-        private final Filter _filter = new Filter();
-
-        /** 
-         * Get the filter to that is used to determine if an event should
-         * to to the member.
-         * 
-         * @return Filter to use.
-         */
-        public BusFilter getBusFilter() {
-            return _filter;
-        }
-        
-        /** 
-         * Called when an event is to be posed to the member.
-         * 
-         * @param event Event to post.
-         * @return true if event should be propogated, false if
-         * it should be cancelled.
-         */
-        public boolean eventPosted(EventObject event) {
-            if(event instanceof ProjectSelectedEvent) {
-                return true;
-            }
-
-            AntBuildEvent buildEvent = (AntBuildEvent) event;
-            Style style = null;
-            String text = null;
-
-            switch(buildEvent.getType().getValue()) {
-              case BuildEventType.BUILD_STARTED_VAL:
-
-              case BuildEventType.BUILD_FINISHED_VAL:
-                  text = buildEvent.getType().toString() + 
-                      " (" + new Date().toString() + ")";
-                  style = _styles.getHeadingStyle();
-                  break;
-              case BuildEventType.TARGET_STARTED_VAL:
-                  text = buildEvent.getEvent().getTarget().getName() + ":";
-                  style = _styles.getSubheadingStyle();
-                  break;
-              case BuildEventType.TARGET_FINISHED_VAL:
-              case BuildEventType.TASK_STARTED_VAL:
-              case BuildEventType.TASK_FINISHED_VAL:
-                  break;
-              case BuildEventType.MESSAGE_LOGGED_VAL:
-                  // Filter out events that are below our
-                  // selected filterint level.
-                  LogLevelEnum level = 
-                      (LogLevelEnum) _logLevel.getSelectedItem();
-                  int priority = buildEvent.getEvent().getPriority();
-                  if(priority <= level.getValue()) {
-                      text = buildEvent.toString();
-                      style = _styles.getStyle(LogLevelEnum.fromInt(priority));
-                  }
-                  break;
-            }
-
-            if(text != null) {
-                try {
-                    Document doc = _text.getDocument();
-                    doc.insertString(doc.getLength(), text, style);
-                    doc.insertString(doc.getLength(), "\n", null);
-                }
-                catch(Exception ex) {
-                    // XXX log me.
-                    ex.printStackTrace();
-                }
-            }
-
-            return true;
-        }
-    }
-
-	/** Handles press of the ClearLog button. */
-	private class ActionHandler implements java.awt.event.ActionListener {
-		public void actionPerformed(java.awt.event.ActionEvent e) {
-			if (e.getSource() == _clearLog)	clearDisplay();
-		}
-	}
-
-    /** Class providing filtering for project events. */
-    private static class Filter implements BusFilter {
-        /** 
-         * Determines if the given event should be accepted.
-         * 
-         * @param event Event to test.
-         * @return True if event should be given to BusMember, false otherwise.
-         */
-        public boolean accept(EventObject event) {
-            return event instanceof AntBuildEvent ||
-                event instanceof ProjectSelectedEvent;
-        }
-    }
-
-    /** Style set for pretty display of the console messages. */
-    private static class ConsoleStyleContext extends StyleContext {
-        /** Name of the style used for headings. */
-        public static final String HEADING_STYLE = "headingStyle";
-        /** Name of the style used for subheadings. */
-        public static final String SUBHEADING_STYLE = "subheadingStyle";
-
-        /** XXX temporary list of style colors. To go away once a real set of
-         *  properties is implemented... */
-        private static final Color[] _colors = {
-            Color.red,
-            Color.magenta,
-            Color.black,
-            Color.darkGray,
-            Color.blue
-        };
-
-        /** 
-         * Default ctor.
-         * 
-         */
-        public ConsoleStyleContext() {
-            Style defaultStyle = getStyle(DEFAULT_STYLE);
-            StyleConstants.setFontSize(defaultStyle, 12);
-
-            Style msgBase = addStyle("msgBase", defaultStyle);
-            StyleConstants.setFontFamily(msgBase, "Monospaced");
-
-            LogLevelEnum[] levels = LogLevelEnum.getValues();
-            for(int i = 0; i < levels.length; i++) {
-                Style curr = addStyle(levels[i].toString(), msgBase);
-                StyleConstants.setFontSize(curr, 10);
-                StyleConstants.setForeground(curr, _colors[i]);
-            }
-
-            Style heading = addStyle(HEADING_STYLE, defaultStyle);
-            StyleConstants.setFontFamily(heading, "SansSerif");
-            StyleConstants.setBold(heading, true);
-            StyleConstants.setUnderline(heading, true);
-
-            Style subheading = addStyle(SUBHEADING_STYLE, heading);
-            StyleConstants.setFontSize(subheading, 10);
-            StyleConstants.setUnderline(subheading, false);
-        }
-
-        /** 
-         * Get the style to use for the given logging level.
-         * 
-         * @param level Logging level.
-         * @return Style to use for display.
-         */
-        Style getStyle(LogLevelEnum level) {
-            Style retval = getStyle(level.toString());
-            return retval == null ? getDefaultStyle() : retval;
-        }
-
-        /** 
-         * Get the default style.
-         * 
-         * @return Default style.
-         */
-        Style getDefaultStyle() {
-            return getStyle(DEFAULT_STYLE);
-        }
-
-        /** 
-         * Get the style to use for headings.
-         * 
-         * @return Heading style.
-         */
-        Style getHeadingStyle() {
-            return getStyle(HEADING_STYLE);
-        }
-
-        /** 
-         * Get the style to use for subheadings.
-         * 
-         * @return Subheading style.
-         */
-        Style getSubheadingStyle() {
-            return getStyle(SUBHEADING_STYLE);
-        }
-
-        /** 
-         * Get a StyledDocument initialized with this.
-         * 
-         * @return SytledDocument.
-         */
-        StyledDocument getStyledDocument() {
-            DefaultStyledDocument retval = new DefaultStyledDocument(this);
-            retval.setLogicalStyle(0, getDefaultStyle());
-            return retval;
-        }
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/modules/console/LogLevelEnum.java b/src/antidote/org/apache/tools/ant/gui/modules/console/LogLevelEnum.java
deleted file mode 100644
index fbf9c67..0000000
--- a/src/antidote/org/apache/tools/ant/gui/modules/console/LogLevelEnum.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.modules.console;
-
-/**
- * Enumeration class of the different log levels.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class LogLevelEnum {
-    /** Enum value. */
-    private int _value = 0;
-
-	/** 
-	 * Standard ctor.
-	 * 
-	 * @param value Index value.
-	 */
-    private LogLevelEnum(int value) {
-        _value = value;
-    }
-
-	/** 
-	 * Get the enumeration value.
-	 * 
-	 * @return 
-	 */
-    public int getValue() {
-        return _value;
-    }
-
-	/** 
-	 * Get the enumeration value with the given index value.
-	 * 
-	 * @param value Index value.
-	 * @return Enumeration value.
-	 */
-    public static LogLevelEnum fromInt(int value) {
-        return _objectMap[value];
-    }
-
-	/** 
-	 * Get the set of enumeration values.
-	 * 
-	 * @return Value set.
-	 */
-    public static LogLevelEnum[] getValues() {
-        return _objectMap;
-    }
-
-	/** 
-	 * Determine if the given object is logically equal to this one.
-	 * 
-	 * @param o Object to compare to 
-	 * @return True if equal, false otherwise.
-	 */
-    public boolean equals(Object o) {
-        if(o instanceof LogLevelEnum) {
-            return ((LogLevelEnum)o)._value == _value;
-        }
-        return false;
-    }
-	/** 
-	 * Generate a hash value.
-	 * 
-	 * @return Hash value.
-	 */
-    public int hashValue() {
-        return _value;
-    }
-
-	/** 
-	 * Provide a string representation of this. 
-	 * 
-	 * @return String representation.
-	 */
-    public String toString() {
-        return _stringMap[_value];
-    }
-
-
-    /* Index values. */ 
-    public static final int ERROR_VAL = 0;
-    public static final int WARNING_VAL = 1;
-    public static final int INFO_VAL = 2;
-    public static final int VERBOSE_VAL = 3;
-    public static final int DEBUG_VAL = 4;
-
-    /* Enumeration values. */ 
-    public static final LogLevelEnum ERROR = 
-      new LogLevelEnum(ERROR_VAL);
-    public static final LogLevelEnum WARNING = 
-      new LogLevelEnum(WARNING_VAL);
-    public static final LogLevelEnum INFO = 
-      new LogLevelEnum(INFO_VAL);
-    public static final LogLevelEnum VERBOSE = 
-      new LogLevelEnum(VERBOSE_VAL);
-    public static final LogLevelEnum DEBUG = 
-      new LogLevelEnum(DEBUG_VAL);
-
-    /** Index to object mapping. */
-    private static final LogLevelEnum[] _objectMap = {
-        ERROR, WARNING, INFO, VERBOSE, DEBUG
-    };
-
-    /** String map. XXX needs to be localized. */
-    private static final String[] _stringMap = {
-        "Error", "Warning", "Info", "Verbose", "Debug"
-    };
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementNavigator.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementNavigator.java
deleted file mode 100644
index 2f911fb..0000000
--- a/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementNavigator.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.modules.edit;
-import org.apache.tools.ant.gui.core.*;
-import org.apache.tools.ant.gui.event.*;
-import org.apache.tools.ant.gui.acs.*;
-import javax.swing.*;
-import javax.swing.tree.*;
-import javax.swing.event.*;
-import java.awt.GridLayout;
-import java.awt.Dimension;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.util.EventObject;
-import java.beans.PropertyChangeEvent;
-
-/**
- * Module for navigating build file elemenets.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ElementNavigator extends AntModule {
-
-    /** Navigation via a tree widget. */
-    private JTree _tree = null;
-    /** The selection model being used. */
-    private ElementTreeSelectionModel _selections = null;
-
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-	public ElementNavigator() {
-    }
-
-	/** 
-	 * Using the given AppContext, initialize the display.
-	 * 
-	 * @param context Application context.
-	 */
-    public void contextualize(AppContext context) {
-        setContext(context);
-        context.getEventBus().addMember(EventBus.MONITORING, new Handler());
-
-        setLayout(new GridLayout(1,1));
-
-        _tree = new JTree();
-        _tree.setModel(null);
-        _tree.setCellRenderer(new ElementTreeCellRenderer());
-        _tree.addMouseListener(new PopupHandler());
-        _tree.putClientProperty("JTree.lineStyle", "Angled");
-        _tree.setShowsRootHandles(true);
-        JScrollPane scroller = new JScrollPane(_tree);
-        add(scroller);
-
-        setPreferredSize(new Dimension(250, 100));
-        setMinimumSize(new Dimension(200, 100));
-
-	}
-
-    /** Class for handling project events. */
-    private class Handler implements BusMember {
-        private final Filter _filter = new Filter();
-
-        /** 
-         * Get the filter to that is used to determine if an event should
-         * to to the member.
-         * 
-         * @return Filter to use.
-         */
-        public BusFilter getBusFilter() {
-            return _filter;
-        }
-        
-        /** 
-         * Called when an event is to be posed to the member.
-         * 
-         * @param event Event to post.
-         * @return true if event should be propogated, false if
-         * it should be cancelled.
-         */
-        public boolean eventPosted(EventObject event) {
-            ElementTreeModel model = (ElementTreeModel)_tree.getModel();
-            // XXX This crap needs cleaning up. Type switching is lazy...
-            if(event instanceof PropertyChangeEvent) {
-                // The project node has changed.
-                model.fireNodeChanged((ACSElement)event.getSource());
-            }
-            else if(event instanceof NewElementEvent && model != null) {
-                ACSElement element = ((NewElementEvent)event).getNewElement();
-                model.fireNodeAdded(element);
-                TreePath path = new TreePath(model.getPathToRoot(element));
-                _selections.setSelectionPath(path);
-                _tree.scrollPathToVisible(path);
-            }
-            else {
-                ACSProjectElement project = null;
-                if(event instanceof ProjectSelectedEvent) {
-                    ProjectSelectedEvent e = (ProjectSelectedEvent) event;
-                    project = e.getSelectedProject();
-                }
-                
-                if(project == null) {
-                    // The project has been closed.
-                    // XXX this needs to be tested against 
-                    // different version of Swing...
-                    _tree.setModel(null);
-                    _tree.setSelectionModel(null);
-                    // Send an empty selection event to notify others that
-                    // nothing is selected.
-                    ElementSelectionEvent.createEvent(getContext(), null);
-                }
-                else {
-                    _tree.setModel(new ElementTreeModel(project));
-                    _selections = new ElementTreeSelectionModel();
-                    _selections.addTreeSelectionListener(
-                        new SelectionForwarder());
-                    _tree.setSelectionModel(_selections);
-                }
-            }
-            return true;
-        }
-    }
-
-    /** Forwards selection events to the event bus. */
-    private class SelectionForwarder implements TreeSelectionListener {
-        public void valueChanged(TreeSelectionEvent e) {
-            getContext().getEventBus().postEvent(
-                ElementSelectionEvent.createEvent(
-                    getContext(), _selections.getSelectedElements()));
-        }
-    }
-
-    /** Class providing filtering for project events. */
-    private static class Filter implements BusFilter {
-        /** 
-         * Determines if the given event should be accepted.
-         * 
-         * @param event Event to test.
-         * @return True if event should be given to BusMember, false otherwise.
-         */
-        public boolean accept(EventObject event) {
-            return event instanceof ProjectSelectedEvent ||
-                event instanceof ProjectClosedEvent ||
-                event instanceof NewElementEvent ||
-                event instanceof PropertyChangeEvent;
-        }
-    }
-
-    /** Mouse listener for showing popup menu. */
-    private class PopupHandler extends MouseAdapter {
-        private void handle(MouseEvent e) {
-            if(e.isPopupTrigger()) {
-                ActionManager mgr = getContext().getActions();
-                JPopupMenu menu = mgr.createPopup(
-                    getContext().getResources().getStringArray(
-                        ElementNavigator.class, "popupActions"));
-                menu.show((JComponent)e.getSource(), e.getX(), e.getY());
-            }
-        }
-
-        public void mousePressed(MouseEvent e) {
-            handle(e);
-        }
-        public void mouseReleased(MouseEvent e) {
-            handle(e);
-        }
-        public void mouseClicked(MouseEvent e) {
-            handle(e);
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementTreeCellRenderer.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementTreeCellRenderer.java
deleted file mode 100644
index a948496..0000000
--- a/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementTreeCellRenderer.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.modules.edit;
-
-import org.apache.tools.ant.gui.acs.ACSElement;
-import javax.swing.tree.DefaultTreeCellRenderer;
-import javax.swing.JTree;
-import javax.swing.ImageIcon;
-import java.awt.Component;
-import java.awt.Image;
-import java.beans.*;
-
-/**
- * Cell renderer for displaying the Ant XML file in a JTree.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ElementTreeCellRenderer extends DefaultTreeCellRenderer {
-
-    public Component getTreeCellRendererComponent(JTree tree,
-                                                  Object value,
-                                                  boolean sel,
-                                                  boolean expanded,
-                                                  boolean leaf,
-                                                  int row,
-                                                  boolean hasFocus) {
-        super.getTreeCellRendererComponent(tree, value, sel, expanded,
-                                           leaf, row, hasFocus);
-
-        try {
-            BeanInfo info = Introspector.getBeanInfo(value.getClass());
-            Image icon = info.getIcon(BeanInfo.ICON_COLOR_16x16);
-            setIcon(icon == null ? null : new ImageIcon(icon));
-
-            if(value instanceof ACSElement) {
-                setText(((ACSElement)value).getDisplayName());
-            }
-            else {
-               setText(info.getBeanDescriptor().getDisplayName());
-            }
-        }
-        catch(IntrospectionException ex) {
-            // XXX log me.
-            ex.printStackTrace();
-        }
-
-        return this;
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/PropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/PropertyEditor.java
deleted file mode 100644
index d2be69b..0000000
--- a/src/antidote/org/apache/tools/ant/gui/modules/edit/PropertyEditor.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.modules.edit;
-
-import org.apache.tools.ant.gui.customizer.DynamicCustomizer;
-import org.apache.tools.ant.gui.core.*;
-import org.apache.tools.ant.gui.acs.*;
-import org.apache.tools.ant.gui.event.*;
-import javax.swing.*;
-import java.util.*;
-import java.beans.*;
-import java.io.StringReader;
-import java.io.IOException;
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Point;
-
-/**
- * Stub for a property editor.
- *
- * @version $Revision$ 
- * @author Simeon H.K. Fitch 
- */
-public class PropertyEditor extends AntModule {
-
-    /** The editor for current bean.*/
-    private Customizer _customizer = null;
-    /** Container for the customizer. */
-    private JPanel _container = null;
-    /** Scroll area containing contents. */
-    private JScrollPane _scroller = null;
-    /** Property change forwarder. */
-    private PropertyChangeForwarder _forwarder = new PropertyChangeForwarder();
-
-    /** 
-     * Default ctor.
-     * 
-     */
-    public PropertyEditor() {
-    }
-
-    /** 
-     * Using the given AppContext, initialize the display.
-     * 
-     * @param context Application context.
-     */
-    public void contextualize(AppContext context) {
-        setContext(context);
-        context.getEventBus().addMember(EventBus.MONITORING, new Handler());
-        setLayout(new BorderLayout());
-        _container = new JPanel(new BorderLayout());
-        add(_scroller = new JScrollPane(_container));
-    }
-
-    /** 
-     * Update the display for the current items. 
-     * 
-     * @param items Current items to display.
-     */
-    private void updateDisplay(ACSElement[] items) {
-        if(_customizer != null) {
-            _customizer.removePropertyChangeListener(_forwarder);
-            _container.remove((Component)_customizer);
-            _customizer = null;
-        }
-
-        if(items != null && items.length > 0) {
-            // The last selection element is the the one the
-            // user most recently selected.
-            ACSElement item = items[items.length - 1];
-
-            try {
-                BeanInfo info = Introspector.getBeanInfo(item.getClass());
-                _customizer = (Customizer) info.getBeanDescriptor().
-                    getCustomizerClass().newInstance();
-                _customizer.setObject(item);
-                _container.add(BorderLayout.CENTER, (Component) _customizer);
-                _customizer.addPropertyChangeListener(_forwarder);
-            }
-            catch(Exception ex) {
-                // XXX log me.
-                ex.printStackTrace();
-            }
-        }
-
-        _container.validate();
-        _container.repaint();
-    }
-
-
-    /** Class for handling project events. */
-    private class Handler implements BusMember {
-        private final Filter _filter = new Filter();
-
-        /** 
-         * Get the filter to that is used to determine if an event should
-         * to to the member.
-         * 
-         * @return Filter to use.
-         */
-        public BusFilter getBusFilter() {
-            return _filter;
-        }
-
-        /** 
-         * Called when an event is to be posted to the member.
-         * 
-         * @param event Event to post.
-         * @return true if event should be propogated, false if
-         * it should be cancelled.
-         */
-        public boolean  eventPosted(EventObject event) {
-            if(event instanceof ProjectClosedEvent) {
-                updateDisplay(null);
-            }
-            else {
-                ElementSelectionEvent e = (ElementSelectionEvent) event;
-                ACSElement[] elements = e.getSelectedElements();
-                updateDisplay(elements);
-            }
-            return true;
-        }
-
-    }
-    /** Class providing filtering for project events. */
-    private static class Filter implements BusFilter {
-        /** 
-         * Determines if the given event should be accepted.
-         * 
-         * @param event Event to test.
-         * @return True if event should be given to BusMember, false otherwise.
-         */
-        public boolean accept(EventObject event) {
-            return event instanceof ElementSelectionEvent || 
-                event instanceof ProjectClosedEvent;
-        }
-    }
-
-    /** Class for forwarding property change events to the event bus. */
-    private class PropertyChangeForwarder implements PropertyChangeListener {
-        public void propertyChange(PropertyChangeEvent e) {
-            getContext().getEventBus().postEvent(e);
-        }
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/action.properties b/src/antidote/org/apache/tools/ant/gui/resources/action.properties
deleted file mode 100644
index 8302340..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/action.properties
+++ /dev/null
@@ -1,151 +0,0 @@
-# Define the primary menubar items.
-menus=File, Build, Projects, Help
-
-# Declare the list of known actions.
-actions=\
-    new, open, save, saveas, close, exit, about, \
-    newTarget, newTask, newProperty \
-    startBuild, stopBuild
-
-# Configure the decalred actions.
-new.name=New Project...
-new.shortDescription=Create a new project
-new.parentMenuName=File
-new.icon=new-project.gif
-new.accelerator=control N
-new.enabled=true
-new.command=org.apache.tools.ant.gui.command.NewProjectCmd
-
-open.name=Open...
-open.shortDescription=Open an existing project
-open.parentMenuName=File
-open.icon=open.gif
-open.accelerator=control O
-open.enabled=true
-open.command=org.apache.tools.ant.gui.command.OpenCmd
-
-save.name=Save
-save.shortDescription=Save the current project
-save.parentMenuName=File
-save.icon=save.gif
-save.accelerator=control S
-save.command=org.apache.tools.ant.gui.command.SaveCmd
-save.enabled=false
-save.disableOn= \
-    org.apache.tools.ant.gui.event.ProjectClosedEvent, \
-    org.apache.tools.ant.gui.event.BuildStartedEvent
-save.enableOn= \
-    org.apache.tools.ant.gui.event.ProjectSelectedEvent, \
-    org.apache.tools.ant.gui.event.NewProjectEvent, \
-    org.apache.tools.ant.gui.event.BuildFinishedEvent
-
-saveas.name=Save As...
-saveas.shortDescription=Save to a specific file
-saveas.parentMenuName=File
-saveas.command=org.apache.tools.ant.gui.command.SaveAsCmd
-saveas.enabled=false
-saveas.disableOn= \
-    org.apache.tools.ant.gui.event.ProjectClosedEvent, \
-    org.apache.tools.ant.gui.event.BuildStartedEvent
-saveas.enableOn= \
-    org.apache.tools.ant.gui.event.ProjectSelectedEvent, \
-    org.apache.tools.ant.gui.event.NewProjectEvent, \
-    org.apache.tools.ant.gui.event.BuildFinishedEvent
-
-close.name=Close
-close.shortDescription=Close the current project
-close.parentMenuName=File
-close.command=org.apache.tools.ant.gui.command.CloseCmd
-close.enabled=false
-close.disableOn= \
-    org.apache.tools.ant.gui.event.ProjectClosedEvent, \
-    org.apache.tools.ant.gui.event.BuildStartedEvent
-close.enableOn= \
-    org.apache.tools.ant.gui.event.ProjectSelectedEvent, \
-    org.apache.tools.ant.gui.event.NewProjectEvent, \
-    org.apache.tools.ant.gui.event.BuildFinishedEvent
-
-exit.name=Exit
-exit.shortDescription=Quit the application
-exit.parentMenuName=File
-exit.separator=true
-exit.command=org.apache.tools.ant.gui.command.ExitCmd
-exit.enabled=true
-
-about.name=About...
-about.shortDescription=About this application
-about.parentMenuName=Help
-about.separator=true;
-about.enabled=true
-about.command=org.apache.tools.ant.gui.command.AboutCmd
-
-startBuild.name=Start Build
-startBuild.shortDescription=Start build of selected target
-startBuild.parentMenuName=Build
-startBuild.icon=start.gif
-startBuild.separator=true
-startBuild.accelerator=control B
-startBuild.command=org.apache.tools.ant.gui.command.BuildCmd
-startBuild.enabled=false
-startBuild.enableOn=\
-    org.apache.tools.ant.gui.event.ProjectSelectedEvent, \
-    org.apache.tools.ant.gui.event.NewProjectEvent, \
-    org.apache.tools.ant.gui.event.BuildFinishedEvent
-startBuild.disableOn=\
-    org.apache.tools.ant.gui.event.BuildStartedEvent, \
-    org.apache.tools.ant.gui.event.ProjectClosedEvent
-
-stopBuild.name=Stop Build
-stopBuild.shortDescription=Stop the current build
-stopBuild.parentMenuName=Build
-stopBuild.icon=stop.gif
-stopBuild.accelerator=control K
-stopBuild.enabled=false
-stopBuild.enableOn=\
-    org.apache.tools.ant.gui.event.BuildStartedEvent
-stopBuild.disableOn=\
-    org.apache.tools.ant.gui.event.BuildFinishedEvent
-
-newTarget.name=New Target
-newTarget.shortDescription=Create a new target
-newTarget.icon=new-target.gif
-newTarget.enabled=false
-newTarget.separator=true
-newTarget.command=org.apache.tools.ant.gui.command.NewTargetCmd
-newTarget.enableOn=\
-    org.apache.tools.ant.gui.event.ProjectSelectedEvent, \
-    org.apache.tools.ant.gui.event.NewProjectEvent
-newTarget.disableOn=\
-    org.apache.tools.ant.gui.event.TargetSelectionEvent, \
-    org.apache.tools.ant.gui.event.TaskSelectionEvent, \
-    org.apache.tools.ant.gui.event.PropertySelectionEvent, \
-    org.apache.tools.ant.gui.event.ProjectClosedEvent, \
-    org.apache.tools.ant.gui.event.NullSelectionEvent
-
-newTask.name=New Task
-newTask.shortDescription=Create a new task under the selected target
-newTask.icon=new-task.gif
-newTask.enabled=false
-newTask.command=org.apache.tools.ant.gui.command.NewTaskCmd
-newTask.enableOn=\
-    org.apache.tools.ant.gui.event.TargetSelectionEvent
-newTask.disableOn=\
-    org.apache.tools.ant.gui.event.ProjectClosedEvent, \
-    org.apache.tools.ant.gui.event.TaskSelectionEvent, \
-    org.apache.tools.ant.gui.event.PropertySelectionEvent, \
-    org.apache.tools.ant.gui.event.NullSelectionEvent
-
-newProperty.name=New Property
-newProperty.shortDescription=Create a new property under the selected element
-newProperty.icon=new-property.gif
-newProperty.command=org.apache.tools.ant.gui.command.NewPropertyCmd
-newProperty.enabled=false
-newProperty.enableOn=\
-    org.apache.tools.ant.gui.event.ProjectSelectedEvent, \
-    org.apache.tools.ant.gui.event.NewProjectEvent, \
-    org.apache.tools.ant.gui.event.TargetSelectionEvent, \
-    org.apache.tools.ant.gui.event.TaskSelectionEvent
-newProperty.disableOn=\
-    org.apache.tools.ant.gui.event.PropertySelectionEvent, \
-    org.apache.tools.ant.gui.event.ProjectClosedEvent, \
-    org.apache.tools.ant.gui.event.NullSelectionEvent
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/antidote.properties b/src/antidote/org/apache/tools/ant/gui/resources/antidote.properties
deleted file mode 100644
index 5dcd705..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/antidote.properties
+++ /dev/null
@@ -1,119 +0,0 @@
-# This is the general properties file for the Antidote application.
-
-#debug=true
-
-# The following four module properties configure those properties that
-# should be initialized and displayed by default by the GUI. If more
-# than one module is configured for a property (as indicated providing
-# class names as a comma delimited list), then each module will appear
-# in its own tab in a JTabbedPane.
-
-# Configure the modules that appear on the right of the UI.
-org.apache.tools.ant.gui.Antidote.right.modules=\
-	org.apache.tools.ant.gui.modules.edit.PropertyEditor
-
-# Configure the modules that appear on the left of the UI.
-org.apache.tools.ant.gui.Antidote.left.modules=\
-	org.apache.tools.ant.gui.modules.edit.ElementNavigator
-
-# Configure the modules that appear on the bottom of the UI.
-org.apache.tools.ant.gui.Antidote.bottom.modules=\
-	org.apache.tools.ant.gui.modules.console.BuildConsole
-
-# Configure the modules that appear on the top of the UI.
-org.apache.tools.ant.gui.Antidote.top.modules=\
-	org.apache.tools.ant.gui.modules.TargetMonitor
-
-org.apache.tools.ant.gui.modules.edit.PropertyEditor.name=Properties
-
-org.apache.tools.ant.gui.modules.edit.ElementNavigator.name=Project
-org.apache.tools.ant.gui.modules.edit.ElementNavigator.popupActions=\
-    newTarget, newTask, newProperty
-
-org.apache.tools.ant.gui.modules.TargetMonitor.name=Selected Target(s)
-org.apache.tools.ant.gui.modules.TargetMonitor.defText=[none]
-
-org.apache.tools.ant.gui.modules.console.BuildConsole.name=Console
-org.apache.tools.ant.gui.modules.console.BuildConsole.logLevel=\
-    Log message level:
-
-org.apache.tools.ant.gui.core.XMLFileFilter.description=XML Files
-
-org.apache.tools.ant.gui.core.ProjectSelectionMenu.name=Projects
-
-org.apache.tools.ant.gui.command.LoadFileCmd.noFile=\
-    The file "{0}" was not found.
-org.apache.tools.ant.gui.command.LoadFileCmd.loadError=\
-    The file "{0}" could not be loaded.
-org.apache.tools.ant.gui.command.DisplayErrorCmd.title=Antidote Error...
-org.apache.tools.ant.gui.command.DisplayErrorCmd.expand=Details >>
-
-org.apache.tools.ant.gui.command.SaveCmd.saveError=Could not save to "{0}".
-org.apache.tools.ant.gui.command.SaveCmd.noProject=No project to save.
-org.apache.tools.ant.gui.command.SaveCmd.title=Overwrite?
-org.apache.tools.ant.gui.command.SaveCmd.overwrite=Overwrite file "{0}"?
-
-# Properties file for BeanInfo strings
-
-org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.beanName=Target
-org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.beanDescription=\
-    An executable target in the build.
-org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.name=Name
-org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.description=Description
-org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.depends=Dependencies
-org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.if=if Clause
-org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.unless=unless Clause
-org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.xmlString=XML Code
-org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.icon=target.gif
-
-org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.beanName=Project
-org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.beanDescription=\
-    The top level project in the build definition.
-org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.name=Name
-org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.description=Description
-org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.basedir=Base Directory
-org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.default=Default Target
-org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.icon=project.gif
-
-org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.beanName=Property
-org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.beanDescription=\
-    A scoped property
-org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.name=Name
-org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.value=Value
-org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.file=File
-org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.icon=property.gif
-
-org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.beanName=Task
-org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.beanDescription=\
-    A scoped property
-org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.taskType=Type
-org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.namedValues=Attributes
-org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.xmlString=XML Code
-org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.icon=task.gif
-
-
-org.apache.tools.ant.gui.command.NewProjectCmd.defName=New Project
-org.apache.tools.ant.gui.command.NewTargetCmd.defName=New Target
-
-#----------------------------------------------------------------------------
-# About Description (NB: this is only a temporary approach).
-#----------------------------------------------------------------------------
-
-org.apache.tools.ant.gui.About.title=About
-org.apache.tools.ant.gui.About.ok=OK
-org.apache.tools.ant.gui.About.message=\
-	<html><h1>Antidote</h1> \
-	<p>Copyright &copy; 2000 The Apache Software Foundation. <br>\
-    All rights reserved.</p><br> \
-    <p>Visit http://jakarta.apache.org/ant for more information.</p><br> \
-    <table> \
-	<tr><td align="right"><b>Version</b>:</td><td>{0}</td></tr> \
-	<tr><td align="right"><b>Date</b>:</td><td>{1}</td></tr> \
-    </table> \
-	<hr> \
-    <p>Icons Copyright &copy; 1998 Dean S. Jones (deansjones@hotmail.com)<br> \
-    http://jfa.javalobby.org/projects/icons</p> \
-	</html>
-
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/args.properties b/src/antidote/org/apache/tools/ant/gui/resources/args.properties
deleted file mode 100644
index 15297f9..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/args.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# Property file for the command-line strings used by the Args class.
-
-usage=usage: antidote [-help] [-wizzard] [-debug] [build-file]\n\
-\nReport bugs to http://jakarta.apache.org/site/bugs.html\n\
-Copyright (C) 2001 Apache Software Foundation. All rights reserved.
-
-invalidArg=Unrecognized argument: "{0}"
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizard.properties b/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizard.properties
deleted file mode 100644
index 7d5842e..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizard.properties
+++ /dev/null
@@ -1,88 +0,0 @@
-# Property file for the wizard used to create a new build file.
-
-###########################################################
-# Define required properties for wizard.
-###########################################################
-next=Next >>
-back=<< Back
-cancel=Cancel
-finish=Finish
-progress=Progress
-help=Help
-
-###########################################################
-# Define the steps the comprise the wizard.
-###########################################################
-steps=start, type, setup, compile, jar, javadoc, finish
-
-###########################################################
-# Step: start
-###########################################################
-start.editor=org.apache.tools.ant.gui.wizard.InstructionStep
-start.title=Create new build file
-start.description=This wizard will step you through the process of creating \
-a basic Ant build file for your project.
-
-start.instructions=Welcome to the Ant build file wizard!\n\
-You will be asked a series of questions about the project you wish to create\
-and the types of build options you want included.\n\n\
-Click "Next >>" to proceed.
-
-###########################################################
-# Step: type
-###########################################################
-
-type.editor=org.apache.tools.ant.gui.wizard.build.ProjectTypeStep
-type.title=Select project type
-type.description=Select "New" if you want the buile environment \
-directory structure defined and created for you \
-in addition to the build file. Select "Import" if you want \
-a build file created for an existing project.
-
-type.isNewLabel=New project
-type.isImportLabel=Import existing project
-
-###########################################################
-# Step: setup
-###########################################################
-
-setup.editor=org.apache.tools.ant.gui.wizard.build.ProjectSetupStep
-setup.title=Setup project
-setup.description=Give the project a name, and select the features you \
-wish to be included in the project file, such as JavaDoc and JAR creation.
-setup.fileLabel=Build File:
-setup.nameLabel=Project Name:
-setup.optionsLabel=Options
-setup.compile.label=Compiled Java code (.class files)
-setup.jar.label=Executable JAR file
-setup.javadoc.label=JavaDoc
-
-###########################################################
-# Step: compile
-###########################################################
-compile.title=Setup Java source compilation
-compile.description=Need help?
-compile.editor=org.apache.tools.ant.gui.wizard.build.CompileStep
-
-###########################################################
-# Step: jar
-###########################################################
-jar.title=Setup executable JAR creation
-jar.description=Need help?
-jar.editor=org.apache.tools.ant.gui.wizard.build.JARStep
-
-###########################################################
-# Step: javadoc
-###########################################################
-javadoc.title=Setup JavaDoc creation
-javadoc.description=Need help?
-javadoc.editor=org.apache.tools.ant.gui.wizard.build.JavaDocStep
-
-###########################################################
-# Step: finish
-###########################################################
-finish.editor=org.apache.tools.ant.gui.wizard.build.FinishStep
-finish.title=Complete build file
-finish.description=Click "Finish" to save your build file definition.
-finish.instructions=You are done!\n\nClick "Finish" to complete your new\
-build file.
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/default.gif b/src/antidote/org/apache/tools/ant/gui/resources/default.gif
deleted file mode 100644
index 46261fc..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/default.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/icon-small.gif b/src/antidote/org/apache/tools/ant/gui/resources/icon-small.gif
deleted file mode 100644
index 72878f3..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/icon-small.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/new-project.gif b/src/antidote/org/apache/tools/ant/gui/resources/new-project.gif
deleted file mode 100644
index 9fadc87..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/new-project.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/new-property.gif b/src/antidote/org/apache/tools/ant/gui/resources/new-property.gif
deleted file mode 100644
index 6e82de7..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/new-property.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/new-target.gif b/src/antidote/org/apache/tools/ant/gui/resources/new-target.gif
deleted file mode 100644
index 107fa6a..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/new-target.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/new-task.gif b/src/antidote/org/apache/tools/ant/gui/resources/new-task.gif
deleted file mode 100644
index 4309cf3..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/new-task.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/new.gif b/src/antidote/org/apache/tools/ant/gui/resources/new.gif
deleted file mode 100644
index 462ae4c..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/new.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/open.gif b/src/antidote/org/apache/tools/ant/gui/resources/open.gif
deleted file mode 100644
index 3bd72be..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/open.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/project.gif b/src/antidote/org/apache/tools/ant/gui/resources/project.gif
deleted file mode 100644
index 3a2bed6..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/project.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/property.gif b/src/antidote/org/apache/tools/ant/gui/resources/property.gif
deleted file mode 100644
index 08058a8..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/property.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/save.gif b/src/antidote/org/apache/tools/ant/gui/resources/save.gif
deleted file mode 100644
index fc7fc05..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/save.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/start.gif b/src/antidote/org/apache/tools/ant/gui/resources/start.gif
deleted file mode 100644
index 0728615..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/start.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/stop.gif b/src/antidote/org/apache/tools/ant/gui/resources/stop.gif
deleted file mode 100644
index 063dc3c..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/stop.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/target.gif b/src/antidote/org/apache/tools/ant/gui/resources/target.gif
deleted file mode 100644
index 3488dd3..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/target.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/task.gif b/src/antidote/org/apache/tools/ant/gui/resources/task.gif
deleted file mode 100644
index 8c09186..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/task.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/resources/unknown.gif b/src/antidote/org/apache/tools/ant/gui/resources/unknown.gif
deleted file mode 100644
index cd94e5f..0000000
--- a/src/antidote/org/apache/tools/ant/gui/resources/unknown.gif
+++ /dev/null
Binary files differ
diff --git a/src/antidote/org/apache/tools/ant/gui/util/ChangeLookAndFeel.java b/src/antidote/org/apache/tools/ant/gui/util/ChangeLookAndFeel.java
deleted file mode 100644
index 0506e8e..0000000
--- a/src/antidote/org/apache/tools/ant/gui/util/ChangeLookAndFeel.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.gui.util;
-
-import org.apache.tools.ant.gui.core.AppContext;
-import org.apache.tools.ant.gui.event.ErrorEvent;
-import org.apache.tools.ant.gui.util.WindowUtils;
-
-import javax.swing.*;
-import java.io.IOException;
-import java.util.*;
-import java.awt.*;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-
-/**
- * Dialog for changing the current Look and Feel
- *
- * @version $Revision$
- * @author Erik Meade
- */
-public class ChangeLookAndFeel extends JDialog {
-
-	private AppContext _context;
-
-	private JList lookAndFeels;
-	/**
-	 * Standard ctor.
-	 *
-	 * @param context Application context.
-	 */
-	public ChangeLookAndFeel(AppContext context) {
-		super(context.getParentFrame(), true);
-		_context = context;
-		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
-
-		setTitle(context.getResources().getString(
-			getClass(), "title"));
-
-		// Add the OK button.
-		JButton ok = new JButton(
-			context.getResources().getString(getClass(), "ok"));
-		ok.addActionListener(new ActionHandler());
-		JPanel p = new JPanel();
-		p.add(ok);
-		Container contentPane = getContentPane();
-        getRootPane().setDefaultButton(ok);
-        p.setPreferredSize(new Dimension(150, p.getPreferredSize().height));
-		contentPane.add(BorderLayout.SOUTH, p);
-
-		// Add the list of look and feels
-		p = new JPanel(new BorderLayout());
-        p.setBorder(BorderFactory.createTitledBorder(
-            context.getResources().getString(getClass(), "border")));
-
-		UIManager.LookAndFeelInfo[] lookAndFeelInfos = 
-            UIManager.getInstalledLookAndFeels();
-		String[] lookAndFeelNames = new String[lookAndFeelInfos.length];
-		for (int i = 0; i < lookAndFeelInfos.length; i++) {
-			lookAndFeelNames[i] = lookAndFeelInfos[i].getName();
-		}
-
-		lookAndFeels = new JList(lookAndFeelNames);
-		lookAndFeels.setSelectedValue(
-            UIManager.getLookAndFeel().getName(), true);
-		p.add(lookAndFeels);
-		contentPane.add(BorderLayout.CENTER, p);
-
-		// Just go ahead and show it...
-		pack();
-		WindowUtils.centerWindow(context.getParentFrame(), this);
-		setVisible(true);
-	}
-
-	/** Handles press of the OK button. */
-	private class ActionHandler implements ActionListener {
-		public void actionPerformed(ActionEvent e) {
-			try {
-				UIManager.setLookAndFeel(getLookAndFeelClass(
-                    (String)lookAndFeels.getSelectedValue()));
-				SwingUtilities.updateComponentTreeUI(
-                    _context.getParentFrame());
-			} catch (Exception ex) {
-                _context.getEventBus().postEvent(
-                    new ErrorEvent(
-                        _context, _context.getResources().getString(
-                            ChangeLookAndFeel.class, "error") + ex));
-			}
-			WindowUtils.sendCloseEvent(ChangeLookAndFeel.this);
-		}
-	}
-
-	/** 
-	 * Get the Look and Feel class for the given name.
-	 * 
-	 * @param lookAndFeelName Name of the look and feel.
-	 * @return Class name to load.
-	 */
-	private String getLookAndFeelClass(String lookAndFeelName) {
-		UIManager.LookAndFeelInfo[] lookAndFeelInfos = 
-            UIManager.getInstalledLookAndFeels();
-		for (int i = 0; i < lookAndFeelInfos.length; i++) {
-			if (lookAndFeelInfos[i].getName().equals(lookAndFeelName))
-				return lookAndFeelInfos[i].getClassName();
-		}
-		return null;
-	}
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/util/LabelFieldGBC.java b/src/antidote/org/apache/tools/ant/gui/util/LabelFieldGBC.java
deleted file mode 100644
index 4a34abb..0000000
--- a/src/antidote/org/apache/tools/ant/gui/util/LabelFieldGBC.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.util;
-
-import java.awt.GridBagConstraints;
-import java.awt.Insets;
-import java.awt.Container;
-import javax.swing.JLabel;
-
-/**
- * Convenience specialization of the GridBagConstraints for laying
- * out label:field pairs.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class LabelFieldGBC extends GridBagConstraints {
-
-	/** 
-	 * Default ctor. Sets up the default settings.
-	 * 
-	 */
-	public LabelFieldGBC() {
-		// Add small abount of padding.
-		insets = new Insets(1,3,1,3);
-		// All vertical layout is relative
-		gridy = RELATIVE;
-		// Grid dimensions are equal (one label field pair per row).
-		gridheight = 1;
-		gridwidth = 1;
-	}
-
-	/** 
-	 * Set up constraint values for placing a label before a field.
-	 * 
-	 * @return Constraints for a label.
-	 */
-	public LabelFieldGBC forLabel() {
-		// Labels should only take up as much room as needed. 
-		fill = NONE;
-		// Set location to left side.
-		gridx = 0;
-		// Move it over to be as close to field as possible.
-		anchor = NORTHEAST;
-		// Don't take up any extra.
-		weightx = 0.0;
-		return this;
-	}
-
-	/** 
-	 * Provide the same setup as forLabel(), but allow it to expand vertically
-	 * to use up any extra space there may be.
-	 * 
-	 * @return Constraints for label that sucks up vertical space.
-	 */
-	public LabelFieldGBC forLastLabel() {
-		forLabel();
-		fill = VERTICAL;
-		weighty = 1.0;
-		return this;
-	}
-
-	/** 
-	 * Set up constraint values for placing a field after a label.
-	 * 
-	 * @return Constraints for a field.
-	 */
-	public LabelFieldGBC forField() {
-		// The field should take up as much space as is necessary.
-		fill = HORIZONTAL;
-		// Set the location to the right side.
-		gridx = 1;
-		// Center the field in the space available (a noop in this case).
-		anchor = CENTER;
-		// Take up any extra space.
-		weightx = 1.0;
-		return this;
-	}
-
-	/** 
-	 * Provide the same setup as forField(), but allow it to expand vertically
-	 *
-	 * 
-	 * @return Constraintes for field that sucks up vertical space.
-	 */
-	public LabelFieldGBC forLastField() {
-		forField();
-		fill = BOTH;
-		weighty = 1.0;
-		return this;
-	}
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/util/StackFrame.java b/src/antidote/org/apache/tools/ant/gui/util/StackFrame.java
deleted file mode 100644
index 00607c8..0000000
--- a/src/antidote/org/apache/tools/ant/gui/util/StackFrame.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.util;
-
-import java.io.StringWriter;
-import java.io.PrintWriter;
-import java.util.StringTokenizer;
-
-/*
- * Class for parsing the stack frame information from a Throwable's stack frame
- * dump. Probably only suitable for debugging, as it depends on the specific 
- * output format of the stack dump, which could change with JVM releases.
- *
- * @version $Revision$ 
- * @author Simeon Fitch
- */
-public class StackFrame {
-	private String _method = null;
-	private int _line = -1;
-	private String _clazz = null;
-
-	/** 
-	 * Default ctor. Gets the stack frame info for the calling method.
-	 * 
-	 */
-	public StackFrame() {
-		this(1);
-	}
-
-    public StackFrame(int frame) {
-		if(frame < 0) {
-			throw new IllegalArgumentException("Frame number must be <= 0");
-		}
-		// Add a stack frame for this method and for 
-		// the fillInStackTrace method.
-		frame += 2;
-
-		Throwable t = new Throwable();
-		t.fillInStackTrace();
-		String text = toString(t);
-
-		// Extract the line that has the stack frame info we want on it.
-		StringTokenizer tok = new StringTokenizer(text, "\n");
-		// Ignore the first line as it just has the exception type on it.
-		tok.nextToken();
-		String hit = null;
-		while(tok.hasMoreTokens() && frame-- >= 0) {
-			hit = tok.nextToken();
-		}
-
-		// This should always pass. '4' is the number of characters to get
-		// to the start of the class name ("\tat ").
-		if(hit != null && hit.length() > 4) {
-			int idx = hit.indexOf('(');
-			if(idx > 4) {
-				String before = hit.substring(4, idx);
-				String after = hit.substring(idx + 1, hit.length() - 1);
-
-				// Extract the method name and class name.
-				idx = before.lastIndexOf('.');
-				if(idx >= 0) {
-					_clazz = before.substring(0, idx);
-					_method = before.substring(
-						idx + 1, before.length());
-				}
-				idx = after.lastIndexOf(':');
-				// Extract the line number. If it fails in any way
-				// then just leave the value at -1 which is a valid value.
-				try {
-					_line = Integer.parseInt(
-						after.substring(idx + 1, after.length()));
-				}
-				catch(Exception ex) {
-                    // Ignore.
-                }
-			}
-		}
-    }
-
-	/** 
-	 * Utility method for converting a throwable object to a string.
-	 * 
-	 * @param t Throwable to convert.
-	 * @return String representation.
-	 */
-	public static String toString(Throwable t) {
-		StringWriter writer = new StringWriter();
-		t.printStackTrace(new PrintWriter(writer));
-		return writer.toString();
-	}
-
-	/** 
-	 * Get the stack frame class.
-	 * 
-	 * @return 
-	 */
-	public String getClassName() {
-		return _clazz;
-	}
-
-	/** 
-	 * Get the name of the stack frame method 
-	 * 
-	 * @return 
-	 */
-	public String getMethodName() {
-		return _method;
-	}
-
-	/** 
-	 * Get the line number for the frame call.
-	 * 
-	 * @return Line number, or -1 if unknown.
-	 */
-	public int getLineNumber() {
-		return _line;
-	}
-
-	public String toString() {
-		return getClassName() + "." + getMethodName() + "(line " + 
-			(getLineNumber() >= 0 ? 
-			 String.valueOf(getLineNumber()) : "unknown") + ")";
-	}
-
-	/** 
-	 * Test code.
-	 * 
-	 * @param args Ignored.
-	 */
-/*
-	public static void main(String[] args) {
-		//Test class for generating a bunch of stack frames.
-		class Test {
-			public Test() {
-				System.out.println("Main method: " + new StackFrame(2));
-				recurse(20);
-			}
-
-			private void recurse(int val) {
-				if(val == 0) {
-					System.out.println("Recurse method: " + new StackFrame());
-				}
-				else if(val % 2 == 0) {
-					recurse(val - 1);
-				}
-				else {
-					recurse(val - 1);
-				}
-			}
-		}
-
-		new Test();
-	}
-*/
-}
-
-
diff --git a/src/antidote/org/apache/tools/ant/gui/util/WindowUtils.java b/src/antidote/org/apache/tools/ant/gui/util/WindowUtils.java
deleted file mode 100644
index 446e23f..0000000
--- a/src/antidote/org/apache/tools/ant/gui/util/WindowUtils.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.util;
-
-import java.awt.Window;
-import java.awt.Rectangle;
-import java.awt.Dimension;
-import java.awt.event.WindowEvent;
-
-/**
- * Function container for various window operations.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class WindowUtils {
-	/** 
-	 * Default ctor.
-	 * 
-	 */
-	private WindowUtils() {}
-
-	/** 
-	 * Send a close event to the given window.
-	 * 
-	 * @param window Window to send close event to.
-	 */
-	public static void sendCloseEvent(Window window) {
-        window.dispatchEvent(
-            new WindowEvent(window, WindowEvent.WINDOW_CLOSING));
-	}
-
-	/** 
-	 * Center the given child window with repsect to the parent window.
-	 * 
-	 * @param parent Window to base centering on.
-	 * @param child Window to center.
-	 */
-	public static void centerWindow(Window parent, Window child) {
-		Rectangle bounds = parent.getBounds();
-		Dimension size = child.getSize();
-		child.setLocation(bounds.x + (bounds.width - size.width)/2,
-						  bounds.y + (bounds.height - size.height)/2);
-	}
-
-	/** 
-	 * Center the given child window with repsect to the root.
-	 * 
-	 * @param child Window to center.
-	 */
-	public static void centerWindow(Window child) {
-        Dimension rsize = child.getToolkit().getScreenSize();
-        Dimension size = child.getSize();
-        child.setLocation((rsize.width - size.width)/2,
-                          (rsize.height - size.height)/2);
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/util/XMLHelper.java b/src/antidote/org/apache/tools/ant/gui/util/XMLHelper.java
deleted file mode 100644
index 277a64f..0000000
--- a/src/antidote/org/apache/tools/ant/gui/util/XMLHelper.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.util;
-
-/**
- * Placeholder for XML related duties.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class XMLHelper {
-    public static void init() {
-        try {
-            Class.forName("javax.xml.parsers.SAXParserFactory");
-        } 
-        catch(Exception ex) {
-            System.err.println("No JAXP compliant XML parser found. " +
-                               "See http://java.sun.com/xml for the\n" +
-                               "reference implementation.");
-            ex.printStackTrace();
-        } 
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/version.txt b/src/antidote/org/apache/tools/ant/gui/version.txt
deleted file mode 100644
index b6b2f8d..0000000
--- a/src/antidote/org/apache/tools/ant/gui/version.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-VERSION=@VERSION@
-DATE=@DATE@
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/AbstractWizardStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/AbstractWizardStep.java
deleted file mode 100644
index f5160ba..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/AbstractWizardStep.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-import org.apache.tools.ant.gui.core.ResourceManager;
-import javax.swing.JComponent;
-
-
-/**
- * Abstract class implementing the basic support for the WizardStep interface.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public abstract class  AbstractWizardStep extends JComponent 
-    implements WizardStep {
-    
-    /** Flag to indicate whether or not init has been called. */
-    private boolean _initialized = false;
-    /** Resources. */
-    private ResourceManager _resources = null;
-    /** Step id. */
-    private String _id = null;
-    /** Step display title. */
-    private String _title = null;
-    /** Description of the step. */
-    private String _description = null;
-    /** Data model. */
-    private WizardData _model = null;
-
-    /** 
-     * Called when the instance should initialize its contents, e.g.
-     * create the widgets, etc. When this is called then all
-     * data values, including the ResourceManager, have been setup.
-     * 
-     */
-    protected abstract void init();
-
-    /** 
-     * Set the step's resources.
-     * 
-     */
-    public void setResources(ResourceManager resources) {
-        _resources = resources;
-    }
-
-    /** 
-     * Get the step's resources.
-     * 
-     * @return Resources.
-     */
-    protected ResourceManager getResources() {
-        return _resources;
-    }
-
-    /** 
-     * Set the step id. The id must be unique among steps within the wizard.
-     * 
-     * @param id Wizard id.
-     */
-    public void setID(String id) {
-        _id = id;
-    }
-
-    /** 
-     * Get the step id.
-     * 
-     * @return Step id.
-     */
-    public String getID() {
-        return _id;
-    }
-
-    /** 
-     * Set the step title.
-     * 
-     * @param title Step title.
-     */
-    public void setTitle(String title) {
-        _title = title;
-    }
-
-    /** 
-     * Get the step title.
-     * 
-     * @return Step title.
-     */
-    public String getTitle() {
-        return _title;
-    }
-
-    /** 
-     * Set the step description.
-     * 
-     * @param desc Step description.
-     */
-    public void setDescription(String desc) {
-        _description = desc;
-    }
-
-    /** 
-     * Get the step description.
-     * 
-     * @return Step description.
-     */
-    public String getDescription() {
-        return _description;
-    }
-
-
-    /** 
-     * Set the data model object that the step will edit. It is assumed 
-     * that all steps initialized within a single wizard agree on the
-     * data model type.
-     * 
-     * @param model Data model to edit.
-     */
-    public void setDataModel(WizardData model) {
-        _model = model;
-    }
-
-    /** 
-     * Get the data model that should be passeed on to the next step.
-     * 
-     * @return Current data model.
-     */
-    public WizardData getDataModel() {
-        return _model;
-    }
-
-    /** 
-     * Get the component that should be displayed to the user for
-     * editing the model. This component should <b>not</b> include the
-     * title and text display, which is handled by the wizard container.
-     * 
-     * @return Editing component.
-     */
-    public JComponent getEditorComponent() {
-        if(!_initialized) {
-            init();
-            _initialized = true;
-        }
-
-        return this;
-    }
-
-    /** 
-     * Get the id of the next step.
-     * 
-     * @return ID of next step.
-     */
-    public String getNext() {
-        return getDataModel().getStateMachine().getNext(
-            this, getDataModel());
-    }
-
-    /** 
-     * Get the id of the previous step.
-     * 
-     * @return Previous step.
-     */
-    public String getPrevious() {
-        return getDataModel().getStateMachine().getPrevious(
-            this, getDataModel());
-    }
-
-    /** 
-     * Get a string representation of this.
-     * 
-     * @return String representation.
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer(getClass().getName());
-        buf.append("[id=");
-        buf.append(getID());
-        buf.append("]");
-        return buf.toString();
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/ButtonNavigator.java b/src/antidote/org/apache/tools/ant/gui/wizard/ButtonNavigator.java
deleted file mode 100644
index 2780aed..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/ButtonNavigator.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-import org.apache.tools.ant.gui.core.ResourceManager;
-import javax.swing.*;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-import java.awt.FlowLayout;
-import java.util.*;
-
-class ButtonNavigator extends JComponent implements WizardNavigator {
-    public static final String NEXT = "next";
-    public static final String BACK = "back";
-    public static final String CANCEL = "cancel";
-    public static final String FINISH = "finish";
-
-    /** Resources. */
-    private ResourceManager _resources = null;
-    /** Event listeners. */
-    private List _listeners = new ArrayList();
-
-    /* Buttons. */
-    private JButton _next = null;
-    private JButton _back = null;
-    private JButton _cancel = null;
-    private JButton _finish = null;
-
-    /** Action handler. */
-    private ActionHandler _handler = new ActionHandler();
-
-    public ButtonNavigator(ResourceManager resources) {
-        _resources = resources;
-        setLayout(new FlowLayout(FlowLayout.RIGHT));
-        
-        _back = new JButton(_resources.getString(BACK));
-        _next = new JButton(_resources.getString(NEXT));
-        _finish = new JButton(_resources.getString(FINISH));
-        _cancel = new JButton(_resources.getString(CANCEL));
-
-        _back.setActionCommand(BACK);
-        _next.setActionCommand(NEXT);
-        _finish.setActionCommand(FINISH);
-        _cancel.setActionCommand(CANCEL);
-
-        _back.addActionListener(_handler);
-        _next.addActionListener(_handler);
-        _finish.addActionListener(_handler);
-        _cancel.addActionListener(_handler);
-
-        _back.setEnabled(false);
-        _next.setEnabled(false);
-        _finish.setEnabled(false);
-        _cancel.setEnabled(true);
-
-        add(_back);
-        add(_next);
-        add(_finish);
-        add(_cancel);
-    }
-
-    /** 
-     * Add a navigator listener. 
-     * 
-     * @param l Listener to add.
-     */
-    public void addNavigatorListener(NavigatorListener l) {
-        _listeners.add(l);
-    }
-
-    /** 
-     * Remove a navigator listener.
-     * 
-     * @param l Listener to remove.
-     */
-    public void removeNavigatorListener(NavigatorListener l) {
-        _listeners.remove(l);
-    }
-
-    /** 
-     * Set the enabled state of the back button.
-     * 
-     * @param state True for enabled, false for disabled.
-     */
-    public void setBackEnabled(boolean state) {
-        _back.setEnabled(state);
-    }
-    /** 
-     * Set the enabled state of the next button.
-     * 
-     * @param state True for enabled, false for disabled.
-     */
-    public void setNextEnabled(boolean state) {
-        _next.setEnabled(state);
-    }
-    /** 
-     * Set the enabled state of the finished button.
-     * 
-     * @param state True for enabled, false for disabled.
-     */
-    public void setFinishEnabled(boolean state) {
-        _finish.setEnabled(state);
-    }
-
-    /** Handler of the button presses. */
-    private class ActionHandler implements ActionListener {
-        public void actionPerformed(ActionEvent e) {
-            Object source = e.getSource();
-
-            // Predetermine which method to call so that 
-            // we don't traverse if statements for each iteration.
-            int idx = -1;
-            if(source == _next) {
-                idx = 0;
-            }
-            else if(source == _back) {
-                idx = 1;
-            }
-            else if(source == _cancel) {
-                idx = 2;
-            }
-            else if(source == _finish) {
-                idx = 3;
-            }
-
-            Iterator it = _listeners.iterator();
-            while(it.hasNext()) {
-                NavigatorListener l = (NavigatorListener) it.next();
-                switch(idx) {
-                  case 0:
-                      l.nextStep();
-                      break;
-                  case 1:
-                      l.backStep();
-                      break;
-                  case 2:
-                      l.cancel();
-                      break;
-                  case 3:
-                      l.finish();
-                      break;
-                }
-
-            }
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/DefaultStateMachine.java b/src/antidote/org/apache/tools/ant/gui/wizard/DefaultStateMachine.java
deleted file mode 100644
index 317a7a9..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/DefaultStateMachine.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-import org.apache.tools.ant.gui.core.ResourceManager;
-import java.util.*;
-
-/**
- * A simple state machine based on the defined ordering of steps
- * in the resources.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class DefaultStateMachine implements StateMachine {
-
-    /** 
-     * Get the list of step IDs defined in the resources as a list.
-     * 
-     * @param data Current wizard state.
-     * @return List of step IDs
-     */
-    protected List getStepList(WizardData data) {
-        return Arrays.asList(data.getResources().getStringArray("steps"));
-    }
-
-    /** 
-     * Get the next step.
-     * 
-     * @param curr The current step.
-     * @param data The current state of the wizard.
-     * @return The ID of next step, or null if there currently isn't one.
-     */
-    public String getNext(WizardStep curr, WizardData data) {
-        List steps = getStepList(data);
-        int nextIndex = steps.indexOf(curr.getID()) + 1;
-        if(nextIndex > 0 && nextIndex < steps.size()) {
-            return (String) steps.get(nextIndex);
-        }
-        return null;
-    }
-
-    /** 
-     * Get the previous step.
-     * 
-     * @param curr The current step.
-     * @param data The current state of the wizard.
-     * @return The ID of previous step, or null if there currently isn't one.
-     */
-    public String getPrevious(WizardStep curr, WizardData data) {
-        List steps = getStepList(data);
-        int nextIndex = steps.indexOf(curr.getID()) - 1;
-        if(nextIndex > 0 && nextIndex < steps.size()) {
-            return (String) steps.get(nextIndex);
-        }
-        return null;
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/InstructionStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/InstructionStep.java
deleted file mode 100644
index 65630e1..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/InstructionStep.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-import javax.swing.*;
-import java.awt.BorderLayout;
-import java.awt.Font;
-import java.awt.Insets;
-
-/**
- * Wizard step whose only purpose is to display some text.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class InstructionStep extends AbstractWizardStep {
-
-    /** 
-     * Initialize the contents of the container.
-     * 
-     */
-    protected void init() {
-        setLayout(new BorderLayout());
-        String msg = getResources().getString(getID() + ".instructions");
-
-        JTextArea text = new JTextArea(msg);
-        text.setMargin(new Insets(30, 20, 5, 5));
-        text.setOpaque(false);
-        text.setFont(new Font("Serif", Font.PLAIN, 18));
-        text.setEditable(false);
-        text.setLineWrap(true);
-        text.setWrapStyleWord(true);
-        add(text);
-    }
-
-    /** 
-     * Called when the step should refresh its display based on the 
-     * current model setting.
-     * 
-     */
-    public void updateDisplay() {
-        // NOOP
-    }
-    /** 
-     * Called when the step should update the data model based on the
-     * settings of its widgets.
-     * 
-     */
-    public void updateDataModel() {
-        // NOOP
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/NavigatorListener.java b/src/antidote/org/apache/tools/ant/gui/wizard/NavigatorListener.java
deleted file mode 100644
index 9837f8d..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/NavigatorListener.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-
-/**
- * Interface for classes interested in events from the WizardNavigator.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public interface NavigatorListener {
-    /** 
-     * Called when the wizard should show the next step.
-     * 
-     */
-    void nextStep();
-    /** 
-     * Called when the wizard should show the previous step.
-     * 
-     */
-    void backStep();
-    /** 
-     * Called when the wizard should show the step with the given id.
-     * 
-     * @param stepID ID of step to show.
-     */
-    void gotoStep(String stepID);
-    /** 
-     * Called when the wizard activity shold be cancelled.
-     * 
-     */
-    void cancel();
-    /** 
-     * Called when the wizard is finished.
-     * 
-     */
-    void finish();
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/StateMachine.java b/src/antidote/org/apache/tools/ant/gui/wizard/StateMachine.java
deleted file mode 100644
index 3ea92c8..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/StateMachine.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-
-/**
- * Interface for the wizard state machine, responsible for determining the
- * next step in the wizard.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public interface StateMachine {
-
-    /** 
-     * Get the next step.
-     * 
-     * @param curr The current step.
-     * @param data The current state of the wizard.
-     * @return The next step, or null if there currently isn't one.
-     */
-    String getNext(WizardStep curr, WizardData data);
-
-    /** 
-     * Get the previous step.
-     * 
-     * @param curr The current step.
-     * @param data The current state of the wizard.
-     * @return The previous step, or null if there currently isn't one.
-     */
-    String getPrevious(WizardStep curr, WizardData data);
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/Wizard.java b/src/antidote/org/apache/tools/ant/gui/wizard/Wizard.java
deleted file mode 100644
index a184241..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/Wizard.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-import org.apache.tools.ant.gui.core.ResourceManager;
-
-import javax.swing.*;
-import javax.swing.border.TitledBorder;
-import java.awt.BorderLayout;
-import java.awt.CardLayout;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.Insets;
-import java.util.*;
-
-/**
- * Top level container and controller for wizard-type GUI.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class Wizard extends JComponent {
-    /** The data model to pass on to each step. */
-    private WizardData _data = null;
-    /** Container for the step editors. */
-    private JPanel _stepContainer = null;
-    /** Layout manager for all the step panels. */
-    private CardLayout _layout = null;
-    /** Set initialized steps. */
-    private Map _steps = new HashMap();
-    /** Steps saved in a list to preserve ordering. */
-    private List _stepOrdering = new ArrayList();
-    /** Description text. XXX should probably change to some other widget. */
-    private JTextArea _description = null;
-    /** Progress meter. */
-    private JProgressBar _progress = null;
-    /** Widget for navigating through steps. */
-    private WizardNavigator _nav = null;
-    /** The current Wizard step. */
-    private WizardStep _curr = null;
-    /** The set of wizard listeners. */
-    private List _listeners = new ArrayList(1);
-
-    /** 
-     * Standard ctor.
-     * 
-     * @param data Data for the wizard.
-     */
-    public Wizard(WizardData data) {
-        setLayout(new BorderLayout());
-        _data = data;
-
-        _progress = new JProgressBar();
-        _progress.setBorder(BorderFactory.createTitledBorder(
-            _data.getResources().getString("progress")));
-        _progress.setStringPainted(true);
-        add(_progress, BorderLayout.NORTH);
-
-        _description = new JTextArea();
-        _description.setMargin(new Insets(5, 5, 5, 5));
-        _description.setPreferredSize(new Dimension(100, 100));
-        _description.setOpaque(true);
-        _description.setFont(new Font("Serif", Font.PLAIN, 12));
-        _description.setEditable(false);
-        _description.setLineWrap(true);
-        _description.setWrapStyleWord(true);
-
-        JScrollPane scroller = new JScrollPane(
-            _description, 
-            JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
-            JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
-
-        scroller.setBorder(BorderFactory.createTitledBorder(
-            _data.getResources().getString("help")));
-        add(scroller, BorderLayout.WEST);
-
-        _stepContainer = new JPanel(_layout = new CardLayout());
-        _stepContainer.setBorder(BorderFactory.createEtchedBorder());
-        _stepContainer.setPreferredSize(new Dimension(400, 400));
-
-
-        add(_stepContainer, BorderLayout.CENTER);
-
-        _nav = new ButtonNavigator(_data.getResources());
-        _nav.addNavigatorListener(new NavHandler());
-        ((ButtonNavigator)_nav).setBorder(BorderFactory.createEtchedBorder());
-        add((ButtonNavigator)_nav, BorderLayout.SOUTH);
-
-        String[] steps = _data.getResources().getStringArray("steps");
-        _progress.setMaximum(steps.length - 1);
-        try {
-            for(int i = 0; i < steps.length; i++) {
-                Class type = _data.getResources().getClass(steps[i] + ".editor");
-                WizardStep step = (WizardStep) type.newInstance();
-                step.setResources(_data.getResources());
-                step.setID(steps[i]);
-                step.setTitle(
-                    _data.getResources().getString(steps[i]+ ".title"));
-                step.setDescription(
-                    _data.getResources().getString(steps[i]+ ".description"));
-
-                _steps.put(steps[i], step);
-                _stepOrdering.add(step);
-                _stepContainer.add(step.getEditorComponent(), steps[i]);
-            }
-            // Initialize the first screen with the data model.
-            if(steps.length > 0) {
-                WizardStep first = (WizardStep)_steps.get(steps[0]);
-                first.setDataModel(_data);
-                _curr = first;
-                showStep(first);
-            }
-        }
-        catch(Exception ex) {
-            // If we get here then the wizard didn't initialize properly.
-            // XXX log me.
-            ex.printStackTrace();
-        }
-
-    }
-
-    /** 
-     * Add a wizard listener.
-     * 
-     * @param l Listener to add.
-     */
-    public void addWizardListener(WizardListener l) {
-        _listeners.add(l);
-    }
-
-    /** 
-     * Remove a wizard listener.
-     * 
-     * @param l Listener to remove.
-     */
-    public void removeWizardListener(WizardListener l) {
-        _listeners.remove(l);
-    }
-
-    /** 
-     * Go to the given step.
-     * 
-     * @param step Step to go to.
-     */
-    private void showStep(WizardStep step) {
-        if(step == null) return;
-
-        step.setDataModel(_curr.getDataModel());
-        
-        // Update the title and description.
-        _stepContainer.setBorder(
-            BorderFactory.createCompoundBorder(
-                BorderFactory.createTitledBorder(step.getTitle()),
-                BorderFactory.createEmptyBorder(5, 15, 5, 15))); 
-        _description.setText(step.getDescription());
-
-        _nav.setBackEnabled(step.getPrevious() != null);
-        _nav.setNextEnabled(step.getNext() != null);
-        _nav.setFinishEnabled(step.getNext() == null);
-        _progress.setValue(_stepOrdering.indexOf(step));
-
-        // Tell the step to refresh its display based on the data model.
-        step.updateDisplay();
-
-        // Display the step.
-        _layout.show(_stepContainer, step.getID());
-
-        _curr = step;
-    }
-
-    /** Handler for actions invoked by wizard. */
-    private class NavHandler implements NavigatorListener {
-        public void nextStep() {
-            // Called to give data model chance to make changes to what is next.
-            _curr.updateDataModel();
-            String nextID = _curr.getNext();
-            if(nextID != null) {
-                showStep((WizardStep)_steps.get(nextID));
-            }
-        }
-        public void backStep() {
-            // Called to give data model chance to make changes to what is 
-            // before.
-            _curr.updateDataModel();
-            String prevID = _curr.getPrevious();
-            if(prevID != null) {
-                showStep((WizardStep)_steps.get(prevID));
-            }
-        }
-        public void gotoStep(String stepID){
-            _curr.updateDataModel();
-            showStep((WizardStep) _steps.get(stepID));
-        }
-        public void cancel() {
-            _curr.updateDataModel();
-            Iterator it = _listeners.iterator();
-            while(it.hasNext()) {
-                WizardListener l = (WizardListener) it.next();
-                l.canceled();
-            }
-        }
-        public void finish() {
-            _curr.updateDataModel();
-            Iterator it = _listeners.iterator();
-            while(it.hasNext()) {
-                WizardListener l = (WizardListener) it.next();
-                l.finished(_curr.getDataModel());
-            }
-        }
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/WizardData.java b/src/antidote/org/apache/tools/ant/gui/wizard/WizardData.java
deleted file mode 100644
index 1e92fe1..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/WizardData.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-
-import org.apache.tools.ant.gui.core.ResourceManager;
-
-/**
- * Interface for the wizard data model.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public interface WizardData {
-    /** 
-     * Get access to the resources for the wizard.
-     * 
-     * @return Wizard resources.
-     */
-    ResourceManager getResources();
-
-    /** 
-     * Get the class the determines what the next step should be.
-     * 
-     * @return State machine.
-     */
-    StateMachine getStateMachine();
-
-    
-    /** 
-     * Get any listeners to register with the wizard controller.
-     * 
-     * @return WizardListener instances to register for control events, or null
-     *  for none.
-     */
-    // XXX not sure about this yet.
-    //WizardListener[] getWizardListeners();
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/WizardListener.java b/src/antidote/org/apache/tools/ant/gui/wizard/WizardListener.java
deleted file mode 100644
index 3d4d4c1..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/WizardListener.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-
-
-/**
- * Interface for classes desiring notifiction of when the user
- * completes his/her use of wizard.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public interface WizardListener {
-    /** 
-     * Called when the user has clicked the finish button.
-     * 
-     * @param model Last state of the object model.
-     */
-    void finished(Object model);
-
-    /** 
-     * Called when the user has clicked the cancel button.
-     * 
-     */
-    void canceled();  
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/WizardNavigator.java b/src/antidote/org/apache/tools/ant/gui/wizard/WizardNavigator.java
deleted file mode 100644
index 5fb2495..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/WizardNavigator.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-
-/**
- * Interface for classes that control the movement from one step of a 
- * wizard to another.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public interface WizardNavigator {
-    /** 
-     * Add a navigator listener. 
-     * 
-     * @param l Listener to add.
-     */
-    void addNavigatorListener(NavigatorListener l);
-    /** 
-     * Remove a navigator listener.
-     * 
-     * @param l Listener to remove.
-     */
-    void removeNavigatorListener(NavigatorListener l);
-
-    /** 
-     * Set the enabled state of the back control.
-     * 
-     * @param state True for enabled, false for disabled.
-     */
-    void setBackEnabled(boolean state);
-    /** 
-     * Set the enabled state of the next control.
-     * 
-     * @param state True for enabled, false for disabled.
-     */
-    void setNextEnabled(boolean state);
-    /** 
-     * Set the enabled state of the finished control.
-     * 
-     * @param state True for enabled, false for disabled.
-     */
-    void setFinishEnabled(boolean state);
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/WizardStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/WizardStep.java
deleted file mode 100644
index 94f722a..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/WizardStep.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard;
-import org.apache.tools.ant.gui.core.ResourceManager;
-import javax.swing.JComponent;
-
-
-/**
- * Interface for classes defining a step in a wizard.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public interface WizardStep {
-    /** 
-     * Set the step's resources.
-     * 
-     */
-    void setResources(ResourceManager resources);
-
-    /** 
-     * Set the step id. The id must be unique among steps within the wizard.
-     * 
-     * @param id Wizard id.
-     */
-    void setID(String id);
-
-    /** 
-     * Get the step id.
-     * 
-     * @return Step id.
-     */
-    String getID();
-
-    /** 
-     * Set the step title.
-     * 
-     * @param title Step title.
-     */
-    void setTitle(String title);
-    /** 
-     * Get the step title.
-     * 
-     * @return Step title.
-     */
-    String getTitle();
-
-    /** 
-     * Set the step description.
-     * 
-     * @param desc Step description.
-     */
-    void setDescription(String desc);
-    /** 
-     * Get the step description.
-     * 
-     * @return Step description.
-     */
-    String getDescription();
-
-    /** 
-     * Set the data model object that the step will edit. It is assumed 
-     * that all steps initialized within a single wizard agree on the
-     * data model type.
-     * 
-     * @param model Data model to edit.
-     */
-    void setDataModel(WizardData model);
-
-    /** 
-     * Get the data model that should be passeed on to the next step.
-     * 
-     * @return Current data model.
-     */
-    WizardData getDataModel();
-
-    /** 
-     * Get the component that should be displayed to the user for
-     * editing the model. This component should <b>not</b> include the
-     * title and text display, which is handled by the wizard container.
-     * 
-     * @return Editing component.
-     */
-    JComponent getEditorComponent();
-
-    /** 
-     * Called when the step should refresh its display based on the 
-     * current model setting.
-     * 
-     */
-    void updateDisplay();
-
-    /** 
-     * Called when the step should update the data model based on the
-     * settings of its widgets.
-     * 
-     */
-    void updateDataModel();
-
-    /** 
-     * Get the id of the next step.
-     * 
-     * @return ID of next step.
-     */
-    String getNext();
-
-    /** 
-     * Get the id of the previous step.
-     * 
-     * @return Previous step.
-     */
-    String getPrevious();
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildData.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildData.java
deleted file mode 100644
index 4b131a0..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildData.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard.build;
-
-import org.apache.tools.ant.gui.wizard.*;
-import org.apache.tools.ant.gui.core.ResourceManager;
-import org.apache.tools.ant.gui.acs.*;
-import java.util.*;
-import java.io.File;
-
-/**
- * Data model for the build wizard.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class BuildData implements WizardData {
-    /** Wizard resources. */
-    private ResourceManager _resources = new ResourceManager(
-        "org.apache.tools.ant.gui.resources.buildFileWizard");
-
-    private StateMachine _stateMachine = new BuildStateMachine();
-    private String _name = "MyProject";
-    private File _outputFile = new File("build.xml");
-    private boolean _isNewProject = true;
-    private List _optionalSteps = null;
-
-    /** 
-     * Default ctor.
-     * 
-     */
-    public BuildData() {
-        //_project = ACSFactory.getInstance().createProject();
-        _optionalSteps = Arrays.asList(ProjectSetupStep.OPTIONS);
-    }
-
-    /** 
-     * Get access to the resources for the wizard.
-     * 
-     * @return Wizard resources.
-     */
-    public ResourceManager getResources() {
-        return _resources;
-    }
-    
-    /** 
-     * Get the class the determines what the next step should be.
-     * 
-     * @return State machine.
-     */
-    public StateMachine getStateMachine() {
-        return _stateMachine;
-    }
-
-    /** 
-     * Get the project name.
-     * 
-     * @param name Project name.
-     */
-    public void setProjectName(String name) {
-        _name = name;
-    }
-
-    /** 
-     * Set the project name.
-     * 
-     * @return Project name.
-     */
-    public String getProjectName() {
-        return _name;
-    }
-
-    /** 
-     * Set the output file.
-     * 
-     * @param out Output file.
-     */
-    public void setOutputFile(File out) {
-        _outputFile = out;
-    }
-
-    /** 
-     * Get the output file.
-     * 
-     * @return Output file.
-     */
-    public File getOutputFile() {
-        return _outputFile;
-    }
-
-
-    /** 
-     * Set whether or not a new project is being created.
-     * 
-     * @param isNew True if new project, false if importing a project.
-     */
-    public void setNewProject(boolean isNew) {
-        _isNewProject = isNew;
-    }
-
-    /** 
-     * Determine if we are creating a new project.
-     * 
-     * @return True if new project, false if importing a project.
-     */
-    public boolean isNewProject() {
-        return _isNewProject;
-    }
-
-    /** 
-     * Set the set of optional steps (as IDs) that should be executed.
-     * 
-     * @param steps Set of optional step IDs.
-     */
-    public void setOptionalSteps(List steps) {
-        _optionalSteps = steps;
-    }
-
-    /** 
-     * Get the set of optional steps (as IDs) that should be executed.
-     * 
-     * @return Set of optional step IDs.
-     */
-    public List getOptionalSteps() {
-        return _optionalSteps;
-
-    }
-
-    /** 
-     * Convert the state data into a project.
-     * 
-     * @return Created project.
-     */
-    public ACSProjectElement createProject() {
-        Builder builder = new Builder(this);
-        return builder.buildProject();
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildStateMachine.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildStateMachine.java
deleted file mode 100644
index be69de3..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildStateMachine.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard.build;
-import org.apache.tools.ant.gui.wizard.*;
-import org.apache.tools.ant.gui.core.ResourceManager;
-import java.util.*;
-
-/**
- * State machine defining the step ordering for the build wizard.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class BuildStateMachine extends DefaultStateMachine {
-    private List _optionals = Arrays.asList(ProjectSetupStep.OPTIONS);
-
-
-    /** 
-     * Get the next step.
-     * 
-     * @param curr The current step.
-     * @param data The current state of the wizard.
-     * @return The ID of next step, or null if there currently isn't one.
-     */
-    public String getNext(ProjectSetupStep curr, WizardData data) {
-        return getFollowingID(super.getNext(curr, data), data, +1);
-    }
-
-    /** 
-     * Get the next step.
-     * 
-     * @param curr The current step.
-     * @param data The current state of the wizard.
-     * @return The ID of next step, or null if there currently isn't one.
-     */
-    public String getNext(OptionalStep curr, WizardData data) {
-        return getFollowingID(super.getNext(curr, data), data, +1);
-    }
-
-    /** 
-     * Get the previous step.
-     * 
-     * @param curr The current step.
-     * @param data The current state of the wizard.
-     * @return The ID of previous step, or null if there currently isn't one.
-     */
-    public String getPrevious(OptionalStep curr, WizardData data) {
-        return getFollowingID(super.getPrevious(curr, data), data, -1);
-    }
-
-    /** 
-     * Get the previous step.
-     * 
-     * @param curr The current step.
-     * @param data The current state of the wizard.
-     * @return The ID of previous step, or null if there currently isn't one.
-     */
-    public String getPrevious(FinishStep curr, WizardData data) {
-        return getFollowingID(super.getPrevious(curr, data), data, -1);
-    }
-
-    /** 
-     * Figure out which ID should follow the given one based on the current
-     * state setting of the optional steps.
-     * 
-     * @param curr ID of the current step.
-     * @param data State data.
-     * @param direction +1 for next, -1 for previous.
-     * @return The ID to follow, or null if none.
-     */
-    private String getFollowingID(String curr, WizardData data, int direction) {
-        String follow = curr;
-        List steps = getStepList(data);
-        List setting = ((BuildData)data).getOptionalSteps();
-
-        while(follow != null && _optionals.contains(follow) && 
-              !setting.contains(follow)) {
-
-            int index = steps.indexOf(follow) + direction;
-            if(index >= 0 && index < steps.size()) {
-                follow = (String) steps.get(index);
-            }
-            else {
-                follow = null;
-            }
-        }
-
-        return follow;
-    }
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/Builder.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/Builder.java
deleted file mode 100644
index d2943b6..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/build/Builder.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard.build;
-
-import org.apache.tools.ant.gui.acs.*;
-
-/**
- * Class that takes care of converting the wizard state data stored in
- * BuildData and translates it into a build file.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class Builder  {
-
-    /** Build data. */
-    private BuildData _data = null;
-
-    /** 
-     * Constructor.
-     * 
-     * @param data Build data to create project from.
-     */
-    public Builder(BuildData data) {
-        _data = data;
-    }
-
-    /** 
-     * Convert build data into a project.
-     * 
-     * @return Project.
-     */
-    public ACSProjectElement buildProject() {
-        ACSProjectElement retval = ACSFactory.getInstance().createProject();
-        retval.setName(_data.getProjectName());
-
-
-        return retval;
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/CompileStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/CompileStep.java
deleted file mode 100644
index 72e6515..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/build/CompileStep.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard.build;
-
-import org.apache.tools.ant.gui.wizard.AbstractWizardStep;
-import javax.swing.*;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-
-/**
- * 
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class CompileStep extends AbstractWizardStep implements OptionalStep {
-
-    /** 
-     * Initialize the display.
-     * 
-     */
-    protected void init() {
-
-
-
-    }
-
-    /** 
-     * Called when the step should refresh its display based on the 
-     * current model setting.
-     * 
-     */
-    public void updateDisplay() {
-        BuildData data = (BuildData) getDataModel();
-
-    }
-
-    /** 
-     * Called when the step should update the data model based on the
-     * settings of its widgets.
-     * 
-     */
-    public void updateDataModel() {
-        BuildData data = (BuildData) getDataModel();
-
-    }
-
-    /** 
-     * Get the id of the next step.
-     * 
-     * @return ID of next step.
-     */
-    public String getNext() {
-        return ((BuildStateMachine)getDataModel().getStateMachine()).
-            getNext(this, getDataModel());
-    }
-
-    /** 
-     * Get the id of the previous step.
-     * 
-     * @return Previous step.
-     */
-    public String getPrevious() {
-        return ((BuildStateMachine)getDataModel().getStateMachine()).
-            getPrevious(this, getDataModel());
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/FinishStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/FinishStep.java
deleted file mode 100644
index 421653d..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/build/FinishStep.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard.build;
-
-import org.apache.tools.ant.gui.wizard.InstructionStep;
-import javax.swing.*;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-
-/**
- * 
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class FinishStep extends InstructionStep {
-
-
-    /** 
-     * Called when the step should refresh its display based on the 
-     * current model setting.
-     * 
-     */
-    public void updateDisplay() {
-        BuildData data = (BuildData) getDataModel();
-
-    }
-
-    /** 
-     * Called when the step should update the data model based on the
-     * settings of its widgets.
-     * 
-     */
-    public void updateDataModel() {
-        BuildData data = (BuildData) getDataModel();
-
-    }
-
-    /** 
-     * Get the id of the next step.
-     * 
-     * @return ID of next step.
-     */
-    public String getNext() {
-        return ((BuildStateMachine)getDataModel().getStateMachine()).
-            getNext(this, getDataModel());
-    }
-
-    /** 
-     * Get the id of the previous step.
-     * 
-     * @return Previous step.
-     */
-    public String getPrevious() {
-        return ((BuildStateMachine)getDataModel().getStateMachine()).
-            getPrevious(this, getDataModel());
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/JARStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/JARStep.java
deleted file mode 100644
index da90c62..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/build/JARStep.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard.build;
-
-import org.apache.tools.ant.gui.wizard.AbstractWizardStep;
-import javax.swing.*;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-
-/**
- * 
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class JARStep extends AbstractWizardStep implements OptionalStep {
-
-    /** 
-     * Initialize the display.
-     * 
-     */
-    protected void init() {
-    }
-
-    /** 
-     * Called when the step should refresh its display based on the 
-     * current model setting.
-     * 
-     */
-    public void updateDisplay() {
-        BuildData data = (BuildData) getDataModel();
-
-    }
-
-    /** 
-     * Called when the step should update the data model based on the
-     * settings of its widgets.
-     * 
-     */
-    public void updateDataModel() {
-        BuildData data = (BuildData) getDataModel();
-
-    }
-
-    /** 
-     * Get the id of the next step.
-     * 
-     * @return ID of next step.
-     */
-    public String getNext() {
-        return ((BuildStateMachine)getDataModel().getStateMachine()).
-            getNext(this, getDataModel());
-    }
-
-    /** 
-     * Get the id of the previous step.
-     * 
-     * @return Previous step.
-     */
-    public String getPrevious() {
-        return ((BuildStateMachine)getDataModel().getStateMachine()).
-            getPrevious(this, getDataModel());
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/JavaDocStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/JavaDocStep.java
deleted file mode 100644
index e8af955..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/build/JavaDocStep.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard.build;
-
-import org.apache.tools.ant.gui.wizard.AbstractWizardStep;
-import javax.swing.*;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-
-/**
- * 
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class JavaDocStep extends AbstractWizardStep implements OptionalStep {
-
-    /** 
-     * Initialize the display.
-     * 
-     */
-    protected void init() {
-    }
-
-    /** 
-     * Called when the step should refresh its display based on the 
-     * current model setting.
-     * 
-     */
-    public void updateDisplay() {
-        BuildData data = (BuildData) getDataModel();
-
-    }
-
-    /** 
-     * Called when the step should update the data model based on the
-     * settings of its widgets.
-     * 
-     */
-    public void updateDataModel() {
-        BuildData data = (BuildData) getDataModel();
-
-    }
-
-    /** 
-     * Get the id of the next step.
-     * 
-     * @return ID of next step.
-     */
-    public String getNext() {
-        return ((BuildStateMachine)getDataModel().getStateMachine()).
-            getNext(this, getDataModel());
-    }
-
-    /** 
-     * Get the id of the previous step.
-     * 
-     * @return Previous step.
-     */
-    public String getPrevious() {
-        return ((BuildStateMachine)getDataModel().getStateMachine()).
-            getPrevious(this, getDataModel());
-    }
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/OptionalStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/OptionalStep.java
deleted file mode 100644
index 1264c61..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/build/OptionalStep.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard.build;
-import org.apache.tools.ant.gui.wizard.WizardStep;
-
-/**
- * A tagging interface for optional steps to make virtual dispatching easier.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-interface OptionalStep extends WizardStep {
-
-}
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectSetupStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectSetupStep.java
deleted file mode 100644
index f1eba8f..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectSetupStep.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard.build;
-
-import org.apache.tools.ant.gui.wizard.AbstractWizardStep;
-import org.apache.tools.ant.gui.util.LabelFieldGBC;
-import org.apache.tools.ant.gui.customizer.FilePropertyEditor;
-import javax.swing.*;
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.GridBagLayout;
-import java.util.*;
-import java.io.File;
-
-/**
- * Build file wizard step for naming the project and 
- * selecting what features are desired.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ProjectSetupStep extends AbstractWizardStep {
-
-    /** ID for compile option. */
-    public static final String COMPILE_OPTION = "compile"; 
-    /** ID for JAR option. */
-    public static final String JAR_OPTION = "jar"; 
-    /** ID for JavaDoc option. */
-    public static final String JAVADOC_OPTION = "javadoc"; 
-
-    /** Available options as an array. */
-    public static final String[] OPTIONS = { 
-        COMPILE_OPTION,
-        JAR_OPTION,
-        JAVADOC_OPTION
-    };
-
-    /** Array of the option selections. */
-    private JCheckBox[] _selections = null;
-
-
-    /** Name of the project. */
-    private JTextField _name = null;
-    /** Control for selecting a file. */
-    private FilePropertyEditor _fileEditor = null;
-
-
-    /** 
-     * Initialize the screen widgets.
-     * 
-     */
-    protected void init() {
-        setLayout(new BorderLayout());
-
-        LabelFieldGBC gbc = new LabelFieldGBC();
-        JPanel p = new JPanel(new GridBagLayout());
-        add(p, BorderLayout.NORTH);
-
-        _fileEditor = new FilePropertyEditor();
-        p.add(new JLabel(
-            getResources().getString(getID() + ".fileLabel")), gbc.forLabel());
-        p.add(_fileEditor.getCustomEditor(), gbc.forField());
-
-        _name = new JTextField(10);
-        p.add(new JLabel(
-            getResources().getString(getID() + ".nameLabel")), gbc.forLabel());
-        p.add(_name, gbc.forField());
-
-        p = new JPanel(null);
-        p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
-        p.setBorder(BorderFactory.createCompoundBorder(
-            BorderFactory.createTitledBorder(
-                getResources().getString(getID() + ".optionsLabel")),
-            BorderFactory.createEmptyBorder(5, 10, 5, 10)));
-        add(p, BorderLayout.CENTER);
-
-        _selections = new JCheckBox[OPTIONS.length];
-        for(int i = 0; i < OPTIONS.length; i++) {
-            _selections[i] = new JCheckBox(
-                getResources().getString(getID() + "." + OPTIONS[i] + ".label"));
-            _selections[i].setSelected(true);
-            p.add(_selections[i]);
-        }
-    }
-
-    /** 
-     * Called when the step should refresh its display based on the 
-     * current model setting.
-     * 
-     */
-    public void updateDisplay() {
-        // Name.
-        BuildData data = (BuildData) getDataModel();
-        _name.setText(data.getProjectName());
-
-        _fileEditor.setValue(data.getOutputFile());
-
-        // Steps.
-        List steps = data.getOptionalSteps();
-        if(steps != null) {
-            for(int i = 0; i < _selections.length; i++) {
-                _selections[i].setSelected(steps.contains(OPTIONS[i]));
-            }
-        }
-    }
-
-    /** 
-     * Called when the step should update the data model based on the
-     * settings of its widgets.
-     * 
-     */
-    public void updateDataModel() {
-        // Name.
-        BuildData data = (BuildData) getDataModel();
-        data.setProjectName(_name.getText());
-
-        data.setOutputFile((File)_fileEditor.getValue());
-
-        // Steps.
-        List steps = new ArrayList();
-        for(int i = 0; i < _selections.length; i++) {
-            if(_selections[i].isSelected()) {
-                steps.add(OPTIONS[i]);
-            }
-        }
-
-        data.setOptionalSteps(steps);
-    }
-
-    /** 
-     * Get the id of the next step.
-     * 
-     * @return ID of next step.
-     */
-    public String getNext() {
-        return ((BuildStateMachine)getDataModel().getStateMachine()).
-            getNext(this, getDataModel());
-    }
-
-    /** 
-     * Get the id of the previous step.
-     * 
-     * @return Previous step.
-     */
-    public String getPrevious() {
-        return ((BuildStateMachine)getDataModel().getStateMachine()).
-            getPrevious(this, getDataModel());
-    }
-}
-
diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectTypeStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectTypeStep.java
deleted file mode 100644
index 880a161..0000000
--- a/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectTypeStep.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.gui.wizard.build;
-
-import org.apache.tools.ant.gui.wizard.AbstractWizardStep;
-import javax.swing.*;
-import java.awt.event.ActionListener;
-import java.awt.event.ActionEvent;
-import org.apache.tools.ant.gui.acs.*;
-import java.util.*;
-
-/**
- * Step for selecting whether a new project is being created, or
- * if an existing one is being imported.
- * 
- * @version $Revision$ 
- * @author Simeon Fitch 
- */
-public class ProjectTypeStep extends AbstractWizardStep {
-
-    private JRadioButton _isNew = null;
-    private JRadioButton _isImport = null;
-
-    /** 
-     * Initialize the display.
-     * 
-     */
-    protected void init() {
-        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
-
-        ButtonGroup group = new ButtonGroup();
-        _isNew = new JRadioButton(
-            getResources().getString(getID() + ".isNewLabel"));
-        group.add(_isNew);
-        add(_isNew);
-        _isImport = new JRadioButton(
-            getResources().getString(getID() + ".isImportLabel"));
-        group.add(_isImport);
-        add(_isImport);
-        // XXX Not implemented yet.
-        _isImport.setEnabled(false);
-        _isImport.setToolTipText("Not implemented yet.");
-    }
-
-    /** 
-     * Called when the step should refresh its display based on the 
-     * current model setting.
-     * 
-     */
-    public void updateDisplay() {
-        BuildData data = (BuildData) getDataModel();
-        _isNew.setSelected(data.isNewProject());
-    }
-
-    /** 
-     * Called when the step should update the data model based on the
-     * settings of its widgets.
-     * 
-     */
-    public void updateDataModel() {
-        BuildData data = (BuildData) getDataModel();
-        data.setNewProject(_isNew.isSelected());
-    }
-}
diff --git a/src/etc/ant.spec b/src/etc/ant.spec
deleted file mode 100644
index 7bd0c8c..0000000
--- a/src/etc/ant.spec
+++ /dev/null
@@ -1,52 +0,0 @@
-Summary: Java build tool
-Name: ant
-Version: 1.0
-Release: 0
-Group: Development/Tools
-Copyright: Apache - free
-Provides: ant
-Url: http://jakarta.apache.org
-
-Source: http://jakarta.apache.org/builds/nightly/ant/jakarta-tools.src.zip
-Prefix: /opt
-
-%description
-Platform-independent build tool for java.
-
-%prep
-rm -rf ${RPM_BUILD_DIR}/jakarta-tools
-unzip -x $RPM_SOURCE_DIR/jakarta-tools.src.zip
-
-%build
-cd ${RPM_BUILD_DIR}/jakarta-tools
-cd ant
-sh bootstrap.sh
-sh build.sh 
-
-%install
-cd ${RPM_BUILD_DIR}/jakarta-tools
-cd ant
-sh build.sh -Ddist.dir /opt  dist
-
-%clean
-
-%post
-ln -s /opt/ant/bin/ant /usr/bin
-
-%preun
-  
-%files
-## %defattr(-,root,root)
-%dir /opt/ant
-%dir /opt/ant/bin
-%dir /opt/ant/lib
-%dir /opt/ant/docs
-/opt/ant/lib/ant.jar
-/opt/ant/lib/xml.jar
-/opt/ant/lib/moo.jar
-%config /opt/ant/lib/build.xml
-/opt/ant/bin/ant
-/opt/ant/bin/antRun
-/opt/ant/docs/index.html
-
-%changelog
diff --git a/src/etc/log.xsl b/src/etc/log.xsl
deleted file mode 100644
index 4b4407e..0000000
--- a/src/etc/log.xsl
+++ /dev/null
@@ -1,57 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns:HTML="http://www.w3.org/Profiles/XHTML-transitional">
-
-<xsl:template match="/">
-	<html>
-		<body>
-			<xsl:apply-templates/>
-		</body>
-	</html>
-</xsl:template>
-
-<xsl:template match="*">
-	<xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="build">
-	<center>
-		<table width="100%" bgcolor="#CCCCCC"><tr>
-			<xsl:if test=".[@error]">
-				<td align="left" width="30%"><b>Build Failed</b></td> 
-				<td align="center" width="40%"><b><xsl:value-of select="@error"/></b></td>
-			</xsl:if>
-			<xsl:if test=".[not(@error)]">
-				<td><b>Build Complete</b></td>
-			</xsl:if>
-			<td align="right" width="30%"><b>Total Time: <xsl:value-of select="@time"/></b></td>
-		</tr></table>
-		
-		<br/>
-		<table >
-			<xsl:apply-templates/>
-		</table>
-		
-	</center>
-
-</xsl:template>
-
-<xsl:template match="message[@priority!='debug']">
-	<tr valign="top">
-		
-		<td><b><pre><xsl:value-of select="../@location"/></pre></b></td>
-		<td><b><pre><xsl:value-of select="../@name"/></pre></b></td>
-
-		<td>
-			<xsl:attribute name="STYLE">color:
-				<xsl:choose>
-					<xsl:when test="@priority[.='error']">red</xsl:when>
-					<xsl:when test="@priority[.='warn']">brown</xsl:when>
-					<xsl:when test="@priority[.='info']">gray</xsl:when>
-					<xsl:when test="@priority[.='debug']">gray</xsl:when>
-				</xsl:choose>
-			</xsl:attribute>
-			<pre><xsl:value-of select="text()"/></pre>
-		</td>
-	</tr>
-</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/etc/manifest b/src/etc/manifest
deleted file mode 100644
index 758bc0f..0000000
--- a/src/etc/manifest
+++ /dev/null
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: org.apache.tools.ant.Main
-
-
diff --git a/src/etc/pkginfo b/src/etc/pkginfo
deleted file mode 100644
index cad2925..0000000
--- a/src/etc/pkginfo
+++ /dev/null
@@ -1,9 +0,0 @@
-PKG="ASFant"
-NAME="Apache Ant build tool"
-VERSION="1.0"
-ARCH="sparc i386"
-CLASSES="none"
-CATEGORY="utility"
-VENDOR="Apache"
-EMAIL="costin@eng.sun.com"
-BASEDIR=/
diff --git a/src/etc/prototype b/src/etc/prototype
deleted file mode 100644
index abd374b..0000000
--- a/src/etc/prototype
+++ /dev/null
@@ -1,12 +0,0 @@
-i pkginfo
-d none /opt/ant 0755 costin other
-d none /opt/ant/lib 0755 costin staff
-f none /opt/ant/lib/ant.jar 0644 costin staff
-f none /opt/ant/lib/xml.jar 0644 costin staff
-f none /opt/ant/lib/moo.jar 0644 costin staff
-f none /opt/ant/lib/build.xml 0644 costin staff
-d none /opt/ant/bin 0755 costin staff
-f none /opt/ant/bin/ant 0755 costin staff
-f none /opt/ant/bin/antRun 0755 costin staff
-d none /opt/ant/docs 0755 costin staff
-f none /opt/ant/docs/index.html 0644 costin staff
diff --git a/src/etc/testcases/.cvsignore b/src/etc/testcases/.cvsignore
deleted file mode 100644
index 08def9b..0000000
--- a/src/etc/testcases/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-taskdefs.tmp
-
diff --git a/src/etc/testcases/taskdefs/.cvsignore b/src/etc/testcases/taskdefs/.cvsignore
deleted file mode 100644
index 08def9b..0000000
--- a/src/etc/testcases/taskdefs/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-taskdefs.tmp
-
diff --git a/src/etc/testcases/taskdefs/ant.xml b/src/etc/testcases/taskdefs/ant.xml
deleted file mode 100644
index b8bf9ed..0000000
--- a/src/etc/testcases/taskdefs/ant.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="ant-test" basedir="." default="test1">
-
-  <target name="all" depends="test1,test2,test3,test4"/>
-
-  <target name="test1">
-    <ant antfile="ant.xml" dir="." target="test1"/>
-  </target>
-
-  <target name="test2">
-    <antcall/>
-  </target>
-
-  <target name="test3">
-    <antcall target="test3"/>
-  </target>
-
-  <target name="test4">
-    <antcall target=""/>
-  </target>
-
-  <target name="test5">
-    <antcall target="dummy"/>
-  </target>
-
-  <target name="test6">
-    <ant antfile="ant.xml" dir="." target="dummy"/>
-  </target>
-
-  <target name="dummy">
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/antstructure.xml b/src/etc/testcases/taskdefs/antstructure.xml
deleted file mode 100644
index 8d49ad9..0000000
--- a/src/etc/testcases/taskdefs/antstructure.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="antstructure-test" basedir="." default="test1">
-
-  <target name="test1">
-    <antstructure/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/available.xml b/src/etc/testcases/taskdefs/available.xml
deleted file mode 100644
index 9ad3bc5..0000000
--- a/src/etc/testcases/taskdefs/available.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="available-test" basedir="." default="test1">
-
-  <target name="test1">
-    <available/>
-  </target>
-
-  <target name="test2">
-    <available property="test"/>
-  </target>
-
-  <target name="test3">
-    <available file="test"/>
-  </target>
-
-  <target name="test4">
-    <available property="test" 
-               file="src/etc/testcases/taskdefs/this_file_does_not_exist"/>
-  </target>
-
-  <target name="test5">
-    <available property="test" 
-               file="available.xml"/>
-  </target>
-
-  <target name="test6">
-    <available property="test" 
-               resource="org/apache/tools/ant/taskdefs/this_resource_does_not_exist"/>
-  </target>
-
-  <target name="test7">
-    <available property="test" 
-               resource="org/apache/tools/ant/taskdefs/defaults.properties"/>
-  </target>
-
-  <target name="test8">
-    <available property="test" 
-               classname="org.apache.tools.ant.taskdefs.this_class_does_not_exist"/>
-  </target>
-
-  <target name="test9">
-    <available property="test" 
-               classname="org.apache.tools.ant.taskdefs.Ant"/>
-  </target>
-
-  <target name="test10">
-    <available property="test" 
-               file="available.xml"
-               resource="org/apache/tools/ant/taskdefs/defaults.properties"
-               classname="org.apache.tools.ant.taskdefs.Ant"/>
-  </target>
-  
-  <target name="test11">
-    <available property="test" 
-               file="src/etc/testcases/taskdefs/available.xml"
-               resource="org/apache/tools/ant/taskdefs/defaults.properties"
-               classname="org.apache.tools.ant.taskdefs.this_class_does_not_exist"/>
-  </target>  
-  
-  <target name="test12">
-    <available property="" 
-               file="available.xml"/>
-  </target>
-
-  <target name="test13">
-    <available property="test" 
-               file=""/>
-  </target>
-
-  <target name="test14">
-    <available property="test" 
-               resource=""/>
-  </target>
-
-  <target name="test15">
-    <available property="test" 
-               classname="org.apache.tools.ant.taskdefs.this_class_does_not_exist"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/copy.xml b/src/etc/testcases/taskdefs/copy.xml
deleted file mode 100644
index cd2469b..0000000
--- a/src/etc/testcases/taskdefs/copy.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="copy-test" basedir="." default="test1">
-
-  <target name="test1">
-    <copy file="copy.xml" todir="." overwrite="true"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/copydir.xml b/src/etc/testcases/taskdefs/copydir.xml
deleted file mode 100644
index 10c5742..0000000
--- a/src/etc/testcases/taskdefs/copydir.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="copydir-test" basedir="." default="test1">
-
-  <target name="test1">
-    <copydir/>
-  </target>
-
-  <target name="test2">
-    <copydir src=""/>
-  </target>
-
-  <target name="test3">
-    <copydir dest=""/>
-  </target>
-
-  <target name="test4">
-    <copydir src="." 
-             dest="."/>
-  </target>
-
-  <target name="test5">
-    <mkdir dir="../taskdefs.tmp" />
-    <copydir src="." 
-             dest="../taskdefs.tmp"/>
-  </target>
-
-  <target name="test6">
-    <copydir src="." 
-             dest="template.xml"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/copyfile.xml b/src/etc/testcases/taskdefs/copyfile.xml
deleted file mode 100644
index 4aca33e..0000000
--- a/src/etc/testcases/taskdefs/copyfile.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="copyfile-test" basedir="." default="test1">
-
-  <target name="test1">
-    <copyfile/>
-  </target>
-
-  <target name="test2">
-    <copyfile src=""/>
-  </target>
-
-  <target name="test3">
-    <copyfile dest=""/>
-  </target>
-
-  <target name="test4">
-    <copyfile src="template.xml" 
-             dest="template.xml"/>
-  </target>
-
-  <target name="test5">
-    <copyfile src="copyfile.xml" 
-             dest="copyfile.tmp"/>
-  </target>
-
-  <target name="test6">
-    <copyfile src="copyfile.xml" 
-             dest="testdir"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/delete.xml b/src/etc/testcases/taskdefs/delete.xml
deleted file mode 100644
index ea10eee..0000000
--- a/src/etc/testcases/taskdefs/delete.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="delete-test" basedir="." default="test1">
-
-  <target name="test1">
-    <delete/>
-  </target>
-
-  <target name="test2">
-    <copydir src="." 
-             dest="taskdefs.tmp"/>
-    <delete file="taskdefs.tmp"/>
-  </target>
-
-  <target name="test3">
-    <copydir src="." 
-             dest="taskdefs.tmp"/>
-    <delete dir="taskdefs.tmp/ant.xml"/>
-  </target>
-
-  <target name="test4">
-    <copydir src="." 
-             dest="taskdefs.tmp"/>
-    <delete dir="taskdefs.tmp"/>
-  </target>
-
-
-</project>
diff --git a/src/etc/testcases/taskdefs/deltree.xml b/src/etc/testcases/taskdefs/deltree.xml
deleted file mode 100644
index 23fc663..0000000
--- a/src/etc/testcases/taskdefs/deltree.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="deltree-test" basedir="." default="test1">
-
-  <target name="test1">
-    <deltree/>
-  </target>
-
-  <target name="test2">
-    <deltree dir="src/etc/testcases/taskdefs.tmp"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/echo.xml b/src/etc/testcases/taskdefs/echo.xml
deleted file mode 100644
index 7898104..0000000
--- a/src/etc/testcases/taskdefs/echo.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="echo-test" basedir="." default="test1">
-
-  <target name="test1">
-    <echo/>
-  </target>
-
-  <target name="test2">
-    <echo message="OUTPUT OF ECHO"/>
-  </target>
-
-  <target name="test3">
-    <echo>
-    This 
-    is
-    a 
-    multiline
-    message
-    </echo>
-  </target>
-
-</project>
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/fail.xml b/src/etc/testcases/taskdefs/fail.xml
deleted file mode 100644
index 3f8b815..0000000
--- a/src/etc/testcases/taskdefs/fail.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="fail-test" basedir="." default="test1">
-
-  <target name="test1">
-    <fail/>
-  </target>
-
-  <target name="test2">
-    <fail message="test"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/filter.xml b/src/etc/testcases/taskdefs/filter.xml
deleted file mode 100644
index a41a843..0000000
--- a/src/etc/testcases/taskdefs/filter.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="filter-test" basedir="." default="test1">
-
-  <target name="test1">
-    <filter/>
-  </target>
-
-  <target name="test2">
-    <filter token=""/>
-  </target>
-
-  <target name="test3">
-    <filter value=""/>
-  </target>
-
-  <target name="test4">
-    <filter token="" value=""/>
-  </target>
-
-  <target name="test5">
-    <filter token="year" value="2000" />
-    <copy file="filter1.txt" tofile="filtered.tmp" filtering="yes" overwrite="yes" />
-  </target>
-
-  <target name="test6">
-    <filter token="year" value="2000" />
-    <copy todir="./taskdefs.tmp" filtering="yes" overwrite="yes">
-      <fileset dir="." includes="filter1.txt" />
-    </copy>
-  </target>
-
-  <target name="test7">
-    <filter token="ROOT" value="root" />
-    <copy file="filter2.txt" tofile="filtered.tmp" filtering="yes" overwrite="yes" />
-  </target>
-
-  <target name="test8">
-    <filter token="ROOT" value="root" />
-    <copy todir="./taskdefs.tmp" filtering="yes" overwrite="yes">
-      <fileset dir="." includes="filter2.txt"/>
-    </copy>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/filter1.txt b/src/etc/testcases/taskdefs/filter1.txt
deleted file mode 100644
index 4e4f976..0000000
--- a/src/etc/testcases/taskdefs/filter1.txt
+++ /dev/null
@@ -1 +0,0 @@
-@year@
diff --git a/src/etc/testcases/taskdefs/filter2.txt b/src/etc/testcases/taskdefs/filter2.txt
deleted file mode 100644
index dccd06b..0000000
--- a/src/etc/testcases/taskdefs/filter2.txt
+++ /dev/null
@@ -1 +0,0 @@
-<%@ include file="@ROOT@/some/include.jsp"%>
diff --git a/src/etc/testcases/taskdefs/get.xml b/src/etc/testcases/taskdefs/get.xml
deleted file mode 100644
index 025cb98..0000000
--- a/src/etc/testcases/taskdefs/get.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-    <get/>
-  </target>
-
-  <target name="test2">
-    <get src=""/>
-  </target>
-
-  <target name="test3">
-    <get src="" dest=""/>
-  </target>
-
-  <target name="test4">
-    <get src="" dest=""/>
-  </target>
-
-  <target name="test5">
-    <get src="http://localhost" dest=""/>
-  </target>
-
-  <target name="test6">
-    <get src="http://localhost" dest="get.tmp"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/gunzip.xml b/src/etc/testcases/taskdefs/gunzip.xml
deleted file mode 100644
index f4e7556..0000000
--- a/src/etc/testcases/taskdefs/gunzip.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-    <gunzip/>
-  </target>
-
-  <target name="test2">
-    <gunzip src=""/>
-  </target>
-
-  <target name="test3">
-    <gunzip src="gzip.tmp"
-            dest="gzip.tmp2"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/gzip.xml b/src/etc/testcases/taskdefs/gzip.xml
deleted file mode 100644
index 7fadfd6..0000000
--- a/src/etc/testcases/taskdefs/gzip.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-    <gzip/>
-  </target>
-
-  <target name="test2">
-    <gzip src=""/>
-  </target>
-
-  <target name="test3">
-    <gzip zipfile=""/>
-  </target>
-
-  <target name="test4">
-    <gzip src="." zipfile=""/>
-  </target>
-
-  <target name="test5">
-    <gzip src="." zipfile="gzip.tmp"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/jar.xml b/src/etc/testcases/taskdefs/jar.xml
deleted file mode 100644
index 064c1fe..0000000
--- a/src/etc/testcases/taskdefs/jar.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="jar-test" basedir="." default="test1">
-
-  <target name="test1">
-    <jar/>
-  </target>
-
-  <target name="test2">
-    <jar
-    	jarfile="jar.tmp"
-    	manifest="none"
-    />
-  </target>
-
-  <target name="test3">
-    <jar
-    	jarfile="jar.tmp"
-	whenempty="format C: /y" 
-    />
-  </target>
-
-  <target name="test4">
-   <!-- delete the tmp.jar or the next test will fail -->
-   <delete file="tmp.jar"/>
-   <jar
-    	jarfile="tmp.jar"
-	basedir="."
-	includes="jar.xml"
-    />
-  </target>
-
-  <!-- This test is to make sure upToDate is working -->
-  <target name="test5">
-    <jar
-    	jarfile="tmp.jar"
-	basedir="."
-	includes="jar.xml"
-    />
-  </target>
-
-</project>
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/mkdir.xml b/src/etc/testcases/taskdefs/mkdir.xml
deleted file mode 100644
index d0e168b..0000000
--- a/src/etc/testcases/taskdefs/mkdir.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-    <mkdir/>
-  </target>
-
-  <target name="test2">
-    <mkdir dir="template.xml"/>
-  </target>
-
-  <target name="test3">
-    <mkdir dir="testdir.tmp"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/optional/antlr/antlr.g b/src/etc/testcases/taskdefs/optional/antlr/antlr.g
deleted file mode 100644
index 641b968..0000000
--- a/src/etc/testcases/taskdefs/optional/antlr/antlr.g
+++ /dev/null
@@ -1,60 +0,0 @@
-class CalcParser extends Parser;
-options {
-	buildAST = true;	// uses CommonAST by default
-}
-
-expr
-	:	mexpr (PLUS^ mexpr)* SEMI!
-	;
-
-mexpr
-	:	atom (STAR^ atom)*
-	;
-
-atom:	INT
-	;
-
-class CalcLexer extends Lexer;
-
-WS	:	(' '
-	|	'\t'
-	|	'\n'
-	|	'\r')
-		{ _ttype = Token.SKIP; }
-	;
-
-LPAREN:	'('
-	;
-
-RPAREN:	')'
-	;
-
-STAR:	'*'
-	;
-
-PLUS:	'+'
-	;
-
-SEMI:	';'
-	;
-
-protected
-DIGIT
-	:	'0'..'9'
-	;
-
-INT	:	(DIGIT)+
-	;
-
-class CalcTreeWalker extends TreeParser;
-
-expr returns [float r]
-{
-	float a,b;
-	r=0;
-}
-	:	#(PLUS a=expr b=expr)	{r = a+b;}
-	|	#(STAR a=expr b=expr)	{r = a*b;}
-	|	i:INT			{r = (float)Integer.parseInt(i.getText());}
-	;
-
diff --git a/src/etc/testcases/taskdefs/optional/antlr/antlr.xml b/src/etc/testcases/taskdefs/optional/antlr/antlr.xml
deleted file mode 100644
index 1dec35f..0000000
--- a/src/etc/testcases/taskdefs/optional/antlr/antlr.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="antlr-test" basedir="." default="test1">
-
-  <property name="tmp.dir" value="antlr.tmp"/>
-
-
-  <target name="test1">
-    <antlr/>
-  </target>
-
-  <target name="test2">
-    <!-- delete the tmp directory, it may exists if a previous ANTLR test
-         failed.  This in turn will cause this test to fail, as it tests
-         the build exception when the outputdirectory is invalid. -->
-    <deltree dir="${tmp.dir}"/>
-    <antlr target="antlr.g" outputdirectory="${tmp.dir}"/>
-  </target>
-
-  <target name="test3">
-    <mkdir dir="${tmp.dir}"/>
-    <antlr target="antlr.g" outputdirectory="${tmp.dir}"/>
-  </target>
-
-  <target name="test4">
-    <deltree dir="${tmp.dir}"/>
-    <mkdir dir="${tmp.dir}"/>
-    <antlr target="java.g" outputdirectory="${tmp.dir}"/>
-    <antlr target="java.tree.g" outputdirectory="${tmp.dir}"/>
-  </target>
-
-  <target name="test5">
-    <antlr target="java.tree.g" outputdirectory="${tmp.dir}" fork="yes"/>
-  </target>
-
-  <target name="test6">
-    <deltree dir="${tmp.dir}"/>
-    <!-- This tmp.dir needs to be deleted by the build file which executes this test. -->
-    <mkdir dir="${tmp.dir}"/>
-    <antlr target="java.g" outputdirectory="${tmp.dir}" />
-    <antlr dir="${tmp.dir}"
-           target="java.tree.g"
-           outputdirectory="${tmp.dir}"
-           fork="yes"/>
-  </target>
-
-  <target name="test7">
-    <antlr target="antlr.xml"/>
-  </target>    
-
-</project>
\ No newline at end of file
diff --git a/src/etc/testcases/taskdefs/optional/antlr/java.g b/src/etc/testcases/taskdefs/optional/antlr/java.g
deleted file mode 100644
index d16ef72..0000000
--- a/src/etc/testcases/taskdefs/optional/antlr/java.g
+++ /dev/null
@@ -1,1166 +0,0 @@
-/** Java 1.2 Recognizer
- *
- * Run 'java Main <directory full of java files>'
- *
- * Contributing authors:
- *		John Mitchell		johnm@non.net
- *		Terence Parr		parrt@magelang.com
- *		John Lilley			jlilley@empathy.com
- *		Scott Stanchfield	thetick@magelang.com
- *		Markus Mohnen       mohnen@informatik.rwth-aachen.de
- *		Peter Williams		pwilliams@netdynamics.com
- *
- * Version 1.00 December 9, 1997 -- initial release
- * Version 1.01 December 10, 1997
- *		fixed bug in octal def (0..7 not 0..8)
- * Version 1.10 August 1998 (parrt)
- *		added tree construction
- *		fixed definition of WS,comments for mac,pc,unix newlines
- *		added unary plus
- * Version 1.11 (Nov 20, 1998)
- *		Added "shutup" option to turn off last ambig warning.
- *		Fixed inner class def to allow named class defs as statements
- *		synchronized requires compound not simple statement
- *		add [] after builtInType DOT class in primaryExpression
- *		"const" is reserved but not valid..removed from modifiers
- * Version 1.12 (Feb 2, 1999)
- *		Changed LITERAL_xxx to xxx in tree grammar.
- *		Updated java.g to use tokens {...} now for 2.6.0 (new feature).
- *
- * Version 1.13 (Apr 23, 1999)
- *		Didn't have (stat)? for else clause in tree parser.
- *		Didn't gen ASTs for interface extends.  Updated tree parser too.
- *		Updated to 2.6.0.
- * Version 1.14 (Jun 20, 1999)
- *		Allowed final/abstract on local classes.
- *		Removed local interfaces from methods
- *		Put instanceof precedence where it belongs...in relationalExpr
- *			It also had expr not type as arg; fixed it.
- *		Missing ! on SEMI in classBlock
- *		fixed: (expr) + "string" was parsed incorrectly (+ as unary plus).
- *		fixed: didn't like Object[].class in parser or tree parser
- * Version 1.15 (Jun 26, 1999)
- *		Screwed up rule with instanceof in it. :(  Fixed.
- *		Tree parser didn't like (expr).something; fixed.
- *		Allowed multiple inheritance in tree grammar. oops.
- * Version 1.16 (August 22, 1999)
- *		Extending an interface built a wacky tree: had extra EXTENDS.
- *		Tree grammar didn't allow multiple superinterfaces.
- *		Tree grammar didn't allow empty var initializer: {}
- * Version 1.17 (October 12, 1999)
- *		ESC lexer rule allowed 399 max not 377 max.
- *		java.tree.g didn't handle the expression of synchronized
- *			statements.
- *
- * Version tracking now done with following ID:
- *
- * $Id$
- *
- * BUG:
- * 		Doesn't like boolean.class!
- *
- * class Test {
- *   public static void main( String args[] ) {
- *     if (boolean.class.equals(boolean.class)) {
- *       System.out.println("works");
- *     }
- *   }
- * }
- *
- * This grammar is in the PUBLIC DOMAIN
- */
-class JavaRecognizer extends Parser;
-options {
-	k = 2;                           // two token lookahead
-	exportVocab=Java;                // Call its vocabulary "Java"
-	codeGenMakeSwitchThreshold = 2;  // Some optimizations
-	codeGenBitsetTestThreshold = 3;
-	defaultErrorHandler = false;     // Don't generate parser error handlers
-	buildAST = true;
-}
-
-tokens {
-	BLOCK; MODIFIERS; OBJBLOCK; SLIST; CTOR_DEF; METHOD_DEF; VARIABLE_DEF; 
-	INSTANCE_INIT; STATIC_INIT; TYPE; CLASS_DEF; INTERFACE_DEF; 
-	PACKAGE_DEF; ARRAY_DECLARATOR; EXTENDS_CLAUSE; IMPLEMENTS_CLAUSE;
-	PARAMETERS; PARAMETER_DEF; LABELED_STAT; TYPECAST; INDEX_OP; 
-	POST_INC; POST_DEC; METHOD_CALL; EXPR; ARRAY_INIT; 
-	IMPORT; UNARY_MINUS; UNARY_PLUS; CASE_GROUP; ELIST; FOR_INIT; FOR_CONDITION; 
-	FOR_ITERATOR; EMPTY_STAT; FINAL="final"; ABSTRACT="abstract";
-}
-	
-// Compilation Unit: In Java, this is a single file.  This is the start
-//   rule for this parser
-compilationUnit
-	:	// A compilation unit starts with an optional package definition
-		(	packageDefinition
-		|	/* nothing */
-		)
-
-		// Next we have a series of zero or more import statements
-		( importDefinition )*
-
-		// Wrapping things up with any number of class or interface
-		//    definitions
-		( typeDefinition )*
-
-		EOF!
-	;
-
-
-// Package statement: "package" followed by an identifier.
-packageDefinition
-	options {defaultErrorHandler = true;} // let ANTLR handle errors
-	:	p:"package"^ {#p.setType(PACKAGE_DEF);} identifier SEMI!
-	;
-
-
-// Import statement: import followed by a package or class name
-importDefinition
-	options {defaultErrorHandler = true;}
-	:	i:"import"^ {#i.setType(IMPORT);} identifierStar SEMI!
-	;
-
-// A type definition in a file is either a class or interface definition.
-typeDefinition
-	options {defaultErrorHandler = true;}
-	:	m:modifiers!
-		( classDefinition[#m]
-		| interfaceDefinition[#m]
-		)
-	|	SEMI!
-	;
-
-/** A declaration is the creation of a reference or primitive-type variable
- *  Create a separate Type/Var tree for each var in the var list.
- */
-declaration!
-	:	m:modifiers t:typeSpec[false] v:variableDefinitions[#m,#t]
-		{#declaration = #v;}
-	;
-
-// A list of zero or more modifiers.  We could have used (modifier)* in
-//   place of a call to modifiers, but I thought it was a good idea to keep
-//   this rule separate so they can easily be collected in a Vector if
-//   someone so desires
-modifiers
-	:	( modifier )*
-		{#modifiers = #([MODIFIERS, "MODIFIERS"], #modifiers);}
-	;
-
-
-// A type specification is a type name with possible brackets afterwards
-//   (which would make it an array type).
-typeSpec[boolean addImagNode]
-	: classTypeSpec[addImagNode]
-	| builtInTypeSpec[addImagNode]
-	;
-
-// A class type specification is a class type with possible brackets afterwards
-//   (which would make it an array type).
-classTypeSpec[boolean addImagNode]
-	:	identifier (lb:LBRACK^ {#lb.setType(ARRAY_DECLARATOR);} RBRACK!)*
-		{
-			if ( addImagNode ) {
-				#classTypeSpec = #(#[TYPE,"TYPE"], #classTypeSpec);
-			}
-		}
-	;
-
-// A builtin type specification is a builtin type with possible brackets
-// afterwards (which would make it an array type).
-builtInTypeSpec[boolean addImagNode]
-	:	builtInType (lb:LBRACK^ {#lb.setType(ARRAY_DECLARATOR);} RBRACK!)*
-		{
-			if ( addImagNode ) {
-				#builtInTypeSpec = #(#[TYPE,"TYPE"], #builtInTypeSpec);
-			}
-		}
-	;
-
-// A type name. which is either a (possibly qualified) class name or
-//   a primitive (builtin) type
-type
-	:	identifier
-	|	builtInType
-	;
-
-// The primitive types.
-builtInType
-	:	"void"
-	|	"boolean"
-	|	"byte"
-	|	"char"
-	|	"short"
-	|	"int"
-	|	"float"
-	|	"long"
-	|	"double"
-	;
-
-// A (possibly-qualified) java identifier.  We start with the first IDENT
-//   and expand its name by adding dots and following IDENTS
-identifier
-	:	IDENT  ( DOT^ IDENT )*
-	;
-
-identifierStar
-	:	IDENT
-		( DOT^ IDENT )*
-		( DOT^ STAR  )?
-	;
-
-
-// modifiers for Java classes, interfaces, class/instance vars and methods
-modifier
-	:	"private"
-	|	"public"
-	|	"protected"
-	|	"static"
-	|	"transient"
-	|	"final"
-	|	"abstract"
-	|	"native"
-	|	"threadsafe"
-	|	"synchronized"
-//	|	"const"			// reserved word; leave out
-	|	"volatile"
-	;
-
-
-// Definition of a Java class
-classDefinition![AST modifiers]
-	:	"class" IDENT
-		// it _might_ have a superclass...
-		sc:superClassClause
-		// it might implement some interfaces...
-		ic:implementsClause
-		// now parse the body of the class
-		cb:classBlock
-		{#classDefinition = #(#[CLASS_DEF,"CLASS_DEF"],
-							   modifiers,IDENT,sc,ic,cb);}
-	;
-
-superClassClause!
-	:	( "extends" id:identifier )?
-		{#superClassClause = #(#[EXTENDS_CLAUSE,"EXTENDS_CLAUSE"],id);}
-	;
-
-// Definition of a Java Interface
-interfaceDefinition![AST modifiers]
-	:	"interface" IDENT
-		// it might extend some other interfaces
-		ie:interfaceExtends
-		// now parse the body of the interface (looks like a class...)
-		cb:classBlock
-		{#interfaceDefinition = #(#[INTERFACE_DEF,"INTERFACE_DEF"],
-									modifiers,IDENT,ie,cb);}
-	;
-
-
-// This is the body of a class.  You can have fields and extra semicolons,
-// That's about it (until you see what a field is...)
-classBlock
-	:	LCURLY!
-			( field | SEMI! )*
-		RCURLY!
-		{#classBlock = #([OBJBLOCK, "OBJBLOCK"], #classBlock);}
-	;
-
-// An interface can extend several other interfaces...
-interfaceExtends
-	:	(
-		e:"extends"!
-		identifier ( COMMA! identifier )*
-		)?
-		{#interfaceExtends = #(#[EXTENDS_CLAUSE,"EXTENDS_CLAUSE"],
-							#interfaceExtends);}
-	;
-
-// A class can implement several interfaces...
-implementsClause
-	:	(
-			i:"implements"! identifier ( COMMA! identifier )*
-		)?
-		{#implementsClause = #(#[IMPLEMENTS_CLAUSE,"IMPLEMENTS_CLAUSE"],
-								 #implementsClause);}
-	;
-
-// Now the various things that can be defined inside a class or interface...
-// Note that not all of these are really valid in an interface (constructors,
-//   for example), and if this grammar were used for a compiler there would
-//   need to be some semantic checks to make sure we're doing the right thing...
-field!
-	:	// method, constructor, or variable declaration
-		mods:modifiers
-		(	h:ctorHead s:compoundStatement // constructor
-			{#field = #(#[CTOR_DEF,"CTOR_DEF"], mods, h, s);}
-
-		|	cd:classDefinition[#mods]       // inner class
-			{#field = #cd;}
-			
-		|	id:interfaceDefinition[#mods]   // inner interface
-			{#field = #id;}
-
-		|	t:typeSpec[false]  // method or variable declaration(s)
-			(	IDENT  // the name of the method
-
-				// parse the formal parameter declarations.
-				LPAREN! param:parameterDeclarationList RPAREN!
-
-				rt:returnTypeBrackersOnEndOfMethodHead[#t]
-
-				// get the list of exceptions that this method is declared to throw
-				(tc:throwsClause)?
-
-				( s2:compoundStatement | SEMI )
-				{#field = #(#[METHOD_DEF,"METHOD_DEF"],
-						     mods,
-							 #(#[TYPE,"TYPE"],rt),
-							 IDENT,
-							 param,
-							 tc,
-							 s2);}
-			|	v:variableDefinitions[#mods,#t] SEMI
-//				{#field = #(#[VARIABLE_DEF,"VARIABLE_DEF"], v);}
-				{#field = #v;}
-			)
-		)
-
-    // "static { ... }" class initializer
-	|	"static" s3:compoundStatement
-		{#field = #(#[STATIC_INIT,"STATIC_INIT"], s3);}
-
-    // "{ ... }" instance initializer
-	|	s4:compoundStatement
-		{#field = #(#[INSTANCE_INIT,"INSTANCE_INIT"], s4);}
-	;
-
-variableDefinitions[AST mods, AST t]
-	:	variableDeclarator[getASTFactory().dupTree(mods),
-						   getASTFactory().dupTree(t)]
-		(	COMMA!
-			variableDeclarator[getASTFactory().dupTree(mods),
-							   getASTFactory().dupTree(t)]
-		)*
-	;
-
-/** Declaration of a variable.  This can be a class/instance variable,
- *   or a local variable in a method
- * It can also include possible initialization.
- */
-variableDeclarator![AST mods, AST t]
-	:	id:IDENT d:declaratorBrackets[t] v:varInitializer
-		{#variableDeclarator = #(#[VARIABLE_DEF,"VARIABLE_DEF"], mods, #(#[TYPE,"TYPE"],d), id, v);}
-	;
-
-declaratorBrackets[AST typ]
-	:	{#declaratorBrackets=typ;}
-		(lb:LBRACK^ {#lb.setType(ARRAY_DECLARATOR);} RBRACK!)*
-	;
-
-varInitializer
-	:	( ASSIGN^ initializer )?
-	;
-
-// This is an initializer used to set up an array.
-arrayInitializer
-	:	lc:LCURLY^ {#lc.setType(ARRAY_INIT);}
-			(	initializer
-				(
-					// CONFLICT: does a COMMA after an initializer start a new
-					//           initializer or start the option ',' at end?
-					//           ANTLR generates proper code by matching
-					//			 the comma as soon as possible.
-					options {
-						warnWhenFollowAmbig = false;
-					}
-				:
-					COMMA! initializer
-				)*
-				(COMMA!)?
-			)?
-		RCURLY!
-	;
-
-
-// The two "things" that can initialize an array element are an expression
-//   and another (nested) array initializer.
-initializer
-	:	expression
-	|	arrayInitializer
-	;
-
-// This is the header of a method.  It includes the name and parameters
-//   for the method.
-//   This also watches for a list of exception classes in a "throws" clause.
-ctorHead
-	:	IDENT  // the name of the method
-
-		// parse the formal parameter declarations.
-		LPAREN! parameterDeclarationList RPAREN!
-
-		// get the list of exceptions that this method is declared to throw
-		(throwsClause)?
-	;
-
-// This is a list of exception classes that the method is declared to throw
-throwsClause
-	:	"throws"^ identifier ( COMMA! identifier )*
-	;
-
-
-returnTypeBrackersOnEndOfMethodHead[AST typ]
-	:	{#returnTypeBrackersOnEndOfMethodHead = typ;}
-		(lb:LBRACK^ {#lb.setType(ARRAY_DECLARATOR);} RBRACK!)*
-	;
-
-// A list of formal parameters
-parameterDeclarationList
-	:	( parameterDeclaration ( COMMA! parameterDeclaration )* )?
-		{#parameterDeclarationList = #(#[PARAMETERS,"PARAMETERS"],
-									#parameterDeclarationList);}
-	;
-
-// A formal parameter.
-parameterDeclaration!
-	:	pm:parameterModifier t:typeSpec[false] id:IDENT
-		pd:parameterDeclaratorBrackets[#t]
-		{#parameterDeclaration = #(#[PARAMETER_DEF,"PARAMETER_DEF"],
-									pm, #([TYPE,"TYPE"],pd), id);}
-	;
-
-parameterDeclaratorBrackets[AST t]
-	:	{#parameterDeclaratorBrackets = t;}
-		(lb:LBRACK^ {#lb.setType(ARRAY_DECLARATOR);} RBRACK!)*
-	;
-
-parameterModifier
-	:	(f:"final")?
-		{#parameterModifier = #(#[MODIFIERS,"MODIFIERS"], f);}
-	;
-
-// Compound statement.  This is used in many contexts:
-//   Inside a class definition prefixed with "static":
-//      it is a class initializer
-//   Inside a class definition without "static":
-//      it is an instance initializer
-//   As the body of a method
-//   As a completely indepdent braced block of code inside a method
-//      it starts a new scope for variable definitions
-
-compoundStatement
-	:	lc:LCURLY^ {#lc.setType(SLIST);}
-			// include the (possibly-empty) list of statements
-			(statement)*
-		RCURLY!
-	;
-
-
-statement
-	// A list of statements in curly braces -- start a new scope!
-	:	compoundStatement
-
-	// class definition
-	|	classDefinition[#[MODIFIERS, "MODIFIERS"]]
-
-	// final class definition
-	|	"final"! classDefinition[#(#[MODIFIERS, "MODIFIERS"],#[FINAL,"final"])]
-
-	// abstract class definition
-	|	"abstract"! classDefinition[#(#[MODIFIERS, "MODIFIERS"],#[ABSTRACT,"abstract"])]
-
-	// declarations are ambiguous with "ID DOT" relative to expression
-	// statements.  Must backtrack to be sure.  Could use a semantic
-	// predicate to test symbol table to see what the type was coming
-	// up, but that's pretty hard without a symbol table ;)
-	|	(declaration)=> declaration SEMI!
-
-	// An expression statement.  This could be a method call,
-	// assignment statement, or any other expression evaluated for
-	// side-effects.
-	|	expression SEMI!
-
-	// Attach a label to the front of a statement
-	|	IDENT c:COLON^ {#c.setType(LABELED_STAT);} statement
-
-	// If-else statement
-	|	"if"^ LPAREN! expression RPAREN! statement
-		(
-			// CONFLICT: the old "dangling-else" problem...
-			//           ANTLR generates proper code matching
-			//			 as soon as possible.  Hush warning.
-			options {
-				warnWhenFollowAmbig = false;
-			}
-		:
-			"else"! statement
-		)?
-
-	// For statement
-	|	"for"^
-			LPAREN!
-				forInit SEMI!   // initializer
-				forCond	SEMI!   // condition test
-				forIter         // updater
-			RPAREN!
-			statement                     // statement to loop over
-
-	// While statement
-	|	"while"^ LPAREN! expression RPAREN! statement
-
-	// do-while statement
-	|	"do"^ statement "while"! LPAREN! expression RPAREN! SEMI!
-
-	// get out of a loop (or switch)
-	|	"break"^ (IDENT)? SEMI!
-
-	// do next iteration of a loop
-	|	"continue"^ (IDENT)? SEMI!
-
-	// Return an expression
-	|	"return"^ (expression)? SEMI!
-
-	// switch/case statement
-	|	"switch"^ LPAREN! expression RPAREN! LCURLY!
-			( casesGroup )*
-		RCURLY!
-
-	// exception try-catch block
-	|	tryBlock
-
-	// throw an exception
-	|	"throw"^ expression SEMI!
-
-	// synchronize a statement
-	|	"synchronized"^ LPAREN! expression RPAREN! compoundStatement
-
-	// empty statement
-	|	s:SEMI {#s.setType(EMPTY_STAT);}
-	;
-
-
-casesGroup
-	:	(	// CONFLICT: to which case group do the statements bind?
-			//           ANTLR generates proper code: it groups the
-			//           many "case"/"default" labels together then
-			//           follows them with the statements
-			options {
-				warnWhenFollowAmbig = false;
-			}
-			:
-			aCase
-		)+
-		caseSList
-		{#casesGroup = #([CASE_GROUP, "CASE_GROUP"], #casesGroup);}
-	;
-
-aCase
-	:	("case"^ expression | "default") COLON!
-	;
-
-caseSList
-	:	(statement)*
-		{#caseSList = #(#[SLIST,"SLIST"],#caseSList);}
-	;
-
-// The initializer for a for loop
-forInit
-		// if it looks like a declaration, it is
-	:	(	(declaration)=> declaration
-		// otherwise it could be an expression list...
-		|	expressionList
-		)?
-		{#forInit = #(#[FOR_INIT,"FOR_INIT"],#forInit);}
-	;
-
-forCond
-	:	(expression)?
-		{#forCond = #(#[FOR_CONDITION,"FOR_CONDITION"],#forCond);}
-	;
-
-forIter
-	:	(expressionList)?
-		{#forIter = #(#[FOR_ITERATOR,"FOR_ITERATOR"],#forIter);}
-	;
-
-// an exception handler try/catch block
-tryBlock
-	:	"try"^ compoundStatement
-		(handler)*
-		( "finally"^ compoundStatement )?
-	;
-
-
-// an exception handler
-handler
-	:	"catch"^ LPAREN! parameterDeclaration RPAREN! compoundStatement
-	;
-
-
-// expressions
-// Note that most of these expressions follow the pattern
-//   thisLevelExpression :
-//       nextHigherPrecedenceExpression
-//           (OPERATOR nextHigherPrecedenceExpression)*
-// which is a standard recursive definition for a parsing an expression.
-// The operators in java have the following precedences:
-//    lowest  (13)  = *= /= %= += -= <<= >>= >>>= &= ^= |=
-//            (12)  ?:
-//            (11)  ||
-//            (10)  &&
-//            ( 9)  |
-//            ( 8)  ^
-//            ( 7)  &
-//            ( 6)  == !=
-//            ( 5)  < <= > >=
-//            ( 4)  << >>
-//            ( 3)  +(binary) -(binary)
-//            ( 2)  * / %
-//            ( 1)  ++ -- +(unary) -(unary)  ~  !  (type)
-//                  []   () (method call)  . (dot -- identifier qualification)
-//                  new   ()  (explicit parenthesis)
-//
-// the last two are not usually on a precedence chart; I put them in
-// to point out that new has a higher precedence than '.', so you
-// can validy use
-//     new Frame().show()
-// 
-// Note that the above precedence levels map to the rules below...
-// Once you have a precedence chart, writing the appropriate rules as below
-//   is usually very straightfoward
-
-
-
-// the mother of all expressions
-expression
-	:	assignmentExpression
-		{#expression = #(#[EXPR,"EXPR"],#expression);}
-	;
-
-
-// This is a list of expressions.
-expressionList
-	:	expression (COMMA! expression)*
-		{#expressionList = #(#[ELIST,"ELIST"], expressionList);}
-	;
-
-
-// assignment expression (level 13)
-assignmentExpression
-	:	conditionalExpression
-		(	(	ASSIGN^
-            |   PLUS_ASSIGN^
-            |   MINUS_ASSIGN^
-            |   STAR_ASSIGN^
-            |   DIV_ASSIGN^
-            |   MOD_ASSIGN^
-            |   SR_ASSIGN^
-            |   BSR_ASSIGN^
-            |   SL_ASSIGN^
-            |   BAND_ASSIGN^
-            |   BXOR_ASSIGN^
-            |   BOR_ASSIGN^
-            )
-			assignmentExpression
-		)?
-	;
-
-
-// conditional test (level 12)
-conditionalExpression
-	:	logicalOrExpression
-		( QUESTION^ assignmentExpression COLON! conditionalExpression )?
-	;
-
-
-// logical or (||)  (level 11)
-logicalOrExpression
-	:	logicalAndExpression (LOR^ logicalAndExpression)*
-	;
-
-
-// logical and (&&)  (level 10)
-logicalAndExpression
-	:	inclusiveOrExpression (LAND^ inclusiveOrExpression)*
-	;
-
-
-// bitwise or non-short-circuiting or (|)  (level 9)
-inclusiveOrExpression
-	:	exclusiveOrExpression (BOR^ exclusiveOrExpression)*
-	;
-
-
-// exclusive or (^)  (level 8)
-exclusiveOrExpression
-	:	andExpression (BXOR^ andExpression)*
-	;
-
-
-// bitwise or non-short-circuiting and (&)  (level 7)
-andExpression
-	:	equalityExpression (BAND^ equalityExpression)*
-	;
-
-
-// equality/inequality (==/!=) (level 6)
-equalityExpression
-	:	relationalExpression ((NOT_EQUAL^ | EQUAL^) relationalExpression)*
-	;
-
-
-// boolean relational expressions (level 5)
-relationalExpression
-	:	shiftExpression
-		(	(	(	LT^
-				|	GT^
-				|	LE^
-				|	GE^
-				)
-				shiftExpression
-			)*
-		|	"instanceof"^ typeSpec[true]
-		)
-	;
-
-
-// bit shift expressions (level 4)
-shiftExpression
-	:	additiveExpression ((SL^ | SR^ | BSR^) additiveExpression)*
-	;
-
-
-// binary addition/subtraction (level 3)
-additiveExpression
-	:	multiplicativeExpression ((PLUS^ | MINUS^) multiplicativeExpression)*
-	;
-
-
-// multiplication/division/modulo (level 2)
-multiplicativeExpression
-	:	unaryExpression ((STAR^ | DIV^ | MOD^ ) unaryExpression)*
-	;
-
-unaryExpression
-	:	INC^ unaryExpression
-	|	DEC^ unaryExpression
-	|	MINUS^ {#MINUS.setType(UNARY_MINUS);} unaryExpression
-	|	PLUS^  {#PLUS.setType(UNARY_PLUS);} unaryExpression
-	|	unaryExpressionNotPlusMinus
-	;
-
-unaryExpressionNotPlusMinus
-	:	BNOT^ unaryExpression
-	|	LNOT^ unaryExpression
-
-	|	(	// subrule allows option to shut off warnings
-			options {
-				// "(int" ambig with postfixExpr due to lack of sequence
-				// info in linear approximate LL(k).  It's ok.  Shut up.
-				generateAmbigWarnings=false;
-			}
-		:	// If typecast is built in type, must be numeric operand
-			// Also, no reason to backtrack if type keyword like int, float...
-			lpb:LPAREN^ {#lpb.setType(TYPECAST);} builtInTypeSpec[true] RPAREN!
-			unaryExpression
-
-			// Have to backtrack to see if operator follows.  If no operator
-			// follows, it's a typecast.  No semantic checking needed to parse.
-			// if it _looks_ like a cast, it _is_ a cast; else it's a "(expr)"
-		|	(LPAREN classTypeSpec[true] RPAREN unaryExpressionNotPlusMinus)=>
-			lp:LPAREN^ {#lp.setType(TYPECAST);} classTypeSpec[true] RPAREN!
-			unaryExpressionNotPlusMinus
-
-		|	postfixExpression
-		)
-	;
-
-// qualified names, array expressions, method invocation, post inc/dec
-postfixExpression
-	:	primaryExpression // start with a primary
-
-		(	// qualified id (id.id.id.id...) -- build the name
-			DOT^ ( IDENT
-				| "this"
-				| "class"
-				| newExpression
-				| "super" LPAREN ( expressionList )? RPAREN
-				)
-			// the above line needs a semantic check to make sure "class"
-			//   is the _last_ qualifier.
-
-			// allow ClassName[].class
-		|	( lbc:LBRACK^ {#lbc.setType(ARRAY_DECLARATOR);} RBRACK! )+
-			DOT^ "class"
-
-			// an array indexing operation
-		|	lb:LBRACK^ {#lb.setType(INDEX_OP);} expression RBRACK!
-
-			// method invocation
-			// The next line is not strictly proper; it allows x(3)(4) or
-			//  x[2](4) which are not valid in Java.  If this grammar were used
-			//  to validate a Java program a semantic check would be needed, or
-			//   this rule would get really ugly...
-		|	lp:LPAREN^ {#lp.setType(METHOD_CALL);}
-				argList
-			RPAREN!
-		)*
-
-		// possibly add on a post-increment or post-decrement.
-		// allows INC/DEC on too much, but semantics can check
-		(	in:INC^ {#in.setType(POST_INC);}
-	 	|	de:DEC^ {#de.setType(POST_DEC);}
-		|	// nothing
-		)
-
-		// look for int.class and int[].class
-	|	builtInType 
-		( lbt:LBRACK^ {#lbt.setType(ARRAY_DECLARATOR);} RBRACK! )*
-		DOT^ "class"
-	;
-
-// the basic element of an expression
-primaryExpression
-	:	IDENT
-	|	newExpression
-	|	constant
-	|	"super"
-	|	"true"
-	|	"false"
-	|	"this"
-	|	"null"
-	|	LPAREN! assignmentExpression RPAREN!
-	;
-
-/** object instantiation.
- *  Trees are built as illustrated by the following input/tree pairs:
- *  
- *  new T()
- *  
- *  new
- *   |
- *   T --  ELIST
- *           |
- *          arg1 -- arg2 -- .. -- argn
- *  
- *  new int[]
- *
- *  new
- *   |
- *  int -- ARRAY_DECLARATOR
- *  
- *  new int[] {1,2}
- *
- *  new
- *   |
- *  int -- ARRAY_DECLARATOR -- ARRAY_INIT
- *                                  |
- *                                EXPR -- EXPR
- *                                  |      |
- *                                  1      2
- *  
- *  new int[3]
- *  new
- *   |
- *  int -- ARRAY_DECLARATOR
- *                |
- *              EXPR
- *                |
- *                3
- *  
- *  new int[1][2]
- *  
- *  new
- *   |
- *  int -- ARRAY_DECLARATOR
- *               |
- *         ARRAY_DECLARATOR -- EXPR
- *               |              |
- *             EXPR             1
- *               |
- *               2
- *  
- */
-newExpression
-	:	"new"^ type
-		(	LPAREN! argList RPAREN! (classBlock)?
-
-			//java 1.1
-			// Note: This will allow bad constructs like
-			//    new int[4][][3] {exp,exp}.
-			//    There needs to be a semantic check here...
-			// to make sure:
-			//   a) [ expr ] and [ ] are not mixed
-			//   b) [ expr ] and an init are not used together
-
-		|	newArrayDeclarator (arrayInitializer)?
-		)
-	;
-
-argList
-	:	(	expressionList
-		|	/*nothing*/
-			{#argList = #[ELIST,"ELIST"];}
-		)
-	;
-
-newArrayDeclarator
-	:	(
-			// CONFLICT:
-			// newExpression is a primaryExpression which can be
-			// followed by an array index reference.  This is ok,
-			// as the generated code will stay in this loop as
-			// long as it sees an LBRACK (proper behavior)
-			options {
-				warnWhenFollowAmbig = false;
-			}
-		:
-			lb:LBRACK^ {#lb.setType(ARRAY_DECLARATOR);}
-				(expression)?
-			RBRACK!
-		)+
-	;
-
-constant
-	:	NUM_INT
-	|	CHAR_LITERAL
-	|	STRING_LITERAL
-	|	NUM_FLOAT
-	;
-
-
-//----------------------------------------------------------------------------
-// The Java scanner
-//----------------------------------------------------------------------------
-class JavaLexer extends Lexer;
-
-options {
-	exportVocab=Java;      // call the vocabulary "Java"
-	testLiterals=false;    // don't automatically test for literals
-	k=4;                   // four characters of lookahead
-}
-
-
-
-// OPERATORS
-QUESTION		:	'?'		;
-LPAREN			:	'('		;
-RPAREN			:	')'		;
-LBRACK			:	'['		;
-RBRACK			:	']'		;
-LCURLY			:	'{'		;
-RCURLY			:	'}'		;
-COLON			:	':'		;
-COMMA			:	','		;
-//DOT			:	'.'		;
-ASSIGN			:	'='		;
-EQUAL			:	"=="	;
-LNOT			:	'!'		;
-BNOT			:	'~'		;
-NOT_EQUAL		:	"!="	;
-DIV				:	'/'		;
-DIV_ASSIGN		:	"/="	;
-PLUS			:	'+'		;
-PLUS_ASSIGN		:	"+="	;
-INC				:	"++"	;
-MINUS			:	'-'		;
-MINUS_ASSIGN	:	"-="	;
-DEC				:	"--"	;
-STAR			:	'*'		;
-STAR_ASSIGN		:	"*="	;
-MOD				:	'%'		;
-MOD_ASSIGN		:	"%="	;
-SR				:	">>"	;
-SR_ASSIGN		:	">>="	;
-BSR				:	">>>"	;
-BSR_ASSIGN		:	">>>="	;
-GE				:	">="	;
-GT				:	">"		;
-SL				:	"<<"	;
-SL_ASSIGN		:	"<<="	;
-LE				:	"<="	;
-LT				:	'<'		;
-BXOR			:	'^'		;
-BXOR_ASSIGN		:	"^="	;
-BOR				:	'|'		;
-BOR_ASSIGN		:	"|="	;
-LOR				:	"||"	;
-BAND			:	'&'		;
-BAND_ASSIGN		:	"&="	;
-LAND			:	"&&"	;
-SEMI			:	';'		;
-
-
-// Whitespace -- ignored
-WS	:	(	' '
-		|	'\t'
-		|	'\f'
-		// handle newlines
-		|	(	"\r\n"  // Evil DOS
-			|	'\r'    // Macintosh
-			|	'\n'    // Unix (the right way)
-			)
-			{ newline(); }
-		)
-		{ _ttype = Token.SKIP; }
-	;
-
-// Single-line comments
-SL_COMMENT
-	:	"//"
-		(~('\n'|'\r'))* ('\n'|'\r'('\n')?)
-		{$setType(Token.SKIP); newline();}
-	;
-
-// multiple-line comments
-ML_COMMENT
-	:	"/*"
-		(	/*	'\r' '\n' can be matched in one alternative or by matching
-				'\r' in one iteration and '\n' in another.  I am trying to
-				handle any flavor of newline that comes in, but the language
-				that allows both "\r\n" and "\r" and "\n" to all be valid
-				newline is ambiguous.  Consequently, the resulting grammar
-				must be ambiguous.  I'm shutting this warning off.
-			 */
-			options {
-				generateAmbigWarnings=false;
-			}
-		:
-			{ LA(2)!='/' }? '*'
-		|	'\r' '\n'		{newline();}
-		|	'\r'			{newline();}
-		|	'\n'			{newline();}
-		|	~('*'|'\n'|'\r')
-		)*
-		"*/"
-		{$setType(Token.SKIP);}
-	;
-
-
-// character literals
-CHAR_LITERAL
-	:	'\'' ( ESC | ~'\'' ) '\''
-	;
-
-// string literals
-STRING_LITERAL
-	:	'"' (ESC|~('"'|'\\'))* '"'
-	;
-
-
-// escape sequence -- note that this is protected; it can only be called
-//   from another lexer rule -- it will not ever directly return a token to
-//   the parser
-// There are various ambiguities hushed in this rule.  The optional
-// '0'...'9' digit matches should be matched here rather than letting
-// them go back to STRING_LITERAL to be matched.  ANTLR does the
-// right thing by matching immediately; hence, it's ok to shut off
-// the FOLLOW ambig warnings.
-protected
-ESC
-	:	'\\'
-		(	'n'
-		|	'r'
-		|	't'
-		|	'b'
-		|	'f'
-		|	'"'
-		|	'\''
-		|	'\\'
-		|	('u')+ HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
-		|	('0'..'3')
-			(
-				options {
-					warnWhenFollowAmbig = false;
-				}
-			:	('0'..'7')
-				(	
-					options {
-						warnWhenFollowAmbig = false;
-					}
-				:	'0'..'7'
-				)?
-			)?
-		|	('4'..'7')
-			(
-				options {
-					warnWhenFollowAmbig = false;
-				}
-			:	('0'..'9')
-			)?
-		)
-	;
-
-
-// hexadecimal digit (again, note it's protected!)
-protected
-HEX_DIGIT
-	:	('0'..'9'|'A'..'F'|'a'..'f')
-	;
-
-
-// a dummy rule to force vocabulary to be all characters (except special
-//   ones that ANTLR uses internally (0 to 2)
-protected
-VOCAB
-	:	'\3'..'\377'
-	;
-
-
-// an identifier.  Note that testLiterals is set to true!  This means
-// that after we match the rule, we look in the literals table to see
-// if it's a literal or really an identifer
-IDENT
-	options {testLiterals=true;}
-	:	('a'..'z'|'A'..'Z'|'_'|'$') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'$')*
-	;
-
-
-// a numeric literal
-NUM_INT
-	{boolean isDecimal=false;}
-	:	'.' {_ttype = DOT;}
-			(('0'..'9')+ (EXPONENT)? (FLOAT_SUFFIX)? { _ttype = NUM_FLOAT; })?
-	|	(	'0' {isDecimal = true;} // special case for just '0'
-			(	('x'|'X')
-				(											// hex
-					// the 'e'|'E' and float suffix stuff look
-					// like hex digits, hence the (...)+ doesn't
-					// know when to stop: ambig.  ANTLR resolves
-					// it correctly by matching immediately.  It
-					// is therefor ok to hush warning.
-					options {
-						warnWhenFollowAmbig=false;
-					}
-				:	HEX_DIGIT
-				)+
-			|	('0'..'7')+									// octal
-			)?
-		|	('1'..'9') ('0'..'9')*  {isDecimal=true;}		// non-zero decimal
-		)
-		(	('l'|'L')
-		
-		// only check to see if it's a float if looks like decimal so far
-		|	{isDecimal}?
-			(	'.' ('0'..'9')* (EXPONENT)? (FLOAT_SUFFIX)?
-			|	EXPONENT (FLOAT_SUFFIX)?
-			|	FLOAT_SUFFIX
-			)
-			{ _ttype = NUM_FLOAT; }
-		)?
-	;
-
-
-// a couple protected methods to assist in matching floating point numbers
-protected
-EXPONENT
-	:	('e'|'E') ('+'|'-')? ('0'..'9')+
-	;
-
-
-protected
-FLOAT_SUFFIX
-	:	'f'|'F'|'d'|'D'
-	;
-
diff --git a/src/etc/testcases/taskdefs/optional/antlr/java.tree.g b/src/etc/testcases/taskdefs/optional/antlr/java.tree.g
deleted file mode 100644
index 5cb6d88..0000000
--- a/src/etc/testcases/taskdefs/optional/antlr/java.tree.g
+++ /dev/null
@@ -1,314 +0,0 @@
-/** Java 1.2 AST Recognizer Grammar
- *
- * Author:
- *	Terence Parr	parrt@jguru.com
- *
- * Version tracking now done with following ID:
- *
- * $Id$
- *
- * This grammar is in the PUBLIC DOMAIN
- *
- * BUGS
- */
-class JavaTreeParser extends TreeParser;
-
-options {
-	importVocab = Java;
-}
-
-compilationUnit
-	:	(packageDefinition)?
-		(importDefinition)*
-		(typeDefinition)*
-	;
-
-packageDefinition
-	:	#( PACKAGE_DEF identifier )
-	;
-
-importDefinition
-	:	#( IMPORT identifierStar )
-	;
-
-typeDefinition
-	:	#(CLASS_DEF modifiers IDENT extendsClause implementsClause objBlock )
-	|	#(INTERFACE_DEF modifiers IDENT extendsClause interfaceBlock )
-	;
-
-typeSpec
-	:	#(TYPE typeSpecArray)
-	;
-
-typeSpecArray
-	:	#( ARRAY_DECLARATOR typeSpecArray )
-	|	type
-	;
-
-type:	identifier
-	|	builtInType
-	;
-
-builtInType
-    :   "void"
-    |   "boolean"
-    |   "byte"
-    |   "char"
-    |   "short"
-    |   "int"
-    |   "float"
-    |   "long"
-    |   "double"
-    ;
-
-modifiers
-	:	#( MODIFIERS (modifier)* )
-	;
-
-modifier
-    :   "private"
-    |   "public"
-    |   "protected"
-    |   "static"
-    |   "transient"
-    |   "final"
-    |   "abstract"
-    |   "native"
-    |   "threadsafe"
-    |   "synchronized"
-    |   "const"
-    |   "volatile"
-    ;
-
-extendsClause
-	:	#(EXTENDS_CLAUSE (identifier)* )
-	;
-
-implementsClause
-	:	#(IMPLEMENTS_CLAUSE (identifier)* )
-	;
-
-
-interfaceBlock
-	:	#(	OBJBLOCK
-			(	methodDecl
-			|	variableDef
-			)*
-		)
-	;
-	
-objBlock
-	:	#(	OBJBLOCK
-			(	ctorDef
-			|	methodDef
-			|	variableDef
-			|	typeDefinition
-			|	#(STATIC_INIT slist)
-			|	#(INSTANCE_INIT slist)
-			)*
-		)
-	;
-
-ctorDef
-	:	#(CTOR_DEF modifiers methodHead slist)
-	;
-
-methodDecl
-	:	#(METHOD_DEF modifiers typeSpec methodHead)
-	;
-
-methodDef
-	:	#(METHOD_DEF modifiers typeSpec methodHead (slist)?)
-	;
-
-variableDef
-	:	#(VARIABLE_DEF modifiers typeSpec variableDeclarator varInitializer)
-	;
-
-parameterDef
-	:	#(PARAMETER_DEF modifiers typeSpec IDENT )
-	;
-
-objectinitializer
-	:	#(INSTANCE_INIT slist)
-	;
-
-variableDeclarator
-	:	IDENT
-	|	LBRACK variableDeclarator
-	;
-
-varInitializer
-	:	#(ASSIGN initializer)
-	|
-	;
-
-initializer
-	:	expression
-	|	arrayInitializer
-	;
-
-arrayInitializer
-	:	#(ARRAY_INIT (initializer)*)
-	;
-
-methodHead
-	:	IDENT #( PARAMETERS (parameterDef)* ) (throwsClause)?
-	;
-
-throwsClause
-	:	#( "throws" (identifier)* )
-	;
-
-identifier
-	:	IDENT
-	|	#( DOT identifier IDENT )
-	;
-
-identifierStar
-	:	IDENT
-	|	#( DOT identifier (STAR|IDENT) )
-	;
-
-slist
-	:	#( SLIST (stat)* )
-	;
-
-stat:	typeDefinition
-	|	variableDef
-	|	expression
-	|	#(LABELED_STAT IDENT stat)
-	|	#("if" expression stat (stat)? )
-	|	#(	"for"
-			#(FOR_INIT (variableDef | elist)?)
-			#(FOR_CONDITION (expression)?)
-			#(FOR_ITERATOR (elist)?)
-			stat
-		)
-	|	#("while" expression stat)
-	|	#("do" stat expression)
-	|	#("break" (IDENT)? )
-	|	#("continue" (IDENT)? )
-	|	#("return" (expression)? )
-	|	#("switch" expression (caseGroup)*)
-	|	#("throw" expression)
-	|	#("synchronized" expression stat)
-	|	tryBlock
-	|	slist // nested SLIST
-	|	EMPTY_STAT
-	;
-
-caseGroup
-	:	#(CASE_GROUP (#("case" expression) | "default")+ slist)
-	;
-
-tryBlock
-	:	#( "try" slist (handler)* (#("finally" slist))? )
-	;
-
-handler
-	:	#( "catch" parameterDef slist )
-	;
-
-elist
-	:	#( ELIST (expression)* )
-	;
-
-expression
-	:	#(EXPR expr)
-	;
-
-expr:	#(QUESTION expr expr expr)	// trinary operator
-	|	#(ASSIGN expr expr)			// binary operators...
-	|	#(PLUS_ASSIGN expr expr)
-	|	#(MINUS_ASSIGN expr expr)
-	|	#(STAR_ASSIGN expr expr)
-	|	#(DIV_ASSIGN expr expr)
-	|	#(MOD_ASSIGN expr expr)
-	|	#(SR_ASSIGN expr expr)
-	|	#(BSR_ASSIGN expr expr)
-	|	#(SL_ASSIGN expr expr)
-	|	#(BAND_ASSIGN expr expr)
-	|	#(BXOR_ASSIGN expr expr)
-	|	#(BOR_ASSIGN expr expr)
-	|	#(LOR expr expr)
-	|	#(LAND expr expr)
-	|	#(BOR expr expr)
-	|	#(BXOR expr expr)
-	|	#(BAND expr expr)
-	|	#(NOT_EQUAL expr expr)
-	|	#(EQUAL expr expr)
-	|	#(LT expr expr)
-	|	#(GT expr expr)
-	|	#(LE expr expr)
-	|	#(GE expr expr)
-	|	#(SL expr expr)
-	|	#(SR expr expr)
-	|	#(BSR expr expr)
-	|	#(PLUS expr expr)
-	|	#(MINUS expr expr)
-	|	#(DIV expr expr)
-	|	#(MOD expr expr)
-	|	#(STAR expr expr)
-	|	#(INC expr)
-	|	#(DEC expr)
-	|	#(POST_INC expr)
-	|	#(POST_DEC expr)
-	|	#(BNOT expr)
-	|	#(LNOT expr)
-	|	#("instanceof" expr expr)
-	|	#(UNARY_MINUS expr)
-	|	#(UNARY_PLUS expr)
-	|	primaryExpression
-	;
-
-primaryExpression
-    :   IDENT
-    |   #(	DOT
-			(	expr
-				(	IDENT
-				|	arrayIndex
-				|	"this"
-				|	"class"
-				|	#( "new" IDENT elist )
-				)
-			|	#(ARRAY_DECLARATOR type)
-			|	builtInType ("class")?
-			)
-		)
-	|	arrayIndex
-	|	#(METHOD_CALL primaryExpression elist)
-	|	#(TYPECAST typeSpec expr)
-	|   newExpression
-	|   constant
-    |   "super"
-    |   "true"
-    |   "false"
-    |   "this"
-    |   "null"
-	|	typeSpec // type name used with instanceof
-	;
-
-arrayIndex
-	:	#(INDEX_OP primaryExpression expression)
-	;
-
-constant
-    :   NUM_INT
-    |   CHAR_LITERAL
-    |   STRING_LITERAL
-    |   NUM_FLOAT
-    ;
-
-newExpression
-	:	#(	"new" type
-			(	newArrayDeclarator (arrayInitializer)?
-			|	elist
-			)
-		)
-			
-	;
-
-newArrayDeclarator
-	:	#( ARRAY_DECLARATOR (newArrayDeclarator)? (expression)? )
-	;
diff --git a/src/etc/testcases/taskdefs/rename.xml b/src/etc/testcases/taskdefs/rename.xml
deleted file mode 100644
index 73db635..0000000
--- a/src/etc/testcases/taskdefs/rename.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-    <rename/>
-  </target>
-
-  <target name="test2">
-    <rename src=""/>
-  </target>
-
-  <target name="test3">
-    <rename dest=""/>
-  </target>
-
-  <target name="test4">
-    <rename src="testdir" 
-            dest="testdir"/>
-  </target>
-
-  <target name="test5">
-    <rename src="template.xml" 
-            dest="."/>
-  </target>
-
-  <target name="test6">
-    <rename src="template.xml" 
-            dest="template.tmp"/>
-    <rename src="template.tmp" 
-            dest="template.xml"/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/replace.xml b/src/etc/testcases/taskdefs/replace.xml
deleted file mode 100644
index e7cf195..0000000
--- a/src/etc/testcases/taskdefs/replace.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-    <replace/>
-  </target>
-
-  <target name="test2">
-    <replace file=""/>
-  </target>
-
-  <target name="test3">
-    <replace file="template.xml"/>
-  </target>
-
-  <target name="test4">
-    <replace file="template.xml" token=""/>
-  </target>
-
-  <target name="test5">
-    <replace file="template.xml" 
-             token="dont_want_to_really_replace_something"/>
-  </target>
-
-  <target name="test6">
-    <replace file="template.xml">
-      <replacefilter />
-    </replace>
-  </target>
-
-  <target name="test7">
-    <replace file="template.xml">
-      <replacefilter token="" />
-    </replace>
-  </target>
-
-  <target name="test8">
-    <replace file="template.xml">
-      <replacefilter token="dont_want_to_really_replace_something" />
-    </replace>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/tar.xml b/src/etc/testcases/taskdefs/tar.xml
deleted file mode 100644
index 7c95f49..0000000
--- a/src/etc/testcases/taskdefs/tar.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-    <tar/>
-  </target>
-
-  <target name="test2">
-    <tar tarfile=""/>
-  </target>
-
-  <target name="test3">
-    <tar basedir=""/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/taskdef.xml b/src/etc/testcases/taskdefs/taskdef.xml
deleted file mode 100644
index ff52701..0000000
--- a/src/etc/testcases/taskdefs/taskdef.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-    <taskdef/>
-  </target>
-
-  <target name="test2">
-    <taskdef name=""/>
-  </target>
-
-  <target name="test3">
-    <taskdef classname=""/>
-  </target>
-
-  <target name="test4">
-    <taskdef name="" classname="oops"/>
-  </target>
-
-  <target name="test5">
-    <taskdef name="test" classname="org.apache.tools.ant.Project" />
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/template.xml b/src/etc/testcases/taskdefs/template.xml
deleted file mode 100644
index e2aef3e..0000000
--- a/src/etc/testcases/taskdefs/template.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-  </target>
-
-  <target name="test2">
-  </target>
-
-  <target name="test3">
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/unzip.xml b/src/etc/testcases/taskdefs/unzip.xml
deleted file mode 100644
index 0e462db..0000000
--- a/src/etc/testcases/taskdefs/unzip.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-    <unzip/>
-  </target>
-
-  <target name="test2">
-    <unzip src=""/>
-  </target>
-
-  <target name="test3">
-    <unzip dest=""/>
-  </target>
-
-</project>
diff --git a/src/etc/testcases/taskdefs/zip.xml b/src/etc/testcases/taskdefs/zip.xml
deleted file mode 100644
index ce09aad..0000000
--- a/src/etc/testcases/taskdefs/zip.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="xxx-test" basedir="." default="test1">
-
-  <target name="test1">
-    <zip/>
-  </target>
-
-  <target name="test2">
-    <zip zipfile="zip.tmp"/>
-  </target>
-
-</project>
diff --git a/src/main/org/apache/tools/ant/AntClassLoader.java b/src/main/org/apache/tools/ant/AntClassLoader.java
deleted file mode 100644
index 0eb41fa..0000000
--- a/src/main/org/apache/tools/ant/AntClassLoader.java
+++ /dev/null
@@ -1,501 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000-2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.lang.reflect.*;
-import java.util.*;
-import java.util.zip.*;
-import java.io.*;
-import org.apache.tools.ant.types.Path;
-
-/**
- * Used to load classes within ant with a different claspath from that used to start ant.
- * Note that it is possible to force a class into this loader even when that class is on the
- * system classpath by using the forceLoadClass method. Any subsequent classes loaded by that
- * class will then use this loader rather than the system class loader.
- *
- * @author <a href="mailto:conor@cortexebusiness.com.au">Conor MacNeill</a>
- * @author <a href="mailto:Jesse.Glick@netbeans.com">Jesse Glick</a>
- */
-public class AntClassLoader  extends ClassLoader {
-    /**
-     * The size of buffers to be used in this classloader.
-     */
-    static private final int BUFFER_SIZE = 1024;
-    
-    /**
-     * The classpath that is to be used when loading classes using this class loader.
-     */ 
-    private Path classpath;
-    
-    /**
-     * The project to which this class loader belongs.
-     */
-    private Project project;
-
-    /**
-     * Indicates whether the system class loader should be 
-     * consulted before trying to load with this class loader. 
-     */
-    private boolean systemFirst = true;
-
-    /**
-     * These are the package roots that are to be loaded by the system class loader
-     * regardless of whether the system class loader is being searched first or not.
-     */
-    private Vector systemPackages = new Vector();
-    
-    /**
-     * These are the package roots that are to be loaded by this class loader
-     * regardless of whether the system class loader is being searched first or not.
-     */
-    private Vector loaderPackages = new Vector();
-    
-    private static Method getProtectionDomain = null;
-    private static Method defineClassProtectionDomain = null;
-    static {
-        try {
-            getProtectionDomain = Class.class.getMethod("getProtectionDomain", new Class[0]);
-            Class protectionDomain = Class.forName("java.security.ProtectionDomain");
-            Class[] args = new Class[] {String.class, byte[].class, Integer.TYPE, Integer.TYPE, protectionDomain};
-            defineClassProtectionDomain = ClassLoader.class.getDeclaredMethod("defineClass", args);
-        }
-        catch (Exception e) {}
-    }
-
-
-    /**
-     * Create a classloader for the given project using the classpath given.
-     *
-     * @param project the project to ehich this classloader is to belong.
-     * @param classpath the classpath to use to load the classes.  This
-     *                is combined with the system classpath in a manner
-     *                determined by the value of ${build.sysclasspath}
-     */
-    public AntClassLoader(Project project, Path classpath) {
-        this.project = project;
-        this.classpath = classpath.concatSystemClasspath("ignore");
-
-        // JDK > 1.1 should add these by default, but some VMs don't
-        addSystemPackageRoot("java");
-        addSystemPackageRoot("javax");
-    }
-
-    /**
-     * Create a classloader for the given project using the classpath given.
-     *
-     * @param project the project to which this classloader is to belong.
-     * @param classpath the classpath to use to load the classes.
-     */
-    public AntClassLoader(Project project, Path classpath, boolean systemFirst) {
-        this(project, classpath);
-        this.systemFirst = systemFirst;
-    }
-    
-    /**
-     * Add a package root to the list of packages which must be loaded on the 
-     * system loader.
-     *
-     * All subpackages are also included.
-     *
-     * @param packageRoot the root of all packages to be included.
-     */
-    public void addSystemPackageRoot(String packageRoot) {
-        systemPackages.addElement(packageRoot + ".");
-    }
-    
-    /**
-     * Add a package root to the list of packages which must be loaded using
-     * this loader.
-     *
-     * All subpackages are also included.
-     *
-     * @param packageRoot the root of akll packages to be included.
-     */
-    public void addLoaderPackageRoot(String packageRoot) {
-        loaderPackages.addElement(packageRoot + ".");
-    }
-    
-
-
-    /**
-     * Load a class through this class loader even if that class is available on the
-     * system classpath.
-     *
-     * This ensures that any classes which are loaded by the returned class will use this
-     * classloader.
-     *
-     * @param classname the classname to be loaded.
-     * 
-     * @return the required Class object
-     *
-     * @throws ClassNotFoundException if the requested class does not exist on
-     * this loader's classpath.
-     */
-    public Class forceLoadClass(String classname) throws ClassNotFoundException {
-        project.log("force loading " + classname, Project.MSG_DEBUG);
-        Class theClass = findLoadedClass(classname);
-
-        if (theClass == null) {
-            theClass = findClass(classname);
-        }
-        
-        return theClass;
-    }
-
-    /**
-     * Load a class through this class loader but defer to the system class loader
-     *
-     * This ensures that instances of the returned class will be compatible with instances which
-     * which have already been loaded on the system loader.
-     *
-     * @param classname the classname to be loaded.
-     * 
-     * @return the required Class object
-     *
-     * @throws ClassNotFoundException if the requested class does not exist on
-     * this loader's classpath.
-     */
-    public Class forceLoadSystemClass(String classname) throws ClassNotFoundException {
-        project.log("force system loading " + classname, Project.MSG_DEBUG);
-        Class theClass = findLoadedClass(classname);
-
-        if (theClass == null) {
-            theClass = findBaseClass(classname);
-        }
-        
-        return theClass;
-    }
-
-    /**
-     * Get a stream to read the requested resource name.
-     *
-     * @param name the name of the resource for which a stream is required.
-     *
-     * @return a stream to the required resource or null if the resource cannot be
-     * found on the loader's classpath.
-     */
-    public InputStream getResourceAsStream(String name) {
-        // we need to search the components of the path to see if we can find the 
-        // class we want. 
-        InputStream stream = null;
- 
-        String[] pathElements = classpath.list();
-        for (int i = 0; i < pathElements.length && stream == null; ++i) {
-            File pathComponent = project.resolveFile((String)pathElements[i]);
-            stream = getResourceStream(pathComponent, name);
-        }
-
-        return stream;
-    }
-
-    /**
-     * Get an inputstream to a given resource in the given file which may
-     * either be a directory or a zip file.
-     *
-     * @param file the file (directory or jar) in which to search for the resource.
-     * @param resourceName the name of the resource for which a stream is required.
-     *
-     * @return a stream to the required resource or null if the resource cannot be
-     * found in the given file object
-     */
-    private InputStream getResourceStream(File file, String resourceName) {
-        try {
-            if (!file.exists()) {
-                return null;
-            }
-            
-            if (file.isDirectory()) {
-                File resource = new File(file, resourceName); 
-                
-                if (resource.exists()) {   
-                    return new FileInputStream(resource);
-                }
-            }
-            else {
-                ZipFile zipFile = null;
-                try {
-                    zipFile = new ZipFile(file);
-        
-                    ZipEntry entry = zipFile.getEntry(resourceName);
-                    if (entry != null) {
-                        // we need to read the entry out of the zip file into
-                        // a baos and then 
-                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                        byte[] buffer = new byte[BUFFER_SIZE];
-                        int bytesRead;
-                        InputStream stream = zipFile.getInputStream(entry);
-                        while ((bytesRead = stream.read(buffer, 0, BUFFER_SIZE)) != -1) {
-                            baos.write(buffer, 0, bytesRead);
-                        }
-                        return new ByteArrayInputStream(baos.toByteArray());   
-                    }
-                }
-                finally {
-                    if (zipFile != null) {
-                        zipFile.close();
-                    }
-                }
-            }
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-        }
-        
-        return null;   
-    }
-
-    /**
-     * Load a class with this class loader.
-     *
-     * This method will load a class. 
-     *
-     * This class attempts to load the class firstly using the parent class loader. For
-     * JDK 1.1 compatability, this uses the findSystemClass method.
-     *
-     * @param classname the name of the class to be loaded.
-     * @param resolve true if all classes upon which this class depends are to be loaded.
-     * 
-     * @return the required Class object
-     *
-     * @throws ClassNotFoundException if the requested class does not exist on
-     * the system classpath or this loader's classpath.
-     */
-    protected Class loadClass(String classname, boolean resolve) throws ClassNotFoundException {
-
-        // default to the global setting and then see
-        // if this class belongs to a package which has been
-        // designated to use a specific loader first (this one or the system one)
-        boolean useSystemFirst = systemFirst; 
-
-        for (Enumeration e = systemPackages.elements(); e.hasMoreElements();) {
-            String packageName = (String)e.nextElement();
-            if (classname.startsWith(packageName)) {
-                useSystemFirst = true;
-                break;
-            }
-        }
-
-        for (Enumeration e = loaderPackages.elements(); e.hasMoreElements();) {
-            String packageName = (String)e.nextElement();
-            if (classname.startsWith(packageName)) {
-                useSystemFirst = false;
-                break;
-            }
-        }
-
-        Class theClass = findLoadedClass(classname);
-        if (theClass == null) {
-            if (useSystemFirst) {
-                try {
-                    theClass = findBaseClass(classname);
-                    project.log("Class " + classname + " loaded from system loader", Project.MSG_DEBUG);
-                }
-                catch (ClassNotFoundException cnfe) {
-                    theClass = findClass(classname);
-                    project.log("Class " + classname + " loaded from ant loader", Project.MSG_DEBUG);
-                }
-            }
-            else {
-                try {
-                    theClass = findClass(classname);
-                    project.log("Class " + classname + " loaded from ant loader", Project.MSG_DEBUG);
-                }
-                catch (ClassNotFoundException cnfe) {
-                    theClass = findBaseClass(classname);
-                    project.log("Class " + classname + " loaded from system loader", Project.MSG_DEBUG);
-                }
-            }
-        }
-            
-        if (resolve) {
-            resolveClass(theClass);
-        }
-        
-        return theClass;
-    }
-
-    /**
-     * Convert the class dot notation to a file system equivalent for
-     * searching purposes.
-     *
-     * @param classname the class name in dot format (ie java.lang.Integer)
-     *
-     * @return the classname in file system format (ie java/lang/Integer.class)
-     */
-    private String getClassFilename(String classname) {
-        return classname.replace('.', '/') + ".class";
-    }
-
-    /**
-     * Read a class definition from a stream.
-     *
-     * @param stream the stream from which the class is to be read.
-     * @param classname the class name of the class in the stream.
-     *
-     * @return the Class object read from the stream.
-     *
-     * @throws IOException if there is a problem reading the class from the
-     * stream.
-     */
-    private Class getClassFromStream(InputStream stream, String classname) 
-                throws IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        int bytesRead = -1;
-        byte[] buffer = new byte[1024];
-        
-        while ((bytesRead = stream.read(buffer, 0, 1024)) != -1) {
-            baos.write(buffer, 0, bytesRead);
-        }
-        
-        byte[] classData = baos.toByteArray();
-
-        // Simply put:
-        // defineClass(classname, classData, 0, classData.length, Project.class.getProtectionDomain());
-        // Made more elaborate to be 1.1-safe.
-        if (defineClassProtectionDomain != null) {
-            try {
-                Object domain = getProtectionDomain.invoke(Project.class, new Object[0]);
-                Object[] args = new Object[] {classname, classData, new Integer(0), new Integer(classData.length), domain};
-                return (Class)defineClassProtectionDomain.invoke(this, args);
-            }
-            catch (InvocationTargetException ite) {
-                Throwable t = ite.getTargetException();
-                if (t instanceof ClassFormatError) {
-                    throw (ClassFormatError)t;
-                }
-                else {
-                    throw new IOException(t.toString());
-                }
-            }
-            catch (Exception e) {
-                throw new IOException(e.toString());
-            }
-        }
-        else {
-            return defineClass(classname, classData, 0, classData.length); 
-        }
-    }
-
-    /**
-     * Search for and load a class on the classpath of this class loader.
-     *
-     * @param name the classname to be loaded.
-     * 
-     * @return the required Class object
-     *
-     * @throws ClassNotFoundException if the requested class does not exist on
-     * this loader's classpath.
-     */
-    public Class findClass(String name) throws ClassNotFoundException {
-        project.log("Finding class " + name, Project.MSG_DEBUG);
-
-        try {
-            return findClass(name, classpath);
-        }
-        catch (ClassNotFoundException e) {
-            throw e;
-        }
-    }
-
-
-    /**
-     * Find a class on the given classpath.
-     */
-    private Class findClass(String name, Path path) throws ClassNotFoundException {
-        // we need to search the components of the path to see if we can find the 
-        // class we want. 
-        InputStream stream = null;
-        String classFilename = getClassFilename(name);
-        try {
-            String[] pathElements = path.list();
-            for (int i = 0; i < pathElements.length && stream == null; ++i) {
-                File pathComponent = project.resolveFile((String)pathElements[i]);
-                stream = getResourceStream(pathComponent, classFilename);
-            }
-        
-            if (stream == null) {
-                throw new ClassNotFoundException();
-            }
-                
-            return getClassFromStream(stream, name);
-        }
-        catch (IOException ioe) {
-            ioe.printStackTrace();
-            throw new ClassNotFoundException();
-        }
-        finally {
-            try {
-                if (stream != null) {
-                    stream.close();
-                }
-            }
-            catch (IOException e) {}
-        }
-    }
-
-    /**
-     * Find a system class (which should be loaded from the same classloader as the Ant core).
-     */
-    private Class findBaseClass(String name) throws ClassNotFoundException {
-        ClassLoader base = AntClassLoader.class.getClassLoader();
-        if (base == null) {
-            return findSystemClass(name);
-        }
-        else {
-            return base.loadClass(name);
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/BuildEvent.java b/src/main/org/apache/tools/ant/BuildEvent.java
deleted file mode 100644
index 359c1ff..0000000
--- a/src/main/org/apache/tools/ant/BuildEvent.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant;
-
-import java.util.EventObject;
-
-public class BuildEvent extends EventObject {
-    private Project project;
-    private Target target;
-    private Task task;
-    private String message;
-    private int priority = Project.MSG_VERBOSE;
-    private Throwable exception;
-
-    /**
-     * Construct a BuildEvent for a project level event
-     *
-     * @param project the project that emitted the event.
-     */
-    public BuildEvent(Project project) {
-        super(project);
-        this.project = project;
-        this.target = null;
-        this.task = null;
-    }
-    
-    /**
-     * Construct a BuildEvent for a target level event
-     *
-     * @param target the target that emitted the event.
-     */
-    public BuildEvent(Target target) {
-        super(target);
-        this.project = target.getProject();
-        this.target = target;
-        this.task = null;
-    }
-    
-    /**
-     * Construct a BuildEvent for a task level event
-     *
-     * @param task the task that emitted the event.
-     */
-    public BuildEvent(Task task) {
-        super(task);
-        this.project = task.getProject();
-        this.target = task.getOwningTarget();
-        this.task = task;
-    }
-
-    public void setMessage(String message, int priority) {
-        this.message = message;
-        this.priority = priority;
-    }
-    
-    public void setException(Throwable exception) {
-        this.exception = exception;
-    }
-
-    /**
-     *  Returns the project that fired this event.
-     */
-    public Project getProject() {
-        return project;
-    }
-
-    /**
-     *  Returns the target that fired this event.
-     */
-    public Target getTarget() {
-        
-        return target;
-    }
-
-    /**
-     *  Returns the task that fired this event.
-     */
-    public Task getTask() {
-        return task;
-    }
-
-    /**
-     *  Returns the logging message. This field will only be set
-     *  for "messageLogged" events.
-     *
-     *  @see BuildListener#messageLogged(BuildEvent)
-     */
-    public String getMessage() {
-        return message;
-    }
-
-    /**
-     *  Returns the priority of the logging message. This field will only
-     *  be set for "messageLogged" events.
-     *
-     *  @see BuildListener#messageLogged(BuildEvent)
-     */
-    public int getPriority(){
-        return priority;
-    }
-
-    /**
-     *  Returns the exception that was thrown, if any. This field will only
-     *  be set for "taskFinished", "targetFinished", and "buildFinished" events.
-     *
-     *  @see BuildListener#taskFinished(BuildEvent)
-     *  @see BuildListener#targetFinished(BuildEvent)
-     *  @see BuildListener#buildFinished(BuildEvent)
-     */
-    public Throwable getException() {
-        return exception;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/BuildException.java b/src/main/org/apache/tools/ant/BuildException.java
deleted file mode 100644
index efbda74..0000000
--- a/src/main/org/apache/tools/ant/BuildException.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant;
-
-
-import java.io.*;
-
-/**
- * Signals an error condition during a build.
- *
- * @author James Duncan Davidson
- */
-public class BuildException extends RuntimeException {
-
-    /** Exception that might have caused this one. */
-    private Throwable cause;
-
-    /** Location in the build file where the exception occured */
-    private Location location = Location.UNKNOWN_LOCATION;
-
-    /**
-     * Constructs a build exception with no descriptive information.
-     */
-    public BuildException() {
-        super();
-    }
-
-    /**
-     * Constructs an exception with the given descriptive message.
-     * @param msg Description of or information about the exception.
-     */
-    public BuildException(String msg) {
-        super(msg);
-    }
-
-    /**
-     * Constructs an exception with the given message and exception as
-     * a root cause.
-     * @param msg Description of or information about the exception.
-     * @param cause Throwable that might have cause this one.
-     */
-    public BuildException(String msg, Throwable cause) {
-        super(msg);
-        this.cause = cause;
-    }
-
-    /**
-     * Constructs an exception with the given message and exception as
-     * a root cause and a location in a file.
-     * @param msg Description of or information about the exception.
-     * @param cause Exception that might have cause this one.
-     * @param location Location in the project file where the error occured.
-     */
-    public BuildException(String msg, Throwable cause, Location location) {
-        this(msg, cause);
-        this.location = location;
-    }
-
-    /**
-     * Constructs an exception with the given exception as a root cause.
-     * @param cause Exception that might have caused this one.
-     */
-    public BuildException(Throwable cause) {
-        super(cause.toString());
-        this.cause = cause;
-    }
-
-    /**
-     * Constructs an exception with the given descriptive message and a location
-     * in a file.
-     * @param msg Description of or information about the exception.
-     * @param location Location in the project file where the error occured.
-     */
-    public BuildException(String msg, Location location) {
-        super(msg);
-        this.location = location;
-    }
-
-    /**
-     * Constructs an exception with the given exception as
-     * a root cause and a location in a file.
-     * @param cause Exception that might have cause this one.
-     * @param location Location in the project file where the error occured.
-     */
-    public BuildException(Throwable cause, Location location) {
-        this(cause);
-        this.location = location;
-    }
-
-    /**
-     * Returns the nested exception.
-     */
-    public Throwable getException() {
-        return cause;
-    }
-
-    /**
-     * Returns the location of the error and the error message.
-     */
-    public String toString() {
-        return location.toString() + getMessage();
-    }
-
-    /**
-     * Sets the file location where the error occured.
-     */
-    public void setLocation(Location location) {
-        this.location = location;
-    }
-
-    /**
-     * Returns the file location where the error occured.
-     */
-    public Location getLocation() {
-        return location;
-    }
-
-    // Override stack trace methods to show original cause:
-    public void printStackTrace() {
-        printStackTrace(System.err);
-    }
-    
-    public void printStackTrace(PrintStream ps) {
-        synchronized (ps) {
-            ps.println(this);
-            if (cause != null) {
-                ps.println("--- Nested Exception ---");
-                cause.printStackTrace(ps);
-            }
-        }
-    }
-    
-    public void printStackTrace(PrintWriter pw) {
-        synchronized (pw) {
-            pw.println(this);
-            if (cause != null) {
-                pw.println("--- Nested Exception ---");
-                cause.printStackTrace(pw);
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/BuildListener.java b/src/main/org/apache/tools/ant/BuildListener.java
deleted file mode 100644
index 1f4f591..0000000
--- a/src/main/org/apache/tools/ant/BuildListener.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.util.EventListener;
-
-/**
- *  Classes that implement this interface will be notified when
- *  things happend during a build.
- *
- *  @see BuildEvent
- *  @see Project#addBuildListener(BuildListener)
- */
-public interface BuildListener extends EventListener {
-
-    /**
-     *  Fired before any targets are started.
-     */
-    public void buildStarted(BuildEvent event);
-
-    /**
-     *  Fired after the last target has finished. This event
-     *  will still be thrown if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void buildFinished(BuildEvent event);
-
-    /**
-     *  Fired when a target is started.
-     *
-     *  @see BuildEvent#getTarget()
-     */
-    public void targetStarted(BuildEvent event);
-
-    /**
-     *  Fired when a target has finished. This event will
-     *  still be thrown if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void targetFinished(BuildEvent event);
-
-    /**
-     *  Fired when a task is started.
-     *
-     *  @see BuildEvent#getTask()
-     */
-    public void taskStarted(BuildEvent event);
-
-    /**
-     *  Fired when a task has finished. This event will still
-     *  be throw if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void taskFinished(BuildEvent event);
-
-    /**
-     *  Fired whenever a message is logged.
-     *
-     *  @see BuildEvent#getMessage()
-     *  @see BuildEvent#getPriority()
-     */
-    public void messageLogged(BuildEvent event);
-
-}
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/BuildLogger.java b/src/main/org/apache/tools/ant/BuildLogger.java
deleted file mode 100644
index 96c8adb..0000000
--- a/src/main/org/apache/tools/ant/BuildLogger.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.io.*;
-
-/**
- * Interface used by Ant to log the build output. 
- *
- * A build logger is a build listener which has the 'right' to send output to the
- * ant log, which is usually System.out unles redirected by the -logfile option.
- *
- * @author Conor MacNeill
- */
-public interface BuildLogger extends BuildListener {
-    /**
-     * Set the msgOutputLevel this logger is to respond to.
-     *
-     * Only messages with a message level lower than or equal to the given level are 
-     * output to the log.
-     * <P>
-     * Constants for the message levels are in Project.java. The order of
-     * the levels, from least to most verbose, is MSG_ERR, MSG_WARN,
-     * MSG_INFO, MSG_VERBOSE, MSG_DEBUG.
-     *
-     * @param level the logging level for the logger.
-     */
-    public void setMessageOutputLevel(int level);
-    
-    /**
-     * Set the output stream to which this logger is to send its output.
-     *
-     * @param output the output stream for the logger.
-     */
-    public void setOutputPrintStream(PrintStream output);
-    
-    /**
-     * Set this logger to produce emacs (and other editor) friendly output.
-     *
-     * @param emacsMode true if output is to be unadorned so that emacs and other
-     * editors can parse files names, etc.
-     */
-    public void setEmacsMode(boolean emacsMode);
-
-    /**
-     * Set the output stream to which this logger is to send error messages.
-     *
-     * @param err the error stream for the logger.
-     */
-    public void setErrorPrintStream(PrintStream err);
-    
-}
diff --git a/src/main/org/apache/tools/ant/Constants.java b/src/main/org/apache/tools/ant/Constants.java
deleted file mode 100644
index 4bda035..0000000
--- a/src/main/org/apache/tools/ant/Constants.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software License
- * version 1.1, a copy of which has been included with this distribution in
- * the LICENSE file.
- */
-package org.apache.tools.ant;
-
-/**
- * Abstract interface to hold constants.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-interface Constants {
-}
diff --git a/src/main/org/apache/tools/ant/DefaultLogger.java b/src/main/org/apache/tools/ant/DefaultLogger.java
deleted file mode 100644
index aedf2a8..0000000
--- a/src/main/org/apache/tools/ant/DefaultLogger.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.io.*;
-
-/**
- *  Writes build event to a PrintStream. Currently, it
- *  only writes which targets are being executed, and
- *  any messages that get logged.
- */
-public class DefaultLogger implements BuildLogger {
-    private static int LEFT_COLUMN_SIZE = 12;
-
-    protected PrintStream out;
-    protected PrintStream err;
-    protected int msgOutputLevel = Project.MSG_ERR;
-    private long startTime = System.currentTimeMillis();
-
-    protected static String lSep = System.getProperty("line.separator");
-
-    protected boolean emacsMode = false;
-
-    /**
-     * Set the msgOutputLevel this logger is to respond to.
-     *
-     * Only messages with a message level lower than or equal to the given level are 
-     * output to the log.
-     * <P>
-     * Constants for the message levels are in Project.java. The order of
-     * the levels, from least to most verbose, is MSG_ERR, MSG_WARN,
-     * MSG_INFO, MSG_VERBOSE, MSG_DEBUG.
-     *
-     * The default message level for DefaultLogger is Project.MSG_ERR.
-     *
-     * @param level the logging level for the logger.
-     */
-    public void setMessageOutputLevel(int level) {
-        this.msgOutputLevel = level;
-    }
-
-    
-    /**
-     * Set the output stream to which this logger is to send its output.
-     *
-     * @param output the output stream for the logger.
-     */
-    public void setOutputPrintStream(PrintStream output) {
-        this.out = output;
-    }
-
-    /**
-     * Set the output stream to which this logger is to send error messages.
-     *
-     * @param err the error stream for the logger.
-     */
-    public void setErrorPrintStream(PrintStream err) {
-        this.err = err;
-    }
-
-    /**
-     * Set this logger to produce emacs (and other editor) friendly output.
-     *
-     * @param emacsMode true if output is to be unadorned so that emacs and other
-     * editors can parse files names, etc.
-     */
-    public void setEmacsMode(boolean emacsMode) {
-        this.emacsMode = emacsMode;
-    }
-
-
-    public void buildStarted(BuildEvent event) {
-        startTime = System.currentTimeMillis();
-    }
-
-    /**
-     *  Prints whether the build succeeded or failed, and
-     *  any errors the occured during the build.
-     */
-    public void buildFinished(BuildEvent event) {
-        Throwable error = event.getException();
-
-        if (error == null) {
-            out.println(lSep + "BUILD SUCCESSFUL");
-        }
-        else {
-            err.println(lSep + "BUILD FAILED" + lSep);
-
-            if (error instanceof BuildException) {
-                err.println(error.toString());
-
-                Throwable nested = ((BuildException)error).getException();
-                if (nested != null) {
-                    nested.printStackTrace(err);
-                }
-            }
-            else {
-                error.printStackTrace(err);
-            }
-        }
-
-        out.println(lSep + "Total time: " + formatTime(System.currentTimeMillis() - startTime));
-    }
-
-    public void targetStarted(BuildEvent event) {
-        if (Project.MSG_INFO <= msgOutputLevel) {
-            out.println(lSep + event.getTarget().getName() + ":");
-        }
-    }
-
-    public void targetFinished(BuildEvent event) {
-    }
-
-    public void taskStarted(BuildEvent event) {}
-    public void taskFinished(BuildEvent event) {}
-
-    public void messageLogged(BuildEvent event) {
-
-        PrintStream logTo = event.getPriority() == Project.MSG_ERR ? err : out;
-
-        // Filter out messages based on priority
-        if (event.getPriority() <= msgOutputLevel) {
-
-            // Print out the name of the task if we're in one
-            if (event.getTask() != null) {
-                String name = event.getTask().getTaskName();
-
-                if (!emacsMode) {
-                    String msg = "[" + name + "] ";
-                    for (int i = 0; i < (LEFT_COLUMN_SIZE - msg.length()); i++) {
-                        logTo.print(" ");
-                    }
-                    logTo.print(msg);
-                }
-            }
-
-            // Print the message
-            logTo.println(event.getMessage());
-        }
-    }
-
-    protected static String formatTime(long millis) {
-        long seconds = millis / 1000;
-        long minutes = seconds / 60;
-
-
-        if (minutes > 0) {
-            return Long.toString(minutes) + " minute"
-                + (minutes == 1 ? " " : "s ")
-                + Long.toString(seconds%60) + " second"
-                + (seconds%60 == 1 ? "" : "s");
-        }
-        else {
-            return Long.toString(seconds) + " second"
-                + (seconds%60 == 1 ? "" : "s");
-        }
-
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/DesirableFilter.java b/src/main/org/apache/tools/ant/DesirableFilter.java
deleted file mode 100644
index 9b051b2..0000000
--- a/src/main/org/apache/tools/ant/DesirableFilter.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */ 
-
-package org.apache.tools.ant;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-
-/**
- * Filters filenames to determine whether or not the file is desirable.
- *
- * @author Jason Hunter [jhunter@servlets.com]
- * @author james@x180.com
- */
-public class DesirableFilter implements FilenameFilter {
-
-    /**
-     * Test the given filename to determine whether or not it's desirable.
-     * This helps tasks filter temp files and files used by CVS.
-     */
-
-    public boolean accept(File dir, String name) {
-        
-        // emacs save file
-        if (name.endsWith("~")) {
-            return false;
-        }
-
-        // emacs autosave file
-        if (name.startsWith("#") && name.endsWith("#")) {
-            return false;
-        }
-
-        // openwindows text editor does this I think
-        if (name.startsWith("%") && name.endsWith("%")) {
-            return false;
-        }
-
-        /* CVS stuff -- hopefully there won't be a case with
-         * an all cap file/dir named "CVS" that somebody wants
-         * to keep around...
-         */
-        
-        if (name.equals("CVS")) {
-            return false;
-        }
-        
-        /* If we are going to ignore CVS might as well ignore 
-         * this one as well...
-         */
-        if (name.equals(".cvsignore")){
-            return false;
-        }
-    
-        // default
-        return true;
-    }
-}
-
-
-
-
-
-
-
diff --git a/src/main/org/apache/tools/ant/DirectoryScanner.java b/src/main/org/apache/tools/ant/DirectoryScanner.java
deleted file mode 100644
index 1b80b9b..0000000
--- a/src/main/org/apache/tools/ant/DirectoryScanner.java
+++ /dev/null
@@ -1,959 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * Class for scanning a directory for files/directories that match a certain
- * criteria.
- * <p>
- * These criteria consist of a set of include and exclude patterns. With these
- * patterns, you can select which files you want to have included, and which
- * files you want to have excluded.
- * <p>
- * The idea is simple. A given directory is recursively scanned for all files
- * and directories. Each file/directory is matched against a set of include
- * and exclude patterns. Only files/directories that match at least one
- * pattern of the include pattern list, and don't match a pattern of the
- * exclude pattern list will be placed in the list of files/directories found.
- * <p>
- * When no list of include patterns is supplied, "**" will be used, which
- * means that everything will be matched. When no list of exclude patterns is
- * supplied, an empty list is used, such that nothing will be excluded.
- * <p>
- * The pattern matching is done as follows:
- * The name to be matched is split up in path segments. A path segment is the
- * name of a directory or file, which is bounded by
- * <code>File.separator</code> ('/' under UNIX, '\' under Windows).
- * E.g. "abc/def/ghi/xyz.java" is split up in the segments "abc", "def", "ghi"
- * and "xyz.java".
- * The same is done for the pattern against which should be matched.
- * <p>
- * Then the segments of the name and the pattern will be matched against each
- * other. When '**' is used for a path segment in the pattern, then it matches
- * zero or more path segments of the name.
- * <p>
- * There are special case regarding the use of <code>File.separator</code>s at
- * the beginningof the pattern and the string to match:<br>
- * When a pattern starts with a <code>File.separator</code>, the string
- * to match must also start with a <code>File.separator</code>.
- * When a pattern does not start with a <code>File.separator</code>, the
- * string to match may not start with a <code>File.separator</code>.
- * When one of these rules is not obeyed, the string will not
- * match.
- * <p>
- * When a name path segment is matched against a pattern path segment, the
- * following special characters can be used:
- * '*' matches zero or more characters,
- * '?' matches one character.
- * <p>
- * Examples:
- * <p>
- * "**\*.class" matches all .class files/dirs in a directory tree.
- * <p>
- * "test\a??.java" matches all files/dirs which start with an 'a', then two
- * more characters and then ".java", in a directory called test.
- * <p>
- * "**" matches everything in a directory tree.
- * <p>
- * "**\test\**\XYZ*" matches all files/dirs that start with "XYZ" and where
- * there is a parent directory called test (e.g. "abc\test\def\ghi\XYZ123").
- * <p>
- * Example of usage:
- * <pre>
- *   String[] includes = {"**\\*.class"};
- *   String[] excludes = {"modules\\*\\**"};
- *   ds.setIncludes(includes);
- *   ds.setExcludes(excludes);
- *   ds.setBasedir(new File("test"));
- *   ds.scan();
- *
- *   System.out.println("FILES:");
- *   String[] files = ds.getIncludedFiles();
- *   for (int i = 0; i < files.length;i++) {
- *     System.out.println(files[i]);
- *   }
- * </pre>
- * This will scan a directory called test for .class files, but excludes all
- * .class files in all directories under a directory called "modules"
- *
- * @author Arnout J. Kuiper <a href="mailto:ajkuiper@wxs.nl">ajkuiper@wxs.nl</a>
- */
-public class DirectoryScanner implements FileScanner {
-
-    /**
-     * Patterns that should be excluded by default.
-     *
-     * @see #addDefaultExcludes()
-     */
-    protected final static String[] DEFAULTEXCLUDES = {
-        "**/*~",
-        "**/#*#",
-        "**/%*%",
-        "**/CVS",
-        "**/CVS/**",
-        "**/.cvsignore"
-    };
-
-    /**
-     * The base directory which should be scanned.
-     */
-    protected File basedir;
-
-    /**
-     * The patterns for the files that should be included.
-     */
-    protected String[] includes;
-
-    /**
-     * The patterns for the files that should be excluded.
-     */
-    protected String[] excludes;
-
-    /**
-     * The files that where found and matched at least one includes, and matched
-     * no excludes.
-     */
-    protected Vector filesIncluded;
-
-    /**
-     * The files that where found and did not match any includes.
-     */
-    protected Vector filesNotIncluded;
-
-    /**
-     * The files that where found and matched at least one includes, and also
-     * matched at least one excludes.
-     */
-    protected Vector filesExcluded;
-
-    /**
-     * The directories that where found and matched at least one includes, and
-     * matched no excludes.
-     */
-    protected Vector dirsIncluded;
-
-    /**
-     * The directories that where found and did not match any includes.
-     */
-    protected Vector dirsNotIncluded;
-
-    /**
-     * The files that where found and matched at least one includes, and also
-     * matched at least one excludes.
-     */
-    protected Vector dirsExcluded;
-
-    /**
-     * Have the Vectors holding our results been built by a slow scan?
-     */
-    protected boolean haveSlowResults = false;
-
-    /**
-     * Constructor.
-     */
-    public DirectoryScanner() {
-    }
-
-
-    /**
-     * Does the path match the start of this pattern up to the first "**".
-     +
-     * <p>This is not a general purpose test and should only be used if you
-     * can live with false positives.</p>
-     *
-     * <p><code>pattern=**\\a</code> and <code>str=b</code> will yield true.
-     *
-     * @param pattern the (non-null) pattern to match against
-     * @param str     the (non-null) string (path) to match
-     */
-    protected static boolean matchPatternStart(String pattern, String str) {
-        // When str starts with a File.separator, pattern has to start with a
-        // File.separator.
-        // When pattern starts with a File.separator, str has to start with a
-        // File.separator.
-        if (str.startsWith(File.separator) !=
-            pattern.startsWith(File.separator)) {
-            return false;
-        }
-
-        Vector patDirs = new Vector();
-        StringTokenizer st = new StringTokenizer(pattern,File.separator);
-        while (st.hasMoreTokens()) {
-            patDirs.addElement(st.nextToken());
-        }
-
-        Vector strDirs = new Vector();
-        st = new StringTokenizer(str,File.separator);
-        while (st.hasMoreTokens()) {
-            strDirs.addElement(st.nextToken());
-        }
-
-        int patIdxStart = 0;
-        int patIdxEnd   = patDirs.size()-1;
-        int strIdxStart = 0;
-        int strIdxEnd   = strDirs.size()-1;
-
-        // up to first '**'
-        while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) {
-            String patDir = (String)patDirs.elementAt(patIdxStart);
-            if (patDir.equals("**")) {
-                break;
-            }
-            if (!match(patDir,(String)strDirs.elementAt(strIdxStart))) {
-                return false;
-            }
-            patIdxStart++;
-            strIdxStart++;
-        }
-
-        if (strIdxStart > strIdxEnd) {
-            // String is exhausted
-            return true;
-        } else if (patIdxStart > patIdxEnd) {
-            // String not exhausted, but pattern is. Failure.
-            return false;
-        } else {
-            // pattern now holds ** while string is not exhausted
-            // this will generate false positives but we can live with that.
-            return true;
-        }
-    }
-
-    /**
-     * Matches a path against a pattern.
-     *
-     * @param pattern the (non-null) pattern to match against
-     * @param str     the (non-null) string (path) to match
-     *
-     * @return <code>true</code> when the pattern matches against the string.
-     *         <code>false</code> otherwise.
-     */
-    protected static boolean matchPath(String pattern, String str) {
-        // When str starts with a File.separator, pattern has to start with a
-        // File.separator.
-        // When pattern starts with a File.separator, str has to start with a
-        // File.separator.
-        if (str.startsWith(File.separator) !=
-            pattern.startsWith(File.separator)) {
-            return false;
-        }
-
-        Vector patDirs = new Vector();
-        StringTokenizer st = new StringTokenizer(pattern,File.separator);
-        while (st.hasMoreTokens()) {
-            patDirs.addElement(st.nextToken());
-        }
-
-        Vector strDirs = new Vector();
-        st = new StringTokenizer(str,File.separator);
-        while (st.hasMoreTokens()) {
-            strDirs.addElement(st.nextToken());
-        }
-
-        int patIdxStart = 0;
-        int patIdxEnd   = patDirs.size()-1;
-        int strIdxStart = 0;
-        int strIdxEnd   = strDirs.size()-1;
-
-        // up to first '**'
-        while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) {
-            String patDir = (String)patDirs.elementAt(patIdxStart);
-            if (patDir.equals("**")) {
-                break;
-            }
-            if (!match(patDir,(String)strDirs.elementAt(strIdxStart))) {
-                return false;
-            }
-            patIdxStart++;
-            strIdxStart++;
-        }
-        if (strIdxStart > strIdxEnd) {
-            // String is exhausted
-            for (int i = patIdxStart; i <= patIdxEnd; i++) {
-                if (!patDirs.elementAt(i).equals("**")) {
-                    return false;
-                }
-            }
-            return true;
-        } else {
-            if (patIdxStart > patIdxEnd) {
-                // String not exhausted, but pattern is. Failure.
-                return false;
-            }
-        }
-
-        // up to last '**'
-        while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) {
-            String patDir = (String)patDirs.elementAt(patIdxEnd);
-            if (patDir.equals("**")) {
-                break;
-            }
-            if (!match(patDir,(String)strDirs.elementAt(strIdxEnd))) {
-                return false;
-            }
-            patIdxEnd--;
-            strIdxEnd--;
-        }
-        if (strIdxStart > strIdxEnd) {
-            // String is exhausted
-            for (int i = patIdxStart; i <= patIdxEnd; i++) {
-                if (!patDirs.elementAt(i).equals("**")) {
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        while (patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd) {
-            int patIdxTmp = -1;
-            for (int i = patIdxStart+1; i <= patIdxEnd; i++) {
-                if (patDirs.elementAt(i).equals("**")) {
-                    patIdxTmp = i;
-                    break;
-                }
-            }
-            if (patIdxTmp == patIdxStart+1) {
-                // '**/**' situation, so skip one
-                patIdxStart++;
-                continue;
-            }
-            // Find the pattern between padIdxStart & padIdxTmp in str between
-            // strIdxStart & strIdxEnd
-            int patLength = (patIdxTmp-patIdxStart-1);
-            int strLength = (strIdxEnd-strIdxStart+1);
-            int foundIdx  = -1;
-strLoop:
-            for (int i = 0; i <= strLength - patLength; i++) {
-                for (int j = 0; j < patLength; j++) {
-                    String subPat = (String)patDirs.elementAt(patIdxStart+j+1);
-                    String subStr = (String)strDirs.elementAt(strIdxStart+i+j);
-                    if (!match(subPat,subStr)) {
-                        continue strLoop;
-                    }
-                }
-
-                foundIdx = strIdxStart+i;
-                break;
-            }
-
-            if (foundIdx == -1) {
-                return false;
-            }
-
-            patIdxStart = patIdxTmp;
-            strIdxStart = foundIdx+patLength;
-        }
-
-        for (int i = patIdxStart; i <= patIdxEnd; i++) {
-            if (!patDirs.elementAt(i).equals("**")) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-
-
-    /**
-     * Matches a string against a pattern. The pattern contains two special
-     * characters:
-     * '*' which means zero or more characters,
-     * '?' which means one and only one character.
-     *
-     * @param pattern the (non-null) pattern to match against
-     * @param str     the (non-null) string that must be matched against the
-     *                pattern
-     *
-     * @return <code>true</code> when the string matches against the pattern,
-     *         <code>false</code> otherwise.
-     */
-    protected static boolean match(String pattern, String str) {
-        char[] patArr = pattern.toCharArray();
-        char[] strArr = str.toCharArray();
-        int patIdxStart = 0;
-        int patIdxEnd   = patArr.length-1;
-        int strIdxStart = 0;
-        int strIdxEnd   = strArr.length-1;
-        char ch;
-
-        boolean containsStar = false;
-        for (int i = 0; i < patArr.length; i++) {
-            if (patArr[i] == '*') {
-                containsStar = true;
-                break;
-            }
-        }
-
-        if (!containsStar) {
-            // No '*'s, so we make a shortcut
-            if (patIdxEnd != strIdxEnd) {
-                return false; // Pattern and string do not have the same size
-            }
-            for (int i = 0; i <= patIdxEnd; i++) {
-                ch = patArr[i];
-                if (ch != '?' && ch != strArr[i]) {
-                    return false; // Character mismatch
-                }
-            }
-            return true; // String matches against pattern
-        }
-
-        if (patIdxEnd == 0) {
-            return true; // Pattern contains only '*', which matches anything
-        }
-
-        // Process characters before first star
-        while((ch = patArr[patIdxStart]) != '*' && strIdxStart <= strIdxEnd) {
-            if (ch != '?' && ch != strArr[strIdxStart]) {
-                return false;
-            }
-            patIdxStart++;
-            strIdxStart++;
-        }
-        if (strIdxStart > strIdxEnd) {
-            // All characters in the string are used. Check if only '*'s are
-            // left in the pattern. If so, we succeeded. Otherwise failure.
-            for (int i = patIdxStart; i <= patIdxEnd; i++) {
-                if (patArr[i] != '*') {
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        // Process characters after last star
-        while((ch = patArr[patIdxEnd]) != '*' && strIdxStart <= strIdxEnd) {
-            if (ch != '?' && ch != strArr[strIdxEnd]) {
-                return false;
-            }
-            patIdxEnd--;
-            strIdxEnd--;
-        }
-        if (strIdxStart > strIdxEnd) {
-            // All characters in the string are used. Check if only '*'s are
-            // left in the pattern. If so, we succeeded. Otherwise failure.
-            for (int i = patIdxStart; i <= patIdxEnd; i++) {
-                if (patArr[i] != '*') {
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        // process pattern between stars. padIdxStart and patIdxEnd point
-        // always to a '*'.
-        while (patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd) {
-            int patIdxTmp = -1;
-            for (int i = patIdxStart+1; i <= patIdxEnd; i++) {
-                if (patArr[i] == '*') {
-                    patIdxTmp = i;
-                    break;
-                }
-            }
-            if (patIdxTmp == patIdxStart+1) {
-                // Two stars next to each other, skip the first one.
-                patIdxStart++;
-                continue;
-            }
-            // Find the pattern between padIdxStart & padIdxTmp in str between
-            // strIdxStart & strIdxEnd
-            int patLength = (patIdxTmp-patIdxStart-1);
-            int strLength = (strIdxEnd-strIdxStart+1);
-            int foundIdx  = -1;
-strLoop:
-            for (int i = 0; i <= strLength - patLength; i++) {
-                for (int j = 0; j < patLength; j++) {
-                    ch = patArr[patIdxStart+j+1];
-                    if (ch != '?' && ch != strArr[strIdxStart+i+j]) {
-                        continue strLoop;
-                    }
-                }
-
-                foundIdx = strIdxStart+i;
-                break;
-            }
-
-            if (foundIdx == -1) {
-                return false;
-            }
-
-            patIdxStart = patIdxTmp;
-            strIdxStart = foundIdx+patLength;
-        }
-
-        // All characters in the string are used. Check if only '*'s are left
-        // in the pattern. If so, we succeeded. Otherwise failure.
-        for (int i = patIdxStart; i <= patIdxEnd; i++) {
-            if (patArr[i] != '*') {
-                return false;
-            }
-        }
-        return true;
-    }
-
-
-
-    /**
-     * Sets the basedir for scanning. This is the directory that is scanned
-     * recursively. All '/' and '\' characters are replaced by
-     * <code>File.separatorChar</code>. So the separator used need not match
-     * <code>File.separatorChar</code>.
-     *
-     * @param basedir the (non-null) basedir for scanning
-     */
-    public void setBasedir(String basedir) {
-        setBasedir(new File(basedir.replace('/',File.separatorChar).replace('\\',File.separatorChar)));
-    }
-
-
-
-    /**
-     * Sets the basedir for scanning. This is the directory that is scanned
-     * recursively.
-     *
-     * @param basedir the basedir for scanning
-     */
-    public void setBasedir(File basedir) {
-        this.basedir = basedir;
-    }
-
-
-
-    /**
-     * Gets the basedir that is used for scanning. This is the directory that
-     * is scanned recursively.
-     *
-     * @return the basedir that is used for scanning
-     */
-    public File getBasedir() {
-        return basedir;
-    }
-
-
-
-    /**
-     * Sets the set of include patterns to use. All '/' and '\' characters are
-     * replaced by <code>File.separatorChar</code>. So the separator used need
-     * not match <code>File.separatorChar</code>.
-     * <p>
-     * When a pattern ends with a '/' or '\', "**" is appended.
-     *
-     * @param includes list of include patterns
-     */
-    public void setIncludes(String[] includes) {
-        if (includes == null) {
-            this.includes = null;
-        } else {
-            this.includes = new String[includes.length];
-            for (int i = 0; i < includes.length; i++) {
-                String pattern;
-                pattern = includes[i].replace('/',File.separatorChar).replace('\\',File.separatorChar);
-                if (pattern.endsWith(File.separator)) {
-                    pattern += "**";
-                }
-                this.includes[i] = pattern;
-            }
-        }
-    }
-
-
-
-    /**
-     * Sets the set of exclude patterns to use. All '/' and '\' characters are
-     * replaced by <code>File.separatorChar</code>. So the separator used need
-     * not match <code>File.separatorChar</code>.
-     * <p>
-     * When a pattern ends with a '/' or '\', "**" is appended.
-     *
-     * @param excludes list of exclude patterns
-     */
-    public void setExcludes(String[] excludes) {
-        if (excludes == null) {
-            this.excludes = null;
-        } else {
-            this.excludes = new String[excludes.length];
-            for (int i = 0; i < excludes.length; i++) {
-                String pattern;
-                pattern = excludes[i].replace('/',File.separatorChar).replace('\\',File.separatorChar);
-                if (pattern.endsWith(File.separator)) {
-                    pattern += "**";
-                }
-                this.excludes[i] = pattern;
-            }
-        }
-    }
-
-
-
-    /**
-     * Scans the base directory for files that match at least one include
-     * pattern, and don't match any exclude patterns.
-     *
-     * @exception IllegalStateException when basedir was set incorrecly
-     */
-    public void scan() {
-        if (basedir == null) {
-            throw new IllegalStateException("No basedir set");
-        }
-        if (!basedir.exists()) {
-            throw new IllegalStateException("basedir does not exist");
-        }
-        if (!basedir.isDirectory()) {
-            throw new IllegalStateException("basedir is not a directory");
-        }
-
-        if (includes == null) {
-            // No includes supplied, so set it to 'matches all'
-            includes = new String[1];
-            includes[0] = "**";
-        }
-        if (excludes == null) {
-            excludes = new String[0];
-        }
-
-        filesIncluded    = new Vector();
-        filesNotIncluded = new Vector();
-        filesExcluded    = new Vector();
-        dirsIncluded     = new Vector();
-        dirsNotIncluded  = new Vector();
-        dirsExcluded     = new Vector();
-
-        scandir(basedir, "", true);
-    }
-
-    /**
-     * Toplevel invocation for the scan.
-     *
-     * <p>Returns immediately if a slow scan has already been requested.
-     */
-    protected void slowScan() {
-        if (haveSlowResults) {
-            return;
-        }
-
-        String[] excl = new String[dirsExcluded.size()];
-        dirsExcluded.copyInto(excl);
-
-        String[] notIncl = new String[dirsNotIncluded.size()];
-        dirsNotIncluded.copyInto(notIncl);
-
-        for (int i=0; i<excl.length; i++) {
-            scandir(new File(basedir, excl[i]), excl[i]+File.separator, false);
-        }
-        
-        for (int i=0; i<notIncl.length; i++) {
-            if (!couldHoldIncluded(notIncl[i])) {
-                scandir(new File(basedir, notIncl[i]), 
-                        notIncl[i]+File.separator, false);
-            }
-        }
-
-        haveSlowResults  = true;
-    }
-
-
-    /**
-     * Scans the passed dir for files and directories. Found files and
-     * directories are placed in their respective collections, based on the
-     * matching of includes and excludes. When a directory is found, it is
-     * scanned recursively.
-     *
-     * @param dir   the directory to scan
-     * @param vpath the path relative to the basedir (needed to prevent
-     *              problems with an absolute path when using dir)
-     *
-     * @see #filesIncluded
-     * @see #filesNotIncluded
-     * @see #filesExcluded
-     * @see #dirsIncluded
-     * @see #dirsNotIncluded
-     * @see #dirsExcluded
-     */
-    protected void scandir(File dir, String vpath, boolean fast) {
-        String[] newfiles = dir.list();
-
-        if (newfiles == null) {
-            /*
-             * two reasons are mentioned in the API docs for File.list
-             * (1) dir is not a directory. This is impossible as
-             *     we wouldn't get here in this case.
-             * (2) an IO error occurred (why doesn't it throw an exception 
-             *     then???)
-             */
-            throw new BuildException("IO error scanning directory"
-                                     + dir.getAbsolutePath());
-        }
-
-        for (int i = 0; i < newfiles.length; i++) {
-            String name = vpath+newfiles[i];
-            File   file = new File(dir,newfiles[i]);
-            if (file.isDirectory()) {
-                if (isIncluded(name)) {
-                    if (!isExcluded(name)) {
-                        dirsIncluded.addElement(name);
-                        if (fast) {
-                            scandir(file, name+File.separator, fast);
-                        }
-                    } else {
-                        dirsExcluded.addElement(name);
-                    }
-                } else {
-                    dirsNotIncluded.addElement(name);
-                    if (fast && couldHoldIncluded(name)) {
-                        scandir(file, name+File.separator, fast);
-                    }
-                }
-                if (!fast) {
-                    scandir(file, name+File.separator, fast);
-                }
-            } else if (file.isFile()) {
-                if (isIncluded(name)) {
-                    if (!isExcluded(name)) {
-                        filesIncluded.addElement(name);
-                    } else {
-                        filesExcluded.addElement(name);
-                    }
-                } else {
-                    filesNotIncluded.addElement(name);
-                }
-            }
-        }
-    }
-
-
-
-    /**
-     * Tests whether a name matches against at least one include pattern.
-     *
-     * @param name the name to match
-     * @return <code>true</code> when the name matches against at least one
-     *         include pattern, <code>false</code> otherwise.
-     */
-    protected boolean isIncluded(String name) {
-        for (int i = 0; i < includes.length; i++) {
-            if (matchPath(includes[i],name)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Tests whether a name matches the start of at least one include pattern.
-     *
-     * @param name the name to match
-     * @return <code>true</code> when the name matches against at least one
-     *         include pattern, <code>false</code> otherwise.
-     */
-    protected boolean couldHoldIncluded(String name) {
-        for (int i = 0; i < includes.length; i++) {
-            if (matchPatternStart(includes[i],name)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Tests whether a name matches against at least one exclude pattern.
-     *
-     * @param name the name to match
-     * @return <code>true</code> when the name matches against at least one
-     *         exclude pattern, <code>false</code> otherwise.
-     */
-    protected boolean isExcluded(String name) {
-        for (int i = 0; i < excludes.length; i++) {
-            if (matchPath(excludes[i],name)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-
-
-    /**
-     * Get the names of the files that matched at least one of the include
-     * patterns, an matched none of the exclude patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the files
-     */
-    public String[] getIncludedFiles() {
-        int count = filesIncluded.size();
-        String[] files = new String[count];
-        for (int i = 0; i < count; i++) {
-            files[i] = (String)filesIncluded.elementAt(i);
-        }
-        return files;
-    }
-
-
-
-    /**
-     * Get the names of the files that matched at none of the include patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the files
-     */
-    public String[] getNotIncludedFiles() {
-        slowScan();
-        int count = filesNotIncluded.size();
-        String[] files = new String[count];
-        for (int i = 0; i < count; i++) {
-            files[i] = (String)filesNotIncluded.elementAt(i);
-        }
-        return files;
-    }
-
-
-
-    /**
-     * Get the names of the files that matched at least one of the include
-     * patterns, an matched also at least one of the exclude patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the files
-     */
-    public String[] getExcludedFiles() {
-        slowScan();
-        int count = filesExcluded.size();
-        String[] files = new String[count];
-        for (int i = 0; i < count; i++) {
-            files[i] = (String)filesExcluded.elementAt(i);
-        }
-        return files;
-    }
-
-
-
-    /**
-     * Get the names of the directories that matched at least one of the include
-     * patterns, an matched none of the exclude patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the directories
-     */
-    public String[] getIncludedDirectories() {
-        int count = dirsIncluded.size();
-        String[] directories = new String[count];
-        for (int i = 0; i < count; i++) {
-            directories[i] = (String)dirsIncluded.elementAt(i);
-        }
-        return directories;
-    }
-
-
-
-    /**
-     * Get the names of the directories that matched at none of the include
-     * patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the directories
-     */
-    public String[] getNotIncludedDirectories() {
-        slowScan();
-        int count = dirsNotIncluded.size();
-        String[] directories = new String[count];
-        for (int i = 0; i < count; i++) {
-            directories[i] = (String)dirsNotIncluded.elementAt(i);
-        }
-        return directories;
-    }
-
-
-
-    /**
-     * Get the names of the directories that matched at least one of the include
-     * patterns, an matched also at least one of the exclude patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the directories
-     */
-    public String[] getExcludedDirectories() {
-        slowScan();
-        int count = dirsExcluded.size();
-        String[] directories = new String[count];
-        for (int i = 0; i < count; i++) {
-            directories[i] = (String)dirsExcluded.elementAt(i);
-        }
-        return directories;
-    }
-
-
-
-    /**
-     * Adds the array with default exclusions to the current exclusions set.
-     *
-     */
-    public void addDefaultExcludes() {
-        int excludesLength = excludes == null ? 0 : excludes.length;
-        String[] newExcludes;
-        newExcludes = new String[excludesLength + DEFAULTEXCLUDES.length];
-        if (excludesLength > 0) {
-            System.arraycopy(excludes,0,newExcludes,0,excludesLength);
-        }
-        for (int i = 0; i < DEFAULTEXCLUDES.length; i++) {
-            newExcludes[i+excludesLength] = DEFAULTEXCLUDES[i].replace('/',File.separatorChar).replace('\\',File.separatorChar);
-        }
-        excludes = newExcludes;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/FileScanner.java b/src/main/org/apache/tools/ant/FileScanner.java
deleted file mode 100644
index f973ac0..0000000
--- a/src/main/org/apache/tools/ant/FileScanner.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant;
-
-import java.io.*;
-
-/**
- * An interface used to describe the actions required by any type of 
- * directory scanner.
- */
-public interface FileScanner {
-    /**
-     * Adds an array with default exclusions to the current exclusions set.
-     *
-     */
-    public void addDefaultExcludes();
-    /**
-     * Gets the basedir that is used for scanning. This is the directory that
-     * is scanned recursively.
-     *
-     * @return the basedir that is used for scanning
-     */
-    public File getBasedir();
-    /**
-     * Get the names of the directories that matched at least one of the include
-     * patterns, an matched also at least one of the exclude patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the directories
-     */
-    public String[] getExcludedDirectories();
-    /**
-     * Get the names of the files that matched at least one of the include
-     * patterns, an matched also at least one of the exclude patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the files
-     */
-    public String[] getExcludedFiles();
-    /**
-     * Get the names of the directories that matched at least one of the include
-     * patterns, an matched none of the exclude patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the directories
-     */
-    public String[] getIncludedDirectories();
-    /**
-     * Get the names of the files that matched at least one of the include
-     * patterns, an matched none of the exclude patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the files
-     */
-    public String[] getIncludedFiles();
-    /**
-     * Get the names of the directories that matched at none of the include
-     * patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the directories
-     */
-    public String[] getNotIncludedDirectories();
-    /**
-     * Get the names of the files that matched at none of the include patterns.
-     * The names are relative to the basedir.
-     *
-     * @return the names of the files
-     */
-    public String[] getNotIncludedFiles();
-    /**
-     * Scans the base directory for files that match at least one include
-     * pattern, and don't match any exclude patterns.
-     *
-     * @exception IllegalStateException when basedir was set incorrecly
-     */
-    public void scan();
-    /**
-     * Sets the basedir for scanning. This is the directory that is scanned
-     * recursively. 
-     *
-     * @param basedir the (non-null) basedir for scanning
-     */
-    public void setBasedir(String basedir);
-    /**
-     * Sets the basedir for scanning. This is the directory that is scanned
-     * recursively.
-     *
-     * @param basedir the basedir for scanning
-     */
-    public void setBasedir(File basedir);
-    /**
-     * Sets the set of exclude patterns to use.
-     *
-     * @param excludes list of exclude patterns
-     */
-    public void setExcludes(String[] excludes);
-    /**
-     * Sets the set of include patterns to use.
-     *
-     * @param includes list of include patterns
-     */
-    public void setIncludes(String[] includes);
-}
diff --git a/src/main/org/apache/tools/ant/IntrospectionHelper.java b/src/main/org/apache/tools/ant/IntrospectionHelper.java
deleted file mode 100644
index e358e37..0000000
--- a/src/main/org/apache/tools/ant/IntrospectionHelper.java
+++ /dev/null
@@ -1,521 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.EnumeratedAttribute;
-
-import java.lang.reflect.*;
-import java.io.File;
-import java.util.*;
-
-/**
- * Helper class that collects the methods a task or nested element
- * holds to set attributes, create nested elements or hold PCDATA
- * elements.
- *
- * @author Stefan Bodewig <a href="mailto:stefan.bodewig@megabit.net">stefan.bodewig@megabit.net</a> 
- */
-public class IntrospectionHelper  {
-
-    /**
-     * holds the types of the attributes that could be set.
-     */
-    private Hashtable attributeTypes;
-
-    /**
-     * holds the attribute setter methods.
-     */
-    private Hashtable attributeSetters;
-
-    /**
-     * Holds the types of nested elements that could be created.
-     */
-    private Hashtable nestedTypes;
-
-    /**
-     * Holds methods to create nested elements.
-     */
-    private Hashtable nestedCreators;
-
-    /**
-     * The method to add PCDATA stuff.
-     */
-    private Method addText = null;
-
-    /**
-     * The Class that's been introspected.
-     */
-    private Class bean;
-
-    /**
-     * instances we've already created
-     */
-    private static Hashtable helpers = new Hashtable();
-
-    private IntrospectionHelper(final Class bean) {
-        attributeTypes = new Hashtable();
-        attributeSetters = new Hashtable();
-        nestedTypes = new Hashtable();
-        nestedCreators = new Hashtable();
-        this.bean = bean;
-
-        Method[] methods = bean.getMethods();
-        for (int i=0; i<methods.length; i++) {
-            final Method m = methods[i];
-            final String name = m.getName();
-            Class returnType = m.getReturnType();
-            Class[] args = m.getParameterTypes();
-
-            // not really user settable properties on tasks
-            if (org.apache.tools.ant.Task.class.isAssignableFrom(bean) 
-                && args.length == 1 &&
-                (
-                 (
-                  "setLocation".equals(name) && org.apache.tools.ant.Location.class.equals(args[0])
-                  ) || (
-                   "setTaskType".equals(name) && java.lang.String.class.equals(args[0])
-                  )
-                 )) {
-                continue;
-            }
-            
-            if ("addText".equals(name)
-                && java.lang.Void.TYPE.equals(returnType)
-                && args.length == 1
-                && java.lang.String.class.equals(args[0])) {
-
-                addText = methods[i];
-
-            } else if (name.startsWith("set")
-                       && java.lang.Void.TYPE.equals(returnType)
-                       && args.length == 1
-                       && !args[0].isArray()) {
-
-                String propName = getPropertyName(name, "set");
-                AttributeSetter as = createAttributeSetter(m, args[0]);
-                if (as != null) {
-                    attributeTypes.put(propName, args[0]);
-                    attributeSetters.put(propName, as);
-                }
-
-            } else if (name.startsWith("create")
-                       && !returnType.isArray()
-                       && !returnType.isPrimitive()
-                       && args.length == 0) {
-
-                String propName = getPropertyName(name, "create");
-                nestedTypes.put(propName, returnType);
-                nestedCreators.put(propName, new NestedCreator() {
-
-                        public Object create(Object parent) 
-                            throws InvocationTargetException, 
-                            IllegalAccessException {
-
-                            return m.invoke(parent, new Object[] {});
-                        }
-
-                    });
-                
-            } else if (name.startsWith("add")
-                       && java.lang.Void.TYPE.equals(returnType)
-                       && args.length == 1
-                       && !java.lang.String.class.equals(args[0])
-                       && !args[0].isArray()
-                       && !args[0].isPrimitive()) {
-                 
-                try {
-                    final Constructor c = 
-                        args[0].getConstructor(new Class[] {});
-                    String propName = getPropertyName(name, "add");
-                    nestedTypes.put(propName, args[0]);
-                    nestedCreators.put(propName, new NestedCreator() {
-
-                            public Object create(Object parent) 
-                                throws InvocationTargetException, IllegalAccessException, InstantiationException {
-                                
-                                Object o = c.newInstance(new Object[] {});
-                                m.invoke(parent, new Object[] {o});
-                                return o;
-                            }
-
-                        });
-                } catch (NoSuchMethodException nse) {
-                }
-                    
-            }
-        }
-    }
-    
-    /**
-     * Factory method for helper objects.
-     */
-    public synchronized static IntrospectionHelper getHelper(Class c) {
-        IntrospectionHelper ih = (IntrospectionHelper) helpers.get(c);
-        if (ih == null) {
-            ih = new IntrospectionHelper(c);
-            helpers.put(c, ih);
-        }
-        return ih;
-    }
-
-    /**
-     * Sets the named attribute.
-     */
-    public void setAttribute(Project p, Object element, String attributeName, 
-                             String value)
-        throws BuildException {
-        AttributeSetter as = (AttributeSetter) attributeSetters.get(attributeName);
-        if (as == null) {
-            String msg = "Class " + element.getClass().getName() +
-                " doesn't support the \"" + attributeName + "\" attribute";
-            throw new BuildException(msg);
-        }
-        try {
-            as.set(p, element, value);
-        } catch (IllegalAccessException ie) {
-            // impossible as getMethods should only return public methods
-            throw new BuildException(ie);
-        } catch (InvocationTargetException ite) {
-            Throwable t = ite.getTargetException();
-            if (t instanceof BuildException) {
-                throw (BuildException) t;
-            }
-            throw new BuildException(t);
-        }
-    }
-
-    /**
-     * Adds PCDATA areas.
-     */
-    public void addText(Object element, String text) {
-        if (addText == null) {
-            String msg = "Class " + element.getClass().getName() +
-                " doesn't support nested text elements";
-            throw new BuildException(msg);
-        }
-        try {
-            addText.invoke(element, new String[] {text});
-        } catch (IllegalAccessException ie) {
-            // impossible as getMethods should only return public methods
-            throw new BuildException(ie);
-        } catch (InvocationTargetException ite) {
-            Throwable t = ite.getTargetException();
-            if (t instanceof BuildException) {
-                throw (BuildException) t;
-            }
-            throw new BuildException(t);
-        }
-    }
-
-    /**
-     * Creates a named nested element.
-     */
-    public Object createElement(Object element, String elementName) 
-        throws BuildException {
-        NestedCreator nc = (NestedCreator) nestedCreators.get(elementName);
-        if (nc == null) {
-            String msg = "Class " + element.getClass().getName() +
-                " doesn't support the nested \"" + elementName + "\" element";
-            throw new BuildException(msg);
-        }
-        try {
-            return nc.create(element);
-        } catch (IllegalAccessException ie) {
-            // impossible as getMethods should only return public methods
-            throw new BuildException(ie);
-        } catch (InstantiationException ine) {
-            // impossible as getMethods should only return public methods
-            throw new BuildException(ine);
-        } catch (InvocationTargetException ite) {
-            Throwable t = ite.getTargetException();
-            if (t instanceof BuildException) {
-                throw (BuildException) t;
-            }
-            throw new BuildException(t);
-        }
-    }
-
-    /**
-     * returns the type of a named nested element.
-     */
-    public Class getElementType(String elementName) 
-        throws BuildException {
-        Class nt = (Class) nestedTypes.get(elementName);
-        if (nt == null) {
-            String msg = "Class " + bean.getName() +
-                " doesn't support the nested \"" + elementName + "\" element";
-            throw new BuildException(msg);
-        }
-        return nt;
-    }
-
-    /**
-     * returns the type of a named attribute.
-     */
-    public Class getAttributeType(String attributeName) 
-        throws BuildException {
-        Class at = (Class) attributeTypes.get(attributeName);
-        if (at == null) {
-            String msg = "Class " + bean.getName() +
-                " doesn't support the \"" + attributeName + "\" attribute";
-            throw new BuildException(msg);
-        }
-        return at;
-    }
-
-    /**
-     * Does the introspected class support PCDATA?
-     */
-    public boolean supportsCharacters() {
-        return addText != null;
-    }
-
-    /**
-     * Return all attribues supported by the introspected class.
-     */
-    public Enumeration getAttributes() {
-        return attributeSetters.keys();
-    }
-
-    /**
-     * Return all nested elements supported by the introspected class.
-     */
-    public Enumeration getNestedElements() {
-        return nestedTypes.keys();
-    }
-
-    /**
-     * Create a proper implementation of AttributeSetter for the given
-     * attribute type.  
-     */
-    private AttributeSetter createAttributeSetter(final Method m,
-                                                  final Class arg) {
-
-        // simplest case - setAttribute expects String
-        if (java.lang.String.class.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new String[] {value});
-                    }
-                };
-
-        // now for the primitive types, use their wrappers
-        } else if (java.lang.Character.class.equals(arg)
-                   || java.lang.Character.TYPE.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new Character[] {new Character(value.charAt(0))});
-                    }
-
-                };
-        } else if (java.lang.Byte.TYPE.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new Byte[] {new Byte(value)});
-                    }
-
-                };
-        } else if (java.lang.Short.TYPE.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new Short[] {new Short(value)});
-                    }
-
-                };
-        } else if (java.lang.Integer.TYPE.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new Integer[] {new Integer(value)});
-                    }
-
-                };
-        } else if (java.lang.Long.TYPE.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new Long[] {new Long(value)});
-                    }
-
-                };
-        } else if (java.lang.Float.TYPE.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new Float[] {new Float(value)});
-                    }
-
-                };
-        } else if (java.lang.Double.TYPE.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new Double[] {new Double(value)});
-                    }
-
-                };
-
-        // boolean gets an extra treatment, because we have a nice method 
-        // in Project
-        } else if (java.lang.Boolean.class.equals(arg) 
-                   || java.lang.Boolean.TYPE.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, 
-                                 new Boolean[] {new Boolean(Project.toBoolean(value))});
-                    }
-
-                };
-
-        // Class doesn't have a String constructor but a decent factory method
-        } else if (java.lang.Class.class.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException, BuildException {
-                        try {
-                            m.invoke(parent, new Class[] {Class.forName(value)});
-                        } catch (ClassNotFoundException ce) {
-                            throw new BuildException(ce);
-                        }
-                    }
-                };
-
-        // resolve relative paths through Project
-        } else if (java.io.File.class.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new File[] {p.resolveFile(value)});
-                    }
-
-                };
-
-        // resolve relative paths through Project
-        } else if (org.apache.tools.ant.types.Path.class.equals(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException {
-                        m.invoke(parent, new Path[] {new Path(p, value)});
-                    }
-
-                };
-
-        // EnumeratedAttributes have their own helper class
-        } else if (org.apache.tools.ant.types.EnumeratedAttribute.class.isAssignableFrom(arg)) {
-            return new AttributeSetter() {
-                    public void set(Project p, Object parent, String value) 
-                        throws InvocationTargetException, IllegalAccessException, BuildException {
-                        try {
-                            org.apache.tools.ant.types.EnumeratedAttribute ea = (org.apache.tools.ant.types.EnumeratedAttribute)arg.newInstance();
-                            ea.setValue(value);
-                            m.invoke(parent, new EnumeratedAttribute[] {ea});
-                        } catch (InstantiationException ie) {
-                            throw new BuildException(ie);
-                        }
-                    }
-                };
-        
-
-        // worst case. look for a public String constructor and use it
-        } else {
-
-            try {
-                final Constructor c = 
-                    arg.getConstructor(new Class[] {java.lang.String.class});
-
-                return new AttributeSetter() {
-                        public void set(Project p, Object parent, 
-                                        String value) 
-                            throws InvocationTargetException, IllegalAccessException, BuildException {
-                            try {
-                                m.invoke(parent, new Object[] {c.newInstance(new String[] {value})});
-                            } catch (InstantiationException ie) {
-                                throw new BuildException(ie);
-                            }
-                        }
-                    };
-                
-            } catch (NoSuchMethodException nme) {
-            }
-        }
-        
-        return null;
-    }
-
-    /**
-     * extract the name of a property from a method name - subtracting
-     * a given prefix.  
-     */
-    private String getPropertyName(String methodName, String prefix) {
-        int start = prefix.length();
-        return methodName.substring(start).toLowerCase();
-    }
-
-    private interface NestedCreator {
-        public Object create(Object parent) 
-            throws InvocationTargetException, IllegalAccessException, InstantiationException;
-    }
-    private interface AttributeSetter {
-        public void set(Project p, Object parent, String value)
-            throws InvocationTargetException, IllegalAccessException, 
-                   BuildException;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/Location.java b/src/main/org/apache/tools/ant/Location.java
deleted file mode 100644
index 5562ca3..0000000
--- a/src/main/org/apache/tools/ant/Location.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-/**
- * Stores the file name and line number in a file.
- */
-public class Location {
-    private String fileName;
-    private int lineNumber;
-    private int columnNumber;
-
-    public static final Location UNKNOWN_LOCATION = new Location();
-
-    /**
-     * Creates an "unknown" location.
-     */
-    private Location() {
-        this(null, 0, 0);
-    }
-
-    /**
-     * Creates a location consisting of a file name but no line number.
-     */
-    public Location(String fileName) {
-        this(fileName, 0, 0);
-    }
-
-    /**
-     * Creates a location consisting of a file name and line number.
-     */
-    public Location(String fileName, int lineNumber, int columnNumber) {
-        this.fileName = fileName;
-        this.lineNumber = lineNumber;
-        this.columnNumber = columnNumber;
-    }
-
-    /**
-     * Returns the file name, line number and a trailing space. An error
-     * message can be appended easily. For unknown locations, returns
-     * an empty string.
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-
-        if (fileName != null) {
-            buf.append(fileName);
-
-            if (lineNumber != 0) {
-                buf.append(":");
-                buf.append(lineNumber);
-            }
-
-            buf.append(": ");
-        }
-
-        return buf.toString();
-    }
-}
diff --git a/src/main/org/apache/tools/ant/Main.java b/src/main/org/apache/tools/ant/Main.java
deleted file mode 100644
index 43a5007..0000000
--- a/src/main/org/apache/tools/ant/Main.java
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * Command line entry point into Ant. This class is entered via the
- * cannonical `public static void main` entry point and reads the
- * command line arguments. It then assembles and executes an Ant
- * project.
- * <p>
- * If you integrating Ant into some other tool, this is not the class
- * to use as an entry point. Please see the source code of this
- * class to see how it manipulates the Ant project classes.
- *
- * @author duncan@x180.com
- */
-
-public class Main {
-
-    /** The default build file name */
-    public static final String DEFAULT_BUILD_FILENAME = "build.xml";
-
-    /** Our current message output status. Follows Project.MSG_XXX */
-    private int msgOutputLevel = Project.MSG_INFO;
-
-    /** File that we are using for configuration */
-    private File buildFile; /** null */
-
-    /** Stream that we are using for logging */
-    private PrintStream out = System.out;
-
-    /** Stream that we are using for logging error messages */
-    private PrintStream err = System.err;
-
-    /** The build targets */
-    private Vector targets = new Vector(5);
-
-    /** Set of properties that can be used by tasks */
-    private Properties definedProps = new Properties();
-
-    /** Names of classes to add as listeners to project */
-    private Vector listeners = new Vector(5);
-
-    /**
-     * The Ant logger class. There may be only one logger. It will have the
-     * right to use the 'out' PrintStream. The class must implements the BuildLogger
-     * interface
-     */
-    private String loggerClassname = null;
-
-    /**
-     * Indicates whether output to the log is to be unadorned.
-     */
-    private boolean emacsMode = false;
-
-    /**
-     * Indicates if this ant should be run.
-     */
-    private boolean readyToRun = false;
-
-    /**
-     * Indicates we should only parse and display the project help information
-     */
-    private boolean projectHelp = false;
-
-    /**
-     * Prints the message of the Throwable if it's not null.
-     */
-    private static void printMessage(Throwable t) {
-        String message = t.getMessage();
-        if (message != null) {
-            System.err.println(message);
-        }
-    }
-
-    /**
-     * Command line entry point. This method kicks off the building
-     * of a project object and executes a build using either a given
-     * target or the default target.
-     *
-     * @param args Command line args.
-     */
-    public static void main(String[] args) {
-        Main m = null;
-
-        try {
-            m = new Main(args);
-        } catch(Throwable exc) {
-            printMessage(exc);
-            System.exit(1);
-        }
-
-        try {
-            m.runBuild();
-            System.exit(0);
-        } catch (BuildException be) {
-            if (m.err != System.err) {
-                printMessage(be);
-            }
-            System.exit(1);
-        } catch(Throwable exc) {
-            printMessage(exc);
-            System.exit(1);
-        }
-    }
-
-    protected Main(String[] args) throws BuildException {
-
-        String searchForThis = null;
-
-        // cycle through given args
-
-        for (int i = 0; i < args.length; i++) {
-            String arg = args[i];
-
-            if (arg.equals("-help")) {
-                printUsage();
-                return;
-            } else if (arg.equals("-version")) {
-                printVersion();
-                return;
-            } else if (arg.equals("-quiet") || arg.equals("-q")) {
-                msgOutputLevel = Project.MSG_WARN;
-            } else if (arg.equals("-verbose") || arg.equals("-v")) {
-                printVersion();
-                msgOutputLevel = Project.MSG_VERBOSE;
-            } else if (arg.equals("-debug")) {
-                printVersion();
-                msgOutputLevel = Project.MSG_DEBUG;
-            } else if (arg.equals("-logfile") || arg.equals("-l")) {
-                try {
-                    File logFile = new File(args[i+1]);
-                    i++;
-                    out = new PrintStream(new FileOutputStream(logFile));
-                    err = out;
-                    System.setOut(out);
-                    System.setErr(out);
-                } catch (IOException ioe) {
-                    String msg = "Cannot write on the specified log file. " +
-                        "Make sure the path exists and you have write permissions.";
-                    System.out.println(msg);
-                    return;
-                } catch (ArrayIndexOutOfBoundsException aioobe) {
-                    String msg = "You must specify a log file when " +
-                        "using the -log argument";
-                    System.out.println(msg);
-                    return;
-                }
-            } else if (arg.equals("-buildfile") || arg.equals("-file") || arg.equals("-f")) {
-                try {
-                    buildFile = new File(args[i+1]);
-                    i++;
-                } catch (ArrayIndexOutOfBoundsException aioobe) {
-                    String msg = "You must specify a buildfile when " +
-                        "using the -buildfile argument";
-                    System.out.println(msg);
-                    return;
-                }
-            } else if (arg.equals("-listener")) {
-                try {
-                    listeners.addElement(args[i+1]);
-                    i++;
-                } catch (ArrayIndexOutOfBoundsException aioobe) {
-                    String msg = "You must specify a classname when " +
-                        "using the -listener argument";
-                    System.out.println(msg);
-                    return;
-                }
-            } else if (arg.startsWith("-D")) {
-
-                /* Interestingly enough, we get to here when a user
-                 * uses -Dname=value. However, in some cases, the JDK
-                 * goes ahead * and parses this out to args
-                 *   {"-Dname", "value"}
-                 * so instead of parsing on "=", we just make the "-D"
-                 * characters go away and skip one argument forward.
-                 *
-                 * I don't know how to predict when the JDK is going
-                 * to help or not, so we simply look for the equals sign.
-                 */
-
-                String name = arg.substring(2, arg.length());
-                String value = null;
-                int posEq = name.indexOf("=");
-                if (posEq > 0) {
-                    value = name.substring(posEq+1);
-                    name = name.substring(0, posEq);
-                } else if (i < args.length-1)
-                    value = args[++i];
-
-                definedProps.put(name, value);
-            } else if (arg.equals("-logger")) {
-                if (loggerClassname != null) {
-                    System.out.println("Only one logger class may be specified.");
-                    return;
-                }
-                loggerClassname = args[++i];
-            } else if (arg.equals("-emacs")) {
-                emacsMode = true;
-            } else if (arg.equals("-projecthelp")) {
-                // set the flag to display the targets and quit
-                projectHelp = true;
-            } else if (arg.equals("-find")) {
-                // eat up next arg if present, default to build.xml
-                if (i < args.length-1) {
-                    searchForThis = args[++i];
-                } else {
-                    searchForThis = DEFAULT_BUILD_FILENAME;
-                }
-            } else if (arg.startsWith("-")) {
-                // we don't have any more args to recognize!
-                String msg = "Unknown argument: " + arg;
-                System.out.println(msg);
-                printUsage();
-                return;
-            } else {
-                // if it's no other arg, it may be the target
-                targets.addElement(arg);
-            }
-
-        }
-
-        // if buildFile was not specified on the command line,
-        if (buildFile == null) {
-            // but -find then search for it
-            if (searchForThis != null) {
-                buildFile = findBuildFile(".", searchForThis);
-            } else {
-                buildFile = new File(DEFAULT_BUILD_FILENAME);
-            }
-        }
-
-        // make sure buildfile exists
-        if (!buildFile.exists()) {
-            System.out.println("Buildfile: " + buildFile + " does not exist!");
-            throw new BuildException("Build failed");
-        }
-
-        // make sure it's not a directory (this falls into the ultra
-        // paranoid lets check everything catagory
-
-        if (buildFile.isDirectory()) {
-            System.out.println("What? Buildfile: " + buildFile + " is a dir!");
-            throw new BuildException("Build failed");
-        }
-
-        readyToRun = true;
-    }
-
-    /**
-     * Helper to get the parent file for a given file.
-     *
-     * <P>Added to simulate File.getParentFile() from JDK 1.2.
-     *
-     * @param file   File
-     * @return       Parent file or null if none
-     */
-    private File getParentFile(File file) {
-        String filename = file.getAbsolutePath();
-        file = new File(filename);
-        filename = file.getParent();
-
-        if (filename != null && msgOutputLevel >= Project.MSG_VERBOSE) {
-            System.out.println("Searching in "+filename);
-        }
-
-        return (filename == null) ? null : new File(filename);
-    }
-
-    /**
-     * Search parent directories for the build file.
-     *
-     * <P>Takes the given target as a suffix to append to each
-     *    parent directory in seach of a build file.  Once the
-     *    root of the file-system has been reached an exception
-     *    is thrown.
-     *
-     * @param suffix    Suffix filename to look for in parents.
-     * @return          A handle to the build file
-     *
-     * @exception BuildException    Failed to locate a build file
-     */
-    private File findBuildFile(String start, String suffix) throws BuildException {
-        if (msgOutputLevel >= Project.MSG_INFO) {
-            System.out.println("Searching for " + suffix + " ...");
-        }
-
-        File parent = new File(new File(start).getAbsolutePath());
-        File file = new File(parent, suffix);
-        
-        // check if the target file exists in the current directory
-        while (!file.exists()) {
-            // change to parent directory
-            parent = getParentFile(parent);
-            
-            // if parent is null, then we are at the root of the fs,
-            // complain that we can't find the build file.
-            if (parent == null) {
-                throw new BuildException("Could not locate a build file!");
-            }
-            
-            // refresh our file handle
-            file = new File(parent, suffix);
-        }
-        
-        return file;
-    }
-
-    /**
-     * Executes the build.
-     */
-    private void runBuild() throws BuildException {
-
-        if (!readyToRun) {
-            return;
-        }
-
-        // track when we started
-
-        if (msgOutputLevel >= Project.MSG_INFO) {
-            System.out.println("Buildfile: " + buildFile);
-        }
-
-        Project project = new Project();
-
-        Throwable error = null;
-
-        try {
-            addBuildListeners(project);
-            project.fireBuildStarted();
-
-            project.init();
-
-            // set user-define properties
-            Enumeration e = definedProps.keys();
-            while (e.hasMoreElements()) {
-                String arg = (String)e.nextElement();
-                String value = (String)definedProps.get(arg);
-                project.setUserProperty(arg, value);
-            }
-
-            project.setUserProperty( "ant.file" , buildFile.getAbsolutePath() );
-
-            // first use the ProjectHelper to create the project object
-            // from the given build file.
-            try {
-                Class.forName("javax.xml.parsers.SAXParserFactory");
-                ProjectHelper.configureProject(project, buildFile);
-            } catch (NoClassDefFoundError ncdfe) {
-                throw new BuildException("No JAXP compliant XML parser found. See http://java.sun.com/xml for the\nreference implementation.", ncdfe);
-            } catch (ClassNotFoundException cnfe) {
-                throw new BuildException("No JAXP compliant XML parser found. See http://java.sun.com/xml for the\nreference implementation.", cnfe);
-            } catch (NullPointerException npe) {
-                throw new BuildException("No JAXP compliant XML parser found. See http://java.sun.com/xml for the\nreference implementation.", npe);
-            }
-
-            // make sure that we have a target to execute
-            if (targets.size() == 0) {
-                targets.addElement(project.getDefaultTarget());
-            }
-
-            if (projectHelp) {
-                printTargets(project);
-            } else {
-                // actually do some work
-                project.executeTargets(targets);
-            }
-        }
-        catch(RuntimeException exc) {
-            error = exc;
-            throw exc;
-        }
-        catch(Error err) {
-            error = err;
-            throw err;
-        }
-        finally {
-            project.fireBuildFinished(error);
-        }
-    }
-
-    protected void addBuildListeners(Project project) {
-
-        // Add the default listener
-        project.addBuildListener(createLogger());
-
-        for (int i = 0; i < listeners.size(); i++) {
-            String className = (String) listeners.elementAt(i);
-            try {
-                BuildListener listener =
-                    (BuildListener) Class.forName(className).newInstance();
-                project.addBuildListener(listener);
-            }
-            catch(Exception exc) {
-                throw new BuildException("Unable to instantiate listener " + className, exc);
-            }
-        }
-    }
-
-    /**
-     *  Creates the default build logger for sending build events to the ant log.
-     */
-    private BuildLogger createLogger() {
-        BuildLogger logger = null;
-        if (loggerClassname != null) {
-            try {
-                logger = (BuildLogger)(Class.forName(loggerClassname).newInstance());
-            }
-            catch (ClassCastException e) {
-                System.err.println("The specified logger class " + loggerClassname +
-                                         " does not implement the BuildLogger interface");
-                throw new RuntimeException();
-            }
-            catch (Exception e) {
-                System.err.println("Unable to instantiate specified logger class " +
-                                           loggerClassname + " : " + e.getClass().getName());
-                throw new RuntimeException();
-            }
-        }
-        else {
-            logger = new DefaultLogger();
-        }
-
-        logger.setMessageOutputLevel(msgOutputLevel);
-        logger.setOutputPrintStream(out);
-        logger.setErrorPrintStream(err);
-        logger.setEmacsMode(emacsMode);
-
-        return logger;
-    }
-
-    /**
-     * Prints the usage of how to use this class to System.out
-     */
-    private static void printUsage() {
-        String lSep = System.getProperty("line.separator");
-        StringBuffer msg = new StringBuffer();
-        msg.append("ant [options] [target [target2 [target3] ...]]" + lSep);
-        msg.append("Options: " + lSep);
-        msg.append("  -help                  print this message" + lSep);
-        msg.append("  -projecthelp           print project help information" + lSep);
-        msg.append("  -version               print the version information and exit" + lSep);
-        msg.append("  -quiet                 be extra quiet" + lSep);
-        msg.append("  -verbose               be extra verbose" + lSep);
-        msg.append("  -debug                 print debugging information" + lSep);
-        msg.append("  -emacs                 produce logging information without adornments" + lSep);
-        msg.append("  -logfile <file>        use given file for log" + lSep);
-        msg.append("  -logger <classname>    the class which is to perform logging" + lSep);
-        msg.append("  -listener <classname>  add an instance of class as a project listener" + lSep);
-        msg.append("  -buildfile <file>      use given buildfile" + lSep);
-        msg.append("  -D<property>=<value>   use value for given property" + lSep);
-        msg.append("  -find <file>           search for buildfile towards the root of the" + lSep);
-        msg.append("                         filesystem and use it" + lSep);
-        System.out.println(msg.toString());
-    }
-
-    private static void printVersion() {
-        try {
-            Properties props = new Properties();
-            InputStream in =
-                Main.class.getResourceAsStream("/org/apache/tools/ant/version.txt");
-            props.load(in);
-            in.close();
-
-            String lSep = System.getProperty("line.separator");
-            StringBuffer msg = new StringBuffer();
-            msg.append("Ant version ");
-            msg.append(props.getProperty("VERSION"));
-            msg.append(" compiled on ");
-            msg.append(props.getProperty("DATE"));
-            msg.append(lSep);
-            System.out.println(msg.toString());
-        } catch (IOException ioe) {
-            System.err.println("Could not load the version information.");
-            System.err.println(ioe.getMessage());
-        } catch (NullPointerException npe) {
-            System.err.println("Could not load the version information.");
-        }
-    }
-
-    /**
-     * Print out a list of all targets in the current buildfile
-     */
-    private static void printTargets(Project project) {
-        // find the target with the longest name
-        int maxLength = 0;
-        Enumeration ptargets = project.getTargets().elements();
-        String targetName;
-        String targetDescription;
-        Target currentTarget;
-        // split the targets in top-level and sub-targets depending
-        // on the presence of a description
-        Vector topNames = new Vector();
-        Vector topDescriptions = new Vector();
-        Vector subNames = new Vector();
-
-        while (ptargets.hasMoreElements()) {
-            currentTarget = (Target)ptargets.nextElement();
-            targetName = currentTarget.getName();
-            targetDescription = currentTarget.getDescription();
-            // maintain a sorted list of targets
-            if (targetDescription == null) {
-                int pos = findTargetPosition(subNames, targetName);
-                subNames.insertElementAt(targetName, pos);
-            } else {
-                int pos = findTargetPosition(topNames, targetName);
-                topNames.insertElementAt(targetName, pos);
-                topDescriptions.insertElementAt(targetDescription, pos);
-                if (targetName.length() > maxLength) {
-                    maxLength = targetName.length();
-                }
-            }
-        }
-        printTargets(topNames, topDescriptions, "Main targets:", maxLength);
-        printTargets(subNames, null, "Subtargets:", 0);
-    }
-
-    /**
-     * Search for the insert position to keep names a sorted list of Strings
-     */
-    private static int findTargetPosition(Vector names, String name) {
-        int res = names.size();
-        for (int i=0; i<names.size() && res == names.size(); i++) {
-            if (name.compareTo((String)names.elementAt(i)) < 0) {
-                res = i;
-            }
-        }
-        return res;
-    }
-
-    /**
-     * Output a formatted list of target names with an optional description
-     */
-    private static void printTargets(Vector names, Vector descriptions, String heading, int maxlen) {
-        // now, start printing the targets and their descriptions
-        String lSep = System.getProperty("line.separator");
-        // got a bit annoyed that I couldn't find a pad function
-        String spaces = "    ";
-        while (spaces.length()<maxlen) {
-            spaces += spaces;
-        }
-        StringBuffer msg = new StringBuffer();
-        msg.append(heading + lSep + lSep);
-        for (int i=0; i<names.size(); i++) {
-            msg.append(" ");
-            msg.append(names.elementAt(i));
-            if (descriptions != null) {
-                msg.append(spaces.substring(0, maxlen - ((String)names.elementAt(i)).length() + 2));
-                msg.append(descriptions.elementAt(i));
-            }
-            msg.append(lSep);
-        }
-        System.out.println(msg.toString());
-    }
-}
diff --git a/src/main/org/apache/tools/ant/NoBannerLogger.java b/src/main/org/apache/tools/ant/NoBannerLogger.java
deleted file mode 100644
index 5a4cbf4..0000000
--- a/src/main/org/apache/tools/ant/NoBannerLogger.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-/**
- * Extends DefaultLogger to strip out empty targets.
- *
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class NoBannerLogger extends DefaultLogger {
-
-    protected String targetName;
-
-    public void targetStarted(BuildEvent event) {
-        targetName = event.getTarget().getName();
-    }
-
-    public void targetFinished(BuildEvent event) {
-        targetName = null;
-    }
-
-    public void messageLogged(BuildEvent event) {
-
-        if( event.getPriority() > msgOutputLevel ||
-                null == event.getMessage() || 
-            "".equals( event.getMessage().trim() ) ) {
-            return;
-        }
-
-        if( null != targetName ) {
-            out.println(lSep + targetName + ":");
-            targetName = null;
-        }
-
-        super.messageLogged( event );
-    }
-}
diff --git a/src/main/org/apache/tools/ant/PathTokenizer.java b/src/main/org/apache/tools/ant/PathTokenizer.java
deleted file mode 100644
index 95daea9..0000000
--- a/src/main/org/apache/tools/ant/PathTokenizer.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant;
-
-import java.util.*;
-import java.io.*;
-
-/**
- * A Path tokenizer takes a path and returns the components that make up
- * that path.
- *
- * The path can use path separators of either ':' or ';' and file separators
- * of either '/' or '\'
- *
- * @author Conor MacNeill (conor@ieee.org)
- *
- */ 
-public class PathTokenizer {
-    /**
-     * A tokenizer to break the string up based on the ':' or ';' separators.
-     */
-    private StringTokenizer tokenizer;
-    
-    /**
-     * A String which stores any path components which have been read ahead.
-     */
-    private String lookahead = null;
-
-    /**
-     * Flag to indicate whether we are running on a platform with a DOS style
-     * filesystem
-     */
-    private boolean dosStyleFilesystem;
-
-    public PathTokenizer(String path) {
-       tokenizer = new StringTokenizer(path, ":;", false);
-       dosStyleFilesystem = File.pathSeparatorChar == ';'; 
-    }
-
-    public boolean hasMoreTokens() {
-        if (lookahead != null) {
-            return true;
-        }
-        
-        return tokenizer.hasMoreTokens();
-    }
-    
-    public String nextToken() throws NoSuchElementException {
-        String token = null;
-        if (lookahead != null) {
-            token = lookahead;
-            lookahead = null;
-        }
-        else {
-            token = tokenizer.nextToken().trim();
-        }            
-            
-        if (token.length() == 1 && Character.isLetter(token.charAt(0))
-                                && dosStyleFilesystem
-                                && tokenizer.hasMoreTokens()) {
-            // we are on a dos style system so this path could be a drive
-            // spec. We look at the next token
-            String nextToken = tokenizer.nextToken().trim();
-            if (nextToken.startsWith("\\") || nextToken.startsWith("/")) {
-                // we know we are on a DOS style platform and the next path starts with a
-                // slash or backslash, so we know this is a drive spec
-                token += ":" + nextToken;
-            }
-            else {
-                // store the token just read for next time
-                lookahead = nextToken;
-            }
-        }
-           
-        return token;
-    }
-}
-          
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java
deleted file mode 100644
index 4219dcd..0000000
--- a/src/main/org/apache/tools/ant/Project.java
+++ /dev/null
@@ -1,1103 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.io.*;
-import java.util.*;
-import java.text.*;
-
-/**
- * Central representation of an Ant project. This class defines a
- * Ant project with all of it's targets and tasks. It also provides
- * the mechanism to kick off a build using a particular target name.
- * <p>
- * This class also encapsulates methods which allow Files to be refered
- * to using abstract path names which are translated to native system
- * file paths at runtime as well as defining various project properties.
- *
- * @author duncan@x180.com
- */
-
-public class Project {
-
-    public static final int MSG_ERR = 0;
-    public static final int MSG_WARN = 1;
-    public static final int MSG_INFO = 2;
-    public static final int MSG_VERBOSE = 3;
-    public static final int MSG_DEBUG = 4;
-
-    // private set of constants to represent the state
-    // of a DFS of the Target dependencies
-    private static final String VISITING = "VISITING";
-    private static final String VISITED = "VISITED";
-
-    private static String javaVersion;
-
-    public static final String JAVA_1_0 = "1.0";
-    public static final String JAVA_1_1 = "1.1";
-    public static final String JAVA_1_2 = "1.2";
-    public static final String JAVA_1_3 = "1.3";
-
-    public static final String TOKEN_START = "@";
-    public static final String TOKEN_END = "@";
-
-    private String name;
-
-    private Hashtable properties = new Hashtable();
-    private Hashtable userProperties = new Hashtable();
-    private Hashtable references = new Hashtable();
-    private String defaultTarget;
-    private Hashtable dataClassDefinitions = new Hashtable();
-    private Hashtable taskClassDefinitions = new Hashtable();
-    private Hashtable targets = new Hashtable();
-    private Hashtable filters = new Hashtable();
-    private File baseDir;
-
-    private Vector listeners = new Vector();
-
-    private static java.lang.reflect.Method setLastModified = null;
-    private static Object lockReflection = new Object();
-
-    static {
-
-        // Determine the Java version by looking at available classes
-        // java.lang.StrictMath was introduced in JDK 1.3
-        // java.lang.ThreadLocal was introduced in JDK 1.2
-        // java.lang.Void was introduced in JDK 1.1
-        // Count up version until a NoClassDefFoundError ends the try
-
-        try {
-            javaVersion = JAVA_1_0;
-            Class.forName("java.lang.Void");
-            javaVersion = JAVA_1_1;
-            Class.forName("java.lang.ThreadLocal");
-            javaVersion = JAVA_1_2;
-            Class.forName("java.lang.StrictMath");
-            javaVersion = JAVA_1_3;
-        } catch (ClassNotFoundException cnfe) {
-            // swallow as we've hit the max class version that
-            // we have
-        }
-    }
-
-    public Project() {
-    }
-
-    /**
-     * Initialise the project.
-     *
-     * This involves setting the default task definitions and loading the
-     * system properties.
-     */
-    public void init() throws BuildException {
-        setJavaVersionProperty();
-        
-        String defs = "/org/apache/tools/ant/taskdefs/defaults.properties";
-
-        try {
-            Properties props = new Properties();
-            InputStream in = this.getClass().getResourceAsStream(defs);
-            if (in == null) { 
-                throw new BuildException("Can't load default task list");
-            }
-            props.load(in);
-            in.close();
-
-            Enumeration enum = props.propertyNames();
-            while (enum.hasMoreElements()) {
-                String key = (String) enum.nextElement();
-                String value = props.getProperty(key);
-                try {
-                    Class taskClass = Class.forName(value);
-                    addTaskDefinition(key, taskClass);
-                } catch (NoClassDefFoundError ncdfe) {
-                    // ignore...
-                } catch (ClassNotFoundException cnfe) {
-                    // ignore...
-                }
-            }
-        } catch (IOException ioe) {
-            throw new BuildException("Can't load default task list");
-        }
-
-        String dataDefs = "/org/apache/tools/ant/types/defaults.properties";
-
-        try{
-            Properties props = new Properties();
-            InputStream in = this.getClass().getResourceAsStream(dataDefs);
-            if (in == null) { 
-                throw new BuildException("Can't load default datatype list");
-            }
-            props.load(in);
-            in.close();
-
-            Enumeration enum = props.propertyNames();
-            while (enum.hasMoreElements()) {
-                String key = (String) enum.nextElement();
-                String value = props.getProperty(key);
-                try {
-                    Class dataClass = Class.forName(value);
-                    addDataTypeDefinition(key, dataClass);
-                } catch (NoClassDefFoundError ncdfe) {
-                    // ignore...
-                } catch (ClassNotFoundException cnfe) {
-                    // ignore...
-                }
-            }
-        } catch (IOException ioe) {
-            throw new BuildException("Can't load default datatype list");
-        }
-
-        Properties systemP = System.getProperties();
-        Enumeration e = systemP.keys();
-        while (e.hasMoreElements()) {
-            String name = (String) e.nextElement();
-            String value = (String) systemP.get(name);
-            this.setProperty(name, value);
-        }
-    }
-
-    public void addBuildListener(BuildListener listener) {
-        listeners.addElement(listener);
-    }
-
-    public void removeBuildListener(BuildListener listener) {
-        listeners.removeElement(listener);
-    }
-
-    public Vector getBuildListeners() {
-        return listeners;
-    }
-
-    public void log(String msg) {
-        log(msg, MSG_INFO);
-    }
-
-    public void log(String msg, int msgLevel) {
-        fireMessageLogged(this, msg, msgLevel);
-    }
-
-    public void log(Task task, String msg, int msgLevel) {
-        fireMessageLogged(task, msg, msgLevel);
-    }
-
-    public void log(Target target, String msg, int msgLevel) {
-        fireMessageLogged(target, msg, msgLevel);
-    }
-
-    public void setProperty(String name, String value) {
-        // command line properties take precedence
-        if (null != userProperties.get(name))
-            return;
-        log("Setting project property: " + name + " -> " +
-            value, MSG_DEBUG);
-        properties.put(name, value);
-    }
-
-    public void setUserProperty(String name, String value) {
-        log("Setting ro project property: " + name + " -> " +
-            value, MSG_DEBUG);
-        userProperties.put(name, value);
-        properties.put(name, value);
-    }
-
-    public String getProperty(String name) {
-        if (name == null) return null;
-        String property = (String) properties.get(name);
-        return property;
-    }
-
-    public String getUserProperty(String name) {
-        if (name == null) return null;
-        String property = (String) userProperties.get(name);
-        return property;
-    }
-
-    public Hashtable getProperties() {
-        return properties;
-    }
-
-    public Hashtable getUserProperties() {
-        return userProperties;
-    }
-
-    public void setDefaultTarget(String defaultTarget) {
-        this.defaultTarget = defaultTarget;
-    }
-
-    // deprecated, use setDefault
-    public String getDefaultTarget() {
-        return defaultTarget;
-    }
-
-    // match the attribute name
-    public void setDefault(String defaultTarget) {
-        this.defaultTarget = defaultTarget;
-    }
-
-    public void setName(String name) {
-        setUserProperty("ant.project.name",  name);
-        this.name = name;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void addFilter(String token, String value) {
-        if (token == null) return;
-        log("Setting token to filter: " + token + " -> "
-            + value, MSG_DEBUG);
-        this.filters.put(token, value);
-    }
-
-    public Hashtable getFilters() {
-        return filters;
-    }
-
-    // match basedir attribute in xml
-    public void setBasedir(String baseD) throws BuildException {
-        try {
-            setBaseDir(new File(new File(baseD).getCanonicalPath()));
-        } catch (IOException ioe) {
-            String msg = "Can't set basedir " + baseD + " due to " +
-                ioe.getMessage();
-            throw new BuildException(msg);
-        }
-    }
-
-    public void setBaseDir(File baseDir) {
-        this.baseDir = baseDir;
-        setProperty( "basedir", baseDir.getAbsolutePath());
-        String msg = "Project base dir set to: " + baseDir;
-        log(msg, MSG_VERBOSE);
-    }
-
-    public File getBaseDir() {
-        if (baseDir == null) {
-            try {
-                setBasedir(".");
-            } catch (BuildException ex) {
-              ex.printStackTrace();
-            }
-        }
-        return baseDir;
-    }
-
-    public static String getJavaVersion() {
-        return javaVersion;
-    }
-
-    public void setJavaVersionProperty() {
-        setProperty("ant.java.version", javaVersion);
-
-        // sanity check
-        if (javaVersion == JAVA_1_0) {
-            throw new BuildException("Ant cannot work on Java 1.0");
-        }
-
-        log("Detected Java Version: " + javaVersion, MSG_VERBOSE);
-
-        log("Detected OS: " + System.getProperty("os.name"), MSG_VERBOSE);
-    }
-
-    public void addTaskDefinition(String taskName, Class taskClass) {
-        String msg = " +User task: " + taskName + "     " + taskClass.getName();
-        log(msg, MSG_DEBUG);
-        taskClassDefinitions.put(taskName, taskClass);
-    }
-
-    public Hashtable getTaskDefinitions() {
-        return taskClassDefinitions;
-    }
-
-    public void addDataTypeDefinition(String typeName, Class typeClass) {
-        String msg = " +User datatype: " + typeName + "     " + typeClass.getName();
-        log(msg, MSG_DEBUG);
-        dataClassDefinitions.put(typeName, typeClass);
-    }
-
-    public Hashtable getDataTypeDefinitions() {
-        return dataClassDefinitions;
-    }
-
-    /**
-     * This call expects to add a <em>new</em> Target.
-     * @param target is the Target to be added to the current
-     * Project.
-     * @exception BuildException if the Target already exists
-     * in the project.
-     * @see Project#addOrReplaceTarget to replace existing Targets.
-     */
-    public void addTarget(Target target) {
-        String name = target.getName();
-        if (targets.get(name) != null) {
-            throw new BuildException("Duplicate target: `"+name+"'");
-        }
-        addOrReplaceTarget(name, target);
-    }
-
-    /**
-     * This call expects to add a <em>new</em> Target.
-     * @param target is the Target to be added to the current
-     * Project.
-     * @param targetName is the name to use for the Target
-     * @exception BuildException if the Target already exists
-     * in the project.
-     * @see Project#addOrReplaceTarget to replace existing Targets.
-     */
-     public void addTarget(String targetName, Target target)
-         throws BuildException {
-         if (targets.get(targetName) != null) {
-             throw new BuildException("Duplicate target: `"+targetName+"'");
-         }
-         addOrReplaceTarget(targetName, target);
-     }
-
-    /**
-     * @param target is the Target to be added or replaced in
-     * the current Project.
-     */
-    public void addOrReplaceTarget(Target target) {
-        addOrReplaceTarget(target.getName(), target);
-    }
-
-    /**
-     * @param target is the Target to be added/replaced in
-     * the current Project.
-     * @param targetName is the name to use for the Target
-     */
-    public void addOrReplaceTarget(String targetName, Target target) {
-        String msg = " +Target: " + targetName;
-        log(msg, MSG_DEBUG);
-        target.setProject(this);
-        targets.put(targetName, target);
-    }
-
-    public Hashtable getTargets() {
-        return targets;
-    }
-
-    public Task createTask(String taskType) throws BuildException {
-        Class c = (Class) taskClassDefinitions.get(taskType);
-
-        if (c == null)
-            return null;
-        try {
-            Object o = c.newInstance();
-            Task task = null;
-            if( o instanceof Task ) {
-               task=(Task)o;
-            } else {
-                // "Generic" Bean - use the setter pattern
-                // and an Adapter
-                TaskAdapter taskA=new TaskAdapter();
-                taskA.setProxy( o );
-                task=taskA;
-            }
-            task.setProject(this);
-            task.setTaskType(taskType);
-
-            // set default value, can be changed by the user
-            task.setTaskName(taskType);
-
-            String msg = "   +Task: " + taskType;
-            log (msg, MSG_DEBUG);
-            return task;
-        } catch (Throwable t) {
-            String msg = "Could not create task of type: "
-                 + taskType + " due to " + t;
-            throw new BuildException(msg, t);
-        }
-    }
-
-    public Object createDataType(String typeName) throws BuildException {
-        Class c = (Class) dataClassDefinitions.get(typeName);
-
-        if (c == null)
-            return null;
-
-        try {
-            java.lang.reflect.Constructor ctor = null;
-            boolean noArg = false;
-            // DataType can have a "no arg" constructor or take a single 
-            // Project argument.
-            try {
-                ctor = c.getConstructor(new Class[0]);
-                noArg = true;
-            } catch (NoSuchMethodException nse) {
-                ctor = c.getConstructor(new Class[] {getClass()});
-                noArg = false;
-            }
-
-            Object o = null;
-            if (noArg) {
-                 o = ctor.newInstance(new Object[0]);
-            } else {
-                 o = ctor.newInstance(new Object[] {this});
-            }
-            String msg = "   +DataType: " + typeName;
-            log (msg, MSG_DEBUG);
-            return o;
-        } catch (java.lang.reflect.InvocationTargetException ite) {
-            Throwable t = ite.getTargetException();
-            String msg = "Could not create datatype of type: "
-                 + typeName + " due to " + t;
-            throw new BuildException(msg, t);
-        } catch (Throwable t) {
-            String msg = "Could not create datatype of type: "
-                 + typeName + " due to " + t;
-            throw new BuildException(msg, t);
-        }
-    }
-
-    public void executeTargets(Vector targetNames) throws BuildException {
-        Throwable error = null;
-
-        for (int i = 0; i < targetNames.size(); i++) {
-            executeTarget((String)targetNames.elementAt(i));
-        }
-    }
-
-    public void executeTarget(String targetName) throws BuildException {
-
-        // sanity check ourselves, if we've been asked to build nothing
-        // then we should complain
-
-        if (targetName == null) {
-            String msg = "No target specified";
-            throw new BuildException(msg);
-        }
-
-        // Sort the dependency tree, and run everything from the
-        // beginning until we hit our targetName.
-        // Sorting checks if all the targets (and dependencies)
-        // exist, and if there is any cycle in the dependency
-        // graph.
-        Vector sortedTargets = topoSort(targetName, targets);
-
-        int curidx = 0;
-        Target curtarget;
-
-        do {
-            curtarget = (Target) sortedTargets.elementAt(curidx++);
-            runTarget(curtarget);
-        } while (!curtarget.getName().equals(targetName));
-    }
-
-    public File resolveFile(String fileName) {
-        fileName = fileName.replace('/', File.separatorChar).replace('\\', File.separatorChar);
-
-        // deal with absolute files
-        if (fileName.startsWith(File.separator)) {
-            try {
-                return new File(new File(fileName).getCanonicalPath());
-            } catch (IOException e) {
-                log("IOException getting canonical path for " + fileName 
-                    + ": " + e.getMessage(), MSG_ERR);
-                return new File(fileName);
-            }
-        }
-
-        // Eliminate consecutive slashes after the drive spec
-        if (fileName.length() >= 2 &&
-            Character.isLetter(fileName.charAt(0)) &&
-            fileName.charAt(1) == ':') {
-            char[] ca = fileName.replace('/', '\\').toCharArray();
-            char c;
-            StringBuffer sb = new StringBuffer();
-
-            for (int i = 0; i < ca.length; i++) {
-                if ((ca[i] != '\\') ||
-                    (ca[i] == '\\' &&
-                        i > 0 &&
-                        ca[i - 1] != '\\')) {
-                    if (i == 0 &&
-                        Character.isLetter(ca[i]) &&
-                        i < ca.length - 1 &&
-                        ca[i + 1] == ':') {
-                        c = Character.toUpperCase(ca[i]);
-                    } else {
-                        c = ca[i];
-                    }
-
-                    sb.append(c);
-                }
-            }
-
-            return new File(sb.toString());
-        }
-
-        File file = new File(baseDir.getAbsolutePath());
-        StringTokenizer tok = new StringTokenizer(fileName, File.separator, false);
-        while (tok.hasMoreTokens()) {
-            String part = tok.nextToken();
-            if (part.equals("..")) {
-                String parentFile = file.getParent();
-                if (parentFile == null) {
-                    throw new BuildException("The file or path you specified (" + fileName + ") is invalid releative to " + baseDir.getAbsolutePath());
-                }
-                file = new File(parentFile);
-            } else if (part.equals(".")) {
-                // Do nothing here
-            } else {
-                file = new File(file, part);
-            }
-        }
-
-        try {
-            return new File(file.getCanonicalPath());
-        }
-        catch (IOException e) {
-            log("IOException getting canonical path for " + file + ": " +
-                e.getMessage(), MSG_ERR);
-            return new File(file.getAbsolutePath());
-        }
-    }
-
-    /**
-     * Translate a path into its native (platform specific) format. 
-     * <p>
-     * This method uses the PathTokenizer class to separate the input path
-     * into its components. This handles DOS style paths in a relatively
-     * sensible way. The file separators are then converted to their platform
-     * specific versions.
-     *
-     * @param to_process the path to be converted   
-     *
-     * @return the native version of to_process or 
-     *         an empty string if to_process is null or empty
-     */
-    static public String translatePath(String to_process) {
-        if ( to_process == null || to_process.length() == 0 ) {
-            return "";
-        }
-
-        StringBuffer path = new StringBuffer(to_process.length() + 50);
-        PathTokenizer tokenizer = new PathTokenizer(to_process);
-        while (tokenizer.hasMoreTokens()) {
-            String pathComponent = tokenizer.nextToken();
-            pathComponent = pathComponent.replace('/', File.separatorChar);
-            pathComponent = pathComponent.replace('\\', File.separatorChar);
-            if (path.length() != 0) {
-                path.append(File.pathSeparatorChar);
-            }
-            path.append(pathComponent);
-        }
-        
-        return path.toString();
-    }
-
-    /**
-     * Convienence method to copy a file from a source to a destination.
-     * No filtering is performed.
-     *
-     * @throws IOException
-     */
-    public void copyFile(String sourceFile, String destFile) throws IOException {
-        copyFile(new File(sourceFile), new File(destFile), false);
-    }
-
-    /**
-     * Convienence method to copy a file from a source to a destination
-     * specifying if token filtering must be used.
-     *
-     * @throws IOException
-     */
-    public void copyFile(String sourceFile, String destFile, boolean filtering)
-        throws IOException
-    {
-        copyFile(new File(sourceFile), new File(destFile), filtering);
-    }
-
-    /**
-     * Convienence method to copy a file from a source to a
-     * destination specifying if token filtering must be used and if
-     * source files may overwrite newer destination files.
-     *
-     * @throws IOException 
-     */
-    public void copyFile(String sourceFile, String destFile, boolean filtering,
-                         boolean overwrite) throws IOException {
-        copyFile(new File(sourceFile), new File(destFile), filtering, 
-                 overwrite);
-    }
-
-     /**
-     * Convienence method to copy a file from a source to a
-     * destination specifying if token filtering must be used, if
-     * source files may overwrite newer destination files and the
-     * last modified time of <code>destFile</code> file should be made equal
-     * to the last modified time of <code>sourceFile</code>.
-     *
-     * @throws IOException 
-     */
-    public void copyFile(String sourceFile, String destFile, boolean filtering,
-                         boolean overwrite, boolean preserveLastModified)
-        throws IOException {
-        copyFile(new File(sourceFile), new File(destFile), filtering, 
-                 overwrite, preserveLastModified);
-    }
-
-    /**
-     * Convienence method to copy a file from a source to a destination.
-     * No filtering is performed.
-     *
-     * @throws IOException
-     */
-    public void copyFile(File sourceFile, File destFile) throws IOException {
-        copyFile(sourceFile, destFile, false);
-    }
-
-    /**
-     * Convienence method to copy a file from a source to a destination
-     * specifying if token filtering must be used.
-     *
-     * @throws IOException
-     */
-    public void copyFile(File sourceFile, File destFile, boolean filtering)
-        throws IOException {
-        copyFile(sourceFile, destFile, filtering, false);
-    }
-
-    /**
-     * Convienence method to copy a file from a source to a
-     * destination specifying if token filtering must be used and if
-     * source files may overwrite newer destination files.
-     *
-     * @throws IOException 
-     */
-    public void copyFile(File sourceFile, File destFile, boolean filtering,
-                         boolean overwrite) throws IOException {
-        copyFile(sourceFile, destFile, filtering, overwrite, false);
-    }
-
-    /**
-     * Convienence method to copy a file from a source to a
-     * destination specifying if token filtering must be used, if
-     * source files may overwrite newer destination files and the
-     * last modified time of <code>destFile</code> file should be made equal
-     * to the last modified time of <code>sourceFile</code>.
-     *
-     * @throws IOException 
-     */
-    public void copyFile(File sourceFile, File destFile, boolean filtering,
-                         boolean overwrite, boolean preserveLastModified)
-        throws IOException {
-        
-        if (overwrite ||
-            destFile.lastModified() < sourceFile.lastModified()) {
-            log("Copy: " + sourceFile.getAbsolutePath() + " -> "
-                    + destFile.getAbsolutePath(), MSG_VERBOSE);
-
-            // ensure that parent dir of dest file exists!
-            // not using getParentFile method to stay 1.1 compat
-            File parent = new File(destFile.getParent());
-            if (!parent.exists()) {
-                parent.mkdirs();
-            }
-
-            if (filtering) {
-                BufferedReader in = new BufferedReader(new FileReader(sourceFile));
-                BufferedWriter out = new BufferedWriter(new FileWriter(destFile));
-
-                int length;
-                String newline = null;
-                String line = in.readLine();
-                while (line != null) {
-                    if (line.length() == 0) {
-                        out.newLine();
-                    } else {
-                        newline = replace(line, filters);
-                        out.write(newline);
-                        out.newLine();
-                    }
-                    line = in.readLine();
-                }
-
-                out.close();
-                in.close();
-            } else {
-                FileInputStream in = new FileInputStream(sourceFile);
-                FileOutputStream out = new FileOutputStream(destFile);
-
-                byte[] buffer = new byte[8 * 1024];
-                int count = 0;
-                do {
-                    out.write(buffer, 0, count);
-                    count = in.read(buffer, 0, buffer.length);
-                } while (count != -1);
-
-                in.close();
-                out.close();
-            }
-
-            if (preserveLastModified) {
-                setFileLastModified(destFile, sourceFile.lastModified());
-            }
-        }
-    }
-
-    /**
-     * Calls File.setLastModified(long time) in a Java 1.1 compatible way.
-     */
-    void setFileLastModified(File file, long time) throws BuildException {
-        if (getJavaVersion() == JAVA_1_1) {
-            log("Cannot change the modification time of " + file
-                + " in JDK 1.1", Project.MSG_WARN);
-            return;
-        }
-        if (setLastModified == null) {
-            synchronized (lockReflection) {
-                if (setLastModified == null) {
-                    try {
-                        setLastModified = 
-                            java.io.File.class.getMethod("setLastModified", 
-                                                         new Class[] {Long.TYPE});
-                    } catch (NoSuchMethodException nse) {
-                        throw new BuildException("File.setlastModified not in JDK > 1.1?",
-                                                 nse);
-                    }
-                }
-            }
-        }
-        Long[] times = new Long[1];
-        if (time < 0) {
-            times[0] = new Long(System.currentTimeMillis());
-        } else {
-            times[0] = new Long(time);
-        }
-        try {
-            log("Setting modification time for " + file, MSG_VERBOSE);
-            setLastModified.invoke(file, times);
-        } catch (java.lang.reflect.InvocationTargetException ite) {
-            Throwable nested = ite.getTargetException();
-            throw new BuildException("Exception setting the modification time "
-                                     + "of " + file, nested);
-        } catch (Throwable other) {
-            throw new BuildException("Exception setting the modification time "
-                                     + "of " + file, other);
-        }
-    }
-
-    /**
-     * Does replacement on the given string using the given token table.
-     *
-     * @returns the string with the token replaced.
-     */
-    private String replace(String s, Hashtable tokens) {
-        int index = s.indexOf(TOKEN_START);
-
-        if (index > -1) {
-            try {
-                StringBuffer b = new StringBuffer();
-                int i = 0;
-                String token = null;
-                String value = null;
-
-                do {
-                    int endIndex = s.indexOf(TOKEN_END, 
-                                             index + TOKEN_START.length() + 1);
-                    if (endIndex == -1) {
-                        break;
-                    }
-                    token = s.substring(index + TOKEN_START.length(), endIndex);
-                    b.append(s.substring(i, index));
-                    if (tokens.containsKey(token)) {
-                        value = (String) tokens.get(token);
-                        log("Replacing: " + TOKEN_START + token + TOKEN_END + " -> " + value, MSG_VERBOSE);
-                        b.append(value);
-                        i = index + TOKEN_START.length() + token.length() + TOKEN_END.length();
-                    } else {
-                        // just append TOKEN_START and search further
-                        b.append(TOKEN_START);
-                        i = index + TOKEN_START.length();
-                    }
-                } while ((index = s.indexOf(TOKEN_START, i)) > -1);
-
-                b.append(s.substring(i));
-                return b.toString();
-            } catch (StringIndexOutOfBoundsException e) {
-                return s;
-            }
-        } else {
-            return s;
-        }
-    }
-
-    /**
-     * returns the boolean equivalent of a string, which is considered true
-     * if either "on", "true", or "yes" is found, ignoring case.
-     */
-    public static boolean toBoolean(String s) {
-        return (s.equalsIgnoreCase("on") ||
-                s.equalsIgnoreCase("true") ||
-                s.equalsIgnoreCase("yes"));
-    }
-
-    // Given a string defining a target name, and a Hashtable
-    // containing the "name to Target" mapping, pick out the
-    // Target and execute it.
-    public void runTarget(Target target)
-        throws BuildException {
-
-        try {
-            fireTargetStarted(target);
-            target.execute();
-            fireTargetFinished(target, null);
-        }
-        catch(RuntimeException exc) {
-            fireTargetFinished(target, exc);
-            throw exc;
-        }
-    }
-
-    /**
-     * Topologically sort a set of Targets.
-     * @param root is the (String) name of the root Target. The sort is
-     * created in such a way that the sequence of Targets uptil the root
-     * target is the minimum possible such sequence.
-     * @param targets is a Hashtable representing a "name to Target" mapping
-     * @return a Vector of Strings with the names of the targets in
-     * sorted order.
-     * @exception BuildException if there is a cyclic dependency among the
-     * Targets, or if a Target does not exist.
-     */
-    public final Vector topoSort(String root, Hashtable targets)
-        throws BuildException {
-        Vector ret = new Vector();
-        Hashtable state = new Hashtable();
-        Stack visiting = new Stack();
-
-        // We first run a DFS based sort using the root as the starting node.
-        // This creates the minimum sequence of Targets to the root node.
-        // We then do a sort on any remaining unVISITED targets.
-        // This is unnecessary for doing our build, but it catches
-        // circular dependencies or missing Targets on the entire
-        // dependency tree, not just on the Targets that depend on the
-        // build Target.
-
-        tsort(root, targets, state, visiting, ret);
-        log("Build sequence for target `"+root+"' is "+ret, MSG_VERBOSE);
-        for (Enumeration en=targets.keys(); en.hasMoreElements();) {
-            String curTarget = (String)(en.nextElement());
-            String st = (String) state.get(curTarget);
-            if (st == null) {
-                tsort(curTarget, targets, state, visiting, ret);
-            }
-            else if (st == VISITING) {
-                throw new RuntimeException("Unexpected node in visiting state: "+curTarget);
-            }
-        }
-        log("Complete build sequence is "+ret, MSG_VERBOSE);
-        return ret;
-    }
-
-    // one step in a recursive DFS traversal of the Target dependency tree.
-    // - The Hashtable "state" contains the state (VISITED or VISITING or null)
-    // of all the target names.
-    // - The Stack "visiting" contains a stack of target names that are
-    // currently on the DFS stack. (NB: the target names in "visiting" are
-    // exactly the target names in "state" that are in the VISITING state.)
-    // 1. Set the current target to the VISITING state, and push it onto
-    // the "visiting" stack.
-    // 2. Throw a BuildException if any child of the current node is
-    // in the VISITING state (implies there is a cycle.) It uses the
-    // "visiting" Stack to construct the cycle.
-    // 3. If any children have not been VISITED, tsort() the child.
-    // 4. Add the current target to the Vector "ret" after the children
-    //   have been visited. Move the current target to the VISITED state.
-    //   "ret" now contains the sorted sequence of Targets upto the current
-    //   Target.
-
-    private final void tsort(String root, Hashtable targets,
-                             Hashtable state, Stack visiting,
-                             Vector ret)
-        throws BuildException {
-        state.put(root, VISITING);
-        visiting.push(root);
-
-        Target target = (Target)(targets.get(root));
-
-        // Make sure we exist
-        if (target == null) {
-            StringBuffer sb = new StringBuffer("Target `");
-            sb.append(root);
-            sb.append("' does not exist in this project. ");
-            visiting.pop();
-            if (!visiting.empty()) {
-                String parent = (String)visiting.peek();
-                sb.append("It is used from target `");
-                sb.append(parent);
-                sb.append("'.");
-            }
-
-            throw new BuildException(new String(sb));
-        }
-
-        for (Enumeration en=target.getDependencies(); en.hasMoreElements();) {
-            String cur = (String) en.nextElement();
-            String m=(String)state.get(cur);
-            if (m == null) {
-                // Not been visited
-                tsort(cur, targets, state, visiting, ret);
-            }
-            else if (m == VISITING) {
-                // Currently visiting this node, so have a cycle
-                throw makeCircularException(cur, visiting);
-            }
-        }
-
-        String p = (String) visiting.pop();
-        if (root != p) {
-            throw new RuntimeException("Unexpected internal error: expected to pop "+root+" but got "+p);
-        }
-        state.put(root, VISITED);
-        ret.addElement(target);
-    }
-
-    private static BuildException makeCircularException(String end, Stack stk) {
-        StringBuffer sb = new StringBuffer("Circular dependency: ");
-        sb.append(end);
-        String c;
-        do {
-            c = (String)stk.pop();
-            sb.append(" <- ");
-            sb.append(c);
-        } while(!c.equals(end));
-        return new BuildException(new String(sb));
-    }
-
-    public void addReference(String name, Object value) {
-        references.put(name,value);
-    }
-
-    public Hashtable getReferences() {
-        return references;
-    }
-
-    protected void fireBuildStarted() {
-        BuildEvent event = new BuildEvent(this);
-        for (int i = 0; i < listeners.size(); i++) {
-            BuildListener listener = (BuildListener) listeners.elementAt(i);
-            listener.buildStarted(event);
-        }
-    }
-
-    protected void fireBuildFinished(Throwable exception) {
-        BuildEvent event = new BuildEvent(this);
-        event.setException(exception);
-        for (int i = 0; i < listeners.size(); i++) {
-            BuildListener listener = (BuildListener) listeners.elementAt(i);
-            listener.buildFinished(event);
-        }
-    }
-
-    protected void fireTargetStarted(Target target) {
-        BuildEvent event = new BuildEvent(target);
-        for (int i = 0; i < listeners.size(); i++) {
-            BuildListener listener = (BuildListener) listeners.elementAt(i);
-            listener.targetStarted(event);
-        }
-    }
-
-    protected void fireTargetFinished(Target target, Throwable exception) {
-        BuildEvent event = new BuildEvent(target);
-        event.setException(exception);
-        for (int i = 0; i < listeners.size(); i++) {
-            BuildListener listener = (BuildListener) listeners.elementAt(i);
-            listener.targetFinished(event);
-        }
-    }
-
-    protected void fireTaskStarted(Task task) {
-        BuildEvent event = new BuildEvent(task);
-        for (int i = 0; i < listeners.size(); i++) {
-            BuildListener listener = (BuildListener) listeners.elementAt(i);
-            listener.taskStarted(event);
-        }
-    }
-
-    protected void fireTaskFinished(Task task, Throwable exception) {
-        BuildEvent event = new BuildEvent(task);
-        for (int i = 0; i < listeners.size(); i++) {
-            BuildListener listener = (BuildListener) listeners.elementAt(i);
-            listener.taskFinished(event);
-        }
-    }
-
-    private void fireMessageLoggedEvent(BuildEvent event, String message, int priority) {
-        event.setMessage(message, priority);
-        for (int i = 0; i < listeners.size(); i++) {
-            BuildListener listener = (BuildListener) listeners.elementAt(i);
-            listener.messageLogged(event);
-        }
-    }
-
-    protected void fireMessageLogged(Project project, String message, int priority) {
-        BuildEvent event = new BuildEvent(project);
-        fireMessageLoggedEvent(event, message, priority);
-    }
-
-    protected void fireMessageLogged(Target target, String message, int priority) {
-        BuildEvent event = new BuildEvent(target);
-        fireMessageLoggedEvent(event, message, priority);
-    }
-
-    protected void fireMessageLogged(Task task, String message, int priority) {
-        BuildEvent event = new BuildEvent(task);
-        fireMessageLoggedEvent(event, message, priority);
-    }
-}
diff --git a/src/main/org/apache/tools/ant/ProjectHelper.java b/src/main/org/apache/tools/ant/ProjectHelper.java
deleted file mode 100644
index 2243c1f..0000000
--- a/src/main/org/apache/tools/ant/ProjectHelper.java
+++ /dev/null
@@ -1,696 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.io.*;
-import java.util.*;
-import org.xml.sax.*;
-import org.w3c.dom.*;
-import org.apache.tools.ant.taskdefs.*;
-import javax.xml.parsers.*;
-
-/**
- * Configures a Project (complete with Targets and Tasks) based on
- * a XML build file.
- *
- * @author duncan@x180.com
- */
-
-public class ProjectHelper {
-
-    private static SAXParserFactory parserFactory = null;
-
-    private org.xml.sax.Parser parser;
-    private Project project;
-    private File buildFile;
-    private File buildFileParent;
-    private Locator locator;
-
-    /**
-     * Configures the Project with the contents of the specified XML file.
-     */
-    public static void configureProject(Project project, File buildFile) throws BuildException {
-        new ProjectHelper(project, buildFile).parse();
-    }
-
-    /**
-     * Constructs a new Ant parser for the specified XML file.
-     */
-    private ProjectHelper(Project project, File buildFile) {
-        this.project = project;
-        this.buildFile = new File(buildFile.getAbsolutePath());
-        buildFileParent = new File(this.buildFile.getParent());
-    }
-
-    /**
-     * Parses the project file.
-     */
-    private void parse() throws BuildException {
-        FileInputStream inputStream = null;
-        
-        try {
-            SAXParser saxParser = getParserFactory().newSAXParser();
-            parser = saxParser.getParser();
-            
-            inputStream = new FileInputStream(buildFile);
-            saxParser.parse(inputStream, new RootHandler());
-        }
-        catch(ParserConfigurationException exc) {
-            throw new BuildException("Parser has not been configured correctly", exc);
-        }
-        catch(SAXParseException exc) {
-            Location location =
-                new Location(buildFile.toString(), exc.getLineNumber(), exc.getColumnNumber());
-
-            Throwable t = exc.getException();
-            if (t instanceof BuildException) {
-                BuildException be = (BuildException) t;
-                if (be.getLocation() == Location.UNKNOWN_LOCATION) {
-                    be.setLocation(location);
-                }
-                throw be;
-            }
-            
-            throw new BuildException(exc.getMessage(), t, location);
-        }
-        catch(SAXException exc) {
-            Throwable t = exc.getException();
-            if (t instanceof BuildException) {
-                throw (BuildException) t;
-            }
-            throw new BuildException(exc.getMessage(), t);
-        }
-        catch(FileNotFoundException exc) {
-            throw new BuildException(exc);
-        }
-        catch(IOException exc) {
-            throw new BuildException("Error reading project file", exc);
-        }
-        finally {
-            if (inputStream != null) {
-                try {
-                    inputStream.close();
-                }
-                catch (IOException ioe) {
-                    // ignore this
-                }
-            }
-        }
-    }
-
-    /**
-     * The common superclass for all sax event handlers in Ant. Basically
-     * throws an exception in each method, so subclasses should override
-     * what they can handle.
-     *
-     * Each type of xml element (task, target, etc) in ant will
-     * have its own subclass of AbstractHandler.
-     *
-     * In the constructor, this class    takes over the handling of sax
-     * events from the parent handler, and returns
-     * control back to the parent in the endElement method.
-     */
-    private class AbstractHandler extends HandlerBase {
-        protected DocumentHandler parentHandler;
-
-        public AbstractHandler(DocumentHandler parentHandler) {
-            this.parentHandler = parentHandler;
-
-            // Start handling SAX events
-            parser.setDocumentHandler(this);
-        }
-
-        public void startElement(String tag, AttributeList attrs) throws SAXParseException {
-            throw new SAXParseException("Unexpected element \"" + tag + "\"", locator);
-        }
-
-        public void characters(char[] buf, int start, int end) throws SAXParseException {
-            String s = new String(buf, start, end).trim();
-
-            if (s.length() > 0) {
-                throw new SAXParseException("Unexpected text \"" + s + "\"", locator);
-            }
-        }
-
-        /**
-         * Called when this element and all elements nested into it have been
-         * handeled.
-         */
-        protected void finished() {}
-
-        public void endElement(String name) throws SAXException {
-
-            finished();
-            // Let parent resume handling SAX events
-            parser.setDocumentHandler(parentHandler);
-        }
-    }
-
-    /**
-     * Handler for the root element. It's only child must be the "project" element.
-     */
-    private class RootHandler extends HandlerBase {
-
-        /**
-         * resolve file: URIs as relative to the build file.
-         */
-        public InputSource resolveEntity(String publicId,
-                                         String systemId) {
-
-            if (systemId.startsWith("file:")) {
-                String path = systemId.substring(5);
-                File file = new File(path);
-                if (!file.isAbsolute()) {
-                    file = new File(buildFileParent, path);
-                }
-                
-                try {
-                    return new InputSource(new FileInputStream(file));
-                } catch (FileNotFoundException fne) {
-                    project.log(file.getAbsolutePath()+" could not be found", 
-                                Project.MSG_WARN);
-                }
-            }
-            // use default if not file or file not found
-            return null;
-        }
-
-        public void startElement(String tag, AttributeList attrs) throws SAXParseException {
-            if (tag.equals("project")) {
-                new ProjectHandler(this).init(tag, attrs);
-            } else {
-                throw new SAXParseException("Config file is not of expected XML type", locator);
-            }
-        }
-
-        public void setDocumentLocator(Locator locator) {
-            ProjectHelper.this.locator = locator;
-        }
-    }
-
-    /**
-     * Handler for the top level "project" element.
-     */
-    private class ProjectHandler extends AbstractHandler {
-        public ProjectHandler(DocumentHandler parentHandler) {
-            super(parentHandler);
-        }
-
-        public void init(String tag, AttributeList attrs) throws SAXParseException {
-            String def = null;
-            String name = null;
-            String id = null;
-            String baseDir = null;
-
-            for (int i = 0; i < attrs.getLength(); i++) {
-                String key = attrs.getName(i);
-                String value = attrs.getValue(i);
-
-                if (key.equals("default")) {
-                    def = value;
-                } else if (key.equals("name")) {
-                    name = value;
-                } else if (key.equals("id")) {
-                    id = value;
-                } else if (key.equals("basedir")) {
-                    baseDir = value;
-                } else {
-                    throw new SAXParseException("Unexpected attribute \"" + attrs.getName(i) + "\"", locator);
-                }
-            }
-
-            if (def == null) {
-                throw new SAXParseException("The default attribute of project is required", 
-                                            locator);
-            }
-            
-
-            project.setDefaultTarget(def);
-
-            if (name != null) {
-                project.setName(name);
-                project.addReference(name, project);
-            }
-
-            if (id != null) project.addReference(id, project);
-
-            if (project.getProperty("basedir") != null) {
-                project.setBasedir(project.getProperty("basedir"));
-            } else {
-                if (baseDir == null) {
-                    project.setBasedir(buildFileParent.getAbsolutePath());
-                } else {
-                    // check whether the user has specified an absolute path
-                    if ((new File(baseDir)).isAbsolute()) {
-                        project.setBasedir(baseDir);
-                    } else {
-                        project.setBasedir((new File(buildFileParent, baseDir)).getAbsolutePath());
-                    }
-                }
-            }
-
-        }
-
-        public void startElement(String name, AttributeList attrs) throws SAXParseException {
-            if (name.equals("taskdef")) {
-                handleTaskdef(name, attrs);
-            } else if (name.equals("property")) {
-                handleProperty(name, attrs);
-            } else if (name.equals("target")) {
-                handleTarget(name, attrs);
-            } else if (project.getDataTypeDefinitions().get(name) != null) {
-                handleDataType(name, attrs);
-            } else {
-                throw new SAXParseException("Unexpected element \"" + name + "\"", locator);
-            }
-        }
-
-        private void handleTaskdef(String name, AttributeList attrs) throws SAXParseException {
-            (new TaskHandler(this, null)).init(name, attrs);
-        }
-
-        private void handleProperty(String name, AttributeList attrs) throws SAXParseException {
-            (new TaskHandler(this, null)).init(name, attrs);
-        }
-
-        private void handleTarget(String tag, AttributeList attrs) throws SAXParseException {
-            new TargetHandler(this).init(tag, attrs);
-        }
-
-        private void handleDataType(String name, AttributeList attrs) throws SAXParseException {
-            new DataTypeHandler(this).init(name, attrs);
-        }
-
-    }
-
-    /**
-     * Handler for "target" elements.
-     */
-    private class TargetHandler extends AbstractHandler {
-        private Target target;
-
-        public TargetHandler(DocumentHandler parentHandler) {
-            super(parentHandler);
-        }
-
-        public void init(String tag, AttributeList attrs) throws SAXParseException {
-            String name = null;
-            String depends = "";
-            String ifCond = null;
-            String unlessCond = null;
-            String id = null;
-            String description = null;
-
-            for (int i = 0; i < attrs.getLength(); i++) {
-                String key = attrs.getName(i);
-                String value = attrs.getValue(i);
-
-                if (key.equals("name")) {
-                    name = value;
-                } else if (key.equals("depends")) {
-                    depends = value;
-                } else if (key.equals("if")) {
-                    ifCond = value;
-                } else if (key.equals("unless")) {
-                    unlessCond = value;
-                } else if (key.equals("id")) {
-                    id = value;
-                } else if (key.equals("description")) {
-                    description = value;
-                } else {
-                    throw new SAXParseException("Unexpected attribute \"" + key + "\"", locator);
-                }
-            }
-
-            if (name == null) {
-                throw new SAXParseException("target element appears without a name attribute", locator);
-            }
-
-            target = new Target();
-            target.setName(name);
-            target.setIf(ifCond);
-            target.setUnless(unlessCond);
-            target.setDescription(description);
-            project.addTarget(name, target);
-
-            if (id != null && !id.equals(""))
-                project.addReference(id, target);
-
-            // take care of dependencies
-
-            if (depends.length() > 0) {
-                StringTokenizer tok =
-                    new StringTokenizer(depends, ",", false);
-                while (tok.hasMoreTokens()) {
-                    target.addDependency(tok.nextToken().trim());
-                }
-            }
-        }
-
-        public void startElement(String name, AttributeList attrs) throws SAXParseException {
-            new TaskHandler(this, target).init(name, attrs);
-        }
-    }
-
-    /**
-     * Handler for all task elements.
-     */
-    private class TaskHandler extends AbstractHandler {
-        private Target target;
-        private Task task;
-        private RuntimeConfigurable wrapper = null;
-
-        public TaskHandler(DocumentHandler parentHandler, Target target) {
-            super(parentHandler);
-
-            this.target = target;
-        }
-
-        public void init(String tag, AttributeList attrs) throws SAXParseException {
-            try {
-                task = project.createTask(tag);
-            } catch (BuildException e) {
-                // swallow here, will be thrown again in 
-                // UnknownElement.maybeConfigure if the problem persists.
-            }
-
-            if (task == null) {
-                task = new UnknownElement(tag);
-                task.setProject(project);
-            }
-
-            task.setLocation(new Location(buildFile.toString(), locator.getLineNumber(), locator.getColumnNumber()));
-            configureId(task, attrs);
-
-            // Top level tasks don't have associated targets
-            if (target != null) {
-                task.setOwningTarget(target);
-                target.addTask(task);
-                task.init();
-                wrapper = task.getRuntimeConfigurableWrapper();
-                wrapper.setAttributes(attrs);
-            } else {
-                task.init();
-                configure(task, attrs, project);
-            }
-        }
-
-        protected void finished() {
-            if (task != null && target == null) {
-                task.execute();
-            }
-        }
-
-        public void characters(char[] buf, int start, int end) throws SAXParseException {
-            if (wrapper == null) {
-                try {
-                    addText(task, buf, start, end);
-                } catch (BuildException exc) {
-                    throw new SAXParseException(exc.getMessage(), locator, exc);
-                }
-            } else {
-                wrapper.addText(buf, start, end);
-            }
-        }
-
-        public void startElement(String name, AttributeList attrs) throws SAXParseException {
-            new NestedElementHandler(this, task, wrapper).init(name, attrs);
-        }
-    }
-
-    /**
-     * Handler for all nested properties.
-     */
-    private class NestedElementHandler extends AbstractHandler {
-        private Object target;
-        private Object child;
-        private RuntimeConfigurable parentWrapper;
-        private RuntimeConfigurable childWrapper = null;
-
-        public NestedElementHandler(DocumentHandler parentHandler, 
-                                    Object target,
-                                    RuntimeConfigurable parentWrapper) {
-            super(parentHandler);
-
-            if (target instanceof TaskAdapter) {
-                this.target = ((TaskAdapter) target).getProxy();
-            } else {
-                this.target = target;
-            }
-            this.parentWrapper = parentWrapper;
-        }
-
-        public void init(String propType, AttributeList attrs) throws SAXParseException {
-            Class targetClass = target.getClass();
-            IntrospectionHelper ih = 
-                IntrospectionHelper.getHelper(targetClass);
-
-            try {
-                if (target instanceof UnknownElement) {
-                    child = new UnknownElement(propType.toLowerCase());
-                    ((UnknownElement) target).addChild((UnknownElement) child);
-                } else {
-                    child = ih.createElement(target, propType.toLowerCase());
-                }
-
-                configureId(child, attrs);
-
-                if (parentWrapper != null) {
-                    childWrapper = new RuntimeConfigurable(child);
-                    childWrapper.setAttributes(attrs);
-                    parentWrapper.addChild(childWrapper);
-                } else {
-                    configure(child, attrs, project);
-                }
-            } catch (BuildException exc) {
-                throw new SAXParseException(exc.getMessage(), locator, exc);
-            }
-        }
-
-        public void characters(char[] buf, int start, int end) throws SAXParseException {
-            if (parentWrapper == null) {
-                try {
-                    addText(child, buf, start, end);
-                } catch (BuildException exc) {
-                    throw new SAXParseException(exc.getMessage(), locator, exc);
-                }
-            } else {
-                childWrapper.addText(buf, start, end);
-            }
-        }
-
-        public void startElement(String name, AttributeList attrs) throws SAXParseException {
-            new NestedElementHandler(this, child, childWrapper).init(name, attrs);
-        }
-    }
-
-    /**
-     * Handler for all data types at global level.
-     */
-    private class DataTypeHandler extends AbstractHandler {
-        private Object element;
-
-        public DataTypeHandler(DocumentHandler parentHandler) {
-            super(parentHandler);
-        }
-
-        public void init(String propType, AttributeList attrs) throws SAXParseException {
-            try {
-                element = project.createDataType(propType);
-                if (element == null) {
-                    throw new BuildException("Unknown data type "+propType);
-                }
-                
-                configureId(element, attrs);
-                configure(element, attrs, project);
-            } catch (BuildException exc) {
-                throw new SAXParseException(exc.getMessage(), locator, exc);
-            }
-        }
-
-        public void characters(char[] buf, int start, int end) throws SAXParseException {
-            try {
-                addText(element, buf, start, end);
-            } catch (BuildException exc) {
-                throw new SAXParseException(exc.getMessage(), locator, exc);
-            }
-        }
-
-        public void startElement(String name, AttributeList attrs) throws SAXParseException {
-            new NestedElementHandler(this, element, null).init(name, attrs);
-        }
-    }
-
-    public static void configure(Object target, AttributeList attrs, 
-                                 Project project) throws BuildException {
-        if( target instanceof TaskAdapter )
-            target=((TaskAdapter)target).getProxy();
-
-        IntrospectionHelper ih = 
-            IntrospectionHelper.getHelper(target.getClass());
-
-        for (int i = 0; i < attrs.getLength(); i++) {
-            // reflect these into the target
-            String value=replaceProperties(project, attrs.getValue(i), 
-                                           project.getProperties() );
-            try {
-                ih.setAttribute(project, target, 
-                                attrs.getName(i).toLowerCase(), value);
-
-            } catch (BuildException be) {
-                // id attribute must be set externally
-                if (!attrs.getName(i).equals("id")) {
-                    throw be;
-                }
-            }
-        }
-    }
-
-    /**
-     * Adds the content of #PCDATA sections to an element.
-     */
-    public static void addText(Object target, char[] buf, int start, int end)
-        throws BuildException {
-        addText(target, new String(buf, start, end));
-    }
-
-    /**
-     * Adds the content of #PCDATA sections to an element.
-     */
-    public static void addText(Object target, String text)
-        throws BuildException {
-
-        if (text == null || text.trim().length() == 0) {
-            return;
-        }
-
-        if(target instanceof TaskAdapter)
-            target = ((TaskAdapter) target).getProxy();
-
-        IntrospectionHelper.getHelper(target.getClass()).addText(target, text);
-    }
-
-
-    /** Replace ${NAME} with the property value
-     */
-    public static String replaceProperties(Project project, String value, Hashtable keys )
-        throws BuildException
-    {
-        // XXX use Map instead of proj, it's too heavy
-
-        // XXX need to replace this code with something better.
-        StringBuffer sb=new StringBuffer();
-        int i=0;
-        int prev=0;
-        // assert value!=nil
-        int pos;
-        while( (pos=value.indexOf( "$", prev )) >= 0 ) {
-            if(pos>0) {
-                sb.append( value.substring( prev, pos ) );
-            }
-            if( pos == (value.length() - 1)) {
-                sb.append('$');
-                prev = pos + 1;
-            }
-            else if (value.charAt( pos + 1 ) != '{' ) {
-                sb.append( value.charAt( pos + 1 ) );
-                prev=pos+2; // XXX
-            } else {
-                int endName=value.indexOf( '}', pos );
-                if( endName < 0 ) {
-                    throw new BuildException("Syntax error in prop: " +
-                                             value );
-                }
-                String n=value.substring( pos+2, endName );
-                if (!keys.containsKey(n)) {
-                    project.log("Property ${" + n + "} has not been set", Project.MSG_VERBOSE);
-                }
-                
-                String v = (keys.containsKey(n)) ? (String) keys.get(n) : "${"+n+"}"; 
-                
-                //System.out.println("N: " + n + " " + " V:" + v);
-                sb.append( v );
-                prev=endName+1;
-            }
-        }
-        if( prev < value.length() ) sb.append( value.substring( prev ) );
-        //      System.out.println("After replace: " + sb.toString());
-        // System.out.println("Before replace: " + value);
-        return sb.toString();
-    }
-
-    private static SAXParserFactory getParserFactory() {
-        if (parserFactory == null) {
-            parserFactory = SAXParserFactory.newInstance();
-        }
-
-        return parserFactory;
-    }
-
-    /**
-     * Scan AttributeList for the id attribute and maybe add a
-     * reference to project.  
-     *
-     * <p>Moved out of {@link #configure configure} to make it happen
-     * at parser time.</p> 
-     */
-    private void configureId(Object target, AttributeList attr) {
-        String id = attr.getValue("id");
-        if (id != null) {
-            project.addReference(id, target);
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/RuntimeConfigurable.java b/src/main/org/apache/tools/ant/RuntimeConfigurable.java
deleted file mode 100644
index 998ed84..0000000
--- a/src/main/org/apache/tools/ant/RuntimeConfigurable.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.util.Enumeration;
-import java.util.Vector;
-import org.xml.sax.AttributeList;
-import org.xml.sax.helpers.AttributeListImpl;
-
-/**
- * Wrapper class that holds the attributes of a Task (or elements
- * nested below that level) and takes care of configuring that element
- * at runtime.
- *
- * @author <a href="stefan.bodewig@megabit.net">Stefan Bodewig</a> 
- */
-public class RuntimeConfigurable {
-
-    private Vector children = new Vector();
-    private Object wrappedObject = null;
-    private AttributeList attributes;
-    private StringBuffer characters = new StringBuffer();
-
-    /**
-     * @param proxy The element to wrap.
-     */
-    public RuntimeConfigurable(Object proxy) {
-        wrappedObject = proxy;
-    }
-
-    void setProxy(Object proxy) {
-        wrappedObject = proxy;
-    }
-
-    /**
-     * Set's the attributes for the wrapped element.
-     */
-    public void setAttributes(AttributeList attributes) {
-        this.attributes = new AttributeListImpl(attributes);
-    }
-
-    /**
-     * Returns the AttributeList of the wrapped element.
-     */
-    public AttributeList getAttributes() {
-        return attributes;
-    }
-
-    /**
-     * Adds child elements to the wrapped element.
-     */
-    public void addChild(RuntimeConfigurable child) {
-        children.addElement(child);
-    }
-
-    /**
-     * Returns the child with index <code>index</code>.
-     */
-    RuntimeConfigurable getChild(int index) {
-        return (RuntimeConfigurable) children.elementAt(index);
-    }
-
-    /**
-     * Add characters from #PCDATA areas to the wrapped element.
-     */
-    public void addText(String data) {
-        characters.append(data);
-    }
-
-    /**
-     * Add characters from #PCDATA areas to the wrapped element.
-     */
-    public void addText(char[] buf, int start, int end) {
-        addText(new String(buf, start, end));
-    }
-
-    /**
-     * Configure the wrapped element and all children.
-     */
-    public void maybeConfigure(Project p) throws BuildException {
-        if (attributes != null) {
-            ProjectHelper.configure(wrappedObject, attributes, p);
-            attributes = null;
-        }
-        if (characters.length() != 0) {
-            ProjectHelper.addText(wrappedObject, characters.toString());
-            characters.setLength(0);
-        }
-        Enumeration enum = children.elements();
-        while (enum.hasMoreElements()) {
-            RuntimeConfigurable child = (RuntimeConfigurable) enum.nextElement();
-            child.maybeConfigure(p);
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/Target.java b/src/main/org/apache/tools/ant/Target.java
deleted file mode 100644
index 7ce29bd..0000000
--- a/src/main/org/apache/tools/ant/Target.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.util.*;
-
-/**
- * This class implements a target object with required parameters.
- *
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- */
-
-public class Target {
-
-    private String name;
-    private String ifCondition = "";
-    private String unlessCondition = "";
-    private Vector dependencies = new Vector(2);
-    private Vector tasks = new Vector(5);
-    private Project project;
-    private String description = null;
-
-    public void setProject(Project project) {
-        this.project = project;
-    }
-
-    public Project getProject() {
-        return project;
-    }
-
-    public void setDepends(String depS) {
-        if (depS.length() > 0) {
-            StringTokenizer tok =
-                new StringTokenizer(depS, ",", false);
-            while (tok.hasMoreTokens()) {
-                addDependency(tok.nextToken().trim());
-            }
-        }
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void addTask(Task task) {
-        tasks.addElement(task);
-    }
-
-	/** 
-	 * Get the current set of tasks to be executed by this target.
-	 * 
-     * @return The current set of tasks.
-	 */
-    public Task[] getTasks() {
-        Task[] retval = new Task[tasks.size()];
-        tasks.copyInto(retval);
-        return retval;
-    }
-
-    public void addDependency(String dependency) {
-        dependencies.addElement(dependency);
-    }
-
-    public Enumeration getDependencies() {
-        return dependencies.elements();
-    }
-
-    public void setIf(String property) {
-        this.ifCondition = (property == null) ? "" : property;
-    }
- 
-    public void setUnless(String property) {
-        this.unlessCondition = (property == null) ? "" : property;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public String toString() {
-        return name;
-    }
-
-    public void execute() throws BuildException {
-        if (testIfCondition() && testUnlessCondition()) {
-            Enumeration enum = tasks.elements();
-            while (enum.hasMoreElements()) {
-                Task task = (Task) enum.nextElement();
-
-                try {
-                    project.fireTaskStarted(task);
-                    task.maybeConfigure();
-                    task.execute();
-                    project.fireTaskFinished(task, null);
-                }
-                catch(RuntimeException exc) {
-                    if (exc instanceof BuildException) {
-                        BuildException be = (BuildException) exc;
-                        if (be.getLocation() == Location.UNKNOWN_LOCATION) {
-                            be.setLocation(task.getLocation());
-                        }
-                    }
-                    project.fireTaskFinished(task, exc);
-                    throw exc;
-                }
-            }
-        } else if (!testIfCondition()) {
-            project.log(this, "Skipped because property '" + this.ifCondition + "' not set.", 
-                        Project.MSG_VERBOSE);
-        } else {
-            project.log(this, "Skipped because property '" + this.unlessCondition + "' set.",
-                        Project.MSG_VERBOSE);
-        }
-    }
-
-    void replaceTask(UnknownElement el, Task t) {
-        int index = -1;
-        while ((index = tasks.indexOf(el)) >= 0) {
-            tasks.setElementAt(t, index);
-        }
-    }
-
-    private boolean testIfCondition() {
-        return "".equals(ifCondition) 
-            || project.getProperty(ifCondition) != null;
-    }
-
-    private boolean testUnlessCondition() {
-        return "".equals(unlessCondition) 
-            || project.getProperty(unlessCondition) == null;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/Task.java b/src/main/org/apache/tools/ant/Task.java
deleted file mode 100644
index 563eb86..0000000
--- a/src/main/org/apache/tools/ant/Task.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-/**
- * Base class for all tasks.
- *
- * <p>Use {@link Project#createTask Project.createTask} to create a new Task.
- */
-
-public abstract class Task {
-
-    protected Project project = null;
-    protected Target target = null;
-    protected String description=null;
-    protected Location location = Location.UNKNOWN_LOCATION;
-    protected String taskName = null;
-    protected String taskType = null;
-    protected RuntimeConfigurable wrapper;
-
-    /**
-     * Sets the project object of this task. This method is used by
-     * project when a task is added to it so that the task has
-     * access to the functions of the project. It should not be used
-     * for any other purpose.
-     *
-     * @param project Project in whose scope this task belongs.
-     */
-    void setProject(Project project) {
-        this.project = project;
-    }
-
-    /**
-     * Get the Project to which this task belongs
-     *
-     * @return the task's project.
-     */
-    public Project getProject() {
-        return project;
-    }
-    
-    /**
-     * Sets the target object of this task.
-     *
-     * @param target Target in whose scope this task belongs.
-     */
-    public void setOwningTarget(Target target) {
-        this.target = target;
-    }
-
-    /**
-     * Get the Target to which this task belongs
-     *
-     * @return the task's target.
-     */
-    public Target getOwningTarget() {
-        return target;
-    }
-    
-    /**
-     * Set the name to use in logging messages.
-     *
-     * @param name the name to use in logging messages.
-     */
-    public void setTaskName(String name) {
-        this.taskName = name;
-    }
-
-    /**
-     * Get the name to use in logging messages.
-     *
-     * @return the name to use in logging messages.
-     */
-    public String getTaskName() {
-        return taskName;
-    }
-
-    /**
-     * Set the name with which the task has been invoked.
-     *
-     * @param type the name the task has been invoked as.
-     */
-    void setTaskType(String type) {
-        this.taskType = type;
-    }
-
-    /**
-     * Log a message with the default (INFO) priority.
-     *
-     * @param the message to be logged.
-     */
-    public void log(String msg) {
-        log(msg, Project.MSG_INFO);
-    }
-
-    /**
-     * Log a mesage with the give priority.
-     *
-     * @param the message to be logged.
-     * @param msgLevel the message priority at which this message is to be logged.
-     */
-    public void log(String msg, int msgLevel) {
-        project.log(this, msg, msgLevel);
-    }
-
-
-    /** Sets a description of the current action. It will be usefull in commenting
-     *  what we are doing.
-     */
-    public void setDescription( String desc ) {
-        description=desc;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * Called by the project to let the task initialize properly. 
-     *
-     * @throws BuildException if someting goes wrong with the build
-     */
-    public void init() throws BuildException {}
-
-    /**
-     * Called by the project to let the task do it's work. This method may be 
-     * called more than once, if the task is invoked more than once. For example, 
-     * if target1 and target2 both depend on target3, then running 
-     * "ant target1 target2" will run all tasks in target3 twice.
-     *
-     * @throws BuildException if someting goes wrong with the build
-     */
-    public void execute() throws BuildException {}
-
-    /**
-     * Returns the file location where this task was defined.
-     */
-    public Location getLocation() {
-        return location;
-    }
-
-    /**
-     * Sets the file location where this task was defined.
-     */
-    public void setLocation(Location location) {
-        this.location = location;
-    }
-
-    /**
-     * Returns the wrapper class for runtime configuration.
-     */
-    public RuntimeConfigurable getRuntimeConfigurableWrapper() {
-        if (wrapper == null) {
-            wrapper = new RuntimeConfigurable(this);
-        }
-        return wrapper;
-    }
-
-    protected void setRuntimeConfigurableWrapper(RuntimeConfigurable wrapper) {
-        this.wrapper = wrapper;
-    }
-
-    /**
-     * Configure this task - if it hasn't been done already.
-     */
-    public void maybeConfigure() throws BuildException {
-        if (wrapper != null) {
-            wrapper.maybeConfigure(project);
-        }
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/TaskAdapter.java b/src/main/org/apache/tools/ant/TaskAdapter.java
deleted file mode 100644
index 557bc14..0000000
--- a/src/main/org/apache/tools/ant/TaskAdapter.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.lang.reflect.*;
-import java.util.*;
-
-/**
- *  Use introspection to "adapt" an arbitrary Bean ( not extending Task, but with similar
- *  patterns).
- *
- * @author costin@dnt.ro
- */
-public class TaskAdapter extends Task {
-
-    Object proxy;
-    
-    /**
-     * Do the execution.
-     */
-    public void execute() throws BuildException {
-        Method executeM=null;
-        try {
-            Class c=proxy.getClass();
-            executeM=c.getMethod( "execute", new Class[0] );
-            if( executeM == null ) {
-                log("No execute in " + proxy.getClass(), Project.MSG_ERR);
-                throw new BuildException("No execute in " + proxy.getClass());
-            }
-            executeM.invoke(proxy, null);
-            return; 
-        } catch( Exception ex ) {
-            log("Error in " + proxy.getClass(), Project.MSG_ERR);
-            throw new BuildException( ex );
-        }
-
-    }
-    
-    /**
-     * Set the target object class
-     */
-    public void setProxy(Object o) {
-        this.proxy = o;
-    }
-
-    public Object getProxy() {
-        return this.proxy ;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/UnknownElement.java b/src/main/org/apache/tools/ant/UnknownElement.java
deleted file mode 100644
index c3f130f..0000000
--- a/src/main/org/apache/tools/ant/UnknownElement.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.util.Vector;
-
-/**
- * Wrapper class that holds all information necessary to create a task
- * that did not exist when Ant started.
- *
- * @author <a href="stefan.bodewig@megabit.net">Stefan Bodewig</a> 
- */
-public class UnknownElement extends Task {
-
-    private String elementName;
-    private Task realTask;
-    private Vector children = new Vector();
-    
-    public UnknownElement (String elementName) {
-        this.elementName = elementName;
-    }
-    
-    /**
-     * return the corresponding XML tag.
-     */
-    public String getTag() {
-        return elementName;
-    }
-
-    public void maybeConfigure() throws BuildException {
-        realTask = project.createTask(elementName);
-        if (realTask == null) {
-            log("Could not create task of type: " + elementName + " Common solutions" +
-                " are adding the task to defaults.properties and executing bin/bootstrap",
-                Project.MSG_DEBUG);
-            throw new BuildException("Could not create task of type: " + elementName +
-                                     ". Common solutions are to use taskdef to declare" +
-                                     " your task, or, if this is an optional task," +
-                                     " to put the optional.jar in the lib directory of" +
-                                     " your ant installation (ANT_HOME).", location);
-        }
-
-        realTask.setLocation(location);
-        String id = wrapper.getAttributes().getValue("id");
-        if (id != null) {
-            project.addReference(id, realTask);
-        }
-        realTask.init();
-
-        // UnknownElement always has an associated target
-        realTask.setOwningTarget(target);
-
-        wrapper.setProxy(realTask);
-        realTask.setRuntimeConfigurableWrapper(wrapper);
-
-        handleChildren(realTask, wrapper);
-
-        realTask.maybeConfigure();
-        target.replaceTask(this, realTask);
-    }
-
-    /**
-     * Called when the real task has been configured for the first time.
-     */
-    public void execute() {
-        if (realTask == null) {
-            // plain impossible to get here, maybeConfigure should 
-            // have thrown an exception.
-            throw new BuildException("Could not create task of type: "
-                                     + elementName, location);
-        }
-        realTask.execute();
-    }
-
-    public void addChild(UnknownElement child) {
-        children.addElement(child);
-    }
-
-    protected void handleChildren(Object parent, 
-                                  RuntimeConfigurable parentWrapper) 
-        throws BuildException {
-
-        if (parent instanceof TaskAdapter) {
-            parent = ((TaskAdapter) parent).getProxy();
-        }
-        Class parentClass = parent.getClass();
-        IntrospectionHelper ih = IntrospectionHelper.getHelper(parentClass);
-
-        for (int i=0; i<children.size(); i++) {
-            UnknownElement child = (UnknownElement) children.elementAt(i);
-            Object realChild = ih.createElement(parent, child.getTag());
-            RuntimeConfigurable childWrapper = parentWrapper.getChild(i);
-            childWrapper.setProxy(realChild);
-            child.handleChildren(realChild, childWrapper);
-        }
-    }
-
-}// UnknownElement
diff --git a/src/main/org/apache/tools/ant/XmlLogger.java b/src/main/org/apache/tools/ant/XmlLogger.java
deleted file mode 100644
index 96b9ea2..0000000
--- a/src/main/org/apache/tools/ant/XmlLogger.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import java.io.*;
-import java.util.*;
-import javax.xml.parsers.*;
-import org.w3c.dom.*;
-import org.apache.tools.ant.util.DOMElementWriter;
-
-/**
- *  Generates a "log.xml" file in the current directory with
- *  an XML description of what happened during a build.
- *
- *  @see Project#addBuildListener(BuildListener)
- */
-public class XmlLogger implements BuildListener {
-
-    private static final DocumentBuilder builder = getDocumentBuilder();
-
-    private static DocumentBuilder getDocumentBuilder() {
-        try {
-            return DocumentBuilderFactory.newInstance().newDocumentBuilder();
-        }
-        catch(Exception exc) {
-            throw new ExceptionInInitializerError(exc);
-        }
-    }
-
-    // XML constants for tag names and attribute names
-    private static final String BUILD_TAG = "build";
-    private static final String TARGET_TAG = "target";
-    private static final String TASK_TAG = "task";
-    private static final String MESSAGE_TAG = "message";
-    private static final String NAME_ATTR = "name";
-    private static final String TIME_ATTR = "time";
-    private static final String PRIORITY_ATTR = "priority";
-    private static final String LOCATION_ATTR = "location";
-    private static final String ERROR_ATTR = "error";
-
-    private Document doc;
-    private Element buildElement;
-    private Element targetElement;
-    private Element taskElement;
-
-    private long buildStartTime;
-    private long targetStartTime;
-    private long taskStartTime;
-
-    private Stack targetTimeStack = new Stack();
-    private Stack targetStack = new Stack();
-    private Stack taskTimeStack = new Stack();
-    private Stack taskStack = new Stack();
-
-    /**
-     *  Constructs a new BuildListener that logs build events to an XML file.
-     */
-    public XmlLogger() {
-    }
-
-    public void buildStarted(BuildEvent event) {
-        buildStartTime = System.currentTimeMillis();
-
-        doc = builder.newDocument();
-        buildElement = doc.createElement(BUILD_TAG);
-    }
-
-    public void buildFinished(BuildEvent event) {
-        long totalTime = System.currentTimeMillis() - buildStartTime;
-        buildElement.setAttribute(TIME_ATTR, DefaultLogger.formatTime(totalTime));
-
-        if (event.getException() != null) {
-            buildElement.setAttribute(ERROR_ATTR, event.getException().toString());
-        }
-
-        try {
-            String outFilename = 
-                event.getProject().getProperty("XmlLogger.file");
-
-            if (outFilename == null) {
-                outFilename = "log.xml";
-            }
-
-            Writer out = new FileWriter(outFilename);
-            out.write("<?xml:stylesheet type=\"text/xsl\" href=\"log.xsl\"?>\n\n");
-            (new DOMElementWriter()).write(buildElement, out, 0, "\t");
-            out.flush();
-            out.close();
-            
-        } catch(IOException exc) {
-            throw new BuildException("Unable to close log file", exc);
-        }
-        buildElement = null;
-    }
-
-    public void targetStarted(BuildEvent event) {
-        if (targetElement != null) {
-            targetTimeStack.push(new Long(targetStartTime));
-            targetStack.push(targetElement);
-        }
-        targetStartTime = System.currentTimeMillis();
-        targetElement = doc.createElement(TARGET_TAG);
-        targetElement.setAttribute(NAME_ATTR, event.getTarget().getName());
-    }
-
-    public void targetFinished(BuildEvent event) {
-        long totalTime = System.currentTimeMillis() - targetStartTime;
-        targetElement.setAttribute(TIME_ATTR, DefaultLogger.formatTime(totalTime));
-        if (taskElement == null) {
-            buildElement.appendChild(targetElement);
-        } else {
-            taskElement.appendChild(targetElement);
-        }
-
-        targetElement = null;
-
-        if (!targetStack.isEmpty()) {
-            targetStartTime = ((Long) targetTimeStack.pop()).longValue();
-            targetElement = (Element) targetStack.pop();
-        }
-    }
-
-    public void taskStarted(BuildEvent event) {
-        if (taskElement != null) {
-            taskTimeStack.push(new Long(taskStartTime));
-            taskStack.push(taskElement);
-        }
-
-        taskStartTime = System.currentTimeMillis();
-        taskElement = doc.createElement(TASK_TAG);
-
-        String name = event.getTask().getClass().getName();
-        int pos = name.lastIndexOf(".");
-        if (pos != -1) {
-            name = name.substring(pos + 1);
-        }
-        taskElement.setAttribute(NAME_ATTR, name);
-
-        taskElement.setAttribute(LOCATION_ATTR, event.getTask().getLocation().toString());
-    }
-
-    public void taskFinished(BuildEvent event) {
-        long totalTime = System.currentTimeMillis() - taskStartTime;
-        taskElement.setAttribute(TIME_ATTR, DefaultLogger.formatTime(totalTime));
-        targetElement.appendChild(taskElement);
-
-        taskElement = null;
-        if (!taskStack.isEmpty()) {
-            taskStartTime = ((Long) taskTimeStack.pop()).longValue();
-            taskElement = (Element) taskStack.pop();
-        }
-    }
-
-    public void messageLogged(BuildEvent event) {
-        Element messageElement = doc.createElement(MESSAGE_TAG);
-
-        String name = "debug";
-        switch(event.getPriority()) {
-            case Project.MSG_ERR: name = "error"; break;
-            case Project.MSG_WARN: name = "warn"; break;
-            case Project.MSG_INFO: name = "info"; break;
-            default: name = "debug"; break;
-        }
-        messageElement.setAttribute(PRIORITY_ATTR, name);
-
-        Text messageText = doc.createTextNode(event.getMessage());
-        messageElement.appendChild(messageText);
-
-        if (taskElement != null) {
-            taskElement.appendChild(messageElement);
-        }
-        else if (targetElement != null) {
-            targetElement.appendChild(messageElement);
-        }
-        else {
-            buildElement.appendChild(messageElement);
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/defaultManifest.mf b/src/main/org/apache/tools/ant/defaultManifest.mf
deleted file mode 100644
index ce5678f..0000000
--- a/src/main/org/apache/tools/ant/defaultManifest.mf
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Created-By: Ant @VERSION@
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/Ant.java b/src/main/org/apache/tools/ant/taskdefs/Ant.java
deleted file mode 100644
index bc78c5f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Ant.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import java.io.*;
-import java.util.*;
-
-/**
- * Call Ant in a sub-project
- *
- *  <pre>
- *    <target name="foo" depends="init">
- *    <ant antfile="build.xml" target="bar" >
- *      <property name="property1" value="aaaaa" />
- *      <property name="foo" value="baz" />
- *     </ant>
- *  </target>
- *
- * <target name="bar" depends="init">
- *    <echo message="prop is ${property1} ${foo}" />
- * </target>
- * </pre>
- *
- *
- * @author costin@dnt.ro
- */
-public class Ant extends Task {
-
-    private File dir = null;
-    private String antFile = null;
-    private String target = null;
-    private String output = null;
-
-    Vector properties=new Vector();
-    Project p1;
-
-    public void init() {
-        p1 = new Project();
-        p1.setJavaVersionProperty();
-        p1.addTaskDefinition("property", 
-                             (Class)project.getTaskDefinitions().get("property"));
-    }
-
-    private void reinit() {
-        init();
-        for (int i=0; i<properties.size(); i++) {
-            Property p = (Property) properties.elementAt(i);
-            Property newP = (Property) p1.createTask("property");
-            newP.setName(p.getName());
-            if (p.getValue() != null) {
-                newP.setValue(p.getValue());
-            }
-            if (p.getFile() != null) {
-                newP.setFile(p.getFile());
-            } 
-            if (p.getResource() != null) {
-                newP.setResource(p.getResource());
-            }
-            properties.setElementAt(newP, i);
-        }
-    }
-
-    private void initializeProject() {
-        Vector listeners = project.getBuildListeners();
-        for (int i = 0; i < listeners.size(); i++) {
-            p1.addBuildListener((BuildListener)listeners.elementAt(i));
-        }
-
-        if (output != null) {
-            try {
-                PrintStream out = new PrintStream(new FileOutputStream(output));
-                DefaultLogger logger = new DefaultLogger();
-                logger.setMessageOutputLevel(Project.MSG_INFO);
-                logger.setOutputPrintStream(out);
-                logger.setErrorPrintStream(out);
-                p1.addBuildListener(logger);
-            }
-            catch( IOException ex ) {
-                log( "Ant: Can't set output to " + output );
-            }
-        }
-
-        Hashtable taskdefs = project.getTaskDefinitions();
-        Enumeration et = taskdefs.keys();
-        while (et.hasMoreElements()) {
-            String taskName = (String) et.nextElement();
-            Class taskClass = (Class) taskdefs.get(taskName);
-            p1.addTaskDefinition(taskName, taskClass);
-        }
-
-        Hashtable typedefs = project.getDataTypeDefinitions();
-        Enumeration e = typedefs.keys();
-        while (e.hasMoreElements()) {
-            String typeName = (String) e.nextElement();
-            Class typeClass = (Class) typedefs.get(typeName);
-            p1.addDataTypeDefinition(typeName, typeClass);
-        }
-
-        // set user-define properties
-        Hashtable prop1 = project.getProperties();
-        e = prop1.keys();
-        while (e.hasMoreElements()) {
-            String arg = (String) e.nextElement();
-            String value = (String) prop1.get(arg);
-            p1.setProperty(arg, value);
-        }
-    }
-
-    /**
-     * Do the execution.
-     */
-    public void execute() throws BuildException {
-        try {
-            if (p1 == null) {
-                reinit();
-            }
-        
-            if(dir == null) 
-                dir = project.getBaseDir();
-
-            initializeProject();
-
-            p1.setBaseDir(dir);
-            p1.setUserProperty("basedir" , dir.getAbsolutePath());
-            
-            // Override with local-defined properties
-            Enumeration e = properties.elements();
-            while (e.hasMoreElements()) {
-                Property p=(Property) e.nextElement();
-                p.execute();
-            }
-            
-            if (antFile == null) 
-                antFile = "build.xml";
-
-            File file = new File(antFile);
-            if (!file.isAbsolute()) {
-                antFile = (new File(dir, antFile)).getAbsolutePath();
-                file = (new File(antFile)) ;
-                if( ! file.isFile() ) {
-                  throw new BuildException("Build file " + file + " not found.");
-                }
-            }
-
-            p1.setUserProperty( "ant.file" , antFile );
-            ProjectHelper.configureProject(p1, new File(antFile));
-            
-            if (target == null) {
-                target = p1.getDefaultTarget();
-            }
-
-            // Are we trying to call the target in which we are defined?
-            if (p1.getBaseDir().equals(project.getBaseDir()) &&
-                p1.getProperty("ant.file").equals(project.getProperty("ant.file")) &&
-                target.equals(this.getOwningTarget().getName())) { 
-
-                throw new BuildException("ant task calling its own parent target");
-            }
-
-            p1.executeTarget(target);
-        } finally {
-            // help the gc
-            p1 = null;
-        }
-    }
-
-    public void setDir(File d) {
-        this.dir = d;
-    }
-
-    public void setAntfile(String s) {
-        this.antFile = s;
-    }
-
-    public void setTarget(String s) {
-        this.target = s;
-    }
-
-    public void setOutput(String s) {
-        this.output = s;
-    }
-
-    public Property createProperty() {
-        if (p1 == null) {
-            reinit();
-        }
-
-        Property p=(Property)p1.createTask("property");
-        p.setUserProperty(true);
-        properties.addElement( p );
-        return p;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/AntStructure.java b/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
deleted file mode 100644
index 4c632eb..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-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.types.EnumeratedAttribute;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Vector;
-import java.io.*;
-
-/**
- * Creates a partial DTD for Ant from the currently known tasks.
- *
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a>
- */
-
-public class AntStructure extends Task {
-
-    private final String lSep = System.getProperty("line.separator");
-
-    private Hashtable visited = new Hashtable();
-
-    private File output;
-
-    /**
-     * The output file.
-     */
-    public void setOutput(File output) {
-        this.output = output;
-    }
-
-    public void execute() throws BuildException {
-
-        if (output == null) {
-            throw new BuildException("output attribute is required", location);
-        }
-        
-        PrintWriter out = null;
-        try {
-            try {
-                out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(output), "ISO8859_1"));
-            } catch (UnsupportedEncodingException ue) {
-                /*
-                 * Plain impossible with ISO8859_1, see
-                 * http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html
-                 *
-                 * fallback to platform specific anyway.
-                 */
-                out = new PrintWriter(new FileWriter(output));
-            }
-            
-            Enumeration dataTypes = project.getDataTypeDefinitions().keys();
-            printHead(out, dataTypes);
-
-            Vector tasks = new Vector();
-            Enumeration enum = project.getTaskDefinitions().keys();
-            while (enum.hasMoreElements()) {
-                String taskName = (String) enum.nextElement();
-                tasks.addElement(taskName);
-            }
-            printTargetDecl(out, tasks);
-
-            dataTypes = project.getDataTypeDefinitions().keys();
-            while (dataTypes.hasMoreElements()) {
-                String typeName = (String) dataTypes.nextElement();
-                printElementDecl(out, typeName, 
-                                 (Class) project.getDataTypeDefinitions().get(typeName));
-            }
-            
-            for (int i=0; i<tasks.size(); i++) {
-                String taskName = (String) tasks.elementAt(i);
-                printElementDecl(out, taskName, 
-                                 (Class) project.getTaskDefinitions().get(taskName));
-            }
-
-            printTail(out);
-
-        } catch (IOException ioe) {
-            throw new BuildException("Error writing "+output.getAbsolutePath(),
-                                     ioe, location);
-        } finally {
-            if (out != null) {
-                out.close();
-            }
-        }
-    }
-
-    private void printHead(PrintWriter out, Enumeration enum) {
-        out.println("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>");
-        out.println("<!ENTITY % boolean \"(true|false|on|off|yes|no)\">");
-        out.println("");
-        
-        out.print("<!ELEMENT project (target | property | taskdef");
-        while (enum.hasMoreElements()) {
-            String typeName = (String) enum.nextElement();
-            out.print(" | "+typeName);
-        }
-
-        out.println(")*>");
-        out.println("<!ATTLIST project");
-        out.println("          name    CDATA #REQUIRED");
-        out.println("          default CDATA #REQUIRED");
-        out.println("          basedir CDATA #IMPLIED>");
-        out.println("");
-    }
-
-    private void printTargetDecl(PrintWriter out, Vector tasks) {
-        out.print("<!ELEMENT target (");
-        for (int i=0; i<tasks.size(); i++) {
-            String taskName = (String) tasks.elementAt(i);
-            if (i > 0) {
-                out.print(" | ");
-            }
-            out.print(taskName);
-        }
-                 
-        out.println(")*>");
-        out.println("");
-
-        out.println("<!ATTLIST target");
-        out.println("          id          ID    #IMPLIED");
-        out.println("          name        CDATA #REQUIRED");
-        out.println("          if          CDATA #IMPLIED");
-        out.println("          unless      CDATA #IMPLIED");
-        out.println("          depends     CDATA #IMPLIED");
-        out.println("          description CDATA #IMPLIED>");
-        out.println("");
-    }
-
-    private void printElementDecl(PrintWriter out, String name, Class element) 
-        throws BuildException {
-
-        if (visited.containsKey(name)) {
-            return;
-        }
-        visited.put(name, "");
-
-        IntrospectionHelper ih = IntrospectionHelper.getHelper(element);
-
-        StringBuffer sb = new StringBuffer("<!ELEMENT ");
-        sb.append(name).append(" ");
-
-        if (org.apache.tools.ant.types.Reference.class.equals(element)) {
-            sb.append("EMPTY>").append(lSep);
-            sb.append("<!ATTLIST ").append(name);
-            sb.append(lSep).append("          id ID #IMPLIED");
-            sb.append(lSep).append("          refid IDREF #IMPLIED");
-            sb.append(">").append(lSep);
-            out.println(sb);
-            return;
-        }
-
-        Vector v = new Vector();
-        if (ih.supportsCharacters()) {
-            v.addElement("#PCDATA");
-        }
-
-        Enumeration enum = ih.getNestedElements();
-        while (enum.hasMoreElements()) {
-            v.addElement((String) enum.nextElement());
-        }
-
-        if (v.isEmpty()) {
-            sb.append("EMPTY");
-        } else {
-            sb.append("(");
-            for (int i=0; i<v.size(); i++) {
-                if (i != 0) {
-                    sb.append(" | ");
-                }
-                sb.append(v.elementAt(i));
-            }
-            sb.append(")");
-            if (v.size() > 1 || !v.elementAt(0).equals("#PCDATA")) {
-                sb.append("*");
-            }
-        }
-        sb.append(">");
-        out.println(sb);
-
-        sb.setLength(0);
-        sb.append("<!ATTLIST ").append(name);
-        sb.append(lSep).append("          id ID #IMPLIED");
-        
-        enum = ih.getAttributes();
-        while (enum.hasMoreElements()) {
-            String attrName = (String) enum.nextElement();
-            if ("id".equals(attrName)) continue;
-            
-            sb.append(lSep).append("          ").append(attrName).append(" ");
-            Class type = ih.getAttributeType(attrName);
-            if (type.equals(java.lang.Boolean.class) || 
-                type.equals(java.lang.Boolean.TYPE)) {
-                sb.append("%boolean; ");
-            } else if (org.apache.tools.ant.types.Reference.class.isAssignableFrom(type)) { 
-                sb.append("IDREF ");
-            } else if (org.apache.tools.ant.types.EnumeratedAttribute.class.isAssignableFrom(type)) {
-                try {
-                    EnumeratedAttribute ea = 
-                        (EnumeratedAttribute)type.newInstance();
-                    String[] values = ea.getValues();
-                    if (values == null || values.length == 0) {
-                        sb.append("CDATA ");
-                    } else {
-                        sb.append("(");
-                        for (int i=0; i < values.length; i++) {
-                            if (i != 0) {
-                                sb.append(" | ");
-                            }
-                            sb.append(values[i]);
-                        }
-                        sb.append(") ");
-                    }
-                } catch (InstantiationException ie) {
-                    sb.append("CDATA ");
-                } catch (IllegalAccessException ie) {
-                    sb.append("CDATA ");
-                }
-            } else {
-                sb.append("CDATA ");
-            }
-            sb.append("#IMPLIED");
-        }
-        sb.append(">").append(lSep);
-        out.println(sb);
-
-        for (int i=0; i<v.size(); i++) {
-            String nestedName = (String) v.elementAt(i);
-            if (!"#PCDATA".equals(nestedName)) {
-                printElementDecl(out, nestedName, ih.getElementType(nestedName));
-            }
-        }
-    }
-    
-    private void printTail(PrintWriter out) {}
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Available.java b/src/main/org/apache/tools/ant/taskdefs/Available.java
deleted file mode 100644
index 642868a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Available.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-/**
- * Will set the given property if the requested resource is available at runtime.
- *
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- */
-
-public class Available extends Task {
-
-    private String property;
-    private String classname;
-    private File file;
-    private String resource;
-    private Path classpath;
-    private AntClassLoader loader;
-    private String value = "true";
-
-    public void setClasspath(Path classpath) {
-        if (this.classpath == null) {
-            this.classpath = classpath;
-        } else {
-            this.classpath.append(classpath);
-        }
-    }
-
-    public Path createClasspath() {
-        if (this.classpath == null) {
-            this.classpath = new Path(project);
-        }
-        return this.classpath.createPath();
-    }
-
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-    public void setProperty(String property) {
-        this.property = property;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    public void setClassname(String classname) {
-        if (!"".equals(classname)) {
-            this.classname = classname;
-        }
-    }
-
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    public void setResource(String resource) {
-        this.resource = resource;
-    }
-
-    public void execute() throws BuildException {
-        if (property == null) {
-            throw new BuildException("property attribute is required", location);
-        }
-        
-        if (classname == null && file == null && resource == null) {
-            throw new BuildException("At least one of (classname|file|resource) is required", location);
-        }
-
-        if (classpath != null) {
-            this.loader = new AntClassLoader(project, classpath, false);
-        }
-
-        if ((classname != null) && !checkClass(classname)) return;
-        if ((file != null) && !checkFile(file)) return;
-        if ((resource != null) && !checkResource(resource)) return;
-
-        this.project.setProperty(property, value);
-    }
-
-    private boolean checkFile(File file) {
-        return file.exists();
-    }
-
-    private boolean checkResource(String resource) {
-        if (loader != null) {
-            return (loader.getResourceAsStream(resource) != null);
-        } else {
-            ClassLoader cL = this.getClass().getClassLoader();
-            if (cL != null) {
-                return (cL.getResourceAsStream(resource) != null);
-            } else {
-                return 
-                    (ClassLoader.getSystemResourceAsStream(resource) != null);
-            }
-        }
-    }
-
-    private boolean checkClass(String classname) {
-        try {
-            if (loader != null) {
-                loader.loadClass(classname);
-            } else {
-                ClassLoader l = this.getClass().getClassLoader();
-                // Can return null to represent the bootstrap class loader.
-                // see API docs of Class.getClassLoader.
-                if (l != null) {
-                    l.loadClass(classname);
-                } else {
-                    Class.forName(classname);
-                }
-            }
-            return true;
-        } catch (ClassNotFoundException e) {
-            log("Class not found: " + classname, Project.MSG_VERBOSE);
-            return false;
-        } catch (NoClassDefFoundError e) {
-            log("Class cound not be loaded: " + classname, Project.MSG_VERBOSE);
-            return false;
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/CallTarget.java b/src/main/org/apache/tools/ant/taskdefs/CallTarget.java
deleted file mode 100644
index f767bb8..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/CallTarget.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-
-/**
- * Call another target in the same project.
- *
- *  <pre>
- *    <target name="foo">
- *      <antcall target="bar">
- *        <param name="property1" value="aaaaa" />
- *        <param name="foo" value="baz" />
- *       </antcall>
- *    </target>
- *
- *    <target name="bar" depends="init">
- *      <echo message="prop is ${property1} ${foo}" />
- *    </target>
- * </pre>
- *
- * <p>This only works as expected if neither property1 nor foo are
- * defined in the project itself.
- *
- *
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> 
- */
-public class CallTarget extends Task {
-
-    private Ant callee;
-    private String subTarget;
-
-    public void init() {
-        callee = (Ant) project.createTask("ant");
-        callee.setOwningTarget(target);
-        callee.setTaskName(getTaskName());
-        callee.setLocation(location);
-        callee.init();
-    }
-
-    public void execute() {
-        if (subTarget == null) {
-            throw new BuildException("Attribute target is required.", 
-                                     location);
-        }
-        
-        callee.setDir(project.getBaseDir());
-        callee.setAntfile(project.getProperty("ant.file"));
-        callee.setTarget(subTarget);
-        callee.execute();
-    }
-
-    public Property createParam() {
-        return callee.createProperty();
-    }
-
-    public void setTarget(String target) {
-        subTarget = target;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Chmod.java b/src/main/org/apache/tools/ant/taskdefs/Chmod.java
deleted file mode 100644
index 21d07e4..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Chmod.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * Chmod equivalent for unix-like environments.
- *
- * @author costin@eng.sun.com
- * @author Mariusz Nowostawski (Marni) <a href="mailto:mnowostawski@infoscience.otago.ac.nz">mnowostawski@infoscience.otago.ac.nz</a>
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a>
- */
-
-public class Chmod extends ExecuteOn {
-
-    private FileSet defaultSet = new FileSet();
-    private boolean havePerm = false;
-    
-    public Chmod() {
-        super.setExecutable("chmod");
-        super.setParallel(true);
-    }
-
-    public void setFile(File src) {
-        FileSet fs = new FileSet();
-        fs.setDir(new File(src.getParent()));
-        fs.createInclude().setName(src.getName());
-        addFileset(fs);
-    }
-
-    public void setDir(File src) {
-        defaultSet.setDir(src);
-    }
-
-    public void setPerm(String perm) {
-        createArg().setValue(perm);
-        havePerm = true;
-    }
-
-    /**
-     * add a name entry on the include list
-     */
-    public PatternSet.NameEntry createInclude() {
-        return defaultSet.createInclude();
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public PatternSet.NameEntry createExclude() {
-        return defaultSet.createExclude();
-    }
-
-    /**
-     * add a set of patterns
-     */
-    public PatternSet createPatternSet() {
-        return defaultSet.createPatternSet();
-    }
-
-    /**
-     * Sets the set of include patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param includes the string containing the include patterns
-     */
-    public void setIncludes(String includes) {
-        defaultSet.setIncludes(includes);
-    }
-
-    /**
-     * Sets the set of exclude patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param excludes the string containing the exclude patterns
-     */
-    public void setExcludes(String excludes) {
-        defaultSet.setExcludes(excludes);
-    }
-
-    /**
-     * Sets whether default exclusions should be used or not.
-     *
-     * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions 
-     *                           should be used, "false"|"off"|"no" when they
-     *                           shouldn't be used.
-     */
-    public void setDefaultexcludes(boolean useDefaultExcludes) {
-        defaultSet.setDefaultexcludes(useDefaultExcludes);
-    }
-    
-    protected void checkConfiguration() {
-        if (!havePerm) {
-            throw new BuildException("Required attribute perm not set in chmod", 
-                                     location);
-        }
-        
-        if (defaultSet.getDir(project) != null) {
-            addFileset(defaultSet);
-        }
-        super.checkConfiguration();
-    }
-
-    public void setExecutable(String e) {
-        throw new BuildException(taskType+" doesn\'t support the executable attribute", location);
-    }
-
-    public void setCommand(String e) {
-        throw new BuildException(taskType+" doesn\'t support the command attribute", location);
-    }
-
-    protected boolean isValidOs() {
-        // XXX if OS=unix
-        return System.getProperty("path.separator").equals(":") 
-            && (!System.getProperty("os.name").startsWith("Mac") 
-                 || System.getProperty("os.name").endsWith("X"))
-            && super.isValidOs();
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/CompileTask.java b/src/main/org/apache/tools/ant/taskdefs/CompileTask.java
deleted file mode 100644
index ee50300..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/CompileTask.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.PatternSet;
-
-import java.util.*;
-
-/**
- * This task will compile and load a new taskdef all in one step.
- * At times, this is useful for eliminating ordering dependencies
- * which otherwise would require multiple executions of Ant.
- *
- * @author Sam Ruby <a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a>
- *
- * @deprecated use &lt;taskdef&gt; elements nested into &lt;target&gt;s instead
- */
-
-public class CompileTask extends Javac {
-
-    protected Vector taskList = new Vector();
-
-    /**
-     * add a new task entry on the task list
-     */
-    public Taskdef createTaskdef() {
-        Taskdef task = new Taskdef();
-        taskList.addElement(task);
-        return task;
-    }
-    
-    /**
-     * do all the real work in init
-     */
-    public void init() {
-        log("!! CompileTask is deprecated. !!");
-        log("Use <taskdef> elements nested into <target>s instead");
-
-        // create all the include entries from the task defs
-        for (Enumeration e=taskList.elements(); e.hasMoreElements(); ) {
-            Taskdef task = (Taskdef)e.nextElement();
-            String source = task.getClassname().replace('.','/') + ".java";
-            PatternSet.NameEntry include = super.createInclude();
-            include.setName("**/" + source);
-        }
-
-        // execute Javac
-        super.init();        
-        super.execute();        
-
-        // now define all the new tasks
-        for (Enumeration e=taskList.elements(); e.hasMoreElements(); ) {
-            Taskdef task = (Taskdef)e.nextElement();
-            task.init();
-        }
-
-    }
-
-    /**
-     * have execute do nothing
-     */
-    public void execute() {
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Copy.java b/src/main/org/apache/tools/ant/taskdefs/Copy.java
deleted file mode 100644
index 6a94a8a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Copy.java
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.util.*;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * A consolidated copy task.  Copies a file or directory to a new file 
- * or directory.  Files are only copied if the source file is newer
- * than the destination file, or when the destination file does not 
- * exist.  It is possible to explicitly overwrite existing files.</p>
- *
- * <p>This implementation is based on Arnout Kuiper's initial design
- * document, the following mailing list discussions, and the 
- * copyfile/copydir tasks.</p>
- *
- * @author Glenn McAllister <a href="mailto:glennm@ca.ibm.com">glennm@ca.ibm.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class Copy extends Task {
-    protected File file = null;     // the source file 
-    protected File destFile = null; // the destination file 
-    protected File destDir = null;  // the destination directory
-    protected Vector filesets = new Vector();
-
-    protected boolean filtering = false;
-    protected boolean preserveLastModified = false;
-    protected boolean forceOverwrite = false;
-    protected boolean flatten = false;
-    protected int verbosity = Project.MSG_VERBOSE;
-    protected boolean includeEmpty = true;
-
-    protected Hashtable fileCopyMap = new Hashtable();
-    protected Hashtable dirCopyMap = new Hashtable();
-
-    protected Mapper mapperElement = null;
-
-    /**
-     * Sets a single source file to copy.
-     */
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    /**
-     * Sets the destination file.
-     */
-    public void setTofile(File destFile) {
-        this.destFile = destFile;
-    }
-
-    /**
-     * Sets the destination directory.
-     */
-    public void setTodir(File destDir) {
-        this.destDir = destDir;
-    }
-
-    /**
-     * Give the copied files the same last modified time as the original files.
-     */
-    public void setPreserveLastModified(String preserve) {
-        preserveLastModified = Project.toBoolean(preserve);
-    }
-
-    /**
-     * Sets filtering.
-     */
-    public void setFiltering(boolean filtering) {
-        this.filtering = filtering;
-    }
-
-    /**
-     * Overwrite any existing destination file(s).
-     */
-    public void setOverwrite(boolean overwrite) {
-        this.forceOverwrite = overwrite;
-    }
-
-    /**
-     * When copying directory trees, the files can be "flattened"
-     * into a single directory.  If there are multiple files with
-     * the same name in the source directory tree, only the first
-     * file will be copied into the "flattened" directory, unless
-     * the forceoverwrite attribute is true.
-     */
-    public void setFlatten(boolean flatten) {
-        this.flatten = flatten;
-    }
-
-    /**
-     * Used to force listing of all names of copied files.
-     */
-    public void setVerbose(boolean verbose) {
-        if (verbose) {
-            this.verbosity = Project.MSG_INFO;
-        } else {
-            this.verbosity = Project.MSG_VERBOSE;
-        } 
-    } 
-
-    /**
-     * Used to copy empty directories.
-     */
-    public void setIncludeEmptyDirs(boolean includeEmpty) {
-        this.includeEmpty = includeEmpty;
-    }
-
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
-
-    /**
-     * Defines the FileNameMapper to use (nested mapper element).
-     */
-    public Mapper createMapper() throws BuildException {
-        if (mapperElement != null) {
-            throw new BuildException("Cannot define more than one mapper",
-                                     location);
-        }
-        mapperElement = new Mapper(project);
-        return mapperElement;
-    }
-
-    /**
-     * Performs the copy operation.
-     */
-    public void execute() throws BuildException {
-        // make sure we don't have an illegal set of options
-        validateAttributes();   
-
-        // deal with the single file
-        if (file != null) {
-            if (file.exists()) {
-                if (destFile == null) {
-                    destFile = new File(destDir, file.getName());
-                }
-                
-                if (forceOverwrite || 
-                    (file.lastModified() > destFile.lastModified())) {
-                    fileCopyMap.put(file.getAbsolutePath(), destFile.getAbsolutePath());
-                }
-            } else {
-                log("Could not find file " + file.getAbsolutePath() + " to copy.");
-            }
-        }
-
-        // deal with the filesets
-        for (int i=0; i<filesets.size(); i++) {
-            FileSet fs = (FileSet) filesets.elementAt(i);
-            DirectoryScanner ds = fs.getDirectoryScanner(project);
-            File fromDir = fs.getDir(project);
-
-            String[] srcFiles = ds.getIncludedFiles();
-            String[] srcDirs = ds.getIncludedDirectories();
-
-            scan(fromDir, destDir, srcFiles, srcDirs);
-        }
-
-        // do all the copy operations now...
-        doFileOperations();
-
-        // clean up destDir again - so this instance can be used a second
-        // time without throwing an exception
-        if (destFile != null) {
-            destDir = null;
-        }
-    }
-
-//************************************************************************
-//  protected and private methods
-//************************************************************************
-
-    /**
-     * Ensure we have a consistent and legal set of attributes, and set
-     * any internal flags necessary based on different combinations 
-     * of attributes.
-     */
-    protected void validateAttributes() throws BuildException {
-        if (file == null && filesets.size() == 0) {
-            throw new BuildException("Specify at least one source - a file or a fileset.");
-        }
-
-        if (destFile != null && destDir != null) {
-            throw new BuildException("Only one of destfile and destdir may be set.");
-        }
-
-        if (destFile == null && destDir == null) {
-            throw new BuildException("One of destfile or destdir must be set.");
-        }
-
-        if (file != null && file.exists() && file.isDirectory()) {
-            throw new BuildException("Use a fileset to copy directories.");
-        }
-           
-        if (destFile != null && filesets.size() > 0) {
-            throw new BuildException("Cannot concatenate multple files into a single file.");
-        }
-
-        if (destFile != null) {
-            destDir = new File(destFile.getParent());   // be 1.1 friendly
-        }
-
-    }
-
-    /**
-     * Compares source files to destination files to see if they should be
-     * copied.
-     */
-    protected void scan(File fromDir, File toDir, String[] files, String[] dirs) {
-        FileNameMapper mapper = null;
-        if (mapperElement != null) {
-            mapper = mapperElement.getImplementation();
-        } else if (flatten) {
-            mapper = new FlatFileNameMapper();
-        } else {
-            mapper = new IdentityMapper();
-        }
-
-        buildMap(fromDir, toDir, files, mapper, fileCopyMap);
-
-        if (includeEmpty) {
-            buildMap(fromDir, toDir, dirs, mapper, dirCopyMap);
-        }
-    }
-
-    protected void buildMap(File fromDir, File toDir, String[] names,
-                            FileNameMapper mapper, Hashtable map) {
-
-        String[] toCopy = null;
-        if (forceOverwrite) {
-            Vector v = new Vector();
-            for (int i=0; i<names.length; i++) {
-                if (mapper.mapFileName(names[i]) != null) {
-                    v.addElement(names[i]);
-                }
-            }
-            toCopy = new String[v.size()];
-            v.copyInto(toCopy);
-        } else {
-            SourceFileScanner ds = new SourceFileScanner(this);
-            toCopy = ds.restrict(names, fromDir, toDir, mapper);
-        }
-        
-        for (int i = 0; i < toCopy.length; i++) {
-            File src = new File(fromDir, toCopy[i]);
-            File dest = new File(toDir, mapper.mapFileName(toCopy[i])[0]);
-            map.put( src.getAbsolutePath(), dest.getAbsolutePath() );
-        }
-    }
-
-    /**
-     * Actually does the file (and possibly empty directory) copies.
-     * This is a good method for subclasses to override.
-     */
-    protected void doFileOperations() {
-        if (fileCopyMap.size() > 0) {
-            log("Copying " + fileCopyMap.size() + 
-                " file" + (fileCopyMap.size() == 1 ? "" : "s") + 
-                " to " + destDir.getAbsolutePath() );
-
-            Enumeration e = fileCopyMap.keys();
-            while (e.hasMoreElements()) {
-                String fromFile = (String) e.nextElement();
-                String toFile = (String) fileCopyMap.get(fromFile);
-
-                if( fromFile.equals( toFile ) ) {
-                    log("Skipping self-copy of " + fromFile, verbosity);
-                    continue;
-                }
-
-                try {
-                    log("Copying " + fromFile + " to " + toFile, verbosity);
-                    
-                    project.copyFile(fromFile, 
-                                     toFile, 
-                                     filtering, 
-                                     forceOverwrite,
-                                     preserveLastModified);
-                } catch (IOException ioe) {
-                    String msg = "Failed to copy " + fromFile + " to " + toFile
-                        + " due to " + ioe.getMessage();
-                    throw new BuildException(msg, ioe, location);
-                }
-            }
-        }
-
-        if (includeEmpty) {
-            Enumeration e = dirCopyMap.elements();
-            int count = 0;
-            while (e.hasMoreElements()) {
-                File d = new File((String)e.nextElement());
-                if (!d.exists()) {
-                    if (!d.mkdirs()) {
-                        log("Unable to create directory " + d.getAbsolutePath(), Project.MSG_ERR);
-                    } else {
-                        count++;
-                    }
-                }
-            }
-
-            if (count > 0) {
-                log("Copied " + count + 
-                    " empty director" + 
-                    (count==1?"y":"ies") + 
-                    " to " + destDir.getAbsolutePath());
-            }
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Copydir.java b/src/main/org/apache/tools/ant/taskdefs/Copydir.java
deleted file mode 100644
index 68ffbf1..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Copydir.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-/**
- * Copies a directory.
- *
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- *
- * @deprecated The copydir task is deprecated.  Use copy instead.
- */
-
-public class Copydir extends MatchingTask {
-
-    private File srcDir;
-    private File destDir;
-    private boolean filtering = false;
-    private boolean flatten = false;
-    private boolean forceOverwrite = false;
-    private Hashtable filecopyList = new Hashtable();
-
-    public void setSrc(File src) {
-        srcDir = src;
-    }
-
-    public void setDest(File dest) {
-        destDir = dest;
-    }
-
-    public void setFiltering(boolean filter) {
-        filtering = filter;
-    }
-
-    public void setFlatten(boolean flatten) {
-        this.flatten = flatten;
-    }
-
-    public void setForceoverwrite(boolean force) {
-        forceOverwrite = force;
-    }
-
-    public void execute() throws BuildException {
-        log("DEPRECATED - The copydir task is deprecated.  Use copy instead.");
-
-        if (srcDir == null) {
-            throw new BuildException("src attribute must be set!", 
-                                     location);
-        }
-
-        if (!srcDir.exists()) {
-            throw new BuildException("srcdir "+srcDir.toString()
-                                     +" does not exist!", location);
-        }
-
-        if (destDir == null) {
-            throw new BuildException("The dest attribute must be set.", location);
-        }
-
-        if (srcDir.equals(destDir)) {
-            log("Warning: src == dest");
-        }
-
-        DirectoryScanner ds = super.getDirectoryScanner(srcDir);
-
-        String[] files = ds.getIncludedFiles();
-        scanDir(srcDir, destDir, files);
-        if (filecopyList.size() > 0) {
-            log("Copying " + filecopyList.size() + " file"
-                + (filecopyList.size() == 1 ? "" : "s")
-                + " to " + destDir.getAbsolutePath());
-            Enumeration enum = filecopyList.keys();
-            while (enum.hasMoreElements()) {
-                String fromFile = (String) enum.nextElement();
-                String toFile = (String) filecopyList.get(fromFile);
-                try {
-                    project.copyFile(fromFile, toFile, filtering, 
-                                     forceOverwrite);
-                } catch (IOException ioe) {
-                    String msg = "Failed to copy " + fromFile + " to " + toFile
-                        + " due to " + ioe.getMessage();
-                    throw new BuildException(msg, ioe, location);
-                }
-            }
-        }
-    }
-
-    private void scanDir(File from, File to, String[] files) {
-        for (int i = 0; i < files.length; i++) {
-            String filename = files[i];
-            File srcFile = new File(from, filename);
-            File destFile;
-            if (flatten) {
-                destFile = new File(to, new File(filename).getName());
-            } else {
-                destFile = new File(to, filename);
-            }
-            if (forceOverwrite ||
-                (srcFile.lastModified() > destFile.lastModified())) {
-                filecopyList.put(srcFile.getAbsolutePath(),
-                                 destFile.getAbsolutePath());
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Copyfile.java b/src/main/org/apache/tools/ant/taskdefs/Copyfile.java
deleted file mode 100644
index 4e363d0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Copyfile.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-/**
- * Copies a file.
- *
- * @author duncan@x180.com
- *
- * @deprecated The copyfile task is deprecated.  Use copy instead.
- */
-
-public class Copyfile extends Task {
-
-    private File srcFile;
-    private File destFile;
-    private boolean filtering = false;
-    private boolean forceOverwrite = false;
- 
-    public void setSrc(File src) {
-        srcFile = src;
-    }
-
-    public void setForceoverwrite(boolean force) {
-        forceOverwrite = force;
-    }
-
-    public void setDest(File dest) {
-        destFile = dest;
-    }
-
-    public void setFiltering(String filter) {
-        filtering = Project.toBoolean(filter);
-    }
-
-    public void execute() throws BuildException {
-        log("DEPRECATED - The copyfile task is deprecated.  Use copy instead.");
-
-        if (srcFile == null) {
-            throw new BuildException("The src attribute must be present.", location);
-        }
-        
-        if (!srcFile.exists()) {
-            throw new BuildException("src " + srcFile.toString()
-                                     + " does not exist.", location);
-        }
-
-        if (destFile == null) {
-            throw new BuildException("The dest attribute must be present.", location);
-        }
-
-        if (srcFile.equals(destFile)) {
-            log("Warning: src == dest");
-        }
-
-        if (forceOverwrite || srcFile.lastModified() > destFile.lastModified()) {
-            try {
-                project.copyFile(srcFile, destFile, filtering, forceOverwrite);
-            } catch (IOException ioe) {
-                String msg = "Error copying file: " + srcFile.getAbsolutePath()
-                    + " due to " + ioe.getMessage();
-                throw new BuildException(msg);
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Cvs.java b/src/main/org/apache/tools/ant/taskdefs/Cvs.java
deleted file mode 100644
index 736ef95..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Cvs.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-import java.io.*;
-
-/**
- *
- *
- * @author costin@dnt.ro
- * @author stefano@apache.org
- * @author Wolfgang Werner <a href="mailto:wwerner@picturesafe.de">wwerner@picturesafe.de</a>
- */
-
-public class Cvs extends Task {
-
-    private Commandline cmd = new Commandline();
-    
-    /**
-     * the CVSROOT variable.
-     */
-    private String cvsRoot;
-
-    /**
-     * the package/module to check out.
-     */
-    private String pack;
-
-    /**
-     * the CVS command to execute.
-     */
-    private String command = "checkout";
-
-    /**
-     * suppress information messages.
-     */
-    private boolean quiet = false;
-
-    /**
-     * report only, don't change any files.
-     */
-    private boolean noexec = false;
-
-    /**
-     * the directory where the checked out files should be placed.
-     */
-    private File dest;
-
-    /**
-     * the file to direct standard output from the command.
-     */
-    private File output;
-
-    /**
-     * the file to direct standard error from the command.
-     */
-    private File error; 
-
-    public void execute() throws BuildException {
-
-        // XXX: we should use JCVS (www.ice.com/JCVS) instead of command line
-        // execution so that we don't rely on having native CVS stuff around (SM)
-
-        // We can't do it ourselves as jCVS is GPLed, a third party task 
-        // outside of jakarta repositories would be possible though (SB).
-    
-        Commandline toExecute = new Commandline();
-
-        toExecute.setExecutable("cvs");
-        if (cvsRoot != null) { 
-            toExecute.createArgument().setValue("-d");
-            toExecute.createArgument().setValue(cvsRoot);
-        }
-        if (noexec) {
-            toExecute.createArgument().setValue("-n");
-        }
-        if (quiet) {
-            toExecute.createArgument().setValue("-q");
-        }
-        toExecute.createArgument().setLine(command);
-        toExecute.addArguments(cmd.getCommandline());
-
-        if (pack != null) {
-            toExecute.createArgument().setLine(pack);
-        }
-
-        ExecuteStreamHandler streamhandler = null;
-        OutputStream outputstream = null;
-        OutputStream errorstream = null; 
-        if (error == null && output == null) {
-            streamhandler = new LogStreamHandler(this, Project.MSG_INFO,
-                                                 Project.MSG_WARN);
-        }
-        else {
-            if (output != null) {
-                try {
-                    outputstream = new PrintStream(new BufferedOutputStream(new FileOutputStream(output)));
-                } catch (IOException e) {
-                    throw new BuildException(e, location);
-                }
-            }
-            else {
-                outputstream = new LogOutputStream(this, Project.MSG_INFO);
-            }
-            if (error != null) {
-                try {
-                    errorstream = new PrintStream(new BufferedOutputStream(new FileOutputStream(error)));
-                } catch (IOException e) {
-                    throw new BuildException(e, location);
-                }
-            }
-            else {
-                errorstream = new LogOutputStream(this, Project.MSG_WARN);
-            }
-            streamhandler = new PumpStreamHandler(outputstream, errorstream);
-        }
-
-        Execute exe = new Execute(streamhandler, 
-                                  null);
-
-        exe.setAntRun(project);
-        if (dest == null) dest = project.getBaseDir();
-        exe.setWorkingDirectory(dest);
-
-        exe.setCommandline(toExecute.getCommandline());
-        try {
-            exe.execute();
-        } catch (IOException e) {
-            throw new BuildException(e, location);
-        } finally {
-            if (output != null) {
-                try {
-                    outputstream.close();
-                } catch (IOException e) {}
-            }
-            if (error != null) {
-                try {
-                    errorstream.close();
-                } catch (IOException e) {}
-            }
-        }
-    }
-
-    public void setCvsRoot(String root) {
-        // Check if not real cvsroot => set it to null 
-        if (root != null) { 
-            if (root.trim().equals("")) 
-                root = null; 
-        } 
-
-        this.cvsRoot = root;
-    }
-
-    public void setDest(File dest) {
-        this.dest = dest;
-    }
-
-    public void setPackage(String p) {
-        this.pack = p;
-    }
-
-    public void setTag(String p) { 
-        // Check if not real tag => set it to null 
-        if (p != null && p.trim().length() > 0) {
-            cmd.createArgument().setValue("-r");
-            cmd.createArgument().setValue(p);
-        }
-    } 
-
-    
-    public void setDate(String p) {
-        if(p != null && p.trim().length() > 0) {
-            cmd.createArgument().setValue("-D");
-            cmd.createArgument().setValue(p);
-        }
-    }
-
-    public void setCommand(String c) {
-        this.command = c;
-    }
-    
-    public void setQuiet(boolean q) {
-        quiet = q;
-    }
-    
-    public void setNoexec(boolean ne) {
-        noexec = ne;
-    }
-
-    public void setOutput(File output) {
-        this.output = output;
-    }
-    
-    public void setError(File error) {
-        this.error = error;
-    }
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/Delete.java b/src/main/org/apache/tools/ant/taskdefs/Delete.java
deleted file mode 100644
index 495f480..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Delete.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import java.io.*;
-import java.util.*;
-
-/**
- * Deletes a file or directory, or set of files defined by a fileset.
- * The original delete task would delete a file, or a set of files 
- * using the include/exclude syntax.  The deltree task would delete a 
- * directory tree.  This task combines the functionality of these two
- * originally distinct tasks.
- * <p>Currently Delete extends MatchingTask.  This is intend <i>only</i>
- * to provide backwards compatibility for a release.  The future position
- * is to use nested filesets exclusively.</p>
- * 
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- * @author Tom Dimock <a href="mailto:tad1@cornell.edu">tad1@cornell.edu</a>
- * @author Glenn McAllister <a href="mailto:glennm@ca.ibm.com">glennm@ca.ibm.com</a>
- * @author Jon S. Stevens <a href="mailto:jon@latchkey.com">jon@latchkey.com</a>
- */
-public class Delete extends MatchingTask {
-    protected File file = null;
-    protected File dir = null;
-    protected Vector filesets = new Vector();
-    protected boolean usedMatchingTask = false;
-    protected boolean includeEmpty = false;	// by default, remove matching empty dirs
-
-    private int verbosity = Project.MSG_VERBOSE;
-    private boolean quiet = false;
-
-    /**
-     * Set the name of a single file to be removed.
-     * 
-     * @param file the file to be deleted
-     */
-    public void setFile(File file) {
-        this.file = file;
-    } 
-
-    /**
-     * Set the directory from which files are to be deleted
-     * 
-     * @param dir the directory path.
-     */
-    public void setDir(File dir) {
-        this.dir = dir;
-    } 
-
-    /**
-     * Used to force listing of all names of deleted files.
-     * 
-     * @param verbose "true" or "on"
-     */
-    public void setVerbose(boolean verbose) {
-        if (verbose) {
-            this.verbosity = Project.MSG_INFO;
-        } else {
-            this.verbosity = Project.MSG_VERBOSE;
-        } 
-    } 
-
-    /**
-     * If the file does not exist, do not display a diagnostic 
-     * message or modify the exit status to reflect an error.
-     * This means that if a file or directory cannot be deleted,
-     * then no error is reported. This setting emulates the 
-     * -f option to the Unix &quot;rm&quot; command.
-     * Default is false meaning things are &quot;noisy&quot;
-     * @param quiet "true" or "on"
-     */
-    public void setQuiet(boolean quiet) {
-        this.quiet = quiet;
-    } 
-
-    /**
-     * Used to delete empty directories.
-     */
-    public void setIncludeEmptyDirs(boolean includeEmpty) {
-        this.includeEmpty = includeEmpty;
-    }
-
-   /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
- 
-    /**
-     * add a name entry on the include list
-     */
-    public PatternSet.NameEntry createInclude() {
-        usedMatchingTask = true;
-        return super.createInclude();
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public PatternSet.NameEntry createExclude() {
-        usedMatchingTask = true;
-        return super.createExclude();
-    }
-
-    /**
-     * add a set of patterns
-     */
-    public PatternSet createPatternSet() {
-        usedMatchingTask = true;
-        return super.createPatternSet();
-    }
-
-    /**
-     * Sets the set of include patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param includes the string containing the include patterns
-     */
-    public void setIncludes(String includes) {
-        usedMatchingTask = true;
-        super.setIncludes(includes);
-    }
-
-    /**
-     * Sets the set of exclude patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param excludes the string containing the exclude patterns
-     */
-    public void setExcludes(String excludes) {
-        usedMatchingTask = true;
-        super.setExcludes(excludes);
-    }
-
-    /**
-     * Sets whether default exclusions should be used or not.
-     *
-     * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions 
-     *                           should be used, "false"|"off"|"no" when they
-     *                           shouldn't be used.
-     */
-    public void setDefaultexcludes(boolean useDefaultExcludes) {
-        usedMatchingTask = true;
-        super.setDefaultexcludes(useDefaultExcludes);
-    }
-
-    /**
-     * Sets the name of the file containing the includes patterns.
-     *
-     * @param includesfile A string containing the filename to fetch
-     * the include patterns from.  
-     */
-    public void setIncludesfile(File includesfile) {
-        usedMatchingTask = true;
-        super.setIncludesfile(includesfile);
-    }
-
-    /**
-     * Sets the name of the file containing the includes patterns.
-     *
-     * @param excludesfile A string containing the filename to fetch
-     * the include patterns from.  
-     */
-    public void setExcludesfile(File excludesfile) {
-        usedMatchingTask = true;
-        super.setExcludesfile(excludesfile);
-    }
-
-    /**
-     * Delete the file(s).
-     */
-    public void execute() throws BuildException {
-        if (usedMatchingTask) {
-            log("DEPRECATED - Use of the implicit FileSet is deprecated.  Use a nested fileset element instead.");
-        }
-
-        if (file == null && dir == null && filesets.size() == 0) {
-            throw new BuildException("At least one of the file or dir attributes, or a fileset element, must be set.");
-        } 
-
-        // delete the single file
-        if (file != null) {
-            if (file.exists()) {
-                if (file.isDirectory()) {
-                    log("Directory " + file.getAbsolutePath() + " cannot be removed using the file attribute.  Use dir instead.");
-                } else {
-                    log("Deleting: " + file.getAbsolutePath());
-  
-                    if (!file.delete() && !quiet) {
-                        throw new BuildException("Unable to delete file " + file.getAbsolutePath());
-                    } 
-                } 
-            } else {
-                log("Could not find file " + file.getAbsolutePath() + " to delete.");
-            }
-        }
-
-        // delete the directory
-        if (dir != null && dir.exists() && dir.isDirectory() && !usedMatchingTask) {
-            /*
-               If verbosity is MSG_VERBOSE, that mean we are doing regular logging
-               (backwards as that sounds).  In that case, we want to print one 
-               message about deleting the top of the directory tree.  Otherwise, 
-               the removeDir method will handle messages for _all_ directories.
-             */
-            if (verbosity == Project.MSG_VERBOSE) {
-                log("Deleting directory " + dir.getAbsolutePath());
-            }
-            removeDir(dir);
-        }
-
-        // delete the files in the filesets
-        for (int i=0; i<filesets.size(); i++) {
-            FileSet fs = (FileSet) filesets.elementAt(i);
-            DirectoryScanner ds = fs.getDirectoryScanner(project);
-            String[] files = ds.getIncludedFiles();
-            String[] dirs = ds.getIncludedDirectories();
-            removeFiles(fs.getDir(project), files, dirs);
-        }
-
-        // delete the files from the default fileset
-        if (usedMatchingTask && dir != null) {
-            DirectoryScanner ds = super.getDirectoryScanner(dir);
-            String[] files = ds.getIncludedFiles();
-            String[] dirs = ds.getIncludedDirectories();
-            removeFiles(dir, files, dirs);
-        }
-    } 
-
-//************************************************************************
-//  protected and private methods
-//************************************************************************
-
-    protected void removeDir(File d) {
-        String[] list = d.list();
-        if (list == null) list = new String[0];
-        for (int i = 0; i < list.length; i++) {
-            String s = list[i];
-            File f = new File(d, s);
-            if (f.isDirectory()) {
-                removeDir(f);
-            } else {
-                log("Deleting " + f.getAbsolutePath(), verbosity);
-                if (!f.delete() && !quiet) {
-                    throw new BuildException("Unable to delete file " + f.getAbsolutePath());
-                }
-            }
-        }
-        log("Deleting directory " + d.getAbsolutePath(), verbosity);
-        if (!d.delete() && !quiet) {
-            throw new BuildException("Unable to delete directory " + dir.getAbsolutePath());
-        }
-    }
-
-    protected void removeFiles(File d, String[] files, String[] dirs) {
-        if (files.length > 0) {
-            log("Deleting " + files.length + " files from " + d.getAbsolutePath());
-            for (int j=0; j<files.length; j++) {
-                File f = new File(d, files[j]);
-                log("Deleting " + f.getAbsolutePath(), verbosity);
-                if (!f.delete() && !quiet) {
-                    throw new BuildException("Unable to delete file " + f.getAbsolutePath());
-                }
-            }
-        }
-
-        if (dirs.length > 0 && includeEmpty) {
-            int dirCount = 0;
-            for (int j=0; j<dirs.length; j++) {
-                File dir = new File(d, dirs[j]);
-                String[] dirFiles = dir.list();
-                if (dirFiles == null || dirFiles.length == 0) {
-                    log("Deleting " + dir.getAbsolutePath(), verbosity);
-                    if (!dir.delete() && !quiet) {
-                        throw new BuildException("Unable to delete directory " + dir.getAbsolutePath());
-                    } else {
-                        dirCount++;
-                    }
-                }
-            }
-
-            if (dirCount > 0) {
-                log("Deleted " + dirCount + " director" + 
-                    (dirCount==1 ? "y" : "ies") + 
-                    " from " + d.getAbsolutePath());
-            }
-        }
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/Deltree.java b/src/main/org/apache/tools/ant/taskdefs/Deltree.java
deleted file mode 100644
index 0c81a23..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Deltree.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import java.io.*;
-
-/**
- *
- *
- * @author duncan@x180.com
- *
- * @deprecated The deltree task is deprecated.  Use delete instead.
- */
-
-public class Deltree extends Task {
-
-    private File dir;
-
-    public void setDir(File dir) {
-	this.dir = dir;
-    }
-    
-    public void execute() throws BuildException {
-        log("DEPRECATED - The deltree task is deprecated.  Use delete instead.");
-
-        if (dir == null) {
-            throw new BuildException("dir attribute must be set!", location);
-        } 
-
-	if (dir.exists()) {
-	    if (!dir.isDirectory()) {
-		if (!dir.delete()) {
-        	    throw new BuildException("Unable to delete directory " 
-                                             + dir.getAbsolutePath(),
-                                             location);
-	        }
-		return;
-		// String msg = "Given dir: " + dir.getAbsolutePath() +
-		// " is not a dir";
-		// throw new BuildException(msg);
-	    }
-
-            log("Deleting: " + dir.getAbsolutePath());
-
-            try {
-                removeDir(dir);
-            } catch (IOException ioe) {
-                String msg = "Unable to delete " + dir.getAbsolutePath();
-                throw new BuildException(msg, location);
-            }
-        }
-    }
-    
-    private void removeDir(File dir) throws IOException {
-
-        // check to make sure that the given dir isn't a symlink
-        // the comparison of absolute path and canonical path
-        // catches this
-	
-	//        if (dir.getCanonicalPath().equals(dir.getAbsolutePath())) {
-	// (costin) It will not work if /home/costin is symlink to /da0/home/costin ( taz
-	// for example )
-	String[] list = dir.list();
-	for (int i = 0; i < list.length; i++) {
-	    String s = list[i];
-	    File f = new File(dir, s);
-	    if (f.isDirectory()) {
-		removeDir(f);
-	    } else {
-		if (!f.delete()) {
-        	    throw new BuildException("Unable to delete file " + f.getAbsolutePath());
-	        }
-	    }
-	}
-        if (!dir.delete()) {
-	    throw new BuildException("Unable to delete directory " + dir.getAbsolutePath());
-	}
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/Echo.java b/src/main/org/apache/tools/ant/taskdefs/Echo.java
deleted file mode 100644
index 6f881dd..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Echo.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.EnumeratedAttribute;
-import java.io.*;
-/**
- * Echo
- *
- * @author costin@dnt.ro
- */
-public class Echo extends Task {
-    protected String message = ""; // required
-    protected File file = null;
-    protected boolean append = false;
-    
-    // by default, messages are always displayed
-    protected int logLevel = Project.MSG_WARN;   
-    
-    /**
-     * Does the work.
-     *
-     * @exception BuildException if someting goes wrong with the build
-     */
-    public void execute() throws BuildException {
-        if (file == null) {
-            log(message, logLevel);
-        } else {
-            FileWriter out = null;
-            try {
-                out = new FileWriter(file.getAbsolutePath(), append);
-                out.write(message, 0, message.length());
-            } catch (IOException ioe) {
-                throw new BuildException(ioe, location);
-            } finally {
-                if (out != null) {
-                    try {
-                        out.close();
-                    } catch (IOException ioex) {}
-                }
-            }
-        }
-    }
-
-    /**
-     * Sets the message variable.
-     *
-     * @param msg Sets the value for the message variable.
-     */
-    public void setMessage(String msg) {
-        this.message = msg;
-    }
-
-    /**
-     * Sets the file attribute.
-     */
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    /**
-     * Shall we append to an existing file?
-     */
-    public void setAppend(boolean append) {
-        this.append = append;
-    }
-
-    /**
-     * Set a multiline message.
-     */
-    public void addText(String msg) {
-        message += 
-            ProjectHelper.replaceProperties(project, msg, project.getProperties());
-    }
-
-    /**
-     * Set the logging level to one of
-     * <ul>
-     *  <li>error</li>
-     *  <li>warning</li>
-     *  <li>info</li>
-     *  <li>verbose</li>
-     *  <li>debug</li>
-     * <ul>
-     * <p>The default is &quot;warning&quot; to ensure that messages are
-     * displayed by default when using the -quiet command line option.</p>
-     */
-    public void setLevel(EchoLevel echoLevel) {
-        String option = echoLevel.getValue();
-        if (option.equals("error")) {
-            logLevel = Project.MSG_ERR;
-        } else if (option.equals("warning")) {
-            logLevel = Project.MSG_WARN;
-        } else if (option.equals("info")) {
-            logLevel = Project.MSG_INFO;
-        } else if (option.equals("verbose")) {
-            logLevel = Project.MSG_VERBOSE;
-        } else {
-            // must be "debug"
-            logLevel = Project.MSG_DEBUG;
-        }
-    }
-
-    public static class EchoLevel extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"error", "warning", "info", "verbose", "debug"};
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Exec.java b/src/main/org/apache/tools/ant/taskdefs/Exec.java
deleted file mode 100644
index e13259c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Exec.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import java.io.*;
-
-/**
- * Executes a given command if the os platform is appropriate.
- *
- * @author duncan@x180.com
- * @author rubys@us.ibm.com
- *
- * @deprected Instead of using this class, please extend ExecTask or
- * delegate to Execute.  
- */
-public class Exec extends Task {
-    private String os;
-    private String out;
-    private File dir;
-    private String command;
-    protected PrintWriter fos = null;
-    private boolean failOnError = false;
-
-    private static final int BUFFER_SIZE = 512;
-
-    public void execute() throws BuildException {
-        run(command);
-    }
-
-    protected int run(String command) throws BuildException {
-
-        int err = -1; // assume the worst
-
-        // test if os match
-        String myos = System.getProperty("os.name");
-        log("Myos = " + myos, Project.MSG_VERBOSE);
-        if ((os != null) && (os.indexOf(myos) < 0)){
-            // this command will be executed only on the specified OS
-            log("Not found in " + os, Project.MSG_VERBOSE);
-            return 0;
-        }
-
-        // default directory to the project's base directory
-        if (dir == null) dir = project.getBaseDir();
-
-        if (myos.toLowerCase().indexOf("windows") >= 0) {
-            if (!dir.equals(project.resolveFile("."))) {
-                if (myos.toLowerCase().indexOf("nt") >= 0) {
-                    command = "cmd /c cd " + dir + " && " + command;
-                }
-                else {
-                    String ant = project.getProperty("ant.home");
-                    if (ant == null) {
-                        throw new BuildException("Property 'ant.home' not found", location);
-                    }
-                
-                    String antRun = project.resolveFile(ant + "/bin/antRun.bat").toString();
-                    command = antRun + " " + dir + " " + command;
-                }
-            }
-        } else {
-            String ant = project.getProperty("ant.home");
-            if (ant == null) throw new BuildException("Property 'ant.home' not found", location);
-            String antRun = project.resolveFile(ant + "/bin/antRun").toString();
-
-            command = antRun + " " + dir + " " + command;
-        }
-
-        try {
-            // show the command
-            log(command, Project.MSG_VERBOSE);
-
-            // exec command on system runtime
-            Process proc = Runtime.getRuntime().exec(command);
-
-            if( out!=null )  {
-                fos=new PrintWriter( new FileWriter( out ) );
-                log("Output redirected to " + out, Project.MSG_VERBOSE);
-            }
-
-            // copy input and error to the output stream
-            StreamPumper inputPumper =
-                new StreamPumper(proc.getInputStream(), Project.MSG_INFO, this);
-            StreamPumper errorPumper =
-                new StreamPumper(proc.getErrorStream(), Project.MSG_WARN, this);
-
-            // starts pumping away the generated output/error
-            inputPumper.start();
-            errorPumper.start();
-
-            // Wait for everything to finish
-            proc.waitFor();
-            inputPumper.join();
-            errorPumper.join();
-            proc.destroy();
-
-            // close the output file if required
-            logFlush();
-
-            // check its exit value
-            err = proc.exitValue();
-            if (err != 0) {
-                if (failOnError) {
-                    throw new BuildException("Exec returned: "+err, location);
-                } else {
-                    log("Result: " + err, Project.MSG_ERR);
-                }
-            }
-        } catch (IOException ioe) {
-            throw new BuildException("Error exec: " + command, ioe, location);
-        } catch (InterruptedException ex) {}
-
-        return err;
-    }
-
-    public void setDir(String d) {
-        this.dir = project.resolveFile(d);
-    }
-
-    public void setOs(String os) {
-        this.os = os;
-    }
-
-    public void setCommand(String command) {
-        this.command = command;
-    }
-
-    public void setOutput(String out) {
-        this.out = out;
-    }
-
-    public void setFailonerror(boolean fail) {
-        failOnError = fail;
-    }
-
-    protected void outputLog(String line, int messageLevel) {
-        if (fos == null) {
-            log(line, messageLevel); 
-        } else {
-            fos.println(line);
-        }
-    };
-
-    protected void logFlush() {
-        if (fos != null) fos.close();
-    }
-
-    // Inner class for continually pumping the input stream during
-    // Process's runtime.
-    class StreamPumper extends Thread {
-        private BufferedReader din;
-        private int messageLevel;
-        private boolean endOfStream = false;
-        private int SLEEP_TIME = 5;
-        private Exec parent;
-
-        public StreamPumper(InputStream is, int messageLevel, Exec parent) {
-            this.din = new BufferedReader(new InputStreamReader(is));
-            this.messageLevel = messageLevel;
-            this.parent = parent;
-        }
-
-        public void pumpStream()
-            throws IOException
-        {
-            byte[] buf = new byte[BUFFER_SIZE];
-            if (!endOfStream) {
-                String line = din.readLine();
-
-                if (line != null) {
-                    outputLog(line, messageLevel);
-                } else {
-                    endOfStream = true;
-                }
-            }
-        }
-
-        public void run() {
-            try {
-                try {
-                    while (!endOfStream) {
-                        pumpStream();
-                        sleep(SLEEP_TIME);
-                    }
-                } catch (InterruptedException ie) {}
-                din.close();
-            } catch (IOException ioe) {}
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/ExecTask.java b/src/main/org/apache/tools/ant/taskdefs/ExecTask.java
deleted file mode 100644
index 0a4fcaa..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/ExecTask.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-import java.io.*;
-
-/**
- * Executes a given command if the os platform is appropriate.
- *
- * @author duncan@x180.com
- * @author rubys@us.ibm.com
- * @author thomas.haas@softwired-inc.com
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @author <a href="mailto:mariusz@rakiura.org">Mariusz Nowostawski</a> 
- */
-public class ExecTask extends Task {
-
-    private String os;
-    private File out;
-    private File dir;
-    protected boolean failOnError = false;
-    protected boolean newEnvironment = false;
-    private Integer timeout = null;
-    private Environment env = new Environment();
-    protected Commandline cmdl = new Commandline();
-    private FileOutputStream fos = null;
-
-    /**
-     * Timeout in milliseconds after which the process will be killed.
-     */
-    public void setTimeout(Integer value) {
-        timeout = value;
-    }
-
-    /**
-     * The command to execute.
-     */
-    public void setExecutable(String value) {
-        cmdl.setExecutable(value);
-    }
-
-    /**
-     * The working directory of the process
-     */
-    public void setDir(File d) {
-        this.dir = d;
-    }
-
-    /**
-     * Only execute the process if <code>os.name</code> is included in this string.
-     */
-    public void setOs(String os) {
-        this.os = os;
-    }
-
-    /**
-     * The full commandline to execute, executable + arguments.
-     */
-    public void setCommand(Commandline cmdl) {
-        log("The command attribute is deprecated. " +
-            "Please use the executable attribute and nested arg elements.",
-            Project.MSG_WARN);
-        this.cmdl = cmdl;
-    }
-
-    /**
-     * File the output of the process is redirected to.
-     */
-    public void setOutput(File out) {
-        this.out = out;
-    }
-
-    /**
-     * Throw a BuildException if process returns non 0.
-     */
-    public void setFailonerror(boolean fail) {
-        failOnError = fail;
-    }
-
-    /**
-     * Use a completely new environment
-     */
-    public void setNewenvironment(boolean newenv) {
-        newEnvironment = newenv;
-    }
-
-    /**
-     * Add a nested env element - an environment variable.
-     */
-    public void addEnv(Environment.Variable var) {
-        env.addVariable(var);
-    }
-
-    /**
-     * Add a nested arg element - a command line argument.
-     */
-    public Commandline.Argument createArg() {
-        return cmdl.createArgument();
-    }
-
-    /**
-     * Do the work.
-     */
-    public void execute() throws BuildException {
-        checkConfiguration();
-        if (isValidOs()) {
-            runExec(prepareExec());
-        }
-    }
-
-    /**
-     * Has the user set all necessary attributes?
-     */
-    protected void checkConfiguration() throws BuildException {
-        if (cmdl.getExecutable() == null) {
-            throw new BuildException("no executable specified", location);
-        }
-        if (dir != null && !dir.exists()) {
-        	throw new BuildException("The directory you specified does not exist");
-        }
-        if (dir != null && !dir.isDirectory()) {
-        	throw new BuildException("The directory you specified is not a directory");
-        }
-    }
-
-    /**
-     * Is this the OS the user wanted?
-     */
-    protected boolean isValidOs() {
-        // test if os match
-        String myos = System.getProperty("os.name");
-        log("Myos = " + myos, Project.MSG_VERBOSE);
-        if ((os != null) && (os.indexOf(myos) < 0)){
-            // this command will be executed only on the specified OS
-            log("Not found in " + os, Project.MSG_VERBOSE);
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Create an Execute instance with the correct working directory set.
-     */
-    protected Execute prepareExec() throws BuildException {
-        // default directory to the project's base directory
-        if (dir == null) dir = project.getBaseDir();
-        // show the command
-        log(cmdl.toString(), Project.MSG_VERBOSE);
-        
-        Execute exe = new Execute(createHandler(), createWatchdog());
-        exe.setAntRun(project);
-        exe.setWorkingDirectory(dir);
-        String[] environment = env.getVariables();
-        if (environment != null) {
-            for (int i=0; i<environment.length; i++) {
-                log("Setting environment variable: "+environment[i],
-                    Project.MSG_VERBOSE);
-            }
-        }
-        exe.setNewenvironment(newEnvironment);
-        exe.setEnvironment(environment);
-        return exe;
-    }
-
-    /**
-     * Run the command using the given Execute instance.
-     */
-    protected void runExec(Execute exe) throws BuildException {
-        int err = -1; // assume the worst
-
-        try {
-            exe.setCommandline(cmdl.getCommandline());
-            err = exe.execute();
-            if (err != 0) {
-                if (failOnError) {
-                    throw new BuildException("Exec returned: "+err, location);
-                } else {
-                    log("Result: " + err, Project.MSG_ERR);
-                }
-            }
-        } catch (IOException e) {
-            throw new BuildException("Execute failed: " + e, e, location);
-        } finally {
-            // close the output file if required
-            logFlush();
-        }
-    }
-
-    /**
-     * Create the StreamHandler to use with our Execute instance.
-     */
-    protected ExecuteStreamHandler createHandler() throws BuildException {
-        if(out!=null)  {
-            try {
-                fos = new FileOutputStream(out);
-                log("Output redirected to " + out, Project.MSG_VERBOSE);
-                return new PumpStreamHandler(fos);
-            } catch (FileNotFoundException fne) {
-                throw new BuildException("Cannot write to "+out, fne, location);
-            } catch (IOException ioe) {
-                throw new BuildException("Cannot write to "+out, ioe, location);
-            }
-        } else {
-            return new LogStreamHandler(this,
-                                        Project.MSG_INFO, Project.MSG_WARN);
-        }
-    }
-
-    /**
-     * Create the Watchdog to kill a runaway process.
-     */
-    protected ExecuteWatchdog createWatchdog() throws BuildException {
-        if (timeout == null) return null;
-        return new ExecuteWatchdog(timeout.intValue());
-    }
-
-    /**
-     * Flush the output stream - if there is one.
-     */
-    protected void logFlush() {
-        try {
-            if (fos != null) fos.close();
-        } catch (IOException io) {}
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Execute.java b/src/main/org/apache/tools/ant/taskdefs/Execute.java
deleted file mode 100644
index be2a73b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Execute.java
+++ /dev/null
@@ -1,653 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.Commandline;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.BufferedReader;
-import java.io.StringReader;
-import java.io.ByteArrayOutputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Vector;
-
-/**
- * Runs an external program.
- *
- * @author thomas.haas@softwired-inc.com
- */
-public class Execute {
-
-    /** Invalid exit code. **/
-    public final static int INVALID = Integer.MAX_VALUE;
-
-    private String[] cmdl = null;
-    private String[] env = null;
-    private int exitValue = INVALID;
-    private ExecuteStreamHandler streamHandler;
-    private ExecuteWatchdog watchdog;
-    private File workingDirectory = null;
-    private Project project = null;
-    private boolean newEnvironment = false;
-
-    private static String antWorkingDirectory = System.getProperty("user.dir");
-    private static CommandLauncher launcher = createCommandLauncher();
-    private static Vector procEnvironment = null;
-
-    /** 
-     * Builds a command launcher for the OS and JVM we are running under
-     */
-    private static CommandLauncher createCommandLauncher()
-    {
-        // Try using a JDK 1.3 launcher
-        try {
-            return new Java13CommandLauncher();
-        }
-        catch ( NoSuchMethodException exc ) {
-            // Ignore and keep try
-        }
-
-        String osname = System.getProperty("os.name").toLowerCase();
-        if ( osname.indexOf("mac os") >= 0 ) {
-            // Mac
-            return new MacCommandLauncher(new CommandLauncher());
-        }
-        else if ( osname.indexOf("os/2") >= 0 ) {
-            // OS/2 - use same mechanism as Windows 2000
-            return new WinNTCommandLauncher(new CommandLauncher());
-        }
-        else if ( osname.indexOf("windows") >= 0 ) {
-            // Windows.  Need to determine which JDK we're running in
-            CommandLauncher baseLauncher;
-            if ( System.getProperty("java.version").startsWith("1.1") ) {
-                // JDK 1.1
-                baseLauncher = new Java11CommandLauncher();
-            }
-            else {
-                // JDK 1.2
-                baseLauncher = new CommandLauncher();
-            }
-
-            // Determine if we're running under 2000/NT or 98/95
-            if ( osname.indexOf("nt") >= 0 || osname.indexOf("2000") >= 0 ) {
-                // Windows 2000/NT
-                return new WinNTCommandLauncher(baseLauncher);
-            }
-            else {
-                // Windows 98/95 - need to use an auxiliary script
-                return new ScriptCommandLauncher("bin/antRun.bat", baseLauncher);
-            }
-        }
-        else {
-            // Generic
-            return new ScriptCommandLauncher("bin/antRun", new CommandLauncher());
-        }
-    }
-
-    /**
-     * Find the list of environment variables for this process.
-     */
-    public static synchronized Vector getProcEnvironment() {
-        if (procEnvironment != null) return procEnvironment;
-
-        procEnvironment = new Vector();
-        try {
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
-            Execute exe = new Execute(new PumpStreamHandler(out));
-            exe.setCommandline(getProcEnvCommand());
-            // Make sure we do not recurse forever
-            exe.setNewenvironment(true);
-            int retval = exe.execute();
-            if ( retval != 0 ) {
-                // Just try to use what we got
-            }
-
-            BufferedReader in = 
-                new BufferedReader(new StringReader(out.toString()));
-            String line;
-            while ((line = in.readLine()) != null) {
-                procEnvironment.addElement(line);
-            }
-        } 
-        catch (java.io.IOException exc) {
-            exc.printStackTrace();
-            // Just try to see how much we got
-        }
-        return procEnvironment;
-    }
-
-    private static String[] getProcEnvCommand() {
-        String osname = System.getProperty("os.name").toLowerCase();
-        if ( osname.indexOf("mac os") >= 0 ) {
-            // Mac
-            // TODO: I have no idea how to get it, someone must fix it
-            String[] cmd = null;
-            return cmd;
-        }
-        else if ( osname.indexOf("os/2") >= 0 ) {
-            // OS/2 - use same mechanism as Windows 2000
-            // Not sure
-            String[] cmd = {"cmd", "/c", "set" };
-            return cmd;
-        }
-        else if ( osname.indexOf("indows") >= 0 ) {
-            // Determine if we're running under 2000/NT or 98/95
-            if ( osname.indexOf("nt") >= 0 || osname.indexOf("2000") >= 0 ) {
-                // Windows 2000/NT
-                String[] cmd = {"cmd", "/c", "set" };
-                return cmd;
-            }
-            else {
-                // Windows 98/95 - need to use an auxiliary script
-                String[] cmd = {"command.com", "/c", "set" };
-                return cmd;
-            }
-        }
-        else {
-            // Generic UNIX
-            // Alternatively one could use: /bin/sh -c env
-            String[] cmd = {"/usr/bin/env"};
-            return cmd;
-        }
-    }
-
-    /**
-     * Creates a new execute object using <code>PumpStreamHandler</code> for
-     * stream handling.
-     */
-    public Execute() {
-        this(new PumpStreamHandler(), null);
-    }
-
-
-    /**
-     * Creates a new execute object.
-     *
-     * @param streamHandler the stream handler used to handle the input and
-     *        output streams of the subprocess.
-     */
-    public Execute(ExecuteStreamHandler streamHandler) {
-        this(streamHandler, null);
-    }
-
-    /**
-     * Creates a new execute object.
-     *
-     * @param streamHandler the stream handler used to handle the input and
-     *        output streams of the subprocess.
-     * @param watchdog a watchdog for the subprocess or <code>null</code> to
-     *        to disable a timeout for the subprocess.
-     */
-    public Execute(ExecuteStreamHandler streamHandler, ExecuteWatchdog watchdog) {
-        this.streamHandler = streamHandler;
-        this.watchdog = watchdog;
-    }
-
-
-    /**
-     * Returns the commandline used to create a subprocess.
-     *
-     * @return the commandline used to create a subprocess
-     */
-    public String[] getCommandline() {
-        return cmdl;
-    }
-
-
-    /**
-     * Sets the commandline of the subprocess to launch.
-     *
-     * @param commandline the commandline of the subprocess to launch
-     */
-    public void setCommandline(String[] commandline) {
-        cmdl = commandline;
-    }
-
-    /**
-     * Set whether to propagate the default environment or not.
-     *
-     * @param newenv whether to propagate the process environment.
-     */
-    public void setNewenvironment(boolean newenv) {
-        newEnvironment = newenv;
-    }
-
-    /**
-     * Returns the environment used to create a subprocess.
-     *
-     * @return the environment used to create a subprocess
-     */
-    public String[] getEnvironment() {
-        if (env == null || newEnvironment) return env;
-        return patchEnvironment();
-    }
-
-
-    /**
-     * Sets the environment variables for the subprocess to launch.
-     *
-     * @param commandline array of Strings, each element of which has
-     * an environment variable settings in format <em>key=value</em> 
-     */
-    public void setEnvironment(String[] env) {
-        this.env = env;
-    }
-
-    /**
-     * Sets the working directory of the process to execute.
-     *
-     * <p>This is emulated using the antRun scripts unless the OS is
-     * Windows NT in which case a cmd.exe is spawned,
-     * or MRJ and setting user.dir works, or JDK 1.3 and there is
-     * official support in java.lang.Runtime.
-     *
-     * @param wd the working directory of the process.
-     */
-    public void setWorkingDirectory(File wd) {
-        if (wd == null || wd.getAbsolutePath().equals(antWorkingDirectory))
-            workingDirectory = null;
-        else
-            workingDirectory = wd;
-    }
-
-    /**
-     * Set the name of the antRun script using the project's value.
-     *
-     * @param project the current project.
-     */
-    public void setAntRun(Project project) throws BuildException {
-        this.project = project;
-    }
-
-    /**
-     * Runs a process defined by the command line and returns its exit status.
-     *
-     * @return the exit status of the subprocess or <code>INVALID</code>
-     * @exception java.io.IOExcpetion The exception is thrown, if launching
-     *            of the subprocess failed
-     */
-    public int execute() throws IOException {
-        final Process process = launcher.exec(project, getCommandline(), getEnvironment(), workingDirectory);
-        try {
-            streamHandler.setProcessInputStream(process.getOutputStream());
-            streamHandler.setProcessOutputStream(process.getInputStream());
-            streamHandler.setProcessErrorStream(process.getErrorStream());
-        } catch (IOException e) {
-            process.destroy();
-            throw e;
-        }
-        streamHandler.start();
-        if (watchdog != null) watchdog.start(process);
-        waitFor(process);
-        if (watchdog != null) watchdog.stop();
-        streamHandler.stop();
-        if (watchdog != null) watchdog.checkException();
-        return getExitValue();
-    }
-
-    protected void waitFor(Process process) {
-        try {
-            process.waitFor();
-            setExitValue(process.exitValue());
-        } catch (InterruptedException e) {}
-    }
-
-    protected void setExitValue(int value) {
-        exitValue = value;
-    }
-
-    public int getExitValue() {
-        return exitValue;
-    }
-
-    /**
-     * Patch the current environment with the new values from the user.
-     * @return the patched environment
-     */
-    private String[] patchEnvironment() {
-        Vector osEnv = (Vector) getProcEnvironment().clone();
-        for (int i = 0; i < env.length; i++) {
-            int pos = env[i].indexOf('=');
-            // Get key including "="
-            String key = env[i].substring(0, pos+1);
-            int size = osEnv.size();
-            for (int j = 0; j < size; j++) {
-                if (((String)osEnv.elementAt(j)).startsWith(key)) {
-                    osEnv.removeElementAt(j);
-                    break;
-                }
-            }
-            osEnv.addElement(env[i]);
-        }
-        String[] result = new String[osEnv.size()];
-        osEnv.copyInto(result);
-        return result;
-    }
-
-    /**
-     * A utility method that runs an external command.  Writes the output and
-     * error streams of the command to the project log.
-     *
-     * @param task      The task that the command is part of.  Used for logging
-     * @param cmdline   The command to execute.
-     *
-     * @throws BuildException if the command does not return 0.
-     */
-    public static void runCommand(Task task, String[] cmdline) throws BuildException
-    {
-        try {
-            task.log(Commandline.toString(cmdline), Project.MSG_VERBOSE);
-            Execute exe = new Execute(new LogStreamHandler(task, 
-                                                           Project.MSG_INFO,
-                                                           Project.MSG_ERR));
-            exe.setAntRun(task.getProject());
-            exe.setCommandline(cmdline);
-            int retval = exe.execute();
-            if ( retval != 0 ) {
-                throw new BuildException(cmdline[0] + " failed with return code " + retval, task.getLocation());
-            }
-        } 
-        catch (java.io.IOException exc) {
-            throw new BuildException("Could not launch " + cmdline[0] + ": " + exc, task.getLocation());
-        }
-    }
-
-    /**
-     * A command launcher for a particular JVM/OS platform.  This class is
-     * a general purpose command launcher which can only launch commands in
-     * the current working directory.
-     */
-    private static class CommandLauncher
-    {
-        /** 
-         * Launches the given command in a new process.
-         *
-         * @param project       The project that the command is part of
-         * @param cmd           The command to execute
-         * @param env           The environment for the new process.  If null,
-         *                      the environment of the current proccess is used.
-         */
-        public Process exec(Project project, String[] cmd, String[] env) throws IOException
-        {
-            return Runtime.getRuntime().exec(cmd, env);
-        }
-
-        /** 
-         * Launches the given command in a new process, in the given working
-         * directory.
-         *
-         * @param project       The project that the command is part of
-         * @param cmd           The command to execute
-         * @param env           The environment for the new process.  If null,
-         *                      the environment of the current proccess is used.
-         * @param workingDir    The directory to start the command in.  If null,
-         *                      the current directory is used
-         */
-        public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException
-        {
-            if ( workingDir == null ) {
-                return exec(project, cmd, env);
-            }
-            throw new IOException("Cannot execute a process in different directory under this JVM");
-        }
-    }
-
-    /**
-     * A command launcher for JDK/JRE 1.1 under Windows.  Fixes quoting problems
-     * in Runtime.exec().  Can only launch commands in the current working
-     * directory
-     */
-    private static class Java11CommandLauncher extends CommandLauncher
-    {
-        /**
-         * Launches the given command in a new process.  Needs to quote
-         * arguments
-         */
-        public Process exec(Project project, String[] cmd, String[] env) throws IOException 
-        {
-            // Need to quote arguments with spaces, and to escape quote characters
-            String[] newcmd = new String[cmd.length];
-            for ( int i = 0; i < cmd.length; i++ ) {
-                newcmd[i] = Commandline.quoteArgument(cmd[i]);
-            }
-            return Runtime.getRuntime().exec(newcmd, env);
-        }
-    }
-
-    /**
-     * A command launcher for JDK/JRE 1.3 (and higher).  Uses the built-in
-     * Runtime.exec() command
-     */
-    private static class Java13CommandLauncher extends CommandLauncher
-    {
-        public Java13CommandLauncher() throws NoSuchMethodException
-        {
-            // Locate method Runtime.exec(String[] cmdarray, String[] envp, File dir)
-            _execWithCWD = Runtime.class.getMethod("exec", new Class[] {String[].class, String[].class, File.class});
-        }
-
-        /** 
-         * Launches the given command in a new process, in the given working
-         * directory
-         */
-        public Process exec(Project project, String[] cmd, String[] env, File workingDir) 
-            throws IOException
-        {
-            try {
-                Object[] arguments = { cmd, env, workingDir };
-                return (Process)_execWithCWD.invoke(Runtime.getRuntime(), arguments);
-            } 
-            catch ( InvocationTargetException exc ) {
-                Throwable realexc = exc.getTargetException();
-                if ( realexc instanceof ThreadDeath ) {
-                    throw (ThreadDeath)realexc;
-                } 
-                else if ( realexc instanceof IOException ) {
-                    throw (IOException)realexc;
-                } 
-                else {
-                    throw new IOException(realexc.getMessage());
-                }
-            } 
-            catch ( Exception exc ) {
-                // IllegalAccess, IllegalArgument, ClassCast
-                throw new IOException(exc.getMessage());
-            }
-        }
-        
-        private Method _execWithCWD;
-    }
-    
-    /**
-     * A command launcher that proxies another command launcher.  
-     *
-     * Sub-classes override exec(args, env, workdir)
-     */
-    private static class CommandLauncherProxy extends CommandLauncher
-    {
-        CommandLauncherProxy(CommandLauncher launcher)
-        {
-            _launcher = launcher;
-        }
-
-        /** 
-         * Launches the given command in a new process.  Delegates this
-         * method to the proxied launcher
-         */
-        public Process exec(Project project, String[] cmd, String[] env) throws IOException
-        {
-            return _launcher.exec(project, cmd, env);
-        }
-
-        private CommandLauncher _launcher;
-    }
-
-    /**
-     * A command launcher for Windows 2000/NT that uses 'cmd.exe' when
-     * launching commands in directories other than the current working
-     * directory.
-     */
-    private static class WinNTCommandLauncher extends CommandLauncherProxy
-    {
-        WinNTCommandLauncher(CommandLauncher launcher)
-        {
-            super(launcher);
-        }
-
-        /** 
-         * Launches the given command in a new process, in the given working
-         * directory.
-         */
-        public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException
-        {
-            if ( workingDir == null ) {
-                return exec(project, cmd, env);
-            }
-
-            // Use cmd.exe to change to the specified directory before running
-            // the command
-            String[] newcmd = new String[cmd.length+5];
-            newcmd[0] = "cmd";
-            newcmd[1] = "/c";
-            newcmd[2] = "cd";
-            newcmd[3] = workingDir.getAbsolutePath();
-            newcmd[4] = "&&";
-            System.arraycopy(cmd, 0, newcmd, 5, cmd.length);
-            return exec(project, newcmd, env);
-        }
-    }
-
-    /**
-     * A command launcher for Mac that uses a dodgy mechanism to change
-     * working directory before launching commands.
-     */
-    private static class MacCommandLauncher extends CommandLauncherProxy
-    {
-        MacCommandLauncher(CommandLauncher launcher)
-        {
-            super(launcher);
-        }
-
-        /** 
-         * Launches the given command in a new process, in the given working
-         * directory
-         */
-        public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException
-        {
-            if ( workingDir == null ) {
-                return exec(project, cmd, env);
-            }
-
-            System.getProperties().put("user.dir", workingDir.getAbsolutePath());
-            try {
-                return exec(project, cmd, env);
-            } 
-            finally {
-                System.getProperties().put("user.dir", antWorkingDirectory);
-            }
-        }
-    }
-
-    /**
-     * A command launcher that uses an auxiliary script to launch commands
-     * in directories other than the current working directory.
-     */
-    private static class ScriptCommandLauncher extends CommandLauncherProxy
-    {
-        ScriptCommandLauncher(String script, CommandLauncher launcher)
-        {
-            super(launcher);
-            _script = script;
-        }
-
-        /** 
-         * Launches the given command in a new process, in the given working
-         * directory
-         */
-        public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException
-        {
-            if ( workingDir == null ) {
-                return exec(project, cmd, env);
-            }
-
-            // Locate the auxiliary script
-            if ( project == null ) {
-                throw new IOException("Cannot locate antRun script: No project provided");
-            }
-            String antHome = project.getProperty("ant.home");
-            if ( antHome == null ) {
-                throw new IOException("Cannot locate antRun script: Property 'ant.home' not found");
-            }
-            String antRun = project.resolveFile(antHome + File.separator + _script).toString();
-
-            // Build the command
-            String[] newcmd = new String[cmd.length + 2];
-            newcmd[0] = antRun;
-            newcmd[1] = workingDir.getAbsolutePath();
-            System.arraycopy(cmd, 0, newcmd, 2, cmd.length);
-            
-            return exec(project, newcmd, env);
-        }
-
-        private String _script;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java b/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java
deleted file mode 100644
index 76c3a53..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.AntClassLoader;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.CommandlineJava;
-import org.apache.tools.ant.types.Path;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.io.*;
-
-/*
- *
- * @author thomas.haas@softwired-inc.com
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class ExecuteJava {
-
-    private Commandline javaCommand = null;
-    private Path classpath = null;
-    private CommandlineJava.SysProperties sysProperties = null;
-    private PrintStream out;
-
-    public void setJavaCommand(Commandline javaCommand) {
-        this.javaCommand = javaCommand;
-    }
-
-    public void setClasspath(Path p) {
-        classpath = p;
-    }
-
-    public void setSystemProperties(CommandlineJava.SysProperties s) {
-        sysProperties = s;
-    }
-
-    /**
-     * All output (System.out as well as System.err) will be written
-     * to this Stream.
-     */
-    public void setOutput(PrintStream out) {
-        this.out = out;
-    }
-
-    public void execute(Project project) throws BuildException{
-        PrintStream sOut = System.out;
-        PrintStream sErr = System.err;
-
-        final String classname = javaCommand.getExecutable();
-        final Object[] argument = { javaCommand.getArguments() };
-        try {
-            if (sysProperties != null) {
-                sysProperties.setSystem();
-            }
-
-            if (out != null) {
-                System.setErr(out);
-                System.setOut(out);
-            }
-
-            final Class[] param = { Class.forName("[Ljava.lang.String;") };
-            Class target = null;
-            if (classpath == null) {
-                target = Class.forName(classname);
-            } else {
-                AntClassLoader loader = new AntClassLoader(project, classpath);
-                target = loader.forceLoadClass(classname);
-            }
-            final Method main = target.getMethod("main", param);
-            main.invoke(null, argument);
-
-        } catch (NullPointerException e) {
-            throw new BuildException("Could not find main() method in " + classname);
-        } catch (ClassNotFoundException e) {
-            throw new BuildException("Could not find " + classname + ". Make sure you have it in your classpath");
-        } catch (InvocationTargetException e) {
-            Throwable t = e.getTargetException();
-            if (!(t instanceof SecurityException)) {
-                throw new BuildException(t);
-            }
-            // else ignore because the security exception is thrown
-            // if the invoked application tried to call System.exit()
-        } catch (Exception e) {
-            throw new BuildException(e);
-        } finally {
-            if (sysProperties != null) {
-                sysProperties.restoreSystem();
-            }
-            if (out != null) {
-                System.setOut(sOut);
-                System.setErr(sErr);
-                out.close();
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java b/src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java
deleted file mode 100644
index 154ef0c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-import java.util.Vector;
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Executes a given command, supplying a set of files as arguments. 
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:mariusz@rakiura.org">Mariusz Nowostawski</a> 
- */
-public class ExecuteOn extends ExecTask {
-
-    protected Vector filesets = new Vector();
-    private boolean parallel = false;
-    protected String type = "file";
-    protected Commandline.Marker srcFilePos = null;
-
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
-
-    /**
-     * Shall the command work on all specified files in parallel?
-     */
-    public void setParallel(boolean parallel) {
-        this.parallel = parallel;
-    }
-
-    /**
-     * Shall the command work only on files, directories or both?
-     */
-    public void setType(FileDirBoth type) {
-        this.type = type.getValue();
-    }
-
-    /**
-     * Marker that indicates where the name of the source file should
-     * be put on the command line.
-     */
-    public Commandline.Marker createSrcfile() {
-        if (srcFilePos != null) {
-            throw new BuildException(taskType + " doesn\'t support multiple srcfile elements.",
-                                     location);
-        }
-        srcFilePos = cmdl.createMarker();
-        return srcFilePos;
-    }
-
-    protected void checkConfiguration() {
-        super.checkConfiguration();
-        if (filesets.size() == 0) {
-            throw new BuildException("no filesets specified", location);
-        }
-    }
-
-    protected void runExec(Execute exe) throws BuildException {
-        try {
-
-            for (int i=0; i<filesets.size(); i++) {
-                Vector v = new Vector();
-                FileSet fs = (FileSet) filesets.elementAt(i);
-                File base = fs.getDir(project);
-                DirectoryScanner ds = fs.getDirectoryScanner(project);
-
-                if (!"dir".equals(type)) {
-                    String[] s = getFiles(base, ds);
-                    for (int j=0; j<s.length; j++) {
-                        v.addElement(s[j]);
-                    }
-                }
-
-                if (!"file".equals(type)) {
-                    String[] s = getDirs(base, ds);;
-                    for (int j=0; j<s.length; j++) {
-                        v.addElement(s[j]);
-                    }
-                }
-
-                String[] s = new String[v.size()];
-                v.copyInto(s);
-
-                int err = -1;
-                
-                if (parallel) {
-                    String[] command = getCommandline(s, base);
-                    log("Executing " + Commandline.toString(command), 
-                        Project.MSG_VERBOSE);
-                    exe.setCommandline(command);
-                    err = exe.execute();
-                    if (err != 0) {
-                        if (failOnError) {
-                            throw new BuildException("Exec returned: "+err, 
-                                                     location);
-                        } else {
-                            log("Result: " + err, Project.MSG_ERR);
-                        }
-                    }
-
-                } else {
-                    for (int j=0; j<s.length; j++) {
-                        String[] command = getCommandline(s[j], base);
-                        log("Executing " + Commandline.toString(command), 
-                            Project.MSG_VERBOSE);
-                        exe.setCommandline(command);
-                        err = exe.execute();
-                        if (err != 0) {
-                            if (failOnError) {
-                                throw new BuildException("Exec returned: "+err, 
-                                                         location);
-                            } else {
-                                log("Result: " + err, Project.MSG_ERR);
-                            }
-                        }
-                    }
-                }
-            }
-
-        } catch (IOException e) {
-            throw new BuildException("Execute failed: " + e, e, location);
-        } finally {
-            // close the output file if required
-            logFlush();
-        }
-    }
-
-    /**
-     * Construct the command line for parallel execution.
-     *
-     * @param srcFiles The filenames to add to the commandline
-     * @param baseDir filenames are relative to this dir
-     */
-    protected String[] getCommandline(String[] srcFiles, File baseDir) {
-        String[] orig = cmdl.getCommandline();
-        String[] result = new String[orig.length+srcFiles.length];
-
-        int index = orig.length;
-        if (srcFilePos != null) {
-            index = srcFilePos.getPosition();
-        }
-        System.arraycopy(orig, 0, result, 0, index);
-
-        for (int i=0; i < srcFiles.length; i++) {
-            result[index+i] = (new File(baseDir, srcFiles[i])).getAbsolutePath();
-        }
-        
-        System.arraycopy(orig, index, result, index+srcFiles.length, 
-                         orig.length-index);
-        return result;
-    }
-
-    /**
-     * Construct the command line for serial execution.
-     *
-     * @param srcFile The filename to add to the commandline
-     * @param baseDir filename is relative to this dir
-     */
-    protected String[] getCommandline(String srcFile, File baseDir) {
-        return getCommandline(new String[] {srcFile}, baseDir);
-    }
-
-    /**
-     * Return the list of files from this DirectoryScanner that should
-     * be included on the command line.
-     */
-    protected String[] getFiles(File basedir, DirectoryScanner ds) {
-        return ds.getIncludedFiles();
-    }
-
-    /**
-     * Return the list of Directories from this DirectoryScanner that
-     * should be included on the command line.
-     */
-    protected String[] getDirs(File basedir, DirectoryScanner ds) {
-        return ds.getIncludedDirectories();
-    }
-
-    /**
-     * Enumerated attribute with the values "file", "dir" and "both"
-     * for the type attribute.  
-     */
-    public static class FileDirBoth extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"file", "dir", "both"};
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/ExecuteStreamHandler.java b/src/main/org/apache/tools/ant/taskdefs/ExecuteStreamHandler.java
deleted file mode 100644
index 1025fb7..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/ExecuteStreamHandler.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * Used by <code>Execute</code> to handle input and output stream of
- * subprocesses.
- *
- * @author thomas.haas@softwired-inc.com
- */
-public interface ExecuteStreamHandler {
-
-    /**
-     * Install a handler for the input stream of the subprocess.
-     *
-     * @param os output stream to write to the standard input stream of the
-     *           subprocess
-     */
-    public void setProcessInputStream(OutputStream os) throws IOException;
-
-    /**
-     * Install a handler for the error stream of the subprocess.
-     *
-     * @param is input stream to read from the error stream from the subprocess
-     */
-    public void setProcessErrorStream(InputStream is) throws IOException;
-
-    /**
-     * Install a handler for the output stream of the subprocess.
-     *
-     * @param is input stream to read from the error stream from the subprocess
-     */
-    public void setProcessOutputStream(InputStream is) throws IOException;
-
-    /**
-     * Start handling of the streams.
-     */
-    public void start() throws IOException;
-
-    /**
-     * Stop handling of the streams - will not be restarted.
-     */
-    public void stop();
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/ExecuteWatchdog.java b/src/main/org/apache/tools/ant/taskdefs/ExecuteWatchdog.java
deleted file mode 100644
index 7a97664..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/ExecuteWatchdog.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * Destroys a process running for too long.
- * For example:
- * <pre>
- * ExecuteWatchdog watchdog = new ExecuteWatchdog(30000);
- * Execute exec = new Execute(myloghandler, watchdog);
- * exec.setCommandLine(mycmdline);
- * int exitvalue = exec.execute();
- * if (exitvalue != SUCCESS && watchdog.killedProcess()){
- *              // it was killed on purpose by the watchdog
- * }
- * </pre>
- 
- * @author thomas.haas@softwired-inc.com
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- * @see Execute
- */
-public class ExecuteWatchdog implements Runnable {
-        
-    /** the process to execute and watch for duration */
-    private Process process;
-
-    /** timeout duration. Once the process running time exceeds this it should be killed */
-    private int timeout;
-
-    /** say whether or not the watchog is currently monitoring a process */
-    private boolean watch = false;
-        
-    /** exception that might be thrown during the process execution */
-    private Exception caught = null;
-
-    /** say whether or not the process was killed due to running overtime */
-    private boolean     killedProcess = false;
-
-    /**
-     * Creates a new watchdog with a given timeout.
-     *
-     * @param timeout the timeout for the process in milliseconds. It must be greather than 0.
-     */
-    public ExecuteWatchdog(int timeout) {
-        if (timeout < 1) {
-            throw new IllegalArgumentException("timeout lesser than 1.");
-        }
-        this.timeout = timeout;
-    }
-
-    /**
-     * Watches the given process and terminates it, if it runs for too long.
-     * All information from the previous run are reset.
-     * @param process the process to monitor. It cannot be <tt>null</tt>
-     * @throws IllegalStateException    thrown if a process is still being monitored.
-     */
-    public synchronized void start(Process process) {
-        if (process == null) {
-            throw new NullPointerException("process is null.");
-        }
-        if (this.process != null) {
-            throw new IllegalStateException("Already running.");
-        }
-        this.caught = null;
-        this.killedProcess = false;
-        this.watch = true;
-        this.process = process;
-        final Thread thread = new Thread(this, "WATCHDOG");
-        thread.setDaemon(true);
-        thread.start();
-    }
-
-    /**
-     * Stops the watcher. It will notify all threads possibly waiting on this object.
-     */
-    public synchronized void stop() {
-        watch = false;
-        notifyAll();
-    }
-
-
-    /**
-     * Watches the process and terminates it, if it runs for to long.
-     */
-    public synchronized void run() {
-        try {
-            // This isn't a Task, don't have a Project object to log.
-            // project.log("ExecuteWatchdog: timeout = "+timeout+" msec",  Project.MSG_VERBOSE);
-            final long until = System.currentTimeMillis() + timeout;
-            long now;
-            while (watch && until > (now = System.currentTimeMillis())) {
-                try {
-                    wait(until - now);
-                } catch (InterruptedException e) {}
-            }
-
-            // if we are here, either someone stopped the watchdog,
-            // we are on timeout and the process must be killed, or
-            // we are on timeout and the process has already stopped.
-            try {
-                // We must check if the process was not stopped
-                // before being here
-                process.exitValue();
-            } catch (IllegalThreadStateException e){
-                // the process is not terminated, if this is really
-                // a timeout and not a manual stop then kill it.
-                if (watch){
-                    killedProcess = true;
-                    process.destroy();
-                }
-            }
-        } catch(Exception e) {
-            caught = e;
-        } finally {
-            cleanUp();
-        }
-    }
-
-    /**
-     * reset the monitor flag and the process.
-     */
-    protected void cleanUp() {
-        watch = false;
-        process = null;
-    }
-
-    /**
-     * This method will rethrow the exception that was possibly caught during the
-     * run of the process. It will only remains valid once the process has been
-     * terminated either by 'error', timeout or manual intervention. Information
-     * will be discarded once a new process is ran.
-     * @throws  BuildException  a wrapped exception over the one that was silently
-     * swallowed and stored during the process run.
-     */
-    public void checkException() throws BuildException {
-        if (caught != null) {
-            throw new BuildException("Exception in ExecuteWatchdog.run: "
-                                     + caught.getMessage(), caught);
-        }
-    }
-
-    /**
-     * Indicates whether or not the watchdog is still monitoring the process.
-     * @return  <tt>true</tt> if the process is still running, otherwise <tt>false</tt>.
-     */
-    public boolean isWatching(){
-        return watch;
-    }
-
-    /**
-     * Indicates whether the last process run was killed on timeout or not.
-     * @return  <tt>true</tt> if the process was killed otherwise <tt>false</tt>.
-     */
-    public boolean killedProcess(){
-        return killedProcess;
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/Exit.java b/src/main/org/apache/tools/ant/taskdefs/Exit.java
deleted file mode 100644
index 113f0fe..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Exit.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-
-/**
- * Just exit the active build, giving an additional message 
- * if available.
- *
- * @author Nico Seessle <nico@seessle.de>
- */
-public class Exit extends Task { 
-    private String message;
-    
-    public void setMessage(String value) { 
-        this.message = value;
-    }
-    
-    public void execute() throws BuildException {
-        if (message != null && message.length() > 0) { 
-            throw new BuildException(message);
-        } else {
-            throw new BuildException("No message");
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Expand.java b/src/main/org/apache/tools/ant/taskdefs/Expand.java
deleted file mode 100644
index a2798ac..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Expand.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import java.io.*;
-import java.util.zip.*;
-/**
- * Unzip a file. 
- *
- * @author costin@dnt.ro
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a>
- */
-public class Expand extends MatchingTask {
-    private File dest; // req
-    private File source; // req
-    
-    /**
-     * Do the work.
-     *
-     * @exception BuildException Thrown in unrecoverable error.
-     */
-    // XXX move it to util or tools
-    public void execute() throws BuildException {
-        if ("expand".equals(taskType)) {
-            log("!! expand is deprecated. Use unzip instead. !!");
-        }
-        
-
-        Touch touch = (Touch) project.createTask("touch");
-        touch.setOwningTarget(target);
-        touch.setTaskName(getTaskName());
-        touch.setLocation(getLocation());
-        
-        if (source == null) {
-            throw new BuildException("Source attribute must be specified");
-        }
-        if (dest == null) {
-            throw new BuildException("Dest attribute must be specified");
-        }
-
-        if (source.isDirectory()) {
-            // get all the files in the descriptor directory
-            DirectoryScanner ds = super.getDirectoryScanner(source);
-    
-            String[] files = ds.getIncludedFiles();
-            for (int i = 0; i < files.length; ++i) {
-                File file = new File(source, files[i]);
-                expandFile(touch, file, dest);
-            }
-        }
-        else {
-            expandFile(touch, source, dest);
-        }
-        
-
-    }
-
-    private void expandFile(Touch touch, File srcF, File dir) {
-        ZipInputStream zis = null;
-        try {
-            log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO);
-            // code from WarExpand
-            zis = new ZipInputStream(new FileInputStream(srcF));
-            ZipEntry ze = null;
-
-            while ((ze = zis.getNextEntry()) != null) {
-                File f = new File(dir, project.translatePath(ze.getName()));
-                try {
-                    log("expand-file " + ze.getName() , Project.MSG_VERBOSE );
-                    // create intermediary directories - sometimes zip don't add them
-                    File dirF=new File(f.getParent());
-                    dirF.mkdirs();
-                    
-                    if (ze.isDirectory()) {
-                        f.mkdirs(); 
-                    } else {
-                        byte[] buffer = new byte[1024];
-                        int length = 0;
-                        FileOutputStream fos = new FileOutputStream(f);
-                        
-                        while ((length = zis.read(buffer)) >= 0) {
-                            fos.write(buffer, 0, length);
-                        }
-                        
-                        fos.close();
-                    }
-                    
-                    if (project.getJavaVersion() != Project.JAVA_1_1) {
-                        touch.setFile(f);
-                        touch.setMillis(ze.getTime());
-                        touch.touch();
-                    }
-                    
-                } catch( FileNotFoundException ex ) {
-                    log("Unable to expand to file " + f.getPath(), Project.MSG_WARN);
-                }
-            }
-            log("expand complete", Project.MSG_VERBOSE );
-        } catch (IOException ioe) {
-            throw new BuildException("Error while expanding " + srcF.getPath(), ioe);
-        } finally {
-            if (zis != null) {
-                try {
-                    zis.close();
-                }
-                catch (IOException e) {}
-            }
-        }
-    }
-    
-    /**
-     * Set the destination directory. File will be unzipped into the
-     * destination directory.
-     *
-     * @param d Path to the directory.
-     */
-    public void setDest(File d) {
-        this.dest=d;
-    }
-
-    /**
-     * Set the path to zip-file.
-     *
-     * @param s Path to zip-file.
-     */
-    public void setSrc(File s) {
-        this.source = s;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Filter.java b/src/main/org/apache/tools/ant/taskdefs/Filter.java
deleted file mode 100644
index a6581a8..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Filter.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.util.Enumeration;
-import java.util.Properties;
-import java.io.File;
-import java.io.FileInputStream;
-
-import org.apache.tools.ant.*;
-
-/**
- * This task sets a token filter that is used by the file copy methods
- * of the project to do token substitution, or sets mutiple tokens by
- * reading these from a file.
- *
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- * @author Gero Vermaas <a href="mailto:gero@xs4all.nl">gero@xs4all.nl</a>
- */
-public class Filter extends Task {
-
-    private String token;
-    private String value;
-    private File filtersFile;
-    
-    public void setToken(String token) {
-        this.token = token;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    public void setFiltersfile(File filtersFile) {
-        this.filtersFile = filtersFile;
-    }
-
-    public void execute() throws BuildException {
-        boolean isFiltersFromFile = filtersFile != null && token == null && value == null;
-        boolean isSingleFilter = filtersFile == null && token != null && value != null;
-        
-        if (!isFiltersFromFile && !isSingleFilter) {
-            throw new BuildException("both token and value parameters, or only a filtersFile parameter is required", location);
-        }
-        
-        if (isSingleFilter) {
-            project.addFilter(token, value);
-        }
-        
-        if (isFiltersFromFile) {
-            readFilters();
-        }
-    }
-    
-    protected void readFilters() throws BuildException {
-        log("Reading filters from " + filtersFile, Project.MSG_VERBOSE);
-        FileInputStream in = null;
-        try {
-            Properties props = new Properties();
-            in = new FileInputStream(filtersFile);
-            props.load(in);
-
-            Project proj = getProject();
-
-            Enumeration enum = props.propertyNames();
-            while (enum.hasMoreElements()) {
-                String strPropName = (String)enum.nextElement();
-                String strValue = props.getProperty(strPropName);
-                proj.addFilter(strPropName, strValue);
-            }
-        } catch (Exception e) {
-            throw new BuildException("Could not read filters from file: " + filtersFile);
-        } finally {
-            if (in != null) {
-                try {
-                    in.close();
-                } catch (java.io.IOException ioex) {}
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java b/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
deleted file mode 100644
index 465e738..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.EnumeratedAttribute;
-
-import java.io.*;
-import java.util.*;
-import java.text.*;
-
-/**
- * Task to convert text source files to local OS formatting conventions, as
- * well as repair text files damaged by misconfigured or misguided editors or
- * file transfer programs.
- * <p>
- * This task can take the following arguments:
- * <ul>
- * <li>srcdir
- * <li>destdir
- * <li>include
- * <li>exclude
- * <li>cr
- * <li>tab
- * <li>eof
- * </ul>
- * Of these arguments, only <b>sourcedir</b> is required.
- * <p>
- * When this task executes, it will scan the srcdir based on the include
- * and exclude properties.
- * <p>
- * <em>Warning:</em> do not run on binary or carefully formatted files.
- * this may sound obvious, but if you don't specify asis, presume that
- * your files are going to be modified.  If you want tabs to be fixed,
- * whitespace characters may be added or removed as necessary.  Similarly,
- * for CR's - in fact cr="add" can result in cr characters being removed.
- * (to handle cases where other programs have converted CRLF into CRCRLF).
- *
- * @author Sam Ruby <a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a>
- */
-
-public class FixCRLF extends MatchingTask {
-
-    private int addcr;      // cr:  -1 => remove, 0 => asis, +1 => add
-    private int addtab;     // tab: -1 => remove, 0 => asis, +1 => add
-    private int ctrlz;      // eof: -1 => remove, 0 => asis, +1 => add
-    private int tablength = 8;  // length of tab in spaces
-
-    private File srcDir;
-    private File destDir = null;
-
-    /**
-     * Defaults the properties based on the system type.
-     * <ul><li>Unix: cr="remove" tab="asis" eof="remove"
-     *     <li>DOS: cr="add" tab="asis" eof="asis"</ul>
-     */
-    public FixCRLF() {
-        if (System.getProperty("path.separator").equals(":")) {
-            addcr = -1; // remove
-            ctrlz = -1; // remove
-        } else {
-            addcr = +1; // add
-            ctrlz = 0;  // asis
-        }
-    }
-
-    /**
-     * Set the source dir to find the source text files.
-     */
-    public void setSrcdir(File srcDir) {
-        this.srcDir = srcDir;
-    }
-
-    /**
-     * Set the destination where the fixed files should be placed.
-     * Default is to replace the original file.
-     */
-    public void setDestdir(File destDir) {
-        this.destDir = destDir;
-    }
-
-    /**
-     * Specify how carriage return (CR) charaters are to be handled
-     *
-     * @param option valid values:
-     * <ul>
-     * <li>add: ensure that there is a CR before every LF
-     * <li>asis: leave CR characters alone
-     * <li>remove: remove all CR characters
-     * </ul>
-     */
-    public void setCr(AddAsisRemove attr) {
-        String option = attr.getValue();
-        if (option.equals("remove")) {
-            addcr = -1;
-        } else if (option.equals("asis")) {
-            addcr = 0;
-        } else {
-            // must be "add"
-            addcr = +1;
-        }
-    }
-
-    /**
-     * Specify how tab charaters are to be handled
-     *
-     * @param option valid values:
-     * <ul>
-     * <li>add: convert sequences of spaces which span a tab stop to tabs
-     * <li>asis: leave tab and space characters alone
-     * <li>remove: convert tabs to spaces
-     * </ul>
-     */
-    public void setTab(AddAsisRemove attr) {
-        String option = attr.getValue();
-        if (option.equals("remove")) {
-            addtab = -1;
-        } else if (option.equals("asis")) {
-            addtab = 0;
-        } else {
-            // must be "add"
-            addtab = +1;
-        }
-    }
-
-    /**
-     * Specify tab length in characters
-     *
-     * @param tlength specify the length of tab in spaces, has to be a power of 2
-     */
-    public void setTablength(int tlength) throws BuildException {
-        if (tlength < 2 || (tlength & (tlength-1)) != 0) {
-            throw new BuildException("tablength must be a positive power of 2",
-                                     location);
-        }
-        tablength = tlength;
-    }
-
-    /**
-     * Specify how DOS EOF (control-z) charaters are to be handled
-     *
-     * @param option valid values:
-     * <ul>
-     * <li>add: ensure that there is an eof at the end of the file
-     * <li>asis: leave eof characters alone
-     * <li>remove: remove any eof character found at the end
-     * </ul>
-     */
-    public void setEof(AddAsisRemove attr) {
-        String option = attr.getValue();
-        if (option.equals("remove")) {
-            ctrlz = -1;
-        } else if (option.equals("asis")) {
-            ctrlz = 0;
-        } else {
-            // must be "add"
-            ctrlz = +1;
-        }
-    }
-
-    /**
-     * Executes the task.
-     */
-    public void execute() throws BuildException {
-        // first off, make sure that we've got a srcdir and destdir
-
-        if (srcDir == null) {
-            throw new BuildException("srcdir attribute must be set!");
-        }
-        if (!srcDir.exists()) {
-            throw new BuildException("srcdir does not exist!");
-        }
-        if (!srcDir.isDirectory()) {
-            throw new BuildException("srcdir is not a directory!");
-        }
-        if (destDir != null) {
-            if (!destDir.exists()) {
-                throw new BuildException("destdir does not exist!");
-            }
-            if (!destDir.isDirectory()) {
-                throw new BuildException("destdir is not a directory!");
-            }
-        }
-
-        // log options used
-        log("options:" +
-            " cr=" + (addcr==-1 ? "add" : addcr==0 ? "asis" : "remove") +
-            " tab=" + (addtab==-1 ? "add" : addtab==0 ? "asis" : "remove") +
-            " eof=" + (ctrlz==-1 ? "add" : ctrlz==0 ? "asis" : "remove") +
-            " tablength=" + tablength,
-            Project.MSG_VERBOSE);
-
-        DirectoryScanner ds = super.getDirectoryScanner(srcDir);
-        String[] files = ds.getIncludedFiles();
-
-        for (int i = 0; i < files.length; i++) {
-            File srcFile = new File(srcDir, files[i]);
-
-            // read the contents of the file
-            int count = (int)srcFile.length();
-            byte indata[] = new byte[count];
-            try {
-                FileInputStream inStream = new FileInputStream(srcFile);
-                inStream.read(indata);
-                inStream.close();
-            } catch (IOException e) {
-                throw new BuildException(e);
-            }
-
-            // count the number of cr, lf,  and tab characters
-            int cr = 0;
-            int lf = 0;
-            int tab = 0;
-
-            for (int k=0; k<count; k++) {
-                byte c = indata[k];
-                if (c == '\r') cr++;
-                if (c == '\n') lf++;
-                if (c == '\t') tab++;
-            }
-
-            // check for trailing eof
-            boolean eof = ((count>0) && (indata[count-1] == 0x1A));
-
-            // log stats (before fixes)
-            log(srcFile + ": size=" + count + " cr=" + cr +
-                        " lf=" + lf + " tab=" + tab + " eof=" + eof,
-                        Project.MSG_VERBOSE);
-
-            // determine the output buffer size (slightly pessimisticly)
-            int outsize = count;
-            if (addcr  !=  0) outsize-=cr;
-            if (addcr  == +1) outsize+=lf;
-            if (addtab == -1) outsize+=tab*(tablength-1);
-            if (ctrlz  == +1) outsize+=1;
-
-            // copy the data
-            byte outdata[] = new byte[outsize];
-            int o = 0;    // output offset
-            int line = o; // beginning of line
-            int col = 0;  // desired column
-
-            for (int k=0; k<count; k++) {
-                switch (indata[k]) {
-                    case (byte)' ':
-                        // advance column
-                        if (addtab == 0) outdata[o++]=(byte)' ';
-                        col++;
-                        break;
-
-                    case (byte)'\t':
-                        if (addtab == 0) {
-                            // treat like any other character
-                            outdata[o++]=(byte)'\t';
-                            col++;
-                        } else {
-                            // advance column to next tab stop
-                            col = (col|(tablength-1))+1;
-                        }
-                        break;
-
-                    case (byte)'\r':
-                        if (addcr == 0) {
-                            // treat like any other character
-                            outdata[o++]=(byte)'\r';
-                            col++;
-                        }
-                        break;
-
-                    case (byte)'\n':
-                        // start a new line (optional CR followed by LF)
-                        if (addcr == +1) outdata[o++]=(byte)'\r';
-                        outdata[o++]=(byte)'\n';
-                        line=o;
-                        col=0;
-                        break;
-
-                    default:
-                        // add tabs if two or more spaces are required
-                        if (addtab>0 && o+1<line+col) {
-                            // determine logical column
-                            int diff=o-line;
-
-                            // add tabs until this column would be passed
-                            // note: the start of line is adjusted to match
-                            while ((diff|(tablength-1))<col) {
-                                outdata[o++]=(byte)'\t';
-                                line-=(tablength-1)-(diff&(tablength-1));
-                                diff=o-line;
-                            };
-                        };
-
-                        // space out to desired column
-                        while (o<line+col) outdata[o++]=(byte)' ';
-
-                        // append desired character
-                        outdata[o++]=indata[k];
-                        col++;
-                }
-            }
-
-            // add or remove an eof character as required
-            if (ctrlz == +1) {
-                if (outdata[o-1]!=0x1A) outdata[o++]=0x1A;
-            } else if (ctrlz == -1) {
-                if (o>2 && outdata[o-1]==0x0A && outdata[o-2]==0x1A) o--;
-                if (o>1 && outdata[o-1]==0x1A) o--;
-            }
-
-            // output the data
-            try {
-                File destFile = srcFile;
-                if (destDir != null) destFile = new File(destDir, files[i]);
-                FileOutputStream outStream = new FileOutputStream(destFile);
-                outStream.write(outdata,0,o);
-                outStream.close();
-            } catch (IOException e) {
-                throw new BuildException(e);
-            }
-
-        } /* end for */
-    }
-
-    /**
-     * Enumerated attribute with the values "asis", "add" and "remove".
-     */
-    public static class AddAsisRemove extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"add", "asis", "remove"};
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/GUnzip.java b/src/main/org/apache/tools/ant/taskdefs/GUnzip.java
deleted file mode 100644
index 4a0a1d1..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/GUnzip.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-
-import java.io.*;
-import java.util.zip.*;
-
-/**
- * Expands a file that has been compressed with the GZIP
- * algorightm. Normally used to compress non-compressed archives such
- * as TAR files.
- *
- * @author Stefan Bodewig <a href="mailto:stefan.bodewig@megabit.net">stefan.bodewig@megabit.net</a>
- */
-
-public class GUnzip extends Task {
-
-    private File source;
-    private File dest;
-
-    public void setSrc(String src) {
-        source = project.resolveFile(src);
-    }
-
-    public void setDest(String dest) {
-        this.dest = project.resolveFile(dest);
-    }
-
-    public void execute() throws BuildException {
-        if (source == null) {
-            throw new BuildException("No source for gunzip specified", location);
-        }
-
-        if (!source.exists()) {
-            throw new BuildException("source doesn't exist", location);
-        }
-
-        if (source.isDirectory()) {
-            throw new BuildException("Cannot expand a directory", location);
-        }
-
-        if (dest == null) {
-            dest = new File(source.getParent());
-        }
-
-        if (dest.isDirectory()) {
-            String sourceName = source.getName();
-            int len = sourceName.length();
-            if (len > 3
-                && ".gz".equalsIgnoreCase(sourceName.substring(len-3))) {
-                dest = new File(dest, sourceName.substring(0, len-3));
-            } else {
-                dest = new File(dest, sourceName);
-            }
-        }
-
-        if (source.lastModified() > dest.lastModified()) {
-            log("Expanding "+ source.getAbsolutePath() + " to "
-                        + dest.getAbsolutePath());
-
-            FileOutputStream out = null;
-            GZIPInputStream zIn = null;
-            try {
-                out = new FileOutputStream(dest);
-                zIn = new GZIPInputStream(new FileInputStream(source));
-                byte[] buffer = new byte[8 * 1024];
-                int count = 0;
-                do {
-                    out.write(buffer, 0, count);
-                    count = zIn.read(buffer, 0, buffer.length);
-                } while (count != -1);
-            } catch (IOException ioe) {
-                String msg = "Problem expanding gzip " + ioe.getMessage();
-                throw new BuildException(msg, ioe, location);
-            } finally {
-                if (out != null) {
-                    try {
-                        out.close();
-                    } catch (IOException ioex) {}
-                }
-                if (zIn != null) {
-                    try {
-                        zIn.close();
-                    } catch (IOException ioex) {}
-                }
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/GZip.java b/src/main/org/apache/tools/ant/taskdefs/GZip.java
deleted file mode 100644
index bc06589..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/GZip.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-
-import java.io.*;
-import java.util.zip.*;
-
-/**
- * Compresses a file with the GZIP algorightm. Normally used to compress
- * non-compressed archives such as TAR files.
- *
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a>
- */
- 
-public class GZip extends Task {
-
-    private File zipFile;
-    private File source;
-    
-    public void setZipfile(String zipFilename) {
-        zipFile = project.resolveFile(zipFilename);
-    }
-
-    public void setSrc(String src) {
-        source = project.resolveFile(src);
-    }
-
-    public void execute() throws BuildException {
-        if (zipFile == null) {
-            throw new BuildException("zipfile attribute is required", location);
-        }
-
-        if (source == null) {
-            throw new BuildException("src attribute is required", location);
-        }
-
-        log("Building gzip: " + zipFile.getAbsolutePath());
-    
-        GZIPOutputStream zOut = null;
-        try {
-            zOut = new GZIPOutputStream(new FileOutputStream(zipFile));
-        
-            if (source.isDirectory()) {
-                log ("Cannot Gzip a directory!", Project.MSG_ERR);
-            } else {
-                zipFile(source, zOut);
-            }
-        } catch (IOException ioe) {
-            String msg = "Problem creating gzip " + ioe.getMessage();
-            throw new BuildException(msg, ioe, location);
-        } finally {
-            if (zOut != null) {
-                try {
-                    // close up
-                    zOut.close();
-                }
-                catch (IOException e) {}
-            }
-        }
-    }
-    
-    private void zipFile(InputStream in, GZIPOutputStream zOut)
-        throws IOException
-    {        
-        byte[] buffer = new byte[8 * 1024];
-        int count = 0;
-        do {
-            zOut.write(buffer, 0, count);
-            count = in.read(buffer, 0, buffer.length);
-        } while (count != -1);
-    }
-    
-    private void zipFile(File file, GZIPOutputStream zOut)
-        throws IOException
-    {
-        FileInputStream fIn = new FileInputStream(file);
-        try {
-            zipFile(fIn, zOut);
-        } finally {
-            fIn.close();
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/GenerateKey.java b/src/main/org/apache/tools/ant/taskdefs/GenerateKey.java
deleted file mode 100644
index c1f0820..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/GenerateKey.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs;
-
-import java.util.Enumeration;
-import java.util.Vector;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-
-/**
- * Generates a key.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
- */
-public class GenerateKey extends Task {
-
-    public static class DnameParam {
-        private String name;
-        private String value;
-        
-        public void setName(String name) {
-            this.name = name;
-        }
-        
-        public String getName() {
-            return name;
-        }
-        
-        public void setValue(String value) {
-            this.value = value;
-        }
-
-        public String getValue() {
-            return value;
-        }
-    }
-
-    public static class DistinguishedName {
-        private String name;
-        private String path;
-        
-        private Vector params = new Vector();
-        
-        public Object createParam() {
-            DnameParam param = new DnameParam();
-            params.addElement(param);
-            
-            return param;
-        }
-        
-        public Enumeration getParams() {
-            return params.elements();
-        }
-
-        public String toString() {
-            final int size = params.size();
-            final StringBuffer sb = new StringBuffer();
-            boolean firstPass = true;
-
-            for( int i = 0; i < size; i++ ) {
-                if( !firstPass ) {
-                    sb.append(" ,");
-                }
-                firstPass = false;
-
-                final DnameParam param = (DnameParam)params.elementAt( i );
-                sb.append( encode( param.getName() ) );
-                sb.append( '=' );
-                sb.append( encode( param.getValue() ) );
-            }
-                        
-            return sb.toString();
-        }
-
-        public String encode( final String string ) {
-            int end = string.indexOf(',');
-
-            if( -1 == end ) return string;
-                
-            final StringBuffer sb = new StringBuffer();
-                
-            int start = 0;
-
-            while( -1 != end )
-            {
-                sb.append( string.substring( start, end ) );
-                sb.append( "\\," );
-                start = end + 1;
-                end = string.indexOf( ',', start );
-            }
-
-            sb.append( string.substring( start ) );
-                
-            return sb.toString();                
-        }
-    }
-
-    /**
-     * The alias of signer.
-     */
-    protected String alias;
-
-    /**
-     * The name of keystore file.
-     */
-    protected String keystore;
-    protected String storepass;
-    protected String storetype;
-    protected String keypass;
-
-    protected String sigalg;
-    protected String keyalg;
-    protected String dname;
-    protected DistinguishedName expandedDname;
-    protected int keysize;
-    protected int validity;
-    protected boolean verbose;
-
-    public DistinguishedName createDname() throws BuildException {
-        if( null != expandedDname ) {
-            throw new BuildException( "DName sub-element can only be specified once." );
-        }
-        if( null != dname ) {
-            throw new BuildException( "It is not possible to specify dname both " +
-                                      "as attribute and element." );
-        }
-        expandedDname = new DistinguishedName();
-        return expandedDname;
-    }
-  
-    public void setDname(final String dname) {
-        if( null != expandedDname ) {
-            throw new BuildException( "It is not possible to specify dname both " +
-                                      "as attribute and element." );
-        }
-        this.dname = dname;
-    } 
-
-    public void setAlias(final String alias) {
-        this.alias = alias;
-    } 
-
-    public void setKeystore(final String keystore) {
-        this.keystore = keystore;
-    } 
-
-    public void setStorepass(final String storepass) {
-        this.storepass = storepass;
-    } 
-
-    public void setStoretype(final String storetype) {
-        this.storetype = storetype;
-    } 
-
-    public void setKeypass(final String keypass) {
-        this.keypass = keypass;
-    } 
-
-    public void setSigalg(final String sigalg) {
-        this.sigalg = sigalg;
-    } 
-
-    public void setKeyalg(final String keyalg) {
-        this.keyalg = keyalg;
-    } 
-
-    public void setKeysize(final String keysize) throws BuildException {
-        try { this.keysize = Integer.parseInt(keysize); }
-        catch(final NumberFormatException nfe) 
-        {
-            throw new BuildException( "KeySize attribute should be a integer" );
-        }
-    } 
-
-    public void setValidity(final String validity) throws BuildException {
-        try { this.validity = Integer.parseInt(validity); }
-        catch(final NumberFormatException nfe) 
-        {
-            throw new BuildException( "Validity attribute should be a integer" );
-        }
-    } 
-
-    public void setVerbose(final boolean verbose) {
-        this.verbose = verbose;
-    } 
-
-    public void execute() throws BuildException {
-        if (project.getJavaVersion().equals(Project.JAVA_1_1)) {
-            throw new BuildException( "The genkey task is only available on JDK" +
-                                      " versions 1.2 or greater" );
-        } 
-
-        if (null == alias) {
-            throw new BuildException( "alias attribute must be set" );
-        } 
-
-        if (null == storepass) {
-            throw new BuildException( "storepass attribute must be set" );
-        } 
-
-        if (null == dname && null == expandedDname) {
-            throw new BuildException( "dname must be set" );
-        } 
-
-        final StringBuffer sb = new StringBuffer();
-
-        sb.append("keytool -genkey ");
-
-        if (verbose) {
-            sb.append("-v ");
-        } 
-
-        sb.append("-alias \"");
-        sb.append(alias);
-        sb.append("\" ");
-
-        if (null != dname) {
-            sb.append("-dname \"");
-            sb.append(dname);
-            sb.append("\" ");
-        } 
-
-        if (null != expandedDname) {
-            sb.append("-dname \"");
-            sb.append(expandedDname);
-            sb.append("\" ");
-        } 
-
-        if (null != keystore) {
-            sb.append("-keystore \"");
-            sb.append(keystore);
-            sb.append("\" ");
-        }
-
-        if (null != storepass) {
-            sb.append("-storepass \"");
-            sb.append(storepass);
-            sb.append("\" ");
-        } 
-
-        if (null != storetype) {
-            sb.append("-storetype \"");
-            sb.append(storetype);
-            sb.append("\" ");
-        } 
-
-        sb.append("-keypass \"");
-        if (null != keypass) {
-            sb.append(keypass);
-        } 
-        else {
-            sb.append(storepass);
-        }
-        sb.append("\" ");
-
-        if (null != sigalg) {
-            sb.append("-sigalg \"");
-            sb.append(sigalg);
-            sb.append("\" ");
-        } 
-
-        if (null != keyalg) {
-            sb.append("-keyalg \"");
-            sb.append(keyalg);
-            sb.append("\" ");
-        } 
-
-
-        if (0 < keysize) {
-            sb.append("-keysize \"");
-            sb.append(keysize);
-            sb.append("\" ");
-        } 
-
-        if (0 < validity) {
-            sb.append("-validity \"");
-            sb.append(validity);
-            sb.append("\" ");
-        } 
-
-        log("Generating Key for " + alias );
-        final ExecTask cmd = (ExecTask) project.createTask("exec");
-        cmd.setCommand(new Commandline(sb.toString()));
-        cmd.setFailonerror(true);
-        cmd.setTaskName( getTaskName() );
-        cmd.execute();
-    } 
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/Get.java b/src/main/org/apache/tools/ant/taskdefs/Get.java
deleted file mode 100644
index cda40ac..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Get.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-/**
- * Get a particular file from a URL source. 
- * Options include verbose reporting, timestamp based fetches and controlling 
- * actions on failures. NB: access through a firewall only works if the whole 
- * Java runtime is correctly configured.
- *
- * @author costin@dnt.ro
- */
-public class Get extends Task {
-    private URL source; // required
-    private File dest; // required
-    private boolean verbose = false;
-    private boolean useTimestamp = false; //off by default
-    private boolean ignoreErrors = false;
-    
-    /**
-     * Does the work.
-     *
-     * @exception BuildException Thrown in unrecoverable error.
-     */
-    public void execute() throws BuildException {
-        if (source == null) {
-            throw new BuildException("src attribute is required", location);
-        }
-
-        if (dest == null) {
-            throw new BuildException("dest attribute is required", location);
-        }
-
-        if (dest.exists() && dest.isDirectory()) { 
-            throw new BuildException("The specified destination is a directory",
-                                     location);
-        }
-
-        if (dest.exists() && !dest.canWrite()) { 
-            throw new BuildException("Can't write to " + dest.getAbsolutePath(),
-                                     location);
-        }
-
-        try {
-
-            log("Getting: " + source);
-
-            //set the timestamp to the file date.
-            long timestamp=0;
-
-            boolean hasTimestamp=false;
-            if(useTimestamp && dest.exists()) {
-                timestamp=dest.lastModified();
-                if (verbose)  {
-                    Date t=new Date(timestamp);
-                    log("local file date : "+t.toString());
-                }
-                
-                hasTimestamp=true;
-            }
-        
-            //set up the URL connection
-            URLConnection connection=source.openConnection();
-            //modify the headers
-            //NB: things like user authentication could go in here too.
-            if(useTimestamp && hasTimestamp) {
-                connection.setIfModifiedSince(timestamp);
-            }
-
-            //connect to the remote site (may take some time)
-            connection.connect();
-            //next test for a 304 result (HTTP only)
-            if(connection instanceof HttpURLConnection)  {
-                HttpURLConnection httpConnection=(HttpURLConnection)connection;
-                if(httpConnection.getResponseCode()==HttpURLConnection.HTTP_NOT_MODIFIED)  {
-                    //not modified so no file download. just return instead
-                    //and trace out something so the user doesn't think that the 
-                    //download happened when it didnt
-                    log("Not modified - so not downloaded");
-                    return; 
-                }
-            }
-
-            //REVISIT: at this point even non HTTP connections may support the if-modified-since
-            //behaviour -we just check the date of the content and skip the write if it is not
-            //newer. Some protocols (FTP) dont include dates, of course. 
-                   
-            FileOutputStream fos = new FileOutputStream(dest);
-
-            InputStream is=null;
-            for( int i=0; i< 3 ; i++ ) {
-                try {
-                    is = connection.getInputStream();
-                    break;
-                } catch( IOException ex ) {
-                    log( "Error opening connection " + ex );
-                }
-            }
-            if( is==null ) {
-                log( "Can't get " + source + " to " + dest);
-                if(ignoreErrors) 
-                    return;
-                throw new BuildException( "Can't get " + source + " to " + dest,
-                                          location);
-            }
-                
-            byte[] buffer = new byte[100 * 1024];
-            int length;
-            
-            while ((length = is.read(buffer)) >= 0) {
-                fos.write(buffer, 0, length);
-                if (verbose) System.out.print(".");
-            }
-            if(verbose) System.out.println();
-            fos.close();
-            is.close();
-           
-            //if (and only if) the use file time option is set, then the 
-            //saved file now has its timestamp set to that of the downloaded file
-            if(useTimestamp)  {
-                long remoteTimestamp=connection.getLastModified();
-                if (verbose)  {
-                    Date t=new Date(remoteTimestamp);
-                    log("last modified = "+t.toString()
-                        +((remoteTimestamp==0)?" - using current time instead":""));
-                }
-                if(remoteTimestamp!=0)
-                    touchFile(dest,remoteTimestamp);
-            }
-
-           
-
-        } catch (IOException ioe) {
-            log("Error getting " + source + " to " + dest );
-            if(ignoreErrors) 
-                return;
-            throw new BuildException(ioe, location);
-        }
-    }
-    
-    /** 
-     * set the timestamp of a named file to a specified time.
-     *
-     * @param filename
-     * @param time in milliseconds since the start of the era
-     * @return true if it succeeded. False means that this is a
-     * java1.1 system and that file times can not be set
-     *@exception BuildException Thrown in unrecoverable error. Likely
-     *this comes from file access failures.
-     */
-    protected boolean touchFile(File file, long timemillis) 
-        throws BuildException  {
-
-        if (project.getJavaVersion() != Project.JAVA_1_1) {
-            Touch touch = (Touch) project.createTask("touch");
-            touch.setOwningTarget(target);
-            touch.setTaskName(getTaskName());
-            touch.setLocation(getLocation());
-            touch.setFile(file);
-            touch.setMillis(timemillis);
-            touch.touch();
-            return true;
-            
-        } else {
-            return false;
-        }
-    }        
-
-    /**
-     * Set the URL.
-     *
-     * @param u URL for the file.
-     */
-    public void setSrc(URL u) {
-        this.source = u;
-    }
-
-    /**
-     * Where to copy the source file.
-     *
-     * @param dest Path to file.
-     */
-    public void setDest(File dest) {
-        this.dest = dest;
-    }
-
-    /**
-     * Be verbose, if set to "<CODE>true</CODE>".
-     *
-     * @param v if "true" then be verbose
-     */
-    public void setVerbose(boolean v) {
-        verbose = v;
-    }
-
-    /**
-     * Don't stop if get fails if set to "<CODE>true</CODE>".
-     *
-     * @param v if "true" then don't report download errors up to ant
-     */
-    public void setIgnoreErrors(boolean v) {
-        ignoreErrors = v;
-    }
-
-    /**
-     * Use timestamps, if set to "<CODE>true</CODE>".
-     *
-     * <p>In this situation, the if-modified-since header is set so that the file is
-     * only fetched if it is newer than the local file (or there is no local file)
-     * This flag is only valid on HTTP connections, it is ignored in other cases.
-     * When the flag is set, the local copy of the downloaded file will also 
-     * have its timestamp set to the remote file time. 
-     * <br>
-     * Note that remote files of date 1/1/1970 (GMT) are treated as 'no timestamp', and
-     * web servers often serve files with a timestamp in the future by replacing their timestamp
-     * with that of the current time. Also, inter-computer clock differences can cause no end of 
-     * grief. 
-     * @param v "true" to enable file time fetching
-     */
-    public void setUseTimestamp(boolean v) {
-        if (project.getJavaVersion() != Project.JAVA_1_1) {
-            useTimestamp = v;
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Jar.java b/src/main/org/apache/tools/ant/taskdefs/Jar.java
deleted file mode 100644
index 6d1dcd4..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Jar.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.ZipFileSet;
-
-import java.io.*;
-import java.util.zip.*;
-
-/**
- * Creates a JAR archive.
- * 
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- */
-
-public class Jar extends Zip {
-
-    private File manifest;    
-    private boolean manifestAdded;    
-
-    public Jar() {
-        super();
-        archiveType = "jar";
-        emptyBehavior = "create";
-    }
-
-    public void setJarfile(File jarFile) {
-        super.setZipfile(jarFile);
-    }
-
-    public void setManifest(File manifestFile) {
-        manifest = manifestFile;
-        if (!manifest.exists())
-            throw new BuildException("Manifest file: " + manifest + " does not exist.");
-
-        // Create a ZipFileSet for this file, and pass it up.
-        ZipFileSet fs = new ZipFileSet();
-        fs.setDir(new File(manifest.getParent()));
-        fs.setIncludes(manifest.getName());
-        fs.setFullpath("META-INF/MANIFEST.MF");
-        super.addFileset(fs);
-    }
-
-
-    protected void initZipOutputStream(ZipOutputStream zOut)
-        throws IOException, BuildException
-    {
-        // If no manifest is specified, add the default one.
-        if (manifest == null) {
-            String s = "/org/apache/tools/ant/defaultManifest.mf";
-            InputStream in = this.getClass().getResourceAsStream(s);
-            if ( in == null )
-                throw new BuildException ( "Could not find: " + s );
-            zipDir(null, zOut, "META-INF/");
-            zipFile(in, zOut, "META-INF/MANIFEST.MF", System.currentTimeMillis());
-        }
-
-        super.initZipOutputStream(zOut);
-    }
-
-    protected void zipFile(File file, ZipOutputStream zOut, String vPath)
-        throws IOException
-    {
-        // If the file being added is META-INF/MANIFEST.MF, we warn if it's not the
-        // one specified in the "manifest" attribute - or if it's being added twice, 
-        // meaning the same file is specified by the "manifeset" attribute and in
-        // a <fileset> element.
-        if (vPath.equalsIgnoreCase("META-INF/MANIFEST.MF"))  {
-            if (manifest == null || !manifest.equals(file) || manifestAdded) {
-                log("Warning: selected "+archiveType+" files include a META-INF/MANIFEST.MF which will be ignored " +
-                    "(please use manifest attribute to "+archiveType+" task)", Project.MSG_WARN);
-            } else {
-                super.zipFile(file, zOut, vPath);
-                manifestAdded = true;
-            }
-        } else {
-            super.zipFile(file, zOut, vPath);
-        }
-    }
-
-    /**
-     * Make sure we don't think we already have a MANIFEST next time this task
-     * gets executed.
-     */
-    protected void cleanUp() {
-        manifestAdded = false;
-        super.cleanUp();
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Java.java b/src/main/org/apache/tools/ant/taskdefs/Java.java
deleted file mode 100644
index 2576a3b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Java.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.AntClassLoader;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.*;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.*;
-
-/**
- * This task acts as a loader for java applications but allows to use the same JVM 
- * for the called application thus resulting in much faster operation.
- *
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class Java extends Task {
-
-    private CommandlineJava cmdl = new CommandlineJava();
-    private boolean fork = false;
-    private File dir = null;
-    private File out;
-    private boolean failOnError = false;
-    
-    /**
-     * Do the execution.
-     */
-    public void execute() throws BuildException {
-        int err = -1;
-        if ((err = executeJava()) != 0) {
-            if (failOnError) {
-                throw new BuildException("Java returned: "+err, location);
-            } else {
-                log("Java Result: " + err, Project.MSG_ERR);
-            }
-        }
-    }
-
-    /**
-     * Do the execution and return a return code.
-     *
-     * @return the return code from the execute java class if it was executed in 
-     * a separate VM (fork = "yes").
-     */
-    public int executeJava() throws BuildException {
-        String classname = cmdl.getClassname();
-
-        if (classname == null) {
-            throw new BuildException("Classname must not be null.");
-        }
-
-        if (fork) {
-            log("Forking " + cmdl.toString(), Project.MSG_VERBOSE);
-        
-            return run(cmdl.getCommandline());
-        } else {
-            if (cmdl.getVmCommand().size() > 1) {
-                log("JVM args ignored when same JVM is used.", Project.MSG_WARN);
-            }
-            if (dir != null) {
-                log("Working directory ignored when same JVM is used.", Project.MSG_WARN);
-            }
-
-            log("Running in same VM " + cmdl.getJavaCommand().toString(), 
-                Project.MSG_VERBOSE);
-            run(cmdl);
-            return 0;
-        }
-    }
-
-    /**
-     * Set the classpath to be used for this compilation.
-     */
-    public void setClasspath(Path s) {
-        createClasspath().append(s);
-    }
-    
-    /**
-     * Creates a nested classpath element
-     */
-    public Path createClasspath() {
-        return cmdl.createClasspath(project).createPath();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-    /**
-     * Set the class name.
-     */
-    public void setClassname(String s) {
-        cmdl.setClassname(s);
-    }
-
-    /**
-     * Set the command line arguments for the class.
-     */
-    public void setArgs(String s) {
-        log("The args attribute is deprecated. " +
-            "Please use nested arg elements.",
-            Project.MSG_WARN);
-        cmdl.createArgument().setLine(s);
-    }
-
-    /**
-     * Creates a nested arg element.
-     */
-    public Commandline.Argument createArg() {
-        return cmdl.createArgument();
-    }
-
-    /**
-     * Set the forking flag.
-     */
-    public void setFork(boolean s) {
-        this.fork = s;
-    }
-
-    /**
-     * Set the command line arguments for the JVM.
-     */
-    public void setJvmargs(String s) {
-        log("The jvmargs attribute is deprecated. " +
-            "Please use nested jvmarg elements.",
-            Project.MSG_WARN);
-        cmdl.createVmArgument().setLine(s);
-    }
-        
-    /**
-     * Creates a nested jvmarg element.
-     */
-    public Commandline.Argument createJvmarg() {
-        return cmdl.createVmArgument();
-    }
-
-    /**
-     * Set the command used to start the VM (only if fork==false).
-     */
-    public void setJvm(String s) {
-        cmdl.setVm(s);
-    }
-        
-    /**
-     * Add a nested sysproperty element.
-     */
-    public void addSysproperty(Environment.Variable sysp) {
-        cmdl.addSysproperty(sysp);
-    }
-
-    /**
-     * Throw a BuildException if process returns non 0.
-     */
-    public void setFailonerror(boolean fail) {
-        failOnError = fail;
-    }
-
-    /**
-     * The working directory of the process
-     */
-    public void setDir(File d) {
-        this.dir = d;
-    }
-
-    /**
-     * File the output of the process is redirected to.
-     */
-    public void setOutput(File out) {
-        this.out = out;
-    }
-
-    /**
-     * -mx or -Xmx depending on VM version
-     */
-    public void setMaxmemory(String max){
-        if (Project.getJavaVersion().startsWith("1.1")) {
-            createJvmarg().setValue("-mx"+max);
-        } else {
-            createJvmarg().setValue("-Xmx"+max);
-        }
-    }
-
-    /**
-     * Executes the given classname with the given arguments as it
-     * was a command line application.
-     */
-    private void run(CommandlineJava command) throws BuildException {
-        ExecuteJava exe = new ExecuteJava();
-        exe.setJavaCommand(command.getJavaCommand());
-        exe.setClasspath(command.getClasspath());
-        exe.setSystemProperties(command.getSystemProperties());
-        if (out != null) {
-            try {
-                exe.setOutput(new PrintStream(new FileOutputStream(out)));
-            } catch (IOException io) {
-                throw new BuildException(io, location);
-            }
-        }
-        
-        exe.execute(project);
-    }
-
-    /**
-     * Executes the given classname with the given arguments in a separate VM.
-     */
-    private int run(String[] command) throws BuildException {
-        FileOutputStream fos = null;
-        try {
-            Execute exe = null;
-            if (out == null) {
-                exe = new Execute(new LogStreamHandler(this, Project.MSG_INFO,
-                                                       Project.MSG_WARN), 
-                                  null);
-            } else {
-                fos = new FileOutputStream(out);
-                exe = new Execute(new PumpStreamHandler(fos), null);
-            }
-            
-            exe.setAntRun(project);
-            
-            if (dir == null) {
-                dir = project.getBaseDir();
-            } else if (!dir.exists() || !dir.isDirectory()) {
-                throw new BuildException(dir.getAbsolutePath()+" is not a valid directory",
-                                         location);
-            }
-            
-            exe.setWorkingDirectory(dir);
-            
-            exe.setCommandline(command);
-            try {
-                return exe.execute();
-            } catch (IOException e) {
-                throw new BuildException(e, location);
-            }
-        } catch (IOException io) {
-            throw new BuildException(io, location);
-        } finally {
-            if (fos != null) {
-                try {fos.close();} catch (IOException io) {}
-            }
-        }
-    }
-
-    /**
-     * Executes the given classname with the given arguments as it
-     * was a command line application.
-     */
-    protected void run(String classname, Vector args) throws BuildException {
-        CommandlineJava cmdj = new CommandlineJava();
-        cmdj.setClassname(classname);
-        for (int i=0; i<args.size(); i++) {
-            cmdj.createArgument().setValue((String) args.elementAt(i));
-        }
-        run(cmdj);
-    }
-
-    /**
-     * Clear out the arguments to this java task.
-     */
-    public void clearArgs() {
-        cmdl.clearJavaArgs();
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Javac.java b/src/main/org/apache/tools/ant/taskdefs/Javac.java
deleted file mode 100644
index 7917f84..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Javac.java
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.util.*;
-import org.apache.tools.ant.taskdefs.compilers.*;
-
-import java.io.File;
-
-/**
- * Task to compile Java source files. This task can take the following
- * arguments:
- * <ul>
- * <li>sourcedir
- * <li>destdir
- * <li>deprecation
- * <li>classpath
- * <li>bootclasspath
- * <li>extdirs
- * <li>optimize
- * <li>debug
- * <li>encoding
- * <li>target
- * <li>depend
- * <li>vebose
- * <li>failonerror
- * <li>includeantruntime
- * <li>includejavaruntime
- * </ul>
- * Of these arguments, the <b>sourcedir</b> and <b>destdir</b> are required.
- * <p>
- * When this task executes, it will recursively scan the sourcedir and
- * destdir looking for Java source files to compile. This task makes its
- * compile decision based on timestamp. 
- *
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- * @author Robin Green <a href="mailto:greenrd@hotmail.com">greenrd@hotmail.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
- */
-
-public class Javac extends MatchingTask {
-
-    private static final String FAIL_MSG 
-        = "Compile failed, messages should have been provided.";
-
-    private Path src;
-    private File destDir;
-    private Path compileClasspath;
-    private String encoding;
-    private boolean debug = false;
-    private boolean optimize = false;
-    private boolean deprecation = false;
-    private boolean depend = false;
-    private boolean verbose = false;
-    private String target;
-    private Path bootclasspath;
-    private Path extdirs;
-    private boolean includeAntRuntime = true;
-    private boolean includeJavaRuntime = false;
-
-    protected boolean failOnError = true;
-    protected File[] compileList = new File[0];
-
-    /**
-     * Create a nested <src ...> element for multiple source path
-     * support.
-     *
-     * @return a nexted src element.
-     */
-    public Path createSrc() {
-        if (src == null) {
-            src = new Path(project);
-        }
-        return src.createPath();
-    }
-
-    /**
-     * Set the source dirs to find the source Java files.
-     */
-    public void setSrcdir(Path srcDir) {
-        if (src == null) {
-            src = srcDir;
-        } else {
-            src.append(srcDir);
-        }
-    }
-
-    /** Gets the source dirs to find the source java files. */
-    public Path getSrcdir() {
-        return src;
-    }
-
-    /**
-     * Set the destination directory into which the Java source
-     * files should be compiled.
-     */
-    public void setDestdir(File destDir) {
-        this.destDir = destDir;
-    }
-
-    /** 
-     * Gets the destination directory into which the java source files
-     * should be compiled.
-     */
-    public File getDestdir() {
-        return destDir;
-    }
-
-    /**
-     * Set the classpath to be used for this compilation.
-     */
-    public void setClasspath(Path classpath) {
-        if (compileClasspath == null) {
-            compileClasspath = classpath;
-        } else {
-            compileClasspath.append(classpath);
-        }
-    }
-
-    /** Gets the classpath to be used for this compilation. */
-    public Path getClasspath() {
-        return compileClasspath;
-    }
-
-    /**
-     * Maybe creates a nested classpath element.
-     */
-    public Path createClasspath() {
-        if (compileClasspath == null) {
-            compileClasspath = new Path(project);
-        }
-        return compileClasspath.createPath();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-    /**
-     * Sets the bootclasspath that will be used to compile the classes
-     * against.
-     */
-    public void setBootclasspath(Path bootclasspath) {
-        if (this.bootclasspath == null) {
-            this.bootclasspath = bootclasspath;
-        } else {
-            this.bootclasspath.append(bootclasspath);
-        }
-    }
-
-    /**
-     * Gets the bootclasspath that will be used to compile the classes
-     * against.
-     */
-    public Path getBootclasspath() {
-        return bootclasspath;
-    }
-
-    /**
-     * Maybe creates a nested classpath element.
-     */
-    public Path createBootclasspath() {
-        if (bootclasspath == null) {
-            bootclasspath = new Path(project);
-        }
-        return bootclasspath.createPath();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setBootClasspathRef(Reference r) {
-        createBootclasspath().setRefid(r);
-    }
-
-    /**
-     * Sets the extension directories that will be used during the
-     * compilation.
-     */
-    public void setExtdirs(Path extdirs) {
-        if (this.extdirs == null) {
-            this.extdirs = extdirs;
-        } else {
-            this.extdirs.append(extdirs);
-        }
-    }
-
-    /**
-     * Gets the extension directories that will be used during the
-     * compilation.
-     */
-    public Path getExtdirs() {
-        return extdirs;
-    }
-
-    /**
-     * Maybe creates a nested classpath element.
-     */
-    public Path createExtdirs() {
-        if (extdirs == null) {
-            extdirs = new Path(project);
-        }
-        return extdirs.createPath();
-    }
-
-    /**
-     * Throw a BuildException if compilation fails
-     */
-    public void setFailonerror(boolean fail) {
-        failOnError = fail;
-    }
-
-    /**
-     * Proceed if compilation fails
-     */
-    public void setProceed(boolean proceed) {
-        failOnError = !proceed;
-    }
-
-    /**
-     * Gets the failonerror flag.
-     */
-    public boolean getFailonerror() {
-        return failOnError;
-    }
-
-    /**
-     * Set the deprecation flag.
-     */
-    public void setDeprecation(boolean deprecation) {
-        this.deprecation = deprecation;
-    }
-
-    /** Gets the deprecation flag. */
-    public boolean getDeprecation() {
-        return deprecation;
-    }
-
-    /**
-     * Set the Java source file encoding name.
-     */
-    public void setEncoding(String encoding) {
-        this.encoding = encoding;
-    }
-
-    /** Gets the java source file encoding name. */
-    public String getEncoding() {
-        return encoding;
-    }
-
-    /**
-     * Set the debug flag.
-     */
-    public void setDebug(boolean debug) {
-        this.debug = debug;
-    }
-
-    /** Gets the debug flag. */
-    public boolean getDebug() {
-        return debug;
-    }
-
-    /**
-     * Set the optimize flag.
-     */
-    public void setOptimize(boolean optimize) {
-        this.optimize = optimize;
-    }
-
-    /** Gets the optimize flag. */
-    public boolean getOptimize() {
-        return optimize;
-    }
-
-    /** 
-     * Set the depend flag.
-     */ 
-    public void setDepend(boolean depend) {
-        this.depend = depend;
-    }  
-
-    /** Gets the depend flag. */
-    public boolean getDepend() {
-        return depend;
-    }
-
-    /** 
-     * Set the verbose flag.
-     */ 
-    public void setVerbose(boolean verbose) {
-        this.verbose = verbose;
-    }
-
-    /** Gets the verbose flag. */
-    public boolean getVerbose() {
-        return verbose;
-    }
-
-    /**
-     * Sets the target VM that the classes will be compiled for. Valid
-     * strings are "1.1", "1.2", and "1.3".
-     */
-    public void setTarget(String target) {
-        this.target = target;
-    }
-
-    /** Gets the target VM that the classes will be compiled for. */
-    public String getTarget() {
-        return target;
-    }
-
-    /**
-     * Include ant's own classpath in this task's classpath?
-     */
-    public void setIncludeantruntime( boolean include ) {
-        includeAntRuntime = include;
-    }
-
-    /**
-     * Gets whether or not the ant classpath is to be included in the
-     * task's classpath.
-     */
-    public boolean getIncludeantruntime() {
-        return includeAntRuntime;
-    }
-
-    /**
-     * Sets whether or not to include the java runtime libraries to this
-     * task's classpath.
-     */
-    public void setIncludejavaruntime( boolean include ) {
-        includeJavaRuntime = include;
-    }
-
-    /**
-     * Gets whether or not the java runtime should be included in this
-     * task's classpath.
-     */
-    public boolean getIncludejavaruntime() {
-        return includeJavaRuntime;
-    }
-
-    /**
-     * Executes the task.
-     */
-    public void execute() throws BuildException {
-        // first off, make sure that we've got a srcdir
-
-        if (src == null) {
-            throw new BuildException("srcdir attribute must be set!", location);
-        }
-        String [] list = src.list();
-        if (list.length == 0) {
-            throw new BuildException("srcdir attribute must be set!", location);
-        }
-        
-        if (destDir != null && !destDir.isDirectory()) {
-            throw new BuildException("destination directory \"" + destDir + "\" does not exist or is not a directory", location);
-        }
-
-        // scan source directories and dest directory to build up 
-        // compile lists
-        resetFileLists();
-        for (int i=0; i<list.length; i++) {
-            File srcDir = (File)project.resolveFile(list[i]);
-            if (!srcDir.exists()) {
-                throw new BuildException("srcdir \"" + srcDir.getPath() + "\" does not exist!", location);
-            }
-
-            DirectoryScanner ds = this.getDirectoryScanner(srcDir);
-
-            String[] files = ds.getIncludedFiles();
-
-            scanDir(srcDir, destDir != null ? destDir : srcDir, files);
-        }
-        
-        // compile the source files
-
-        String compiler = project.getProperty("build.compiler");
-        if (compiler == null) {
-            if (Project.getJavaVersion().startsWith("1.3")) {
-                compiler = "modern";
-            } else {
-                compiler = "classic";
-            }
-        }
-
-        if (compileList.length > 0) {
-
-            CompilerAdapter adapter = CompilerAdapterFactory.getCompiler(
-              compiler, this );
-            log("Compiling " + compileList.length + 
-                " source file"
-                + (compileList.length == 1 ? "" : "s")
-                + (destDir != null ? " to " + destDir : ""));
-
-            // now we need to populate the compiler adapter
-            adapter.setJavac( this );
-            
-            // finally, lets execute the compiler!!
-            if (!adapter.execute()) {
-                if (failOnError) {
-                    throw new BuildException(FAIL_MSG, location);
-                }
-                else {
-                    log(FAIL_MSG, Project.MSG_ERR);
-                }
-            }
-        }
-    }
-
-    /**
-     * Clear the list of files to be compiled and copied.. 
-     */
-    protected void resetFileLists() {
-        compileList = new File[0];
-    }
-
-    /**
-     * Scans the directory looking for source files to be compiled.  
-     * The results are returned in the class variable compileList
-     */
-    protected void scanDir(File srcDir, File destDir, String files[]) {
-        GlobPatternMapper m = new GlobPatternMapper();
-        m.setFrom("*.java");
-        m.setTo("*.class");
-        SourceFileScanner sfs = new SourceFileScanner(this);
-        File[] newFiles = sfs.restrictAsFiles(files, srcDir, destDir, m);
-        
-        if (newFiles.length > 0) {
-            File[] newCompileList = new File[compileList.length +
-                newFiles.length];
-            System.arraycopy(compileList, 0, newCompileList, 0,
-                    compileList.length);
-            System.arraycopy(newFiles, 0, newCompileList,
-                    compileList.length, newFiles.length);
-            compileList = newCompileList;
-        }
-    }
-
-    /** Gets the list of files to be compiled. */
-    public File[] getFileList() {
-        return compileList;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/JavacOutputStream.java b/src/main/org/apache/tools/ant/taskdefs/JavacOutputStream.java
deleted file mode 100644
index 75dfb85..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/JavacOutputStream.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */ 
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import java.io.*;
-
-/**
- * Serves as an output stream to Javac. This let's us print messages
- * out to the log and detect whether or not Javac had an error
- * while compiling.
- *
- * @author James Duncan Davidson (duncan@x180.com)
- * @deprecated use returnvalue of compile to detect compilation failure.
- */
-
-class JavacOutputStream extends OutputStream {
-
-    private Task task;
-    private StringBuffer line;
-    private boolean errorFlag = false;
-
-    /**
-     * Constructs a new JavacOutputStream with the given task
-     * as the output source for messages.
-     */
-    
-    JavacOutputStream(Task task) {
-        this.task = task;
-        line = new StringBuffer();
-    }
-
-    /**
-     * Write a character to the output stream. This method looks
-     * to make sure that there isn't an error being reported and
-     * will flush each line of input out to the project's log stream.
-     */
-    
-    public void write(int c) throws IOException {
-        char cc = (char)c;
-        if (cc == '\r' || cc == '\n') {
-            // line feed
-            if (line.length() > 0) {
-                processLine();
-            }
-        } else {
-            line.append(cc);
-        }
-    }
-
-    /**
-     * Processes a line of input and determines if an error occured.
-     */
-    
-    private void processLine() {
-        String s = line.toString();
-        if (s.indexOf("error") > -1) {
-            errorFlag = true;
-        }
-        task.log(s);
-        line = new StringBuffer();
-    }
-
-    /**
-     * Returns the error status of the compile. If no errors occured,
-     * this method will return false, else this method will return true.
-     */
-    
-    boolean getErrorFlag() {
-        return errorFlag;
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
deleted file mode 100644
index 6cec5ca..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
+++ /dev/null
@@ -1,863 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.*;
-
-/**
- * This task makes it easy to generate Javadoc documentation for a collection
- * of source code.
- *
- * <P>Current known limitations are:
- *
- * <P><UL>
- *    <LI>patterns must be of the form "xxx.*", every other pattern doesn't
- *        work.
- *    <LI>the java comment-stripper reader is horribly slow
- *    <LI>there is no control on arguments sanity since they are left
- *        to the javadoc implementation.
- *    <LI>argument J in javadoc1 is not supported (what is that for anyway?)
- * </UL>
- *
- * <P>If no <CODE>doclet</CODE> is set, then the <CODE>version</CODE> and
- * <CODE>author</CODE> are by default <CODE>"yes"</CODE>.
- *
- * <P>Note: This task is run on another VM because the Javadoc code calls
- * <CODE>System.exit()</CODE> which would break Ant functionality.
- *
- * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a>
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- * @author Patrick Chanezon <a href="mailto:chanezon@netscape.com">chanezon@netscape.com</a>
- * @author Ernst de Haan <a href="mailto:ernst@jollem.com">ernst@jollem.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-
-public class Javadoc extends Task {
-
-    public class DocletParam {
-        private String name;
-        private String value;
-        
-        public void setName(String name) {
-            this.name = name;
-        }
-        
-        public String getName() {
-            return name;
-        }
-        
-        public void setValue(String value) {
-            this.value = value;
-        }
-
-        public String getValue() {
-            return value;
-        }
-    }
-
-    public class DocletInfo {
-        private String name;
-        private Path path;
-        
-        private Vector params = new Vector();
-
-        public void setName(String name) {
-            this.name = name;
-        }
-        
-        public String getName() {
-            return name;
-        }
-        
-        public void setPath(Path path) {
-            if (this.path == null) {
-                this.path = path;
-            } else {
-                this.path.append(path);
-            }
-        }
-
-        public Path getPath() {
-            return path;
-        }
-        
-        public Path createPath() {
-            if (path == null) {
-                path = new Path(getProject());
-            }
-            return path.createPath();
-        }
-
-        /**
-         * Adds a reference to a CLASSPATH defined elsewhere.
-         */
-        public void setPathRef(Reference r) {
-            createPath().setRefid(r);
-        }
-
-        public DocletParam createParam() {
-            DocletParam param = new DocletParam();
-            params.addElement(param);
-            
-            return param;
-        }
-        
-        public Enumeration getParams() {
-            return params.elements();
-        }
-    }
-
-    private Commandline cmd = new Commandline();
-    private static boolean javadoc1 = 
-        (Project.getJavaVersion() == Project.JAVA_1_1);
-
-
-    private void addArgIf(boolean b, String arg) {
-        if (b) {
-            cmd.createArgument().setValue(arg);
-        }
-    }
-
-    private void add11ArgIf(boolean b, String arg) {
-        if (javadoc1 && b) {
-            cmd.createArgument().setValue(arg);
-        }
-    }
-
-    private void add12ArgIf(boolean b, String arg) {
-        if (!javadoc1 && b) {
-            cmd.createArgument().setValue(arg);
-        }
-    }
-
-    private boolean foundJavaFile = false;
-    private boolean failOnError = false;
-    private Path sourcePath = null;
-    private File destDir = null;
-    private String sourceFiles = null;
-    private String packageNames = null;
-    private boolean author = true;
-    private boolean version = true;
-    private DocletInfo doclet = null;
-    private Path classpath = null;
-    private Path bootclasspath = null;
-    private String group = null;
-    private Vector compileList = new Vector(10);
-    private String packageList = null;
-    private Vector links = new Vector(2);
-    private Vector groups = new Vector(2);
-	private boolean useDefaultExcludes = true;
-
-    /**
-     * Sets whether default exclusions should be used or not.
-     *
-     * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions 
-     *                           should be used, "false"|"off"|"no" when they
-     *                           shouldn't be used.
-     */
-    public void setDefaultexcludes(boolean useDefaultExcludes) {
-       this.useDefaultExcludes = useDefaultExcludes;
-    }
-
-    public void setMaxmemory(String max){
-        if(javadoc1){
-            cmd.createArgument().setValue("-J-mx" + max);
-        } else{
-            cmd.createArgument().setValue("-J-Xmx" + max);
-        }
-    }
-
-    public void setAdditionalparam(String add){
-        cmd.createArgument().setValue(add);
-    }
-    
-    public void setSourcepath(Path src) {
-        if (sourcePath == null) {
-            sourcePath = src;
-        } else {
-            sourcePath.append(src);
-        }
-    }
-    public Path createSourcepath() {
-        if (sourcePath == null) {
-            sourcePath = new Path(project);
-        }
-        return sourcePath.createPath();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setSourcepathRef(Reference r) {
-        createSourcepath().setRefid(r);
-    }
-
-    public void setDestdir(File dir) {
-        destDir = dir;
-        cmd.createArgument().setValue("-d");
-        cmd.createArgument().setFile(destDir);
-    }
-    public void setSourcefiles(String src) {
-        sourceFiles = src;
-    }
-    public void setPackagenames(String src) {
-        packageNames = src;
-    }
-    public void setOverview(File f) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-overview");
-            cmd.createArgument().setFile(f);
-        }
-    }
-    public void setPublic(boolean b) {
-        addArgIf(b, "-public");
-    }
-    public void setProtected(boolean b) {
-        addArgIf(b, "-protected");
-    }
-    public void setPackage(boolean b) {
-        addArgIf(b, "-package");
-    }
-    public void setPrivate(boolean b) {
-        addArgIf(b, "-private");
-    }
-    public void setDoclet(String src) {
-        if (doclet == null) {
-            doclet = new DocletInfo();
-        }
-        doclet.setName(src);
-    }
-    
-    public void setDocletPath(Path src) {
-        if (doclet == null) {
-            doclet = new DocletInfo();
-        }
-        doclet.setPath(src);
-    }
-
-    public void setDocletPathRef(Reference r) {
-        if (doclet == null) {
-            doclet = new DocletInfo();
-        }
-        doclet.createPath().setRefid(r);
-    }
-
-    public DocletInfo createDoclet() {
-        doclet = new DocletInfo();
-        return doclet;
-    }
-
-    public void setOld(boolean b) {
-        add12ArgIf(b, "-1.1");
-    }
-    public void setClasspath(Path src) {
-        if (classpath == null) {
-            classpath = src;
-        } else {
-            classpath.append(src);
-        }
-    }
-    public Path createClasspath() {
-        if (classpath == null) {
-            classpath = new Path(project);
-        }
-        return classpath.createPath();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-    public void setBootclasspath(Path src) {
-        if (bootclasspath == null) {
-            bootclasspath = src;
-        } else {
-            bootclasspath.append(src);
-        }
-    }
-    public Path createBootclasspath() {
-        if (bootclasspath == null) {
-            bootclasspath = new Path(project);
-        }
-        return bootclasspath.createPath();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setBootClasspathRef(Reference r) {
-        createBootclasspath().setRefid(r);
-    }
-
-    public void setExtdirs(String src) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-extdirs");
-            cmd.createArgument().setValue(src);
-        }
-    }
-    public void setVerbose(boolean b) {
-        add12ArgIf(b, "-verbose");
-    }
-    public void setLocale(String src) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-locale");
-            cmd.createArgument().setValue(src);
-        }
-    }
-    public void setEncoding(String enc) {
-        cmd.createArgument().setValue("-encoding");
-        cmd.createArgument().setValue(enc);
-    }
-    public void setVersion(boolean src) {
-        version = src;
-    }
-    public void setUse(boolean b) {
-        add12ArgIf(b, "-use");
-    }
-    public void setAuthor(boolean src) {
-        author = src;
-    }
-    public void setSplitindex(boolean b) {
-        add12ArgIf(b, "-splitindex");
-    }
-    public void setWindowtitle(String src) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-windowtitle");
-            cmd.createArgument().setValue(src);
-        }
-    }
-    public void setDoctitle(String src) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-doctitle");
-            cmd.createArgument().setValue(src);
-        }
-    }
-    public void setHeader(String src) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-header");
-            cmd.createArgument().setValue(src);
-        }
-    }
-    public void setFooter(String src) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-footer");
-            cmd.createArgument().setValue(src);
-        }
-    }
-    public void setBottom(String src) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-bottom");
-            cmd.createArgument().setValue(src);
-        }
-    }
-    public void setLinkoffline(String src) {
-        if (!javadoc1) {
-            LinkArgument le = createLink();
-            le.setOffline(true);
-            String linkOfflineError = "The linkoffline attribute must include a URL and " + 
-                "a package-list file location separated by a space";
-            if (src.trim().length() == 0) {
-                throw new BuildException(linkOfflineError);
-            }                
-            StringTokenizer tok = new StringTokenizer(src, " ", false);
-            le.setHref(tok.nextToken());
-
-            if (!tok.hasMoreTokens()) {
-                throw new BuildException(linkOfflineError);
-            }                                        
-            le.setPackagelistLoc(tok.nextToken());
-        }
-    }
-    public void setGroup(String src) {
-        group = src;
-    }
-    public void setLink(String src) {
-        if (!javadoc1) {
-            createLink().setHref(src);
-        }
-    }
-    public void setNodeprecated(boolean b) {
-        addArgIf(b, "-nodeprecated");
-    }
-    public void setNodeprecatedlist(boolean b) {
-        add12ArgIf(b, "-nodeprecatedlist");
-    }
-    public void setNotree(boolean b) {
-        addArgIf(b, "-notree");
-    }
-    public void setNoindex(boolean b) {
-        addArgIf(b, "-noindex");
-    }
-    public void setNohelp(boolean b) {
-        add12ArgIf(b, "-nohelp");
-    }
-    public void setNonavbar(boolean b) {
-        add12ArgIf(b, "-nonavbar");
-    }
-    public void setSerialwarn(boolean b) {
-        add12ArgIf(b, "-serialwarn");
-    }
-    public void setStylesheetfile(File f) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-stylesheetfile");
-            cmd.createArgument().setFile(f);
-        }
-    }
-    public void setHelpfile(File f) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-helpfile");
-            cmd.createArgument().setFile(f);
-        }
-    }
-    public void setDocencoding(String enc) {
-        cmd.createArgument().setValue("-docencoding");
-        cmd.createArgument().setValue(enc);
-    }
-    public void setPackageList(String src) {
-        packageList = src;
-    }
-    
-    public LinkArgument createLink() {
-        LinkArgument la = new LinkArgument();
-        links.addElement(la);
-        return la;
-    }
-    
-    public class LinkArgument {
-        private String href;
-        private boolean offline = false;
-        private String packagelistLoc;
-        
-        public LinkArgument() {
-        }
-
-        public void setHref(String hr) {
-            href = hr;
-        }
-        
-        public String getHref() {
-            return href;
-        }
-        
-        public void setPackagelistLoc(String src) {
-            packagelistLoc = src;
-        }
-        
-        public String getPackagelistLoc() {
-            return packagelistLoc;
-        }
-        
-        public void setOffline(boolean offline) {
-            this.offline = offline;
-        }
-        
-        public boolean isLinkOffline() {
-            return offline;
-        }
-    }
-    
-    public GroupArgument createGroup() {
-        GroupArgument ga = new GroupArgument();
-        groups.addElement(ga);
-        return ga;
-    }
-
-    public class GroupArgument {
-        private String title;
-        private String packages;
-
-        public GroupArgument() {
-        }
-
-        public void setTitle(String src) {
-            title = src;
-        }
-
-        public String getTitle() {
-            return title;
-        }
-
-        public void setPackages(String src) {
-            packages = src;
-        }
-
-        public String getPackages() {
-            return packages;
-        }
-    }
-    
-    public void setCharset(String src) {
-        if (!javadoc1) {
-            cmd.createArgument().setValue("-charset");
-            cmd.createArgument().setValue(src);
-        }
-    }
-
-    /**
-     * Should the build process fail if javadoc fails (as indicated by
-     * a non zero return code)?
-     *
-     * <p>Default is false.</p>
-     */
-    public void setFailonerror(boolean b) {
-        failOnError = b;
-    }
-
-    public void execute() throws BuildException {
-        if ("javadoc2".equals(taskType)) {
-            log("!! javadoc2 is deprecated. Use javadoc instead. !!");
-        }
-
-        if (sourcePath == null) {
-            String msg = "sourcePath attribute must be set!";
-            throw new BuildException(msg);
-        }
-
-        log("Generating Javadoc", Project.MSG_INFO);
-
-        Commandline toExecute = (Commandline)cmd.clone();
-        toExecute.setExecutable("javadoc");
-
-// ------------------------------------------------ general javadoc arguments
-        if (classpath == null)
-            classpath = Path.systemClasspath;
-        else
-            classpath = classpath.concatSystemClasspath("ignore");
-
-        if (!javadoc1) {
-            toExecute.createArgument().setValue("-classpath");
-            toExecute.createArgument().setPath(classpath);
-            toExecute.createArgument().setValue("-sourcepath");
-            toExecute.createArgument().setPath(sourcePath);
-        } else {
-            toExecute.createArgument().setValue("-classpath");
-            toExecute.createArgument().setValue(sourcePath.toString() +
-                                                System.getProperty("path.separator") + classpath.toString());
-        }
-
-        if (version && doclet == null)
-            toExecute.createArgument().setValue("-version");
-        if (author && doclet == null)
-            toExecute.createArgument().setValue("-author");
-
-        if (javadoc1 || doclet == null) {
-            if (destDir == null) {
-                String msg = "destDir attribute must be set!";
-                throw new BuildException(msg);
-            }
-        }
-        
-
-// --------------------------------- javadoc2 arguments for default doclet
-
-// XXX: how do we handle a custom doclet?
-
-        if (!javadoc1) {
-            if (doclet != null) {
-                if (doclet.getName() == null) {
-                    throw new BuildException("The doclet name must be specified.", location);
-                }
-                else {                
-                    toExecute.createArgument().setValue("-doclet");
-                    toExecute.createArgument().setValue(doclet.getName());
-                    if (doclet.getPath() != null) {
-                        toExecute.createArgument().setValue("-docletpath");
-                        toExecute.createArgument().setPath(doclet.getPath());
-                    }
-                    for (Enumeration e = doclet.getParams(); e.hasMoreElements();) {
-                        DocletParam param = (DocletParam)e.nextElement();
-                        if (param.getName() == null) {
-                            throw new BuildException("Doclet parameters must have a name");
-                        }
-                        
-                        toExecute.createArgument().setValue(param.getName());
-                        if (param.getValue() != null) {
-                            toExecute.createArgument().setValue(param.getValue());
-                        }
-                    }                        
-                }
-            } 
-            if (bootclasspath != null) {
-                toExecute.createArgument().setValue("-bootclasspath");
-                toExecute.createArgument().setPath(bootclasspath);
-            }
-            
-            // add the links arguments
-            if (links.size() != 0) {
-                for (Enumeration e = links.elements(); e.hasMoreElements(); ) {
-                    LinkArgument la = (LinkArgument)e.nextElement();
-                
-                    if (la.getHref() == null) {
-                        throw new BuildException("Links must provide the URL to the external class documentation.");
-                    }
-                
-                    if (la.isLinkOffline()) {
-                        String packageListLocation = la.getPackagelistLoc();
-                        if (packageListLocation == null) {
-                            throw new BuildException("The package list location for link " + la.getHref() +
-                                                     " must be provided because the link is offline");
-                        }
-                        toExecute.createArgument().setValue("-linkoffline");
-                        toExecute.createArgument().setValue(la.getHref());
-                        toExecute.createArgument().setValue(packageListLocation);
-                    }
-                    else {
-                        toExecute.createArgument().setValue("-link");
-                        toExecute.createArgument().setValue(la.getHref());
-                    }
-                }
-            }                                   
-                                                
-            // add the single group arguments
-            // Javadoc 1.2 rules:
-            //   Multiple -group args allowed.
-            //   Each arg includes 3 strings: -group [name] [packagelist].
-            //   Elements in [packagelist] are colon-delimited.
-            //   An element in [packagelist] may end with the * wildcard.
-
-            // Ant javadoc task rules for group attribute:
-            //   Args are comma-delimited.
-            //   Each arg is 2 space-delimited strings.
-            //   E.g., group="XSLT_Packages org.apache.xalan.xslt*,XPath_Packages orgapache.xalan.xpath*"
-            if (group != null) {
-                StringTokenizer tok = new StringTokenizer(group, ",", false);
-                while (tok.hasMoreTokens()) {
-                    String grp = tok.nextToken().trim();
-                    int space = grp.indexOf(" ");
-                    if (space > 0){
-                        String name = grp.substring(0, space);
-                        String pkgList = grp.substring(space + 1);
-                        toExecute.createArgument().setValue("-group");
-                        toExecute.createArgument().setValue(name);
-                        toExecute.createArgument().setValue(pkgList);
-                    }
-                }
-            }
-            
-            // add the group arguments
-            if (groups.size() != 0) {
-                for (Enumeration e = groups.elements(); e.hasMoreElements(); ) {
-                    GroupArgument ga = (GroupArgument)e.nextElement();
-                    String title = ga.getTitle();
-                    String packages = ga.getPackages();
-                    if (title == null || packages == null) {
-                        throw new BuildException("The title and packages must be specified for group elements.");
-                    }
-                    toExecute.createArgument().setValue("-group");
-                    toExecute.createArgument().setValue(title);
-                    toExecute.createArgument().setValue(packages);
-                }
-            }
-
-        }
-
-        if ((packageNames != null) && (packageNames.length() > 0)) {
-            Vector packages = new Vector();
-            StringTokenizer tok = new StringTokenizer(packageNames, ",", false);
-            while (tok.hasMoreTokens()) {
-                String name = tok.nextToken().trim();
-                if (name.endsWith(".*")) {
-                    packages.addElement(name);
-                } else {
-                    toExecute.createArgument().setValue(name);
-                }
-            }
-            if (packages.size() > 0) {
-                evaluatePackages(toExecute, sourcePath, packages);
-            }
-        }
-
-        if ((sourceFiles != null) && (sourceFiles.length() > 0)) {
-            StringTokenizer tok = new StringTokenizer(sourceFiles, ",", false);
-            while (tok.hasMoreTokens()) {
-                toExecute.createArgument().setValue(tok.nextToken().trim());
-            }
-        }
-
-        if (packageList != null) {
-            toExecute.createArgument().setValue("@" + packageList);
-        }
-        log("Javadoc args: " + toExecute, Project.MSG_VERBOSE);
-
-        log("Javadoc execution", Project.MSG_INFO);
-
-        JavadocOutputStream out = new JavadocOutputStream(Project.MSG_INFO);
-        JavadocOutputStream err = new JavadocOutputStream(Project.MSG_WARN);
-        Execute exe = new Execute(new PumpStreamHandler(out, err));
-        exe.setAntRun(project);
-        exe.setWorkingDirectory(project.getBaseDir());
-        try {
-            exe.setCommandline(toExecute.getCommandline());
-            int ret = exe.execute();
-            if (ret != 0 && failOnError) {
-                throw new BuildException("Javadoc returned "+ret, location);
-            }
-        } catch (IOException e) {
-            throw new BuildException("Javadoc failed: " + e, e, location);
-        } finally {
-            out.logFlush();
-            err.logFlush();
-            try {
-                out.close();
-                err.close();
-            } catch (IOException e) {}
-        }
-    }
-
-    /**
-     * Given a source path, a list of package patterns, fill the given list
-     * with the packages found in that path subdirs matching one of the given
-     * patterns.
-     */
-    private void evaluatePackages(Commandline toExecute, Path sourcePath, 
-                                  Vector packages) {
-        log("Source path = " + sourcePath.toString(), Project.MSG_VERBOSE);
-        log("Packages = " + packages, Project.MSG_VERBOSE);
-
-        Vector addedPackages = new Vector();
-
-        String[] list = sourcePath.list();
-        if (list == null) list = new String[0];
-
-        FileSet fs = new FileSet();
-        fs.setDefaultexcludes(useDefaultExcludes);
-
-        Enumeration e = packages.elements();
-        while (e.hasMoreElements()) {
-            String pkg = (String)e.nextElement();
-            pkg = pkg.replace('.','/');
-            if (pkg.endsWith("*")) {
-                pkg += "*";
-            }
-
-            fs.createInclude().setName(pkg);
-        } // while
-
-        for (int j=0; j<list.length; j++) {
-            File source = project.resolveFile(list[j]);
-            fs.setDir(source);
-
-            DirectoryScanner ds = fs.getDirectoryScanner(project);
-            String[] packageDirs = ds.getIncludedDirectories();
-
-            for (int i=0; i<packageDirs.length; i++) {
-                File pd = new File(source, packageDirs[i]);
-                String[] files = pd.list(new FilenameFilter () {
-                    public boolean accept(File dir1, String name) {
-                        if (name.endsWith(".java")) {
-                            return true;
-                        }
-                        return false;	// ignore dirs
-                    }
-                });
-
-                if (files.length > 0) {
-                    String pkgDir = packageDirs[i].replace('/','.').replace('\\','.');
-                    if (!addedPackages.contains(pkgDir)) {
-                        toExecute.createArgument().setValue(pkgDir);
-                        addedPackages.addElement(pkgDir);
-                    }
-                }
-            }
-        }
-    }
-
-    private class JavadocOutputStream extends LogOutputStream {
-        JavadocOutputStream(int level) {
-            super(Javadoc.this, level);
-        }
-
-        //
-        // Override the logging of output in order to filter out Generating
-        // messages.  Generating messages are set to a priority of VERBOSE
-        // unless they appear after what could be an informational message.
-        //
-        private String queuedLine = null;
-        protected void processLine(String line, int messageLevel) {
-            if (messageLevel == Project.MSG_INFO && line.startsWith("Generating ")) {
-                if (queuedLine != null) {
-                    super.processLine(queuedLine, Project.MSG_VERBOSE);
-                }
-                queuedLine = line;
-            } else {
-                if (queuedLine != null) {
-                    if (line.startsWith("Building "))
-                        super.processLine(queuedLine, Project.MSG_VERBOSE);
-                    else
-                        super.processLine(queuedLine, Project.MSG_INFO);
-                    queuedLine = null;
-                }
-                super.processLine(line, messageLevel);
-            }
-        }
-
-        
-        protected void logFlush() {
-            if (queuedLine != null) {
-                super.processLine(queuedLine, Project.MSG_VERBOSE);
-                queuedLine = null;
-            }
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Jikes.java b/src/main/org/apache/tools/ant/taskdefs/Jikes.java
deleted file mode 100644
index fb046f5..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Jikes.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs;
-
-import java.io.*;
-import org.apache.tools.ant.*;
-
-import java.util.Random;
-
-/**
- * Encapsulates a Jikes compiler, by
- * directly executing an external process.
- * @author skanthak@muehlheim.de
- * @deprecated merged into the class Javac.
- */
-public class Jikes {
-    protected JikesOutputParser jop;
-    protected String command;
-    protected Project project;
-
-    /**
-     * Constructs a new Jikes obect.
-     * @param jop - Parser to send jike's output to
-     * @param command - name of jikes executeable
-     */
-    protected Jikes(JikesOutputParser jop,String command, Project project) {
-        super();
-        this.jop = jop;
-        this.command = command;
-        this.project = project;
-    }
-
-    /**
-     * Do the compile with the specified arguments.
-     * @param args - arguments to pass to process on command line
-     */
-    protected void compile(String[] args) {
-        String[] commandArray = null;
-        File tmpFile = null;
-
-        try {
-            String myos = System.getProperty("os.name");
-
-            // Windows has a 32k limit on total arg size, so
-            // create a temporary file to store all the arguments
-
-            // There have been reports that 300 files could be compiled
-            // so 250 is a conservative approach
-            if (myos.toLowerCase().indexOf("windows") >= 0 
-                && args.length > 250) {
-                PrintWriter out = null;
-                try {
-                    tmpFile = new File("jikes"+(new Random(System.currentTimeMillis())).nextLong());
-                    out = new PrintWriter(new FileWriter(tmpFile));
-                    for (int i = 0; i < args.length; i++) {
-                        out.println(args[i]);
-                    }
-                    out.flush();
-                    commandArray = new String[] { command, 
-                                                  "@" + tmpFile.getAbsolutePath()};
-                } catch (IOException e) {
-                    throw new BuildException("Error creating temporary file", e);
-                } finally {
-                    if (out != null) {
-                        try {out.close();} catch (Throwable t) {}
-                    }
-                }
-            } else {
-                commandArray = new String[args.length+1];
-                commandArray[0] = command;
-                System.arraycopy(args,0,commandArray,1,args.length);
-            }
-            
-            // We assume, that everything jikes writes goes to
-            // standard output, not to standard error. The option
-            // -Xstdout that is given to Jikes in Javac.doJikesCompile()
-            // should guarantee this. At least I hope so. :)
-            try {
-                Execute exe = new Execute(jop);
-                exe.setAntRun(project);
-                exe.setWorkingDirectory(project.getBaseDir());
-                exe.setCommandline(commandArray);
-                exe.execute();
-            } catch (IOException e) {
-                throw new BuildException("Error running Jikes compiler", e);
-            }
-        } finally {
-            if (tmpFile != null) {
-                tmpFile.delete();
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/JikesOutputParser.java b/src/main/org/apache/tools/ant/taskdefs/JikesOutputParser.java
deleted file mode 100644
index 0191643..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/JikesOutputParser.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-    
-import java.io.*;
-
-/**
- * Parses output from jikes and
- * passes errors and warnings
- * into the right logging channels of Project.
- *
- * TODO: 
- * Parsing could be much better
- * @author skanthak@muehlheim.de
- * @deprecated use Jikes' exit value to detect compilation failure.
- */
-public class JikesOutputParser implements ExecuteStreamHandler {
-    protected Task task;
-    protected boolean errorFlag = false; // no errors so far
-    protected int errors,warnings;
-    protected boolean error = false;
-    protected boolean emacsMode;
-    
-    protected BufferedReader br;
-
-    /**
-     * Ignore.
-     */
-    public void setProcessInputStream(OutputStream os) {}
-
-    /**
-     * Ignore.
-     */
-    public void setProcessErrorStream(InputStream is) {}
-
-    /**
-     * Set the inputstream
-     */
-    public void setProcessOutputStream(InputStream is) throws IOException {
-        br = new BufferedReader(new InputStreamReader(is));
-    }
-
-    /**
-     * Invokes parseOutput.
-     */
-    public void start() throws IOException {
-        parseOutput(br);
-    }
-
-    /**
-     * Ignore.
-     */
-    public void stop() {}
-
-    /**
-     * Construct a new Parser object
-     * @param task - task in whichs context we are called
-     */
-    protected JikesOutputParser(Task task, boolean emacsMode) {
-        super();
-        this.task = task;
-        this.emacsMode = emacsMode;
-    }
-
-    /**
-     * Parse the output of a jikes compiler
-     * @param reader - Reader used to read jikes's output
-     */
-    protected void parseOutput(BufferedReader reader) throws IOException {
-       if (emacsMode)
-           parseEmacsOutput(reader);
-       else
-           parseStandardOutput(reader);
-    }
-
-    private void parseStandardOutput(BufferedReader reader) throws IOException {
-        String line;
-        String lower;
-        // We assume, that every output, jike does, stands for an error/warning
-        // XXX 
-        // Is this correct?
-        
-        // TODO:
-        // A warning line, that shows code, which contains a variable
-        // error will cause some trouble. The parser should definitely
-        // be much better.
-
-        while ((line = reader.readLine()) != null) {
-            lower = line.toLowerCase();
-            if (line.trim().equals(""))
-                continue;
-            if (lower.indexOf("error") != -1)
-                setError(true);
-            else if (lower.indexOf("warning") != -1)
-                setError(false);
-            else {
-                // If we don't know the type of the line
-                // and we are in emacs mode, it will be
-                // an error, because in this mode, jikes won't
-                // always print "error", but sometimes other
-                // keywords like "Syntax". We should look for
-                // all those keywords.
-                if (emacsMode)
-                    setError(true);
-            }
-            log(line);
-        }
-    }
-
-    private void parseEmacsOutput(BufferedReader reader) throws IOException {
-       // This may change, if we add advanced parsing capabilities.
-       parseStandardOutput(reader);
-    }
-
-    private void setError(boolean err) {
-        error = err;
-        if(error)
-            errorFlag = true;
-    }
-
-    private void log(String line) {
-       if (!emacsMode) {
-           task.log("", (error ? Project.MSG_ERR : Project.MSG_WARN));
-       }
-       task.log(line, (error ? Project.MSG_ERR : Project.MSG_WARN));
-    }
-
-    /**
-     * Indicate if there were errors during the compile
-     * @return if errors ocured
-     */
-    protected boolean getErrorFlag() {
-        return errorFlag;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/KeySubst.java b/src/main/org/apache/tools/ant/taskdefs/KeySubst.java
deleted file mode 100644
index 5d3486b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/KeySubst.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import java.io.*;
-import java.util.*;
-
-/**
- * Keyword substitution. Input file is written to output file.
- * Do not make input file same as output file.
- * Keywords in input files look like this: @foo@. See the docs for the 
- * setKeys method to understand how to do the substitutions.
- *
- * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a>
- *
- * @deprecated KeySubst is deprecated. Use Filter + CopyDir instead.
- */
-public class KeySubst extends Task {
-    private File source = null;
-    private File dest = null;
-    private String sep = "*";
-    private Hashtable replacements = new Hashtable();
-    
-    /**
-        Do the execution.
-    */
-    public void execute() throws BuildException {
-        log("!! KeySubst is deprecated. Use Filter + CopyDir instead. !!");
-        log("Performing Substitions");
-        if ( source == null || dest == null ) {
-            log("Source and destinations must not be null");
-            return;            
-        }
-        BufferedReader br = null;
-        BufferedWriter bw = null;
-        try {
-            br = new BufferedReader(new FileReader(source));
-            dest.delete();
-            bw = new BufferedWriter(new FileWriter(dest));
-
-            String line = null;
-            String newline = null;
-            int length;
-            line = br.readLine();
-            while (line != null) {
-                if ( line.length() == 0 ) {
-                    bw.newLine();
-                } else {
-                    newline = KeySubst.replace ( line, replacements );
-                    bw.write ( newline );
-                    bw.newLine();
-                }
-                line = br.readLine();
-            }
-            bw.flush();
-            bw.close();
-            br.close();
-        } catch (IOException ioe) {
-            ioe.printStackTrace();
-        }       
-    }
-    /**
-        Set the source file.
-    */
-    public void setSrc(String s) {
-        this.source=project.resolveFile(s);
-    }
-
-    /**
-        Set the destination file.
-    */
-    public void setDest(String dest) {
-        this.dest = project.resolveFile(dest);
-    }
-
-    /**
-        Sets the seperator between name=value arguments
-        in setKeys(). By default it is "*".
-    */
-    public void setSep(String sep) {
-        this.sep = sep;
-    }
-    /**
-        Format string is like this:
-        <p>
-        name=value*name2=value
-        <p>
-        Names are case sensitive.
-        <p>
-        Use the setSep() method to change the * to something else
-        if you need to use * as a name or value.
-    */
-    public void setKeys(String keys) {
-        if (keys != null && keys.length() > 0) {
-            StringTokenizer tok =
-            new StringTokenizer(keys, this.sep, false);
-            while (tok.hasMoreTokens()) {
-                String token = tok.nextToken().trim();
-                StringTokenizer itok =
-                new StringTokenizer(token, "=", false);
-                
-                String name = itok.nextToken();
-                String value = itok.nextToken();
-//                log ( "Name: " + name );
-//                log ( "Value: " + value );
-                replacements.put ( name, value );
-            }
-        }
-    }
-        
-
-    public static void main(String[] args)
-    {
-        try{
-        Hashtable hash = new Hashtable();
-        hash.put ( "VERSION", "1.0.3" );
-        hash.put ( "b", "ffff" );
-        System.out.println ( KeySubst.replace ( "$f ${VERSION} f ${b} jj $", hash ) );
-        }catch ( Exception e)
-        {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-        Does replacement on text using the hashtable of keys.
-        
-        @returns the string with the replacements in it.
-    */
-    public static String replace ( String origString, Hashtable keys )
-        throws BuildException
-    {
-        StringBuffer finalString=new StringBuffer();
-        int index=0;
-        int i = 0;
-        String key = null;
-        while ((index = origString.indexOf("${", i)) > -1) {
-            key = origString.substring(index + 2, origString.indexOf("}", index+3));
-            finalString.append (origString.substring(i, index));
-            if ( keys.containsKey ( key ) ) {
-                finalString.append (keys.get(key));
-            } else {
-                finalString.append ( "${" );
-                finalString.append ( key );
-                finalString.append ( "}" );
-            }
-            i = index + 3 + key.length();
-        }
-        finalString.append (origString.substring(i));
-        return finalString.toString();
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java b/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java
deleted file mode 100644
index da66050..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.ByteArrayOutputStream;
-
-
-/**
- * Logs each line written to this stream to the log system of ant.
- *
- * Tries to be smart about line separators.<br>
- * TODO: This class can be split to implement other line based processing
- * of data written to the stream.
- *
- * @author thomas.haas@softwired-inc.com
- */
-public class LogOutputStream extends OutputStream {
-
-    private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-    private boolean skip = false;
-
-    private Task task;
-    private int level = Project.MSG_INFO;
-
-    /**
-     * Creates a new instance of this class.
-     *
-     * @param task the task for whom to log
-     * @param level loglevel used to log data written to this stream.
-     */
-    public LogOutputStream(Task task, int level) {
-        this.task = task;
-        this.level = level;
-    }
-
-
-    /**
-     * Write the data to the buffer and flush the buffer, if a line
-     * separator is detected.
-     *
-     * @param cc data to log (byte).
-     */
-    public void write(int cc) throws IOException {
-        final byte c = (byte)cc;
-        if ((c == '\n') || (c == '\r')) {
-            if (!skip) processBuffer();
-        } else buffer.write(cc);
-        skip = (c == '\r');
-    }
-
-
-    /**
-     * Converts the buffer to a string and sends it to <code>processLine</code>
-     */
-    protected void processBuffer() {
-        processLine(buffer.toString());
-        buffer.reset();
-    }
-
-    /**
-     * Logs a line to the log system of ant.
-     *
-     * @param line the line to log.
-     */
-    protected void processLine(String line) {
-        processLine(line, level);
-    }
-
-    /**
-     * Logs a line to the log system of ant.
-     *
-     * @param line the line to log.
-     */
-    protected void processLine(String line, int level) {
-        task.log(line, level);
-    }
-
-
-    /**
-     * Writes all remaining
-     */
-    public void close() throws IOException {
-        if (buffer.size() > 0) processBuffer();
-        super.close();
-    }
-
-    public int getMessageLevel() {
-        return level;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.java b/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.java
deleted file mode 100644
index f5a739a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-
-import java.io.OutputStream;
-import java.io.InputStream;
-
-/**
- * Logs standard output and error of a subprocess to the log system of ant.
- *
- * @author thomas.haas@softwired-inc.com
- */
-public class LogStreamHandler extends PumpStreamHandler {
-
-    /**
-     * Creates a new instance of this class.
-     *
-     * @param task the task for whom to log
-     * @param outlevel the loglevel used to log standard output
-     * @param errlevel the loglevel used to log standard error
-     */
-    public LogStreamHandler(Task task, int outlevel, int errlevel) {
-        super(new LogOutputStream(task, outlevel),
-              new LogOutputStream(task, errlevel));
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/MatchingTask.java b/src/main/org/apache/tools/ant/taskdefs/MatchingTask.java
deleted file mode 100644
index 08da310..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/MatchingTask.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * This is an abstract task that should be used by all those tasks that 
- * require to include or exclude files based on pattern matching.
- *
- * @author Arnout J. Kuiper <a href="mailto:ajkuiper@wxs.nl">ajkuiper@wxs.nl</a> 
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- * @author Sam Ruby <a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a>
- * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-
-public abstract class MatchingTask extends Task {
-
-    protected boolean useDefaultExcludes = true;
-    protected FileSet fileset = new FileSet();
-
-    /**
-     * add a name entry on the include list
-     */
-    public PatternSet.NameEntry createInclude() {
-        return fileset.createInclude();
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public PatternSet.NameEntry createExclude() {
-        return fileset.createExclude();
-    }
-
-    /**
-     * add a set of patterns
-     */
-    public PatternSet createPatternSet() {
-        return fileset.createPatternSet();
-    }
-
-    /**
-     * Sets the set of include patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param includes the string containing the include patterns
-     */
-    public void setIncludes(String includes) {
-        fileset.setIncludes(includes);
-    }
-
-    /**
-     * Set this to be the items in the base directory that you want to be
-     * included. You can also specify "*" for the items (ie: items="*") 
-     * and it will include all the items in the base directory.
-     *
-     * @param itemString the string containing the files to include.
-     */
-    public void XsetItems(String itemString) {
-        log("The items attribute is deprecated. " +
-            "Please use the includes attribute.",
-            Project.MSG_WARN);
-        if (itemString == null || itemString.equals("*") 
-            || itemString.equals(".")) {
-            createInclude().setName("**");
-        } else {
-            StringTokenizer tok = new StringTokenizer(itemString, ", ");
-            while (tok.hasMoreTokens()) {
-                String pattern = tok.nextToken().trim();
-                if (pattern.length() > 0) {
-                    createInclude().setName(pattern+"/**");
-                }
-            }
-        }
-    }
-    
-    /**
-     * Sets the set of exclude patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param excludes the string containing the exclude patterns
-     */
-    public void setExcludes(String excludes) {
-        fileset.setExcludes(excludes);
-    }
-
-    /**
-     * List of filenames and directory names to not include. They should be 
-     * either , or " " (space) separated. The ignored files will be logged.
-     *
-     * @param ignoreString the string containing the files to ignore.
-     */
-    public void XsetIgnore(String ignoreString) {
-        log("The ignore attribute is deprecated." + 
-            "Please use the excludes attribute.",
-            Project.MSG_WARN);
-        if (ignoreString != null && ignoreString.length() > 0) {
-            Vector tmpExcludes = new Vector();
-            StringTokenizer tok = new StringTokenizer(ignoreString, ", ", false);
-            while (tok.hasMoreTokens()) {
-                createExclude().setName("**/"+tok.nextToken().trim()+"/**");
-            }
-        }
-    }
-    
-    /**
-     * Sets whether default exclusions should be used or not.
-     *
-     * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions 
-     *                           should be used, "false"|"off"|"no" when they
-     *                           shouldn't be used.
-     */
-    public void setDefaultexcludes(boolean useDefaultExcludes) {
-        this.useDefaultExcludes = useDefaultExcludes;
-    }
-    
-    /**
-     * Returns the directory scanner needed to access the files to process.
-     */
-    protected DirectoryScanner getDirectoryScanner(File baseDir) {
-        fileset.setDir(baseDir);
-        fileset.setDefaultexcludes(useDefaultExcludes);
-        return fileset.getDirectoryScanner(project);
-    }
-
-    /**
-     * Sets the name of the file containing the includes patterns.
-     *
-     * @param includesfile A string containing the filename to fetch
-     * the include patterns from.  
-     */
-     public void setIncludesfile(File includesfile) {
-         fileset.setIncludesfile(includesfile);
-     }
-
-    /**
-     * Sets the name of the file containing the includes patterns.
-     *
-     * @param excludesfile A string containing the filename to fetch
-     * the include patterns from.  
-     */
-     public void setExcludesfile(File excludesfile) {
-         fileset.setExcludesfile(excludesfile);
-     }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Mkdir.java b/src/main/org/apache/tools/ant/taskdefs/Mkdir.java
deleted file mode 100644
index cfb6903..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Mkdir.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */ 
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import java.io.File;
-
-
-/**
- * Creates a given directory.
- *
- * @author duncan@x180.com
- */
-
-public class Mkdir extends Task {
-
-    private File dir;
-    
-    public void execute() throws BuildException {
-        if (dir == null) {
-            throw new BuildException("dir attribute is required", location);
-        }
-
-        if (dir.isFile()) {
-            throw new BuildException("Unable to create directory as a file already exists with that name: " + dir.getAbsolutePath());
-        }
-        
-        if (!dir.exists()) {
-	    boolean result = dir.mkdirs();
-	    if (result == false) {
-		String msg = "Directory " + dir.getAbsolutePath() + " creation was not " +
-		    "succesful for an unknown reason";
-		throw new BuildException(msg, location);
-	    }
-	    log("Created dir: " + dir.getAbsolutePath());
-	}
-    }
-
-    public void setDir(File dir) {
-	this.dir = dir;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Move.java b/src/main/org/apache/tools/ant/taskdefs/Move.java
deleted file mode 100644
index 3050461..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Move.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * Moves a file or directory to a new file or directory.  By default,
- * the destination is overwriten when existing.  When overwrite is
- * turned off, then files are only moved if the source file is 
- * newer than the destination file, or when the destination file does
- * not exist.</p>
- *
- * <p>Source files and directories are only deleted when the file or 
- * directory has been copied to the destination successfully.  Filtering
- * also works.</p>
- *
- * <p>This implementation is based on Arnout Kuiper's initial design
- * document, the following mailing list discussions, and the 
- * copyfile/copydir tasks.</p>
- *
- * @author Glenn McAllister <a href="mailto:glennm@ca.ibm.com">glennm@ca.ibm.com</a>
- */
-public class Move extends Copy {
-
-    public Move() {
-        super();
-        forceOverwrite = true;
-    }
-
-//************************************************************************
-//  protected and private methods
-//************************************************************************
-
-    protected void doFileOperations() {
-        if (fileCopyMap.size() > 0) {   // files to move
-            log("Moving " + fileCopyMap.size() + " files to " + 
-                destDir.getAbsolutePath() );
-
-            Enumeration e = fileCopyMap.keys();
-            while (e.hasMoreElements()) {
-                String fromFile = (String) e.nextElement();
-                String toFile = (String) fileCopyMap.get(fromFile);
-
-                try {
-                    log("Moving " + fromFile + " to " + toFile, verbosity);
-                    project.copyFile(fromFile, toFile, filtering, forceOverwrite);
-                    File f = new File(fromFile);
-                    if (!f.delete()) {
-                        throw new BuildException("Unable to delete file " + f.getAbsolutePath());
-                    }
-                } catch (IOException ioe) {
-                    String msg = "Failed to copy " + fromFile + " to " + toFile
-                        + " due to " + ioe.getMessage();
-                    throw new BuildException(msg, ioe, location);
-                }
-            }
-        }
-
-        if (includeEmpty) {
-            Enumeration e = dirCopyMap.elements();
-            int count = 0;
-            while (e.hasMoreElements()) {
-                File d = new File((String)e.nextElement());
-                if (!d.exists()) {
-                    if (!d.mkdirs()) {
-                        log("Unable to create directory " + d.getAbsolutePath(), Project.MSG_ERR);
-                    } else {
-                        count++;
-                    }
-                }
-            }
-
-            if (count > 0) {
-                log("Moved " + count + " empty directories to " + destDir.getAbsolutePath());
-            }
-        }
-
-        if (filesets.size() > 0) {
-            Enumeration e = filesets.elements();
-            while (e.hasMoreElements()) {
-                FileSet fs = (FileSet)e.nextElement();
-                File dir = fs.getDir(project);
-
-                if (okToDelete(dir)) {
-                    deleteDir(dir);
-                }
-            }
-        }
-    }
-
-    /**
-     * Its only ok to delete a directory tree if there are 
-     * no files in it.
-     */
-    protected boolean okToDelete(File d) {
-        String[] list = d.list();
-        if (list == null) return false;     // maybe io error?
-
-        for (int i = 0; i < list.length; i++) {
-            String s = list[i];
-            File f = new File(d, s);
-            if (f.isDirectory()) {
-                if (!okToDelete(f)) return false;
-            } else {
-                return false;   // found a file
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Go and delete the directory tree.
-     */
-    protected void deleteDir(File d) {
-        String[] list = d.list();
-        if (list == null) return;      // on an io error list() can return null
-
-        for (int i = 0; i < list.length; i++) {
-            String s = list[i];
-            File f = new File(d, s);
-            if (f.isDirectory()) {
-                deleteDir(f);
-            } else {
-                throw new BuildException("UNEXPECTED ERROR - The file " + f.getAbsolutePath() + " should not exist!");
-            }
-        }
-        log("Deleting directory " + d.getAbsolutePath(), verbosity);
-        if (!d.delete()) {
-           throw new BuildException("Unable to delete directory " + d.getAbsolutePath());
-       }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Patch.java b/src/main/org/apache/tools/ant/taskdefs/Patch.java
deleted file mode 100644
index 51df7ee..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Patch.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Task as a layer on top of patch. Patch applies a diff file to an original.
- *
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a>
- */
-public class Patch extends Task {
-
-    private File originalFile;
-    private boolean havePatchfile = false;
-    private Commandline cmd = new Commandline();
-
-    /**
-     * The file to patch.
-     */
-    public void setOriginalfile(File file) {
-        originalFile = file;
-    }
-
-    /**
-     * The file containing the diff output.
-     */
-    public void setPatchfile(File file) {
-        if (!file.exists()) {
-            throw new BuildException("patchfile "+file+" doesn\'t exist", 
-                                     location);
-        }
-        cmd.createArgument().setValue("-i");
-        cmd.createArgument().setFile(file);
-        havePatchfile = true;
-    }
-
-    /**
-     * Shall patch write backups.
-     */
-    public void setBackups(boolean backups) {
-        if (backups) {
-            cmd.createArgument().setValue("-b");
-        }
-    }
-
-    /**
-     * Ignore whitespace differences.
-     */
-    public void setIgnorewhitespace(boolean ignore) {
-        if (ignore) {
-            cmd.createArgument().setValue("-l");
-        }
-    }
-
-    /**
-     * Strip the smallest prefix containing <i>num</i> leading slashes
-     * from filenames.
-     *
-     * <p>patch's <i>-p</i> option.
-     */
-    public void setStrip(int num) throws BuildException {
-        if (num < 0) {
-            throw new BuildException("strip has to be >= 0", location);
-        }
-        cmd.createArgument().setValue("-p"+num);
-    }
-
-    /**
-     * Work silently unless an error occurs.
-     */
-    public void setQuiet(boolean q) {
-        if (q) {
-            cmd.createArgument().setValue("-s");
-        }
-    }
-
-    /**
-     * Assume patch was created with old and new files swapped.
-     */
-    public void setReverse(boolean r) {
-        if (r) {
-            cmd.createArgument().setValue("-R");
-        }
-    }
-
-    public void execute() throws BuildException {
-        if (!havePatchfile) {
-            throw new BuildException("patchfile argument is required", 
-                                     location);
-        } 
-        
-        Commandline toExecute = (Commandline)cmd.clone();
-        toExecute.setExecutable("patch");
-
-        if (originalFile != null) {
-            toExecute.createArgument().setFile(originalFile);
-        }
-
-        Execute exe = new Execute(new LogStreamHandler(this, Project.MSG_INFO,
-                                                       Project.MSG_WARN), 
-                                  null);
-        exe.setCommandline(toExecute.getCommandline());
-        try {
-            exe.execute();
-        } catch (IOException e) {
-            throw new BuildException(e, location);
-        }
-    }
-
-}// Patch
diff --git a/src/main/org/apache/tools/ant/taskdefs/Property.java b/src/main/org/apache/tools/ant/taskdefs/Property.java
deleted file mode 100644
index f6148dc..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Property.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.Reference;
-import java.io.*;
-import java.util.*;
-
-/**
- * Will set a Project property. Used to be a hack in ProjectHelper
- * Will not override values set by the command line or parent projects.
- *
- * @author costin@dnt.ro
- * @author Sam Ruby <rubys@us.ibm.com>
- * @author Glenn McAllister <glennm@ca.ibm.com>
- */
-public class Property extends Task {
-
-    protected String name;
-    protected String value;
-    protected File file;
-    protected String resource;
-    protected Path classpath;
-    protected String env;
-    protected Reference ref = null;
-
-    protected boolean userProperty=false; // set read-only properties
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setLocation(File location) {
-        setValue(location.getAbsolutePath());
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    public File getFile() {
-        return file;
-    }
-
-    public void setRefid(Reference ref) {
-        this.ref = ref;
-    }
-
-    public Reference getRefid() {
-        return ref;
-    }
-
-    public void setResource(String resource) {
-        this.resource = resource;
-    }
-
-    public String getResource() {
-        return resource;
-    }
-
-    public void setEnvironment(String env) {
-        this.env = env;
-    }
-
-    public String getEnvironment() {
-        return env;
-    }
-
-    public void setClasspath(Path classpath) {
-        if (this.classpath == null) {
-            this.classpath = classpath;
-        } else {
-            this.classpath.append(classpath);
-        }
-    }
-    
-    public Path createClasspath() {
-        if (this.classpath == null) {
-            this.classpath = new Path(project);
-        }
-        return this.classpath.createPath();
-    }
-    
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-    public void setUserProperty(boolean userProperty) {
-        this.userProperty = userProperty;
-    }
-
-    public String toString() {
-        return value == null ? "" : value;
-    }
-
-    public void execute() throws BuildException {
-        try {
-            if ((name != null) && (value != null)) {
-                addProperty(name, value);
-            }
-
-            if (file != null) loadFile(file);
-
-            if (resource != null) loadResource(resource);
-
-            if (env != null) loadEnvironment(env);
-
-            if ((name != null) && (ref != null)) {
-                Object obj = ref.getReferencedObject(getProject());
-                if (obj != null) {
-                    addProperty(name, obj.toString());
-                }
-            }
-
-        } catch (Exception e) {
-            throw new BuildException(e, location);
-        }
-    }
-
-    protected void loadFile (File file) throws BuildException {
-        Properties props = new Properties();
-        log("Loading " + file.getAbsolutePath(), Project.MSG_VERBOSE);
-        try {
-            if (file.exists()) { 
-                FileInputStream fis = new FileInputStream(file);
-                try { 
-                    props.load(fis);
-                } finally {
-                    if (fis != null) { 
-                        fis.close();
-                    }
-                }
-                addProperties(props);
-            } else {
-                log("Unable to find " + file.getAbsolutePath(), 
-                    Project.MSG_VERBOSE);
-            }
-        } catch(Exception ex) {
-            throw new BuildException(ex.getMessage(), ex, location);
-        }
-    }
-
-    protected void loadResource( String name ) {
-        Properties props = new Properties();
-        log("Resource Loading " + name, Project.MSG_VERBOSE);
-        try {
-            ClassLoader cL = null; 
-            InputStream is = null;
-
-            if (classpath != null) { 
-                cL = new AntClassLoader(project, classpath, false); 
-            } else { 
-                cL = this.getClass().getClassLoader(); 
-            } 
-
-            if (cL == null) {
-                is = ClassLoader.getSystemResourceAsStream(name);
-            } else {
-                is = cL.getResourceAsStream(name);
-            }
-            
-            if (is != null) {
-                props.load(is);
-                addProperties(props);
-            } else {
-                log("Unable to find resource " + name, Project.MSG_WARN);
-            }
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-    }
-
-    protected void loadEnvironment( String prefix ) {
-        Properties props = new Properties();
-        if (!prefix.endsWith(".")) prefix += ".";
-        log("Loading Environment " + prefix, Project.MSG_VERBOSE);
-        try {
-            Vector osEnv = Execute.getProcEnvironment();
-            for (Enumeration e = osEnv.elements(); e.hasMoreElements(); ) {
-                String entry = (String)e.nextElement();
-                int pos = entry.indexOf('=');
-                props.put(prefix + entry.substring(0, pos), 
-                          entry.substring(pos + 1));
-            }
-            addProperties(props);
-        } catch (Exception ex) {
-            throw new BuildException(ex, location);
-        }
-    }
-
-    protected void addProperties(Properties props) {
-        resolveAllProperties(props);
-        Enumeration e = props.keys();
-        while (e.hasMoreElements()) {
-            String name = (String) e.nextElement();
-            String value = (String) props.getProperty(name);
-            String v = ProjectHelper.replaceProperties(project, value, project.getProperties());
-            addProperty(name, value);
-        }
-    }
-
-    protected void addProperty(String n, String v) {
-        if( userProperty ) {
-            if (project.getUserProperty(n) == null) {
-                project.setUserProperty(n, v);
-            } else {
-                log("Override ignored for " + n, Project.MSG_VERBOSE);
-            } 
-        } else {
-            if (project.getProperty(n) == null) {
-                project.setProperty(n, v);
-            } else {
-                log("Override ignored for " + n, Project.MSG_VERBOSE);
-            }
-        }
-    }
-
-    private void resolveAllProperties(Hashtable props) {
-        Hashtable unresolvableProperties = new Hashtable();
-        for (Enumeration e = props.keys(); e.hasMoreElements(); ) {
-            String name = (String) e.nextElement();
-            String value = (String) props.get(name);
-
-            boolean resolved = false;
-            while (!resolved) { 
-                Vector propsInValue = new Vector();
-    
-                // assume it will be resolved
-                resolved = true;
-                boolean unresolvable = false;
-                if (extractProperties(value, propsInValue)) {
-                    for (int i=0; i < propsInValue.size(); i++) {
-                        String elem = (String) propsInValue.elementAt(i);
-                        if (elem.equals(name) || unresolvableProperties.containsKey(elem)) {
-                            // we won't try further resolving elements with circular 
-                            // property dependencies or dependencies on unresolvable elements
-                            unresolvable = true;
-                            break;
-                        }
-                        
-                        if (project.getProperties().containsKey(elem) ||
-                            props.containsKey(elem)) {
-                            resolved = false;
-                        }
-                    }
-                }
-    
-                if (unresolvable) {
-                    unresolvableProperties.put(name, value);
-                    resolved = true;
-                }
-    
-                if (!resolved) {
-                    value = ProjectHelper.replaceProperties(project, value,
-                                                               project.getProperties());
-                    value = ProjectHelper.replaceProperties(project, value, props);
-                    props.put(name, value);
-                }    
-            }
-        }
-    }
-
-    private boolean extractProperties(String source, Vector properties) {
-        // This is an abreviated version of 
-        // ProjectHelper.replaceProperties method
-        int i=0;
-        int prev=0;
-        int pos;
-
-        while( (pos=source.indexOf( "$", prev )) >= 0 ) {
-            if( pos == (source.length() - 1)) {
-                prev = pos + 1;
-            } else if (source.charAt( pos + 1 ) != '{' ) {
-                prev=pos+2;
-            } else {
-                int endName=source.indexOf( '}', pos );
-                String n=source.substring( pos+2, endName );
-                properties.addElement(n);
-                prev=endName+1;
-            }
-        }
-        
-        return (properties.size() > 0);
-    }
-    
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/PumpStreamHandler.java b/src/main/org/apache/tools/ant/taskdefs/PumpStreamHandler.java
deleted file mode 100644
index f4e9ba2..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/PumpStreamHandler.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * Copies standard output and error of subprocesses to standard output and
- * error of the parent process.
- *
- * TODO: standard input of the subprocess is not implemented.
- *
- * @author thomas.haas@softwired-inc.com
- */
-public class PumpStreamHandler implements ExecuteStreamHandler {
-
-    private Thread inputThread;
-    private Thread errorThread;
-
-    private OutputStream out, err;
-
-    public PumpStreamHandler(OutputStream out, OutputStream err) {
-        this.out = out;
-        this.err = err;
-    }
-
-    public PumpStreamHandler(OutputStream outAndErr) {
-        this(outAndErr, outAndErr);
-    }
-
-    public PumpStreamHandler() {
-        this(System.out, System.err);
-    }
-
-    public void setProcessOutputStream(InputStream is) {
-        createProcessOutputPump(is, out);
-    }
-
-
-    public void setProcessErrorStream(InputStream is) {
-        createProcessErrorPump(is, err);
-    }
-
-
-    public void setProcessInputStream(OutputStream os) {
-    }
-
-
-    public void start() {
-        inputThread.start();
-        errorThread.start();
-    }
-
-
-    public void stop() {
-        try {
-            inputThread.join();
-        } catch(InterruptedException e) {}
-        try {
-            errorThread.join();
-        } catch(InterruptedException e) {}
-    }
-
-    protected void createProcessOutputPump(InputStream is, OutputStream os) {
-        inputThread = createPump(is, os);
-    }
-
-    protected void createProcessErrorPump(InputStream is, OutputStream os) {
-        errorThread = createPump(is, os);
-    }
-
-
-    /**
-     * Creates a stream pumper to copy the given input stream to the given output stream.
-     */
-    protected Thread createPump(InputStream is, OutputStream os) {
-        final Thread result = new Thread(new StreamPumper(is, os));
-        result.setDaemon(true);
-        return result;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Rename.java b/src/main/org/apache/tools/ant/taskdefs/Rename.java
deleted file mode 100644
index db1fa03..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Rename.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-
-import java.io.File;
-
-/**
- * Renames a file.
- *
- * @author haas@softwired.ch
- *
- * @deprecated The rename task is deprecated.  Use move instead.
- */
-public class Rename extends Task {
-
-    private File src;
-    private File dest;
-    private boolean replace = true;
-
-
-    /**
-     * Sets the file to be renamed.
-     * @param src the file to rename
-     */
-    public void setSrc(String src) {
-        this.src = project.resolveFile(src);
-    }
-
-    /**
-     * Sets the new name of the file.
-     * @param dest the new name of the file.
-     */
-    public void setDest(String dest) {
-        this.dest = project.resolveFile(dest);
-    }
-
-    /**
-     * Sets wheter an existing file should be replaced.
-     * @param replace <code>on</code>, if an existing file should be replaced.
-     */
-    public void setReplace(String replace) {
-        this.replace = project.toBoolean(replace);
-    }
-
-
-    /**
-     * Renames the file <code>src</code> to <code>dest</code>
-     * @exception org.apache.tools.ant.BuildException The exception is
-     * thrown, if the rename operation fails.
-     */
-    public void execute() throws BuildException {
-        log("DEPRECATED - The rename task is deprecated.  Use move instead.");
-
-        if (dest == null) {
-            throw new BuildException("dest attribute is required", location);
-        }
-
-        if (src == null) {
-            throw new BuildException("src attribute is required", location);
-        }
-
-        if (replace && dest.exists()) {
-            if (!dest.delete()) {
-                throw new BuildException("Unable to remove existing file " +
-                      dest);
-            }
-       }
-        if (!src.renameTo(dest)) {
-            throw new BuildException("Unable to rename " + src + " to " +
-                  dest);
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Replace.java b/src/main/org/apache/tools/ant/taskdefs/Replace.java
deleted file mode 100644
index 559e156..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Replace.java
+++ /dev/null
@@ -1,452 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import java.io.*;
-import java.util.*;
-
-/**
- * Replaces all occurrences of one or more string tokens with given
- * values in the indicated files. Each value can be either a string 
- * or the value of a property available in a designated property file.
- *
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- * @author <a href="mailto:erik@desknetinc.com">Erik Langenbach</a>
- */
-public class Replace extends MatchingTask {
-    
-    private File src = null;
-    private NestedString token = null;
-    private NestedString value = new NestedString();
-
-    private File propertyFile = null;
-    private Properties properties = null;
-    private Vector replacefilters = new Vector();
-
-    private File dir = null;
-   
-    //Inner class
-    public class NestedString {
-
-        private StringBuffer buf = new StringBuffer();
-
-        public void addText(String val) {
-            buf.append(val);
-        }
-
-        public String getText() {
-            return buf.toString();
-        }
-    }
-
-    //Inner class
-    public class Replacefilter
-    {
-        private String token;
-        private String value;
-        private String property;
-
-        public void validate() throws BuildException {
-            //Validate mandatory attributes
-            if (token == null) {
-                String message = "token is a mandatory attribute " + "of replacefilter.";
-                throw new BuildException(message);
-            }
-
-            if ("".equals(token)) {
-                String message ="The token attribute must not be an empty string.";
-                throw new BuildException(message);
-            }
-
-            //value and property are mutually exclusive attributes
-            if ((value != null) && (property != null)) {
-                String message = "Either value or property " + "can be specified, but a replacefilter " + "element cannot have both.";
-                throw new BuildException(message);
-            }
-
-            if ((property != null)) {
-                //the property attribute must have access to a property file
-                if (propertyFile == null) {
-                    String message = "The replacefilter's property attribute " + "can only be used with the replacetask's " + "propertyFile attribute.";
-                    throw new BuildException(message);
-                }
-
-                //Make sure property exists in property file
-                if (properties == null ||
-                        properties.getProperty(property) == null) {
-                    String message = "property \"" + property + "\" was not found in " + propertyFile.getPath();
-                    throw new BuildException(message);
-                }
-            }
-        }
-
-        public String getReplaceValue()
-        {
-            if (property != null) {
-                return (String)properties.getProperty(property);
-            }
-            else if (value != null) {
-                return value;
-            }
-            else if (Replace.this.value != null) {
-                return Replace.this.value.getText();
-            }
-            else {
-                //Default is empty string
-                return new String("");
-            }
-        }
-
-        public void setToken(String token) {
-            this.token = token;
-        }
-
-        public String getToken() {
-            return token;
-        }
-
-        public void setValue(String value) {
-            this.value = value;
-        }
-
-        public String getValue() {
-            return value;
-        }
-
-        public void setProperty(String property) {
-            this.property = property;
-        }
-
-        public String getProperty() {
-            return property;
-        }
-    }
-
-    /**
-     * Do the execution.
-     */
-    public void execute() throws BuildException {
-        validateAttributes();
-
-        if (propertyFile != null) {
-            properties = getProperties(propertyFile);
-        }
-
-        validateReplacefilters();
-
-        if (src != null) {
-            processFile(src);
-        }
-
-        if (dir != null) {
-        DirectoryScanner ds = super.getDirectoryScanner(dir);
-            String[] srcs = ds.getIncludedFiles();
-
-            for(int i=0; i<srcs.length; i++) {
-                File file = new File(dir,srcs[i]);
-                processFile(file);
-            }
-        }
-    }
-    
-    /**
-     * Validate attributes provided for this task in .xml build file.
-     *
-     * @exception BuildException if any supplied attribute is invalid or any
-     * mandatory attribute is missing
-     */
-    public void validateAttributes() throws BuildException {
-        if (src == null && dir == null) {
-            String message = "Either the file or the dir attribute " + "must be specified";
-            throw new BuildException(message, location);
-        }
-        if (propertyFile != null && !propertyFile.exists()) {
-            String message = "Property file " + propertyFile.getPath() + " does not exist.";
-            throw new BuildException(message, location);
-        }
-        if (token == null && replacefilters.size() == 0) {
-            String message = "Either token or a nested replacefilter "
-                + "must be specified";
-            throw new BuildException(message, location);
-        }
-        if (token != null && "".equals(token.getText())) {
-            String message ="The token attribute must not be an empty string.";
-            throw new BuildException(message, location);
-        }
-    }
-
-    /**
-     * Validate nested elements.
-     *
-     * @exception BuildException if any supplied attribute is invalid or any
-     * mandatory attribute is missing
-     */
-    public void validateReplacefilters()
-            throws BuildException {
-        for (int i = 0; i < replacefilters.size(); i++) {
-            Replacefilter element = (Replacefilter) replacefilters.elementAt(i);
-            element.validate();
-        }
-    }
-
-    public Properties getProperties(File propertyFile) throws BuildException {
-        Properties properties = new Properties();
-
-        try {
-            properties.load(new FileInputStream(propertyFile));
-        }
-        catch (FileNotFoundException e) {
-            String message = "Property file (" + propertyFile.getPath() + ") not found.";
-            throw new BuildException(message);
-        }
-        catch (IOException e) {
-            String message = "Property file (" + propertyFile.getPath() + ") cannot be loaded.";
-            throw new BuildException(message);
-        }
-
-        return properties;
-    }
-
-    /**
-     * Perform the replacement on the given file.
-     *
-     * The replacement is performed on a temporary file which then
-     * replaces the original file.
-     *
-     * @param src the source file
-     */
-    private void processFile(File src) throws BuildException {
-        if (!src.exists()) {
-            throw new BuildException("Replace: source file " + src.getPath() + " doesn't exist", location);
-        }
-
-        File temp = new File(src.getPath() + ".temp");
-
-        if (temp.exists()) {
-            throw new BuildException("Replace: temporary file " + temp.getPath() + " already exists", location);
-        }
-
-        try {
-            BufferedReader br = new BufferedReader(new FileReader(src));
-            BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
-
-            // read the entire file into a char[]
-            int fileLength = (int)(src.length());
-            char[] tmpBuf = new char[fileLength];
-            int numread = 0;
-            int totread = 0;
-            while (numread != -1 && totread < fileLength) {
-                numread = br.read(tmpBuf,totread,fileLength);
-                totread += numread;
-            }
-
-            // create a String so we can use indexOf
-            String buf = new String(tmpBuf);
-
-            //Preserve original string (buf) so we can compare the result
-            String newString = new String(buf);
-
-            if (token != null)
-            {
-                // line separators in values and tokens are "\n"
-                // in order to compare with the file contents, replace them
-                // as needed
-                String linesep = System.getProperty("line.separator");
-                String val = stringReplace(value.getText(), "\n", linesep);
-                String tok = stringReplace(token.getText(), "\n", linesep);
-
-                // for each found token, replace with value
-                log("Replacing in " + src.getPath() + ": " + token.getText() + " --> " + value.getText(), Project.MSG_VERBOSE);
-                newString = stringReplace(newString, tok, val);
-            }
-
-            if (replacefilters.size() > 0) {
-                newString = processReplacefilters(newString, src.getPath());
-            }
-
-            boolean changes = !newString.equals(buf);
-            if (changes) {
-                bw.write(newString,0,newString.length());
-                bw.flush();
-            }
-
-            // cleanup
-            bw.close();
-            br.close();
-
-            // If there were changes, move the new one to the old one;
-            // otherwise, delete the new one
-            if (changes) {
-                src.delete();
-                temp.renameTo(src);
-            } else {
-                temp.delete();
-            }
-        } catch (IOException ioe) {
-            ioe.printStackTrace();
-            throw new BuildException(ioe, location);
-        }
-    }
-
-    private String processReplacefilters(String buffer, String filename) {
-        String newString = new String(buffer);
-
-        for (int i = 0; i < replacefilters.size(); i++) {
-            Replacefilter filter = (Replacefilter) replacefilters.elementAt(i);
-
-            //for each found token, replace with value
-            log("Replacing in " + filename + ": " + filter.getToken() + " --> " + filter.getReplaceValue(), Project.MSG_VERBOSE);
-            newString = stringReplace(newString, filter.getToken(), filter.getReplaceValue());
-        }
-
-        return newString;
-    }
-
-
-    /**
-     * Set the source file.
-     */
-    public void setFile(File file) {
-        this.src = file;
-    }
-
-    /**
-     * Set the source files path when using matching tasks.
-     */
-    public void setDir(File dir) {
-        this.dir = dir;
-    }
-
-    /**
-     * Set the string token to replace.
-     */
-    public void setToken(String token) {
-        createReplaceToken().addText(token);
-    }
-
-    /**
-     * Set the string value to use as token replacement.
-     */
-    public void setValue(String value) {
-        createReplaceValue().addText(value);
-    }
-
-    /**
-     * Nested <replacetoken> element.
-     */
-    public NestedString createReplaceToken() {
-        if (token == null) {
-            token = new NestedString();
-        }
-        return token;
-    }
-
-    /**
-     * Nested <replacevalue> element.
-     */
-    public NestedString createReplaceValue() {
-        return value;
-    }
-
-    /**
-     * Sets a file to be searched for property values.
-     */
-    public void setPropertyFile(String filename) {
-        propertyFile = project.resolveFile(filename);
-    }
-
-    /**
-     * Add nested <replacefilter> element.
-     */
-    public Replacefilter createReplacefilter() {
-        Replacefilter filter = new Replacefilter();
-        replacefilters.addElement(filter);
-        return filter;
-    }
-
-    /**
-     * Replace occurrences of str1 in string str with str2
-     */    
-    private String stringReplace(String str, String str1, String str2) {
-        StringBuffer ret = new StringBuffer();
-        int start = 0;
-        int found = str.indexOf(str1);
-        while (found >= 0) {
-            // write everything up to the found str1
-            if (found > start) {
-                ret.append(str.substring(start, found));
-            }
-
-            // write the replacement str2
-            if (str2 != null) {
-                ret.append(str2);
-            }
-
-            // search again
-            start = found + str1.length();
-            found = str.indexOf(str1,start);
-        }
-
-        // write the remaining characters
-        if (str.length() > start) {
-            ret.append(str.substring(start, str.length()));
-        }
-
-        return ret.toString();
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Rmic.java b/src/main/org/apache/tools/ant/taskdefs/Rmic.java
deleted file mode 100644
index a020fd1..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Rmic.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.AntClassLoader;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.Reference;
-import org.apache.tools.ant.util.*;
-
-import java.io.*;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import java.util.Date;
-
-/**
- * Task to compile RMI stubs and skeletons. This task can take the following
- * arguments:
- * <ul>
- * <li>base: The base directory for the compiled stubs and skeletons
- * <li>class: The name of the class to generate the stubs from
- * <li>stubVersion: The version of the stub prototol to use (1.1, 1.2, compat)
- * <li>sourceBase: The base directory for the generated stubs and skeletons
- * <li>classpath: Additional classpath, appended before the system classpath
- * <li>iiop: Generate IIOP compatable output 
- * <li>iiopopts: Include IIOP options 
- * <li>idl: Generate IDL output 
- * <li>idlopts: Include IDL options 
- * </ul>
- * Of these arguments, <b>base</b> is required.
- * <p>
- * If classname is specified then only that classname will be compiled. If it
- * is absent, then <b>base</b> is traversed for classes according to patterns.
- * <p>
- *
- * @author duncan@x180.com
- * @author ludovic.claude@websitewatchers.co.uk
- * @author David Maclean <a href="mailto:david@cm.co.za">david@cm.co.za</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-
-public class Rmic extends MatchingTask {
-
-    private File baseDir;
-    private String classname;
-    private File sourceBase;
-    private String stubVersion;
-    private Path compileClasspath;
-    private boolean verify = false;
-    private boolean filtering = false;
-
-    private boolean iiop = false;
-    private String  iiopopts;
-    private boolean idl  = false;
-    private String  idlopts;
-    private boolean debug  = false;
-
-    private Vector compileList = new Vector();
-
-    private ClassLoader loader = null;
-
-    public void setBase(File base) {
-        this.baseDir = base;
-    }
-
-    public void setClassname(String classname) {
-        this.classname = classname;
-    }
-
-    public void setSourceBase(File sourceBase) {
-        this.sourceBase = sourceBase;
-    }
-
-    public void setStubVersion(String stubVersion) {
-        this.stubVersion = stubVersion;
-    }
-
-    public void setFiltering(boolean filter) {
-        filtering = filter;
-    }
-
-    public void setDebug(boolean debug) {
-        this.debug = debug;
-    }
-
-    /**
-     * Set the classpath to be used for this compilation.
-     */
-    public void setClasspath(Path classpath) {
-        if (compileClasspath == null) {
-            compileClasspath = classpath;
-        } else {
-            compileClasspath.append(classpath);
-        }
-    }
-
-    /**
-     * Creates a nested classpath element.
-     */
-    public Path createClasspath() {
-        if (compileClasspath == null) {
-            compileClasspath = new Path(project);
-        }
-        return compileClasspath.createPath();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-    /**
-     * Indicates that the classes found by the directory match should be
-     * checked to see if they implement java.rmi.Remote.
-     * This defaults to false if not set.  */
-    public void setVerify(boolean verify) {
-        this.verify = verify;
-    }
-
-    /**
-     * Indicates that IIOP compatible stubs should
-     * be generated.  This defaults to false 
-     * if not set.  
-     */
-    public void setIiop(boolean iiop) {
-        this.iiop = iiop;
-    }
-
-    /**
-     * pass additional arguments for iiop 
-     */
-    public void setIiopopts(String iiopopts) {
-        this.iiopopts = iiopopts;
-    }
-
-    /**
-     * Indicates that IDL output should be 
-     * generated.  This defaults to false 
-     * if not set.  
-     */
-    public void setIdl(boolean idl) {
-        this.idl = idl;
-    }
-
-    /**
-     * pass additional arguments for idl compile 
-     */
-    public void setIdlopts(String idlopts) {
-        this.idlopts = idlopts;
-    }
-
-    public void execute() throws BuildException {
-        if (baseDir == null) {
-            throw new BuildException("base attribute must be set!", location);
-        }
-        if (!baseDir.exists()) {
-            throw new BuildException("base does not exist!", location);
-        }
-
-        if (verify) {
-            log("Verify has been turned on.", Project.MSG_INFO);
-        }
-        if (iiop) {
-            log("IIOP has been turned on.", Project.MSG_INFO);
-            if( iiopopts != null ) {
-                log("IIOP Options: " + iiopopts, Project.MSG_INFO );
-            }
-        }
-        if (idl) {
-            log("IDL has been turned on.", Project.MSG_INFO);
-            if( idlopts != null ) {
-                log("IDL Options: " + idlopts, Project.MSG_INFO );
-            }
-        }
-
-        Path classpath = getCompileClasspath(baseDir);
-        loader = new AntClassLoader(project, classpath);
-
-        // scan base dirs to build up compile lists only if a
-        // specific classname is not given
-        if (classname == null) {
-            DirectoryScanner ds = this.getDirectoryScanner(baseDir);
-            String[] files = ds.getIncludedFiles();
-            scanDir(baseDir, files);
-        } else {
-            // otherwise perform a timestamp comparison - at least
-            scanDir(baseDir, 
-                    new String[] {classname.replace('.', File.separatorChar) + ".class"});
-        }
-        
-        // XXX
-        // need to provide an input stream that we read in from!
-
-        OutputStream logstr = new LogOutputStream(this, Project.MSG_WARN);
-        sun.rmi.rmic.Main compiler = new sun.rmi.rmic.Main(logstr, "rmic");
-        Commandline cmd = new Commandline();
-        
-        cmd.createArgument().setValue("-d");
-        cmd.createArgument().setFile(baseDir);
-        cmd.createArgument().setValue("-classpath");
-        cmd.createArgument().setPath(classpath);
-        if (null != stubVersion) {
-            if ("1.1".equals(stubVersion))
-                cmd.createArgument().setValue("-v1.1");
-            else if ("1.2".equals(stubVersion))
-                cmd.createArgument().setValue("-v1.2");
-            else
-                cmd.createArgument().setValue("-vcompat");
-        }
-        if (null != sourceBase)
-            cmd.createArgument().setValue("-keepgenerated");
-
-        if( iiop ) {
-            cmd.createArgument().setValue("-iiop");
-            if( iiopopts != null ) 
-                cmd.createArgument().setValue(iiopopts);
-        }
-
-        if( idl )  {
-            cmd.createArgument().setValue("-idl");
-            if( idlopts != null ) 
-                cmd.createArgument().setValue(idlopts);
-        }
-        if( debug )  {
-            cmd.createArgument().setValue("-g");
-        }
-
-        int fileCount = compileList.size();
-        if (fileCount > 0) {
-            log("RMI Compiling " + fileCount +
-                " class"+ (fileCount > 1 ? "es" : "")+" to " + baseDir, 
-                Project.MSG_INFO);
-            
-            for (int j = 0; j < fileCount; j++) {
-                cmd.createArgument().setValue((String) compileList.elementAt(j));
-            }
-            log("Compilation args: " + cmd.toString(), Project.MSG_VERBOSE);
-            compiler.compile(cmd.getArguments());
-        }
-
-        // Move the generated source file to the base directory
-        if (null != sourceBase) {
-            for (int j = 0; j < fileCount; j++) {
-                moveGeneratedFile(baseDir, sourceBase, (String) compileList.elementAt(j));
-            }
-        }
-        compileList.removeAllElements();
-    }
-
-    /**
-     * Move the generated source file(s) to the base directory
-     *
-     * @exception org.apache.tools.ant.BuildException When error copying/removing files.
-     */
-    private void moveGeneratedFile (File baseDir, File sourceBaseFile, String classname)
-            throws BuildException {
-        String stubFileName = classname.replace('.', File.separatorChar) + "_Stub.java";
-        File oldStubFile = new File(baseDir, stubFileName);
-        File newStubFile = new File(sourceBaseFile, stubFileName);
-        try {
-            project.copyFile(oldStubFile, newStubFile, filtering);
-            oldStubFile.delete();
-        } catch (IOException ioe) {
-            String msg = "Failed to copy " + oldStubFile + " to " +
-                newStubFile + " due to " + ioe.getMessage();
-            throw new BuildException(msg, ioe, location);
-        }
-        if (!"1.2".equals(stubVersion)) {
-            String skelFileName = classname.replace('.', '/') + "_Skel.java";
-            File oldSkelFile = new File(baseDir, skelFileName);
-            File newSkelFile = new File(sourceBaseFile, skelFileName);
-            try {
-                project.copyFile(oldSkelFile, newSkelFile, filtering);
-                oldSkelFile.delete();
-            } catch (IOException ioe) {
-                String msg = "Failed to copy " + oldSkelFile + " to " +
-                              newSkelFile + " due to " + ioe.getMessage();
-                throw new BuildException(msg, ioe, location);
-            }
-        }
-    }
-
-    /**
-     * Scans the directory looking for class files to be compiled.
-     * The result is returned in the class variable compileList.
-     */
-
-    protected void scanDir(File baseDir, String files[]) {
-        SourceFileScanner sfs = new SourceFileScanner(this);
-        String[] newFiles = sfs.restrict(files, baseDir, baseDir,
-                                         new RmicFileNameMapper());
-        for (int i = 0; i < newFiles.length; i++) {
-            String classname = newFiles[i].replace(File.separatorChar, '.');
-            classname = classname.substring(0, classname.indexOf(".class"));
-            compileList.addElement(classname);
-        }
-    }
- 
-    /**
-     * Builds the compilation classpath.
-     */
-
-    // XXX
-    // we need a way to not use the current classpath.
-
-    private Path getCompileClasspath(File baseFile) {
-        // add dest dir to classpath so that previously compiled and
-        // untouched classes are on classpath
-        Path classpath = new Path(project, baseFile.getAbsolutePath());
-
-        // Combine the build classpath with the system classpath, in an 
-        // order determined by the value of build.classpath
-        if (compileClasspath == null) {
-            classpath.addExisting(Path.systemClasspath);
-        } else {
-            classpath.addExisting(compileClasspath.concatSystemClasspath());
-        }
-
-        // in jdk 1.2, the system classes are not on the visible classpath.
-        if (Project.getJavaVersion().startsWith("1.2")) {
-            String bootcp = System.getProperty("sun.boot.class.path");
-            if (bootcp != null) {
-                classpath.addExisting(new Path(project, bootcp));
-            }
-        }
-        return classpath;
-    }
-
-    /**
-     * Mapper that possibly returns two file names, *_Stub and *_Skel.
-     */
-    private class RmicFileNameMapper implements FileNameMapper {
-
-        private GlobPatternMapper stubMapper;
-        private GlobPatternMapper skelMapper;
-
-        RmicFileNameMapper() {
-            stubMapper = new GlobPatternMapper();
-            stubMapper.setFrom("*.class");
-            stubMapper.setTo("*_Stub.class");
-
-            // no _Skel file in stub version 1.2
-            if (!"1.2".equals(stubVersion)) {
-                skelMapper = new GlobPatternMapper();
-                skelMapper.setFrom("*.class");
-                skelMapper.setTo("*_Skel.class");
-            }
-        }
-
-        /**
-         * Empty implementation.
-         */
-        public void setFrom(String s) {}
-        /**
-         * Empty implementation.
-         */
-        public void setTo(String s) {}
-
-        public String[] mapFileName(String name) {
-            String[] stubName = stubMapper.mapFileName(name);
-
-            if (stubName == null || name.endsWith("_Stub.class") 
-                || name.endsWith("_Skel.class")) {
-                // Not a .class file
-                return null;
-            }
-
-            String classname = name.replace(File.separatorChar, '.');
-            classname = classname.substring(0, classname.indexOf(".class"));
-            if (verify) {
-                try {
-                    Class testClass = loader.loadClass(classname);
-                    // One cannot RMIC an interface
-                    if (testClass.isInterface() || 
-                        !isValidRmiRemote(testClass)) {
-                        return null;
-                    }
-                } catch (ClassNotFoundException e) {
-                    log("Unable to verify class " + classname + 
-                        ". It could not be found.", Project.MSG_WARN);
-                } catch (NoClassDefFoundError e) {
-                    log("Unable to verify class " + classname + 
-                        ". It is not defined.", Project.MSG_WARN);
-                }
-            }
-
-            if (skelMapper != null) {
-                return new String[] {
-                    stubName[0], 
-                    skelMapper.mapFileName(name)[0]
-                };
-            } else {
-                return stubName;
-            }
-        }
-
-        /**
-         * Check to see if the class or superclasses/interfaces implement
-         * java.rmi.Remote.
-         */
-        private boolean isValidRmiRemote (Class testClass) {
-            Class rmiRemote = java.rmi.Remote.class;
-            
-            if (rmiRemote.equals(testClass)) {
-                // This class is java.rmi.Remote
-                return true;
-            }
-            
-            Class [] interfaces = testClass.getInterfaces();
-            if (interfaces != null) {
-                for (int i = 0; i < interfaces.length; i++) {
-                    if (rmiRemote.equals(interfaces[i])) {
-                        // This class directly implements java.rmi.Remote
-                        return true;
-                    }
-                    if (isValidRmiRemote(interfaces[i])) {
-                        return true;
-                    }
-                }
-            }
-            return false;
-        }
-        
-    }
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
deleted file mode 100644
index 78d7173..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
+++ /dev/null
@@ -1,620 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-import java.io.*;
-import java.util.Enumeration;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import java.util.Properties;
-import java.util.zip.*;
-import java.sql.*;
-
-/**
- * Reads in a text file containing SQL statements seperated with semicolons
- * and executes it in a given db.
- * Both -- and // maybe used as comments.
- * 
- * @author <a href="mailto:jeff@custommonkey.org">Jeff Martin</a>
- */
-public class SQLExec extends Task {
-    
-    private int goodSql = 0, totalSql = 0;
-
-    private Path classpath;
-
-    private AntClassLoader loader;
-
-    /**
-     * Database connection
-     */
-    private Connection conn = null;
-    
-    /**
-     * Autocommit flag. Default value is false
-     */
-    private boolean autocommit=false;
-    
-    /**
-     * SQL statement
-     */
-    private Statement statement = null;
-
-    /**
-     * DB driver.
-     */
-    private String driver = null;
-
-    /**
-     * DB url.
-     */
-    private String url = null;
-
-    /**
-     * User name.
-     */
-    private String userId = null;
-
-    /**
-     * Password
-     */
-    private String password = null;
-
-    /**
-     * SQL input file
-     */
-    private File srcFile = null;
-
-    /**
-     * SQL input command
-     */
-    private String sqlCommand = "";
-
-    /**
-     * SQL transactions to perform
-     */
-    private Vector transactions = new Vector();
-
-    /**
-     * Print SQL results.
-     */
-    private boolean print = false;
-
-    /**
-     * Print header columns.
-     */
-    private boolean showheaders = true;
-
-    /**
-     * Results Output file.
-     */
-    private File output = null;
-
-    /**
-     * RDBMS Product needed for this SQL.
-     **/
-    private String rdbms = null;
-
-    /**
-     * RDBMS Version needed for this SQL.
-     **/
-    private String version = null;
-
-    /**
-     * Action to perform if an error is found
-     **/
-    private String onError = "abort";
-
-    /**
-     * Set the classpath for loading the driver.
-     */
-    public void setClasspath(Path classpath) {
-        if (this.classpath == null) {
-            this.classpath = classpath;
-        } else {
-            this.classpath.append(classpath);
-        }
-    }
-
-    /**
-     * Create the classpath for loading the driver.
-     */
-    public Path createClasspath() {
-        if (this.classpath == null) {
-            this.classpath = new Path(project);
-        }
-        return this.classpath.createPath();
-    }
-
-    /**
-     * Set the classpath for loading the driver using the classpath reference.
-     */
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-    
-    /**
-     * Set the name of the sql file to be run.
-     */
-    public void setSrc(File srcFile) {
-        this.srcFile = srcFile;
-    }
-    
-    /**
-     * Set the sql command to execute
-     */
-    public void addText(String sql) {
-        this.sqlCommand += sql;
-    }
-    
-    /**
-     * Set the sql command to execute
-     */
-    public Transaction createTransaction() {
-      Transaction t = new Transaction();
-      transactions.addElement(t);
-      return t;
-    }
-    
-    /**
-     * Set the JDBC driver to be used.
-     */
-    public void setDriver(String driver) {
-        this.driver = driver;
-    }
-    
-    /**
-     * Set the DB connection url.
-     */
-    public void setUrl(String url) {
-        this.url = url;
-    }
-    
-    /**
-     * Set the user name for the DB connection.
-     */
-    public void setUserid(String userId) {
-        this.userId = userId;
-    }
-    
-    /**
-     * Set the password for the DB connection.
-     */
-    public void setPassword(String password) {
-        this.password = password;
-    }
-    
-    /**
-     * Set the autocommit flag for the DB connection.
-     */
-    public void setAutocommit(boolean autocommit) {
-        this.autocommit = autocommit;
-    }
-
-    /**
-     * Set the print flag.
-     */
-    public void setPrint(boolean print) {
-        this.print = print;
-    }
-    
-    /**
-     * Set the showheaders flag.
-     */
-    public void setShowheaders(boolean showheaders) {
-        this.showheaders = showheaders;
-    }
-
-    /**
-     * Set the output file.
-     */
-    public void setOutput(File output) {
-        this.output = output;
-    }
-
-    /**
-     * Set the rdbms required
-     */
-    public void setRdbms(String vendor) {
-        this.rdbms = vendor.toLowerCase();
-    }
-
-    /**
-     * Set the version required
-     */
-    public void setVersion(String version) {
-        this.version = version.toLowerCase();
-    }
-
-    /**
-     * Set the action to perform onerror
-     */
-    public void setOnerror(OnError action) {
-        this.onError = action.getValue();
-    }
-
-    /**
-     * Load the sql file and then execute it
-     */
-    public void execute() throws BuildException {
-        sqlCommand = sqlCommand.trim();
-
-        if (srcFile == null && sqlCommand.length() == 0) { 
-            if (transactions.size() == 0) {
-                throw new BuildException("Source file, transactions or sql statement must be set!", location);
-            }
-        } else {
-            // Make a transaction group for the outer command
-            Transaction t = createTransaction();
-            t.setSrc(srcFile);
-            t.addText(sqlCommand);
-        }
-
-        if (driver == null) {
-            throw new BuildException("Driver attribute must be set!", location);
-        }
-        if (userId == null) {
-            throw new BuildException("User Id attribute must be set!", location);
-        }
-        if (password == null) {
-            throw new BuildException("Password attribute must be set!", location);
-        }
-        if (url == null) {
-            throw new BuildException("Url attribute must be set!", location);
-        }
-        if (srcFile != null && !srcFile.exists()) {
-            throw new BuildException("Source file does not exist!", location);
-        }
-        Driver driverInstance = null;
-        // Load the driver using the 
-        try {
-            Class dc;
-            if (classpath != null) {
-                log( "Loading " + driver + " using AntClassLoader with classpath " + classpath, 
-                     Project.MSG_VERBOSE );
-
-                loader = new AntClassLoader(project, classpath, false);
-                dc = loader.loadClass(driver);
-            }
-            else {
-                log("Loading " + driver + " using system loader.", Project.MSG_VERBOSE);
-                dc = Class.forName(driver);
-            }
-            driverInstance = (Driver) dc.newInstance();
-        }catch(ClassNotFoundException e){
-            throw new BuildException("Class Not Found: JDBC driver " + driver + " could not be loaded", location);
-        }catch(IllegalAccessException e){
-            throw new BuildException("Illegal Access: JDBC driver " + driver + " could not be loaded", location);
-        }catch(InstantiationException e) {
-            throw new BuildException("Instantiation Exception: JDBC driver " + driver + " could not be loaded", location);
-        }
-
-        try{
-            log("connecting to " + url, Project.MSG_VERBOSE );
-            Properties info = new Properties();
-            info.put("user", userId);
-            info.put("password", password);
-            conn = driverInstance.connect(url, info);
-
-            if (conn == null) {
-                // Driver doesn't understand the URL
-                throw new SQLException("No suitable Driver for "+url);
-            }
-
-            if (!isValidRdbms(conn)) return;
-
-            conn.setAutoCommit(autocommit);
-
-            statement = conn.createStatement();
-
-            
-            PrintStream out = System.out;
-            try {
-                if (output != null) {
-                    log("Opening PrintStream to output file " + output, Project.MSG_VERBOSE);
-                    out = new PrintStream(new BufferedOutputStream(new FileOutputStream(output)));
-                }
-                        
-                // Process all transactions
-                for (Enumeration e = transactions.elements(); 
-                     e.hasMoreElements();) {
-                       
-                    ((Transaction) e.nextElement()).runTransaction(out);
-                    if (!autocommit) {
-                        log("Commiting transaction", Project.MSG_VERBOSE);
-                        conn.commit();
-                    }
-                }
-            }
-            finally {
-                if (out != null && out != System.out) {
-                    out.close();
-                }
-            }
-        } catch(IOException e){
-            if (!autocommit && conn != null && onError.equals("abort")) {
-                try {
-                    conn.rollback();
-                } catch (SQLException ex) {}
-            }
-            throw new BuildException(e, location);
-        } catch(SQLException e){
-            if (!autocommit && conn != null && onError.equals("abort")) {
-                try {
-                    conn.rollback();
-                } catch (SQLException ex) {}
-            }
-            throw new BuildException(e, location);
-        }
-        finally {
-            try {
-                if (statement != null) {
-                    statement.close();
-                }
-                if (conn != null) {
-                    conn.close();
-                }
-            }
-            catch (SQLException e) {}
-        }
-          
-        log(goodSql + " of " + totalSql + 
-            " SQL statements executed successfully");
-    }
-
-    protected void runStatements(Reader reader, PrintStream out) throws SQLException, IOException {
-        String sql = "";
-        String line = "";
- 
-        BufferedReader in = new BufferedReader(reader);
- 
-        try{
-            while ((line=in.readLine()) != null){
-                if (line.trim().startsWith("//")) continue;
-                if (line.trim().startsWith("--")) continue;
-
-                sql += " " + line;
-                sql = sql.trim();
-
-                // SQL defines "--" as a comment to EOL
-                // and in Oracle it may contain a hint
-                // so we cannot just remove it, instead we must end it
-                if (line.indexOf("--") >= 0) sql += "\n";
-
-                if (sql.endsWith(";")){
-                    log("SQL: " + sql, Project.MSG_VERBOSE);
-                    execSQL(sql.substring(0, sql.length()-1), out);
-                    sql = "";
-                }
-            }
- 
-            // Catch any statements not followed by ;
-            if(!sql.equals("")){
-                execSQL(sql, out);
-            }
-        }catch(SQLException e){
-            throw e;
-        }
-
-    }
- 
-    /**
-     * Verify if connected to the correct RDBMS
-     **/
-    protected boolean isValidRdbms(Connection conn) {
-        if (rdbms == null && version == null)
-            return true;
-        
-        try {
-            DatabaseMetaData dmd = conn.getMetaData();
-            
-            if (rdbms != null) {
-                String theVendor = dmd.getDatabaseProductName().toLowerCase();
-                
-                log("RDBMS = " + theVendor, Project.MSG_VERBOSE);
-                if (theVendor == null || theVendor.indexOf(rdbms) < 0) {
-                    log("Not the required RDBMS: "+rdbms, Project.MSG_VERBOSE);
-                    return false;
-                }
-            }
-            
-            if (version != null) {
-                String theVersion = dmd.getDatabaseProductVersion().toLowerCase();
-                
-                log("Version = " + theVersion, Project.MSG_VERBOSE);
-                if (theVersion == null || 
-                    !(theVersion.startsWith(version) || 
-                      theVersion.indexOf(" " + version) >= 0)) {
-                    log("Not the required version: \""+ version +"\"", Project.MSG_VERBOSE);
-                    return false;
-                }
-            }
-        }
-        catch (SQLException e) {
-            // Could not get the required information
-            log("Failed to obtain required RDBMS information", Project.MSG_ERR);
-            return false;
-        }
-        
-        return true;
-    }
-    
-    /**
-     * Exec the sql statement.
-     */
-    protected void execSQL(String sql, PrintStream out) throws SQLException {
-        // Check and ignore empty statements
-        if ("".equals(sql.trim())) return;
-        
-        try {  
-            totalSql++;
-            if (!statement.execute(sql)) {
-                log(statement.getUpdateCount()+" rows affected", 
-                    Project.MSG_VERBOSE);
-            }
-            
-            if (print) {
-                printResults(out);
-            }
-            
-            SQLWarning warning = conn.getWarnings();
-            while(warning!=null){
-                log(warning + " sql warning", Project.MSG_VERBOSE);
-                warning=warning.getNextWarning();
-            }
-            conn.clearWarnings();
-            goodSql++;
-        }
-        catch (SQLException e) {
-            log("Failed to execute: " + sql, Project.MSG_ERR);
-            if (!onError.equals("continue")) throw e;
-            log(e.toString(), Project.MSG_ERR);
-        }
-    }
-    
-    /**
-     * print any results in the statement.
-     */
-    protected void printResults(PrintStream out) throws java.sql.SQLException {
-        ResultSet rs = null;
-        do {
-            rs = statement.getResultSet();
-            if (rs != null) {
-      	        log("Processing new result set.", Project.MSG_VERBOSE);
-                ResultSetMetaData md = rs.getMetaData();
-                int columnCount = md.getColumnCount();
-                StringBuffer line = new StringBuffer();
-                if (showheaders) {
-                    for (int col = 1; col < columnCount; col++) {
-                         line.append(md.getColumnName(col));
-                         line.append(",");
-                    }
-                    line.append(md.getColumnName(columnCount));
-                    out.println(line);
-                    line.setLength(0);
-                }
-                while (rs.next()) {
-                    boolean first = true;
-                    for (int col = 1; col <= columnCount; col++) {
-                        String columnValue = rs.getString(col);
-                        if (columnValue != null) {
-                            columnValue = columnValue.trim();
-                        }
-                         
-                        if (first) {
-                            first = false;
-                        }
-                        else {
-                            line.append(",");
-                        }
-                        line.append(columnValue);
-                    }
-                    out.println(line);
-                    line.setLength(0);
-                }
-            }
-        }
-        while (statement.getMoreResults());
-        out.println();
-    }
-
-    /**
-     * Enumerated attribute with the values "continue", "stop" and "abort"
-     * for the onerror attribute.  
-     */
-    public static class OnError extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"continue", "stop", "abort"};
-        }
-    }
-
-    /**
-     * Contains the definition of a new transaction element.
-     * Transactions allow several files or blocks of statements
-     * to be executed using the same JDBC connection and commit
-     * operation in between.
-     */
-    public class Transaction {
-        private File tSrcFile = null;
-        private String tSqlCommand = "";
-
-        public void setSrc(File src) {
-            this.tSrcFile = src;
-        }
-
-        public void addText(String sql) {
-            this.tSqlCommand += sql;
-        }
-
-        private void runTransaction(PrintStream out) throws IOException, SQLException {
-            if (tSqlCommand.length() != 0) {
-                log("Executing commands", Project.MSG_INFO);
-                runStatements(new StringReader(tSqlCommand), out);
-            }
-      
-            if (tSrcFile != null) {
-                log("Executing file: " + tSrcFile.getAbsolutePath(), 
-                    Project.MSG_INFO);
-                FileReader reader = new FileReader(tSrcFile);
-                runStatements(reader, out);
-                reader.close();
-            }
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/SendEmail.java b/src/main/org/apache/tools/ant/taskdefs/SendEmail.java
deleted file mode 100644
index f345044..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/SendEmail.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
- 
-package org.apache.tools.ant.taskdefs;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.mail.MailMessage;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.BuildException;
-
-/**
- * A task to send SMTP email.
- * <p>
- * <table border="1" cellpadding="3" cellspacing="0">
- * <tr bgcolor="#CCCCFF">
- * <th>Attribute</th>
- * <th>Description</th>
- * <th>Required</th>
- * </tr>
- * <tr>
- * <td>from</td>
- * <td>Email address of sender.</td>
- * <td>Yes</td>
- * </tr>
- * <tr>
- * <td>mailhost</td>
- * <td>Host name of the mail server.</td>
- * <td>No, default to &quot;localhost&quot;</td>
- * </tr>
- * <tr>
- * <td>toList</td>
- * <td>Comma-separated list of recipients.</td>
- * <td>Yes</td>
- * </tr>
- * <tr>
- * <td>subject</td>
- * <td>Email subject line.</td>
- * <td>No</td>
- * </tr>
- * <tr>
- * <td>files</td>
- * <td>Filename(s) of text to send in the body of the email. Multiple files are
- *     comma-separated.</td>
- * <td rowspan="2">One of these two attributes</td>
- * </tr>
- * <tr>
- * <td>message</td>
- * <td>Message to send inthe body of the email.</td>
- * </tr>
- * </table>
- * <p>
- *
- * @author glenn_twiggs@bmc.com
- */
-public class SendEmail extends Task {
-    private String from;
-    private String mailhost = "localhost";
-    private String message;
-    private String toList;
-    private String subject;
-    private Vector files = new Vector();
-  
-    /** Creates new SendEmail */
-    public SendEmail() {
-    }
-
-    /**
-     * Sets the toList parameter of this build task.
-     *
-     * @param toList Comma-separated list of email recipient addreses.
-     */
-    public void setToList(String toList) {
-        this.toList = toList;
-    }
-  
-    /**
-     * Sets the from parameter of this build task.
-     *
-     * @param from Email address of sender.
-     */
-    public void setFrom(String from) {
-        this.from = from;
-    }
-  
-    /**
-     * Sets the mailhost parameter of this build task.
-     *
-     * @param mailhost Mail host name.
-     */
-    public void setMailhost(String mailhost) {
-        this.mailhost = mailhost;
-    }
-  
-    /**
-     * Sets the message parameter of this build task.
-     *
-     * @param message Message body of this email.
-     */
-    public void setMessage(String message) {
-        this.message = message;
-    }
-  
-    /**
-     * Sets the subject parameter of this build task.
-     *
-     * @param subject Subject of this email.
-     */
-    public void setSubject(String subject) {
-        this.subject = subject;
-    }
-
-    /**
-     * Sets the file parameter of this build task.
-     *
-     * @param filenames Filenames to include as the message body of this email.
-     */
-    public void setFiles(String filenames) {
-        StringTokenizer t = new StringTokenizer(filenames, ", ");
-    
-        while (t.hasMoreTokens()) {
-            files.addElement(project.resolveFile(t.nextToken()));
-        }
-    }
-
-    /**
-     * Executes this build task.
-     *
-     * throws org.apache.tools.ant.BuildException if there is an error during task
-     *        execution.
-     */
-    public void execute() {
-        try {
-            MailMessage mailMessage = new MailMessage(mailhost);
-
-            if (from != null) {
-                mailMessage.from(from);
-            } else {
-                throw new BuildException("Attribute \"from\" is required.");
-            }
-
-            if (toList != null) {
-                StringTokenizer t = new StringTokenizer(toList, ", ", false);
-
-                while (t.hasMoreTokens()) {
-                    mailMessage.to(t.nextToken());
-                }
-            } else {
-                throw new BuildException("Attribute \"toList\" is required.");
-            }
-
-            if (subject != null) {
-                mailMessage.setSubject(subject);
-            }
-
-            if (!files.isEmpty()) {
-                PrintStream out = mailMessage.getPrintStream();
-
-                for (Enumeration e = files.elements(); e.hasMoreElements(); ) {
-                    File file = (File)e.nextElement();
-
-                    if (file.exists() && file.canRead()) {
-                        int bufsize = 1024;
-                        int length;
-                        byte[] buf = new byte[bufsize];
-
-                        BufferedInputStream in = null;
-                        try {
-                            in = new BufferedInputStream(
-                                new FileInputStream(file), bufsize);
-    
-                            while ((length = in.read(buf, 0, bufsize)) != -1) {
-                                out.write(buf, 0, length);
-                            }
-                        } finally {
-                            if (in != null) {
-                                in.close();
-                            }
-                        }
-
-                    } else {
-                        throw new BuildException("File \"" + file.getName()
-                            + "\" does not exist or is not readable.");
-                    }
-                }
-            } else if (message != null) {
-                PrintStream out = mailMessage.getPrintStream();
-                out.print(message);
-            } else {
-                throw new BuildException("Attribute \"file\" or \"message\" is required.");
-            }
-
-            log("Sending email");
-            mailMessage.sendAndClose();
-        } catch (IOException ioe) {
-            throw new BuildException("IO error sending mail: " + ioe.getMessage());
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/SignJar.java b/src/main/org/apache/tools/ant/taskdefs/SignJar.java
deleted file mode 100644
index 3e85034..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/SignJar.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs;
-
-import java.io.File;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-
-/**
- * Sign a archive.
- * 
- * @author Peter Donald <a href="mailto:donaldp@apache.org">donaldp@apache.org</a>
- */
-public class SignJar extends Task {
-
-    /**
-     * The name of the jar file.
-     */
-    protected String jar;
-
-    /**
-     * The alias of signer.
-     */
-    protected String alias;
-
-    /**
-     * The name of keystore file.
-     */
-    protected String keystore;
-    protected String storepass;
-    protected String storetype;
-    protected String keypass;
-    protected String sigfile;
-    protected String signedjar;
-    protected boolean verbose;
-    protected boolean internalsf;
-    protected boolean sectionsonly;
-
-    public void setJar(final String jar) {
-        this.jar = jar;
-    } 
-
-    public void setAlias(final String alias) {
-        this.alias = alias;
-    } 
-
-    public void setKeystore(final String keystore) {
-        this.keystore = keystore;
-    } 
-
-    public void setStorepass(final String storepass) {
-        this.storepass = storepass;
-    } 
-
-    public void setStoretype(final String storetype) {
-        this.storetype = storetype;
-    } 
-
-    public void setKeypass(final String keypass) {
-        this.keypass = keypass;
-    } 
-
-    public void setSigfile(final String sigfile) {
-        this.sigfile = sigfile;
-    } 
-
-    public void setSignedjar(final String signedjar) {
-        this.signedjar = signedjar;
-    } 
-
-    public void setVerbose(final boolean verbose) {
-        this.verbose = verbose;
-    } 
-
-    public void setInternalsf(final boolean internalsf) {
-        this.internalsf = internalsf;
-    } 
-
-    public void setSectionsonly(final boolean sectionsonly) {
-        this.sectionsonly = sectionsonly;
-    } 
-
-    public void execute() throws BuildException {
-        if (project.getJavaVersion().equals(Project.JAVA_1_1)) {
-            throw new BuildException("The signjar task is only available on JDK versions 1.2 or greater");
-        } 
-
-        if (null == jar) {
-            throw new BuildException("jar attribute must be set");
-        } 
-
-        if (null == alias) {
-            throw new BuildException("alias attribute must be set");
-        } 
-
-        if (null == storepass) {
-            throw new BuildException("storepass attribute must be set");
-        } 
-
-        if(isUpToDate()) return;
-
-        final StringBuffer sb = new StringBuffer();
-
-        final ExecTask cmd = (ExecTask) project.createTask("exec");
-        cmd.setExecutable("jarsigner");
-        
-        if (null != keystore) {
-            cmd.createArg().setValue("-keystore");
-            cmd.createArg().setValue(keystore);
-        } 
-
-        if (null != storepass) {
-            cmd.createArg().setValue("-storepass");
-            cmd.createArg().setValue(storepass);
-        } 
-
-        if (null != storetype) {
-            cmd.createArg().setValue("-storetype");
-            cmd.createArg().setValue(storetype);
-        } 
-
-        if (null != keypass) {
-            cmd.createArg().setValue("-keypass");
-            cmd.createArg().setValue(keypass);
-        } 
-
-        if (null != sigfile) {
-            cmd.createArg().setValue("-sigfile");
-            cmd.createArg().setValue(sigfile);
-        } 
-
-        if (null != signedjar) {
-            cmd.createArg().setValue("-signedjar");
-            cmd.createArg().setValue(signedjar);
-        } 
-
-        if (verbose) {
-            cmd.createArg().setValue("-verbose");
-        } 
-
-        if (internalsf) {
-            cmd.createArg().setValue("-internalsf");
-        } 
-
-        if (sectionsonly) {
-            cmd.createArg().setValue("-sectionsonly");
-        } 
-
-        cmd.createArg().setValue(jar);
-        
-
-        cmd.createArg().setValue(alias);
-
-        log("Signing Jar : " + (new File(jar)).getAbsolutePath());
-        cmd.setFailonerror(true);
-        cmd.setTaskName( getTaskName() );
-        cmd.execute();
-    }
-
-    protected boolean isUpToDate() {
-
-        if( null != jar && null != signedjar ) {
-
-            final File jarFile = new File(jar);
-            final File signedjarFile = new File(signedjar);
-            
-            if(!jarFile.exists()) return false;
-            if(!signedjarFile.exists()) return false;
-            if(jarFile.equals(signedjarFile)) return false;
-            if(signedjarFile.lastModified() > jarFile.lastModified())
-                return true;
-        }
-
-        return false;
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/StreamPumper.java b/src/main/org/apache/tools/ant/taskdefs/StreamPumper.java
deleted file mode 100644
index be4ad79..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/StreamPumper.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Copies all data from an input stream to an output stream.
- *
- * @author thomas.haas@softwired-inc.com
- */
-public class StreamPumper implements Runnable {
-
-    // TODO: make SIZE and SLEEP instance variables.
-    // TODO: add a status flag to note if an error occured in run.
-
-    private final static int SLEEP = 5;
-    private final static int SIZE = 128;
-    private InputStream is;
-    private OutputStream os;
-
-
-    /**
-     * Create a new stream pumper.
-     *
-     * @param is input stream to read data from
-     * @param os output stream to write data to.
-     */
-    public StreamPumper(InputStream is, OutputStream os) {
-        this.is = is;
-        this.os = os;
-    }
-
-
-    /**
-     * Copies data from the input stream to the output stream.
-     *
-     * Terminates as soon as the input stream is closed or an error occurs.
-     */
-    public void run() {
-        final byte[] buf = new byte[SIZE];
-
-        int length;
-        try {
-            while ((length = is.read(buf)) > 0) {
-                os.write(buf, 0, length);
-                try {
-                    Thread.sleep(SLEEP);
-                } catch (InterruptedException e) {}
-            }
-        } catch(IOException e) {}
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Tar.java b/src/main/org/apache/tools/ant/taskdefs/Tar.java
deleted file mode 100644
index 8727a23..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Tar.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.util.*;
-import org.apache.tools.tar.*;
-import org.apache.tools.ant.types.*;
-
-/**
- * Creates a TAR archive.
- *
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-
-public class Tar extends MatchingTask {
-
-    // permissable values for longfile attribute
-    static public final String WARN = "warn";
-    static public final String FAIL = "fail";
-    static public final String TRUNCATE = "truncate";
-    static public final String GNU = "gnu";
-
-    File tarFile;
-    File baseDir;
-    
-    String longFileMode = WARN;
-    
-    Vector filesets = new Vector();
-    Vector fileSetFiles = new Vector();
-
-    public TarFileSet createFileSet() {
-        TarFileSet fileset = new TarFileSet();
-        filesets.addElement(fileset);
-        return fileset;
-    }
-    
-    
-    /**
-     * This is the name/location of where to create the tar file.
-     */
-    public void setTarfile(File tarFile) {
-        this.tarFile = tarFile;
-    }
-    
-    /**
-     * This is the base directory to look in for things to tar.
-     */
-    public void setBasedir(File baseDir) {
-        this.baseDir = baseDir;
-    }
-    
-    /**
-     * Set how to handle long files.
-     *
-     * Allowable values are
-     *   truncate
-     *   fail
-     *   warn
-     *   gnu
-     */
-    public void setLongfile(String mode) {
-        this.longFileMode = mode;
-    }
-
-    public void execute() throws BuildException {
-        if (tarFile == null) {
-            throw new BuildException("tarfile attribute must be set!", 
-                                     location);
-        }
-
-        if (baseDir != null) {
-            if (!baseDir.exists()) {
-                throw new BuildException("basedir does not exist!", location);
-            }
-            
-            // add the main fileset to the list of filesets to process.
-            TarFileSet mainFileSet = new TarFileSet(fileset);
-            mainFileSet.setDir(baseDir);
-            mainFileSet.setDefaultexcludes(useDefaultExcludes);
-            filesets.addElement(mainFileSet);
-        }
-
-        // check if tr is out of date with respect to each
-        // fileset
-        boolean upToDate = true;
-        for (Enumeration e = filesets.elements(); e.hasMoreElements();) {
-            TarFileSet fs = (TarFileSet)e.nextElement();
-            String[] files = fs.getFiles(project);
-            
-            if (!archiveIsUpToDate(files)) {
-                upToDate = false;
-                break;
-            }
-        }
-
-        if (upToDate) {
-            log("Nothing to do: "+tarFile.getAbsolutePath()+" is up to date.",
-                Project.MSG_INFO);
-            return;
-        }
-
-        log("Building tar: "+ tarFile.getAbsolutePath(), Project.MSG_INFO);
-
-        TarOutputStream tOut = null;
-        try {
-            tOut = new TarOutputStream(new FileOutputStream(tarFile));
-            tOut.setDebug(true);
-            tOut.setLongFileMode(TarOutputStream.LONGFILE_GNU);
-        
-            for (Enumeration e = filesets.elements(); e.hasMoreElements();) {
-                TarFileSet fs = (TarFileSet)e.nextElement();
-                String[] files = fs.getFiles(project);
-                for (int i = 0; i < files.length; i++) {
-                    File f = new File(baseDir,files[i]);
-                    String name = files[i].replace(File.separatorChar,'/');
-                    tarFile(f, tOut, name, fs);
-                }
-            }
-        } catch (IOException ioe) {
-            String msg = "Problem creating TAR: " + ioe.getMessage();
-            throw new BuildException(msg, ioe, location);
-        } finally {
-            if (tOut != null) {
-                try {
-                    // close up
-                    tOut.close();
-                }
-                catch (IOException e) {}
-            }
-        }
-    }
-
-    protected void tarFile(File file, TarOutputStream tOut, String vPath,
-                           TarFileSet tarFileSet)
-        throws IOException
-    {
-        FileInputStream fIn = new FileInputStream(file);
-
-        try {
-            if (vPath.length() >= TarConstants.NAMELEN) {
-                if (longFileMode.equalsIgnoreCase(TRUNCATE)) {
-                    log("Skipping: "+ vPath, Project.MSG_INFO);
-                    return;
-                } else if (longFileMode.equalsIgnoreCase(WARN)) {
-                    log("Entry: "+ vPath + " longer than " + 
-                        TarConstants.NAMELEN + " characters.", Project.MSG_WARN);
-                    log("Resulting tar file can only be processed successfully"
-                        + " by GNU compatible tar commands", Project.MSG_WARN);
-                } else if (longFileMode.equalsIgnoreCase(FAIL)) {
-                    throw new BuildException(
-                        "Entry: "+ vPath + " longer than " + 
-                        TarConstants.NAMELEN + "characters.", location);
-                }
-            }
-
-            TarEntry te = new TarEntry(vPath);
-            te.setSize(file.length());
-            te.setModTime(file.lastModified());
-            if (!file.isDirectory()) {
-                te.setMode(tarFileSet.getMode());
-            }
-            te.setUserName(tarFileSet.getUserName());
-            te.setGroupName(tarFileSet.getGroup());
-            
-            tOut.putNextEntry(te);
-            
-            byte[] buffer = new byte[8 * 1024];
-            int count = 0;
-            do {
-                tOut.write(buffer, 0, count);
-                count = fIn.read(buffer, 0, buffer.length);
-            } while (count != -1);
-            
-            tOut.closeEntry();        
-        } finally {
-            fIn.close();
-        }
-    }
-
-    protected boolean archiveIsUpToDate(String[] files) {
-        SourceFileScanner sfs = new SourceFileScanner(this);
-        MergingMapper mm = new MergingMapper();
-        mm.setTo(tarFile.getAbsolutePath());
-        return sfs.restrict(files, baseDir, null, mm).length == 0;
-    }
-
-    static public class TarFileSet extends FileSet {
-        private String[] files = null;
-        
-        private int mode = 0100644;
-        
-        private String userName = "";
-        private String groupName = "";
-        
-           
-        public TarFileSet(FileSet fileset) {
-            super(fileset);
-        }
-        
-        public TarFileSet() {
-            super();
-        }
-        
-        public String[] getFiles(Project p) {
-            if (files == null) {
-                DirectoryScanner ds = getDirectoryScanner(p);
-                files = ds.getIncludedFiles();
-            }
-            
-            return files;
-        }
-        
-        public void setMode(String octalString) {
-            this.mode = 0100000 | Integer.parseInt(octalString, 8);
-        }
-            
-        public int getMode() {
-            return mode;
-        }
-        
-        public void setUserName(String userName) {
-            this.userName = userName;
-        }
-        
-        public String getUserName() {
-            return userName;
-        }
-        
-        public void setGroup(String groupName) {
-            this.groupName = groupName;
-        }
-        
-        public String getGroup() {
-            return groupName;
-        }
-        
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/TaskOutputStream.java b/src/main/org/apache/tools/ant/taskdefs/TaskOutputStream.java
deleted file mode 100644
index b15d54a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/TaskOutputStream.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import java.io.*;
-
-/**
- * Redirects text written to a stream thru the standard
- * ant logging mechanism. This class is useful for integrating
- * with tools that write to System.out and System.err. For example,
- * the following will cause all text written to System.out to be
- * logged with "info" priority:
- * <pre>System.setOut(new PrintStream(new TaskOutputStream(project, Project.MSG_INFO)));</pre>
- *
- * @author James Duncan Davidson (duncan@x180.com)
- * @deprecated use LogOutputStream instead.
- */
-
-public class TaskOutputStream extends OutputStream {
-
-    private Task task;
-    private StringBuffer line;
-    private int msgOutputLevel;
-
-    /**
-     * Constructs a new JavacOutputStream with the given project
-     * as the output source for messages.
-     */
-
-    TaskOutputStream(Task task, int msgOutputLevel) {
-        this.task = task;
-        this.msgOutputLevel = msgOutputLevel;
-
-        line = new StringBuffer();
-    }
-
-    /**
-     * Write a character to the output stream. This method looks
-     * to make sure that there isn't an error being reported and
-     * will flush each line of input out to the project's log stream.
-     */
-
-    public void write(int c) throws IOException {
-        char cc = (char)c;
-        if (cc == '\r' || cc == '\n') {
-            // line feed
-            if (line.length() > 0) {
-                processLine();
-            }
-        } else {
-            line.append(cc);
-        }
-    }
-
-    /**
-     * Processes a line of input and determines if an error occured.
-     */
-
-    private void processLine() {
-        String s = line.toString();
-        task.log(s, msgOutputLevel);
-        line = new StringBuffer();
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/Taskdef.java b/src/main/org/apache/tools/ant/taskdefs/Taskdef.java
deleted file mode 100644
index c728f2a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Taskdef.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-/**
- * Define a new task - name and class
- *
- * @author costin@dnt.ro
- */
-public class Taskdef extends Task {
-    private String name;
-    private String value;
-    private Path classpath;
-
-    public void setClasspath(Path classpath) {
-        if (this.classpath == null) {
-            this.classpath = classpath;
-        } else {
-            this.classpath.append(classpath);
-        }
-    }
-
-    public Path createClasspath() {
-        if (this.classpath == null) {
-            this.classpath = new Path(project);
-        }
-        return this.classpath.createPath();
-    }
-
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-    public void execute() throws BuildException {
-        if (name==null || value==null ) {
-            String msg = "name or classname attributes of taskdef element "
-                + "are undefined";
-            throw new BuildException(msg);
-        }
-        try {
-            ClassLoader loader = null;
-            if (classpath != null) {
-                AntClassLoader al = new AntClassLoader(project, classpath,
-                                                       false);
-                // need to load Task via system classloader or the new
-                // task we want to define will never be a Task but always
-                // be wrapped into a TaskAdapter.
-                al.addSystemPackageRoot("org.apache.tools.ant");
-                loader = al;
-            } else {
-                loader = this.getClass().getClassLoader();
-            }
-
-            Class taskClass = null;
-            if (loader != null) {
-                taskClass = loader.loadClass(value);
-            } else {
-                taskClass = Class.forName(value);
-            }
-            project.addTaskDefinition(name, taskClass);
-        } catch (ClassNotFoundException cnfe) {
-            String msg = "taskdef class " + value +
-                " cannot be found";
-            throw new BuildException(msg, cnfe, location);
-        } catch (NoClassDefFoundError ncdfe) {
-            String msg = "taskdef class " + value +
-                " cannot be found";
-            throw new BuildException(msg, ncdfe, location);
-        }
-    }
-    
-    public void setName( String name) {
-        this.name = name;
-    }
-
-    public String getClassname() {
-        return value;
-    }
-
-    public void setClassname(String v) {
-        value = v;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Touch.java b/src/main/org/apache/tools/ant/taskdefs/Touch.java
deleted file mode 100644
index b12fc02..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Touch.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.util.Date;
-import java.util.Locale;
-
-/**
- * Touch a file - corresponds to the Unix touch command.
- *
- * <p>If the file to touch doesn't exist, an empty one is
- * created. Setting the modification time of files is not supported in
- * JDK 1.1.
- *
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> 
- */
-public class Touch extends Task {
-
-    private File file;              // required
-    private long millis = -1;
-    private String dateTime;
-
-    private static Method setLastModified = null;
-    private static Object lockReflection = new Object();
-
-    /**
-     * The name of the file to touch.
-     */
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    /**
-     * Milliseconds since 01/01/1970 00:00 am.
-     */
-    public void setMillis(long millis) {
-        this.millis = millis;
-    }
-
-    /**
-     * Date in the format MM/DD/YYYY HH:MM AM_PM.
-     */
-    public void setDatetime(String dateTime) {
-        this.dateTime = dateTime;
-    }
-
-    /**
-     * Do the work.
-     *
-     * @exception BuildException Thrown in unrecoverable error.
-     */
-    public void execute() throws BuildException {
-        if (file.exists() && project.getJavaVersion() == Project.JAVA_1_1) {
-            log("Cannot change the modification time of "
-                + file + " in JDK 1.1",
-                Project.MSG_WARN);
-            return;
-        }
-        
-        if (dateTime != null) {
-            DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT,
-                                                           DateFormat.SHORT,
-                                                           Locale.US);
-            try {
-                setMillis(df.parse(dateTime).getTime());
-            } catch (ParseException pe) {
-                throw new BuildException(pe.getMessage(), pe, location);
-            }
-        }
-
-        if (millis >= 0 && project.getJavaVersion() == Project.JAVA_1_1) {
-            log(file + " will be created but its modification time cannot be set in JDK 1.1",
-                Project.MSG_WARN);
-        }
-
-        touch();
-    }
-
-    /**
-     * Does the actual work. Entry point for Untar and Expand as well.
-     */
-    void touch() throws BuildException {
-        if (!file.exists()) {
-            log("Creating "+file, Project.MSG_INFO);
-            try {
-                FileOutputStream fos = new FileOutputStream(file);
-                fos.write(new byte[0]);
-                fos.close();
-            } catch (IOException ioe) {
-                throw new BuildException("Could not create "+file, ioe, 
-                                         location);
-            }
-        }
-
-        if (project.getJavaVersion() == Project.JAVA_1_1) {
-            return;
-        }
-
-        if (setLastModified == null) {
-            synchronized (lockReflection) {
-                if (setLastModified == null) {
-                    try {
-                        setLastModified = 
-                            java.io.File.class.getMethod("setLastModified", 
-                                                         new Class[] {Long.TYPE});
-                    } catch (NoSuchMethodException nse) {
-                        throw new BuildException("File.setlastModified not in JDK > 1.1?",
-                                                 nse, location);
-                    }
-                }
-            }
-        }
-        
-        Long[] times = new Long[1];
-        if (millis < 0) {
-            times[0] = new Long(System.currentTimeMillis());
-        } else {
-            times[0] = new Long(millis);
-        }
-
-        try {
-            log("Setting modification time for "+file, 
-                Project.MSG_VERBOSE);
-
-            setLastModified.invoke(file, times);
-        } catch (InvocationTargetException ite) {
-            Throwable nested = ite.getTargetException();
-            throw new BuildException("Exception setting the modification time of "
-                                     + file, nested, location);
-        } catch (Throwable other) {
-            throw new BuildException("Exception setting the modification time of "
-                                     + file, other, location);
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Transform.java b/src/main/org/apache/tools/ant/taskdefs/Transform.java
deleted file mode 100644
index c489282..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Transform.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.File;
-import java.util.Hashtable;
-import java.util.Vector;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.util.*;
-
-/**
- * Executes a given command, supplying a set of files as arguments. 
- *
- * <p>Only those files that are newer than their corresponding target
- * files will be handeled, the rest will be ignored.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class Transform extends ExecuteOn {
-
-    protected Commandline.Marker targetFilePos = null;
-    protected Mapper mapperElement = null;
-    protected FileNameMapper mapper = null;
-    protected File destDir = null;
-
-    /**
-     * Has &lt;srcfile&gt; been specified before &lt;targetfile&gt;
-     */
-    protected boolean srcIsFirst = true;
-
-    /**
-     * Set the destination directory.
-     */
-    public void setDest(File destDir) {
-        this.destDir = destDir;
-    }
-
-    /**
-     * Marker that indicates where the name of the target file should
-     * be put on the command line.
-     */
-    public Commandline.Marker createTargetfile() {
-        if (targetFilePos != null) {
-            throw new BuildException(taskType + " doesn\'t support multiple targetfile elements.",
-                                     location);
-        }
-        targetFilePos = cmdl.createMarker();
-        srcIsFirst = (srcFilePos != null);
-        return targetFilePos;
-    }
-
-    /**
-     * Defines the FileNameMapper to use (nested mapper element).
-     */
-    public Mapper createMapper() throws BuildException {
-        if (mapperElement != null) {
-            throw new BuildException("Cannot define more than one mapper",
-                                     location);
-        }
-        mapperElement = new Mapper(project);
-        return mapperElement;
-    }
-
-    protected void checkConfiguration() {
-        super.checkConfiguration();
-        if (mapperElement == null) {
-            throw new BuildException("no mapper specified", location);
-        }
-        if (destDir == null) {
-            throw new BuildException("no dest attribute specified", location);
-        }
-
-        mapper = mapperElement.getImplementation();
-    }
-
-    /**
-     * Return the list of files from this DirectoryScanner that should
-     * be included on the command line - i.e. only those that are
-     * newer than the corresponding target files.
-     */
-    protected String[] getFiles(File baseDir, DirectoryScanner ds) {
-        SourceFileScanner sfs = new SourceFileScanner(this);
-        return sfs.restrict(ds.getIncludedFiles(), baseDir, destDir, mapper);
-    }
-
-    /**
-     * Return the list of Directories from this DirectoryScanner that
-     * should be included on the command line - i.e. only those that
-     * are newer than the corresponding target files.
-     */
-    protected String[] getDirs(File baseDir, DirectoryScanner ds) {
-        SourceFileScanner sfs = new SourceFileScanner(this);
-        return sfs.restrict(ds.getIncludedDirectories(), baseDir, destDir, 
-                            mapper);
-    }
-
-    /**
-     * Construct the command line for parallel execution.
-     *
-     * @param srcFiles The filenames to add to the commandline
-     * @param baseDir filenames are relative to this dir
-     */
-    protected String[] getCommandline(String[] srcFiles, File baseDir) {
-        if (targetFilePos == null) {
-            return super.getCommandline(srcFiles, baseDir);
-        }
-
-        Vector targets = new Vector();
-        Hashtable addedFiles = new Hashtable();
-        for (int i=0; i<srcFiles.length; i++) {
-            String[] subTargets = mapper.mapFileName(srcFiles[i]);
-            if (subTargets != null) {
-                for (int j=0; j<subTargets.length; j++) {
-                    String name = (new File(destDir, subTargets[j])).getAbsolutePath();
-                    if (!addedFiles.contains(name)) {
-                        targets.addElement(name);
-                        addedFiles.put(name, name);
-                    }
-                }
-            }
-        }
-        String[] targetFiles = new String[targets.size()];
-        targets.copyInto(targetFiles);
-        
-        String[] orig = cmdl.getCommandline();
-        String[] result = new String[orig.length+srcFiles.length+targetFiles.length];
-
-        int srcIndex = orig.length;
-        if (srcFilePos != null) {
-            srcIndex = srcFilePos.getPosition();
-        }
-        int targetIndex = targetFilePos.getPosition();
-
-        if (srcIndex < targetIndex || (srcIndex == targetIndex && srcIsFirst)) {
-            // 0 --> srcIndex
-            System.arraycopy(orig, 0, result, 0, srcIndex);
-
-            // srcIndex --> targetIndex
-            System.arraycopy(orig, srcIndex, result, 
-                             srcIndex + srcFiles.length,
-                             targetIndex - srcIndex);
-
-            // targets are already absolute file names
-            System.arraycopy(targetFiles, 0, result, 
-                             targetIndex + srcFiles.length, 
-                             targetFiles.length);
-
-            // targetIndex --> end
-            System.arraycopy(orig, targetIndex, result, 
-                             targetIndex + srcFiles.length + targetFiles.length,
-                             orig.length - targetIndex);
-        } else {
-            // 0 --> targetIndex
-            System.arraycopy(orig, 0, result, 0, targetIndex);
-
-            // targets are already absolute file names
-            System.arraycopy(targetFiles, 0, result, 
-                             targetIndex,
-                             targetFiles.length);
-
-            // targetIndex --> srcIndex
-            System.arraycopy(orig, targetIndex, result, 
-                             targetIndex + targetFiles.length,
-                             srcIndex - targetIndex);
-
-            // srcIndex --> end
-            System.arraycopy(orig, srcIndex, result, 
-                             srcIndex + srcFiles.length + targetFiles.length,
-                             orig.length - srcIndex);
-            srcIndex += targetFiles.length;
-        }
-
-
-        for (int i=0; i < srcFiles.length; i++) {
-            result[srcIndex+i] = 
-                (new File(baseDir, srcFiles[i])).getAbsolutePath();
-        }
-        return result;
-        
-    }
-
-    /**
-     * Construct the command line for serial execution.
-     *
-     * @param srcFile The filename to add to the commandline
-     * @param baseDir filename is relative to this dir
-     */
-    protected String[] getCommandline(String srcFile, File baseDir) {
-        return getCommandline(new String[] {srcFile}, baseDir);
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Tstamp.java b/src/main/org/apache/tools/ant/taskdefs/Tstamp.java
deleted file mode 100644
index a994cb0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Tstamp.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import java.io.*;
-import java.util.*;
-import java.text.*;
-
-/**
- * Sets TSTAMP, DSTAMP and TODAY
- *
- * @author costin@dnt.ro
- * @author stefano@apache.org
- * @author roxspring@yahoo.com
- * @author conor@cognet.com.au
- */
-public class Tstamp extends Task {
-    
-    private Vector customFormats = new Vector();
-
-    public void execute() throws BuildException {
-        try {
-            Date d = new Date();
-
-            SimpleDateFormat dstamp = new SimpleDateFormat ("yyyyMMdd");
-            project.setProperty("DSTAMP", dstamp.format(d));
-
-            SimpleDateFormat tstamp = new SimpleDateFormat ("HHmm");
-            project.setProperty("TSTAMP", tstamp.format(d));
-
-            SimpleDateFormat today  = new SimpleDateFormat ("MMMM d yyyy", Locale.US);
-            project.setProperty("TODAY", today.format(d));
-            
-            Enumeration i = customFormats.elements();
-            while(i.hasMoreElements())
-            {
-                CustomFormat cts = (CustomFormat)i.nextElement();
-                cts.execute(project,d, location);
-            }
-            
-        } catch (Exception e) {
-            throw new BuildException(e);
-        }
-    }
-    
-    public CustomFormat createFormat()
-    {
-        CustomFormat cts = new CustomFormat();
-        customFormats.addElement(cts);
-        return cts;
-    }
-    
-    public class CustomFormat
-    {
-        private String propertyName;
-        private String pattern;
-        private int offset = 0;
-        private int field = Calendar.DATE;
-        
-        public CustomFormat()
-        {
-        }
-        
-        public void setProperty(String propertyName)
-        {
-            this.propertyName = propertyName;
-        }
-        
-        public void setPattern(String pattern)
-        {
-            this.pattern = pattern;
-        }
-        
-        public void setOffset(int offset) {
-            this.offset = offset;
-        }
-        
-        public void setUnit(String unit) {
-            if (unit.equalsIgnoreCase("millisecond")) {
-                field = Calendar.MILLISECOND;
-            }
-            else if (unit.equalsIgnoreCase("second")) {
-                field = Calendar.SECOND;
-            }
-            else if (unit.equalsIgnoreCase("minute")) {
-                field = Calendar.MINUTE;
-            }
-            else if (unit.equalsIgnoreCase("hour")) {
-                field = Calendar.HOUR_OF_DAY;
-            }
-            else if (unit.equalsIgnoreCase("day")) {
-                field = Calendar.DATE;
-            }
-            else if (unit.equalsIgnoreCase("week")) {
-                field = Calendar.WEEK_OF_YEAR;
-            }
-            else if (unit.equalsIgnoreCase("month")) {
-                field = Calendar.MONTH;
-            }
-            else if (unit.equalsIgnoreCase("year")) {
-                field = Calendar.YEAR;
-            }
-            else {
-                throw new BuildException(unit + " is not a unit supported by the tstamp task");
-            }
-        }            
-        
-        public void execute(Project project, Date date, Location location)
-        {
-            if (propertyName == null) {
-                throw new BuildException("property attribute must be provided", location);
-            }
-            
-            if (pattern == null) {
-                throw new BuildException("pattern attribute must be provided", location);
-            }
-            
-            SimpleDateFormat sdf = new SimpleDateFormat (pattern);
-            if (offset != 0) {
-                Calendar calendar = Calendar.getInstance();
-                calendar.setTime(date);
-                calendar.add(field, offset);
-                date = calendar.getTime();
-            }
-
-            project.setProperty(propertyName, sdf.format(date));
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Untar.java b/src/main/org/apache/tools/ant/taskdefs/Untar.java
deleted file mode 100644
index 5952e85..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Untar.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.tar.*;
-import java.io.*;
-
-/**
- * Untar a file.
- *
- * Heavily based on the Expand task.
- *
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a>
- */
-public class Untar extends Task {
-    private String dest; // req
-    private String source; // req
-
-    /**
-     * Do the work.
-     *
-     * @exception BuildException Thrown in unrecoverable error.
-     */
-    public void execute() throws BuildException {
-
-        Touch touch = (Touch) project.createTask("touch");
-        touch.setOwningTarget(target);
-        touch.setTaskName(getTaskName());
-        touch.setLocation(getLocation());
-                    
-        File srcF=project.resolveFile(source);
-
-        TarInputStream tis = null;
-        try {
-            if (source == null) {
-                throw new BuildException("No source specified", location);
-            }
-            if (!srcF.exists()) {
-                throw new BuildException("source "+srcF+" doesn't exist",
-                                         location);
-            }
-
-            if (dest == null) {
-                throw new BuildException("No destination specified", location);
-            }
-            File dir=project.resolveFile(dest);
-
-            log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO);
-            tis = new TarInputStream(new FileInputStream(srcF));
-            TarEntry te = null;
-
-            while ((te = tis.getNextEntry()) != null) {
-                try {
-                    File f = new File(dir, project.translatePath(te.getName()));
-                    log("expand-file " + te.getName(), Project.MSG_VERBOSE );
-                    // create intermediary directories - sometimes tar don't add them
-                    File dirF=new File(f.getParent());
-                    dirF.mkdirs();
-
-                    if (te.isDirectory()) {
-                        f.mkdirs();
-                    } else {
-                        byte[] buffer = new byte[1024];
-                        int length = 0;
-                        FileOutputStream fos = new FileOutputStream(f);
-
-                        while ((length = tis.read(buffer)) >= 0) {
-                            fos.write(buffer, 0, length);
-                        }
-
-                        fos.close();
-                    }
-
-                    if (project.getJavaVersion() != Project.JAVA_1_1) {
-                        touch.setFile(f);
-                        touch.setMillis(te.getModTime().getTime());
-                        touch.touch();
-                    }
-
-                } catch(FileNotFoundException ex) {
-                    log("FileNotFoundException: " + te.getName(),
-                        Project.MSG_WARN);
-                }
-            }
-        } catch (IOException ioe) {
-            throw new BuildException("Error while expanding " + srcF.getPath(),
-                                     ioe, location);
-	} finally {
-	    if (tis != null) {
-	        try {
-	            tis.close();
-	        }
-	        catch (IOException e) {}
-	    }
-	}
-    }
-
-    /**
-     * Set the destination directory. File will be untared into the
-     * destination directory.
-     *
-     * @param d Path to the directory.
-     */
-    public void setDest(String d) {
-        this.dest=d;
-    }
-
-    /**
-     * Set the path to tar-file.
-     *
-     * @param s Path to tar-file.
-     */
-    public void setSrc(String s) {
-        this.source = s;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/UpToDate.java b/src/main/org/apache/tools/ant/taskdefs/UpToDate.java
deleted file mode 100644
index 9574c9a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/UpToDate.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.util.*;
-import java.io.*;
-import java.util.Enumeration;
-import java.util.Date;
-import java.util.Vector;
-
-/**
- * Will set the given property if the specified target has a timestamp
- * greater than all of the source files.
- *
- * @author William Ferguson <a href="mailto:williamf@mincom.com">williamf@mincom.com</a> 
- * @author Hiroaki Nakamura <a href="mailto:hnakamur@mc.neweb.ne.jp">hnakamur@mc.neweb.ne.jp</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-
-public class UpToDate extends MatchingTask {
-
-    private String _property;
-    private File _targetFile;
-    private Vector sourceFileSets = new Vector();
-
-    protected Mapper mapperElement = null;
-
-    /**
-     * The property to set if the target file is more up to date than each of
-     * the source files.
-     *
-     * @param property the name of the property to set if Target is up to date.
-     */
-    public void setProperty(String property) {
-        _property = property;
-    }
-
-    /**
-     * The file which must be more up to date than each of the source files
-     * if the property is to be set.
-     *
-     * @param file the file which we are checking against.
-     */
-    public void setTargetFile(File file) {
-        _targetFile = file;
-    }
-
-    /**
-     * Nested &lt;srcfiles&gt; element.
-     */
-    public void addSrcfiles(FileSet fs) {
-        sourceFileSets.addElement(fs);
-    }
-
-    /**
-     * Defines the FileNameMapper to use (nested mapper element).
-     */
-    public Mapper createMapper() throws BuildException {
-        if (mapperElement != null) {
-            throw new BuildException("Cannot define more than one mapper",
-                                     location);
-        }
-        mapperElement = new Mapper(project);
-        return mapperElement;
-    }
-
-    /**
-     * Sets property to true if target files have a more recent timestamp than
-     * each of the corresponding source files.
-     */
-    public void execute() throws BuildException {
-
-        if (sourceFileSets.size() == 0) {
-          throw new BuildException("At least one <srcfiles> element must be set");
-        }
-
-        if (_targetFile == null && mapperElement == null) {
-          throw new BuildException("The targetfile attribute or a nested mapper element must be set");
-        }
-
-        // if not there then it can't be up to date
-        if (_targetFile != null && !_targetFile.exists()) return; 
-
-        Enumeration enum = sourceFileSets.elements();
-        boolean upToDate = true;
-        while (upToDate && enum.hasMoreElements()) {
-            FileSet fs = (FileSet) enum.nextElement();
-            DirectoryScanner ds = fs.getDirectoryScanner(project);
-            upToDate = upToDate && scanDir(fs.getDir(project), 
-                                           ds.getIncludedFiles());
-        }
-
-        if (upToDate) {
-            this.project.setProperty(_property, "true");
-            if (mapperElement == null) {
-                log("File \"" + _targetFile.getAbsolutePath() + "\" is up to date.",
-                    Project.MSG_VERBOSE);
-            } else {
-                log("All target files have been up to date.",
-                    Project.MSG_VERBOSE);
-            }
-        }
-    }
-
-    protected boolean scanDir(File srcDir, String files[]) {
-        SourceFileScanner sfs = new SourceFileScanner(this);
-        FileNameMapper mapper = null;
-        if (mapperElement == null) {
-            MergingMapper mm = new MergingMapper();
-            mm.setTo(_targetFile.getAbsolutePath());
-            mapper = mm;
-        } else {
-            mapper = mapperElement.getImplementation();
-        }
-        return sfs.restrict(files, srcDir, null, mapper).length == 0;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/War.java b/src/main/org/apache/tools/ant/taskdefs/War.java
deleted file mode 100644
index 98f23bc..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/War.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.ZipFileSet;
-
-import java.io.*;
-import java.util.Vector;
-import java.util.zip.*;
-
-/**
- * Creates a WAR archive.
- * 
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class War extends Jar {
-
-    private File deploymentDescriptor;
-    private boolean descriptorAdded;    
-
-    public War() {
-        super();
-        archiveType = "war";
-        emptyBehavior = "create";
-    }
-
-    public void setWarfile(File warFile) {
-        super.setZipfile(warFile);
-    }
-    
-    public void setWebxml(File descr) {
-        deploymentDescriptor = descr; 
-        if (!deploymentDescriptor.exists())
-            throw new BuildException("Deployment descriptor: " + deploymentDescriptor + " does not exist.");
-
-        // Create a ZipFileSet for this file, and pass it up.
-        ZipFileSet fs = new ZipFileSet();
-        fs.setDir(new File(deploymentDescriptor.getParent()));
-        fs.setIncludes(deploymentDescriptor.getName());
-        fs.setFullpath("WEB-INF/web.xml");
-        super.addFileset(fs);
-    }
-
-    public void addLib(ZipFileSet fs) {
-        // We just set the prefix for this fileset, and pass it up.
-        fs.setPrefix("WEB-INF/lib/");
-        super.addFileset(fs);
-    }
-
-    public void addClasses(ZipFileSet fs) {
-        // We just set the prefix for this fileset, and pass it up.
-        fs.setPrefix("WEB-INF/classes/");
-        super.addFileset(fs);
-    }
-
-    public void addWebinf(ZipFileSet fs) {
-        // We just set the prefix for this fileset, and pass it up.
-        fs.setPrefix("WEB-INF/");
-        super.addFileset(fs);
-    }
-
-    protected void initZipOutputStream(ZipOutputStream zOut)
-        throws IOException, BuildException
-    {
-        // If no webxml file is specified, it's an error.
-        if (deploymentDescriptor == null) {
-            throw new BuildException("webxml attribute is required", location);
-        }
-        
-        super.initZipOutputStream(zOut);
-    }
-
-    protected void zipFile(File file, ZipOutputStream zOut, String vPath)
-        throws IOException
-    {
-        // If the file being added is WEB-INF/web.xml, we warn if it's not the
-        // one specified in the "webxml" attribute - or if it's being added twice, 
-        // meaning the same file is specified by the "webxml" attribute and in
-        // a <fileset> element.
-        if (vPath.equalsIgnoreCase("WEB-INF/web.xml"))  {
-            if (deploymentDescriptor == null || !deploymentDescriptor.equals(file) || descriptorAdded) {
-                log("Warning: selected "+archiveType+" files include a WEB-INF/web.xml which will be ignored " +
-                    "(please use webxml attribute to "+archiveType+" task)", Project.MSG_WARN);
-            } else {
-                super.zipFile(file, zOut, vPath);
-                descriptorAdded = true;
-            }
-        } else {
-            super.zipFile(file, zOut, vPath);
-        }
-    }
-
-    /**
-     * Make sure we don't think we already have a web.xml next time this task
-     * gets executed.
-     */
-    protected void cleanUp() {
-        descriptorAdded = false;
-        super.cleanUp();
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/XSLTLiaison.java b/src/main/org/apache/tools/ant/taskdefs/XSLTLiaison.java
deleted file mode 100644
index c8c35eb..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/XSLTLiaison.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.*;
-
-/**
- *
- * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
- * @version $Revision$ $Date$
- */
-public interface XSLTLiaison {
-
-    public void setStylesheet(String fileName) throws Exception;
-
-    public void addParam(String name, String expression) throws Exception;
-
-    public void transform(String infile, String outfile) throws Exception;
-
-} //-- XSLTLiaison
diff --git a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java b/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
deleted file mode 100644
index 9173237..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-
-import java.io.*;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import org.apache.tools.ant.*;
-
-
-/**
- * A Task to process via XSLT a set of XML documents. This is
- * useful for building views of XML based documentation.
- * arguments:
- * <ul>
- * <li>basedir
- * <li>destdir
- * <li>style
- * <li>includes
- * <li>excludes
- * </ul>
- * Of these arguments, the <b>sourcedir</b> and <b>destdir</b> are required.
- * <p>
- * This task will recursively scan the sourcedir and destdir
- * looking for XML documents to process via XSLT. Any other files,
- * such as images, or html files in the source directory will be
- * copied into the destination directory.
- *
- * @author <a href="mailto:kvisco@exoffice.com">Keith Visco</a>
- * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
- * @author <a href="mailto:russgold@acm.org">Russell Gold</a>
- * @version $Revision$ $Date$
- */
-public class XSLTProcess extends MatchingTask {
-
-    private File destDir = null;
-
-    private File baseDir = null;
-
-    private File xslFile = null;
-
-    private String targetExtension = ".html";
-    private Vector params = new Vector();
- 
-    private File inFile = null;
- 
-    private File outFile = null;
-
-    private XSLTLiaison liaison;
-
-    /**
-     * Creates a new XSLTProcess Task.
-     **/
-    public XSLTProcess() {
-    } //-- XSLTProcess
-
-    /**
-     * Executes the task.
-     */
-
-    public void execute() throws BuildException {
-        DirectoryScanner scanner;
-        String[]         list;
-        String[]         dirs;
-
-        if (baseDir == null) {
-            baseDir = project.resolveFile(".");
-        }
-        
-        //-- make sure Source directory exists...
-        if (destDir == null ) {
-            String msg = "destdir attributes must be set!";
-            throw new BuildException(msg);
-        }
-        scanner = getDirectoryScanner(baseDir);
-        log("Transforming into "+destDir, Project.MSG_INFO);
-
-        // if processor wasn't specified, see if TraX is available.  If not,
-        // default it to xslp or xalan, depending on which is in the classpath
-        if (liaison == null) {
-            try {
-                setProcessor("trax");
-            } catch (Throwable e1) {
-                try {
-                    setProcessor("xslp");
-                } catch (Throwable e2) {
-                    try {
-                        setProcessor("xalan");
-                    } catch (Throwable e3) {
-                        throw new BuildException(e1);
-                    }
-                }
-            }
-        }
-
-        log("Using "+liaison.getClass().toString(), Project.MSG_VERBOSE);
-
-        long styleSheetLastModified = 0;
-        if (xslFile != null) {
-            try {
-                // Create a new XSL processor with the specified stylesheet
-                File file = new File( baseDir, xslFile.toString() );
-                styleSheetLastModified = file.lastModified();
-                log( "Loading stylesheet " + file, Project.MSG_INFO);
-                liaison.setStylesheet( file.toString() );
-                for(Enumeration e = params.elements();e.hasMoreElements();) {
-                    Param p = (Param)e.nextElement();
-                    liaison.addParam( p.getName(), p.getExpression() );
-                }
-            } catch (Exception ex) {
-                log("Failed to read stylesheet " + xslFile, Project.MSG_INFO);
-                throw new BuildException(ex);
-            }
-        }
-
-        // if we have an in file and out then process them
-        if (inFile != null && outFile != null) {
-            process(inFile, outFile, styleSheetLastModified);
-            return;
-        }
-
-        // Process all the files marked for styling
-        list = scanner.getIncludedFiles();
-        for (int i = 0;i < list.length; ++i) {
-            process( baseDir, list[i], destDir, styleSheetLastModified );
-        }
-        
-        // Process all the directoried marked for styling
-        dirs = scanner.getIncludedDirectories();
-        for (int j = 0;j < dirs.length;++j){
-            list=new File(baseDir,dirs[j]).list();
-            for (int i = 0;i < list.length;++i)
-                process( baseDir, list[i], destDir, styleSheetLastModified );
-        }
-    } //-- execute
-
-    /**
-     * Set the base directory.
-     **/
-    public void setBasedir(File dir) {
-        baseDir = dir;
-    } //-- setSourceDir
-
-    /**
-     * Set the destination directory into which the XSL result
-     * files should be copied to
-     * @param dirName the name of the destination directory
-     **/
-    public void setDestdir(File dir) {
-        destDir = dir;
-    } //-- setDestDir
-
-    /**
-     * Set the desired file extension to be used for the target
-     * @param name the extension to use
-     **/
-    public void setExtension(String name) {
-            targetExtension = name;
-    } //-- setDestDir
-
-    /**
-     * Sets the file to use for styling relative to the base directory.
-     */
-    public void setStyle(String xslFile) {
-        this.xslFile = new File(xslFile);
-    }
-
-    /**
-     * Sets the file to use for styling relative to the base directory.
-     */
-    public void setProcessor(String processor) throws Exception {
-
-        if (processor.equals("trax")) {
-            final Class clazz = 
-                Class.forName("org.apache.tools.ant.taskdefs.optional.TraXLiaison");
-            liaison = (XSLTLiaison)clazz.newInstance();
-        } else if (processor.equals("xslp")) {
-            final Class clazz = 
-                Class.forName("org.apache.tools.ant.taskdefs.optional.XslpLiaison");
-            liaison = (XSLTLiaison) clazz.newInstance();
-        } else if (processor.equals("xalan")) {
-            final Class clazz = 
-                Class.forName("org.apache.tools.ant.taskdefs.optional.XalanLiaison");
-            liaison = (XSLTLiaison)clazz.newInstance();
-        } else {
-            liaison = (XSLTLiaison) Class.forName(processor).newInstance();
-        }
-
-    }
-
-    /**
-     * Sets an out file
-     */
-    public void setOut(File outFile){
-        this.outFile = outFile;
-    }
-
-    /**
-     * Sets an input xml file to be styled
-     */
-    public void setIn(File inFile){
-        this.inFile = inFile;
-    }
-
-    /**
-     * Processes the given input XML file and stores the result
-     * in the given resultFile.
-     **/
-    private void process(File baseDir, String xmlFile, File destDir, 
-                         long styleSheetLastModified)
-        throws BuildException {
-
-        String fileExt=targetExtension;
-        File   outFile=null;
-        File   inFile=null;
-
-        try {
-            inFile = new File(baseDir,xmlFile);
-            int dotPos = xmlFile.lastIndexOf('.');
-            if(dotPos>0){
-                outFile = new File(destDir,xmlFile.substring(0,xmlFile.lastIndexOf('.'))+fileExt);
-            }else{
-                outFile = new File(destDir,xmlFile+fileExt);
-            }
-            if (inFile.lastModified() > outFile.lastModified() ||
-                styleSheetLastModified > outFile.lastModified()) {
-                ensureDirectoryFor( outFile );
-                log("Transforming into "+destDir);
-
-                liaison.transform(inFile.toString(), outFile.toString());
-            }
-        }
-        catch (Exception ex) {
-            // If failed to process document, must delete target document,
-            // or it will not attempt to process it the second time
-            log("Failed to process " + inFile, Project.MSG_INFO);
-            if (outFile != null) {
-                outFile.delete();
-            }
-        
-            throw new BuildException(ex);
-        }
-
-    } //-- processXML
-
-    private void process(File inFile, File outFile, long styleSheetLastModified) throws BuildException {
-        try{
-            log("In file "+inFile+" time: " + inFile.lastModified() , Project.MSG_DEBUG);
-            log("Out file "+outFile+" time: " + outFile.lastModified() , Project.MSG_DEBUG);
-            log("Style file "+xslFile+" time: " + styleSheetLastModified , Project.MSG_DEBUG);
-            if (inFile.lastModified() > outFile.lastModified() ||
-                styleSheetLastModified > outFile.lastModified()) {
-                ensureDirectoryFor( outFile );
-                log("Processing " + inFile + " to " + outFile, Project.MSG_INFO);
-                liaison.transform(inFile.toString(), outFile.toString());
-            }
-        }catch (Exception ex) {
-            log("Failed to process " + inFile, Project.MSG_INFO);
-            if(outFile!=null)outFile.delete();
-            throw new BuildException(ex);
-        }
-    }
-
-    private void ensureDirectoryFor( File targetFile ) throws BuildException {
-        File directory = new File( targetFile.getParent() );
-        if (!directory.exists()) {
-            if (!directory.mkdirs()) {
-                throw new BuildException("Unable to create directory: " 
-                                         + directory.getAbsolutePath() );
-            }
-        }
-    }
-    
-    public Param createParam() {
-        Param p = new Param();
-        params.addElement(p);
-        return p;
-    }
-
-    public class Param {
-        private String name=null;
-        private String expression=null;
-        
-        public void setName(String name){
-            this.name = name;
-        }
-        
-        public void setExpression(String expression){
-            this.expression = expression;
-        }
-        
-        public String getName() throws BuildException{
-            if(name==null)throw new BuildException("Name attribute is missing.");
-            return name;
-        }
-        
-        public String getExpression() throws BuildException{
-            if(expression==null)throw new BuildException("Expression attribute is missing.");
-            return expression;
-        }
-    }
-} //-- XSLTProcess
diff --git a/src/main/org/apache/tools/ant/taskdefs/Zip.java b/src/main/org/apache/tools/ant/taskdefs/Zip.java
deleted file mode 100644
index a5e98c1..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Zip.java
+++ /dev/null
@@ -1,551 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs;
-
-import java.io.*;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Stack;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import java.util.zip.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.util.*;
-
-/**
- * Create a ZIP archive.
- *
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class Zip extends MatchingTask {
-
-    private File zipFile;
-    private File baseDir;
-    private boolean doCompress = true;
-    protected String archiveType = "zip";
-    // For directories:
-    private static long emptyCrc = new CRC32 ().getValue ();
-    protected String emptyBehavior = "skip";
-    private Vector filesets = new Vector ();
-    private Hashtable addedDirs = new Hashtable();
-
-    /**
-     * This is the name/location of where to 
-     * create the .zip file.
-     */
-    public void setZipfile(File zipFile) {
-        this.zipFile = zipFile;
-    }
-    
-    /**
-     * This is the base directory to look in for 
-     * things to zip.
-     */
-    public void setBasedir(File baseDir) {
-        this.baseDir = baseDir;
-    }
-
-    /**
-     * Sets whether we want to compress the files or only store them.
-     */
-    public void setCompress(boolean c) {
-        doCompress = c;
-    }
-
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
-
-    /**
-     * Adds a set of files (nested zipfileset attribute) that can be
-     * read from an archive and be given a prefix/fullpath.
-     */
-    public void addZipfileset(ZipFileSet set) {
-        filesets.addElement(set);
-    }
-
-
-    /**
-     * Sets behavior of the task when no files match.
-     * Possible values are: <code>fail</code> (throw an exception
-     * and halt the build); <code>skip</code> (do not create
-     * any archive, but issue a warning); <code>create</code>
-     * (make an archive with no entries).
-     * Default for zip tasks is <code>skip</code>;
-     * for jar tasks, <code>create</code>.
-     */
-    public void setWhenempty(String we) throws BuildException {
-        we = we.toLowerCase();
-        // XXX could instead be using EnumeratedAttribute, but this works
-        if (!"fail".equals(we) && !"skip".equals(we) && !"create".equals(we))
-            throw new BuildException("Unrecognized whenempty attribute: " + we);
-        emptyBehavior = we;
-    }
-
-    public void execute() throws BuildException {
-        if (baseDir == null && filesets.size() == 0 && "zip".equals(archiveType)) {
-            throw new BuildException( "basedir attribute must be set, or at least " + 
-                                      "one fileset must be given!" );
-        }
-
-        if (zipFile == null) {
-            throw new BuildException("You must specify the " + archiveType + " file to create!");
-        }
-
-        // Create the scanners to pass to isUpToDate().
-        Vector dss = new Vector ();
-        if (baseDir != null)
-            dss.addElement(getDirectoryScanner(baseDir));
-        for (int i=0; i<filesets.size(); i++) {
-            FileSet fs = (FileSet) filesets.elementAt(i);
-            dss.addElement (fs.getDirectoryScanner(project));
-        }
-        int dssSize = dss.size();
-        FileScanner[] scanners = new FileScanner[dssSize];
-        dss.copyInto(scanners);
-
-        // quick exit if the target is up to date
-        // can also handle empty archives
-        if (isUpToDate(scanners, zipFile)) return;
-
-        log("Building "+ archiveType +": "+ zipFile.getAbsolutePath());
-
-        try {
-            boolean success = false;
-            ZipOutputStream zOut = 
-              new ZipOutputStream(new FileOutputStream(zipFile));
-            try {
-                if (doCompress) {
-                    zOut.setMethod(ZipOutputStream.DEFLATED);
-                } else {
-                    zOut.setMethod(ZipOutputStream.STORED);
-                }
-                initZipOutputStream(zOut);
-
-                // Add the implicit fileset to the archive.
-                if (baseDir != null)
-                    addFiles(getDirectoryScanner(baseDir), zOut, "", "");
-                // Add the explicit filesets to the archive.
-                addFiles(filesets, zOut);
-                success = true;
-            } finally {
-                // Close the output stream.
-                try {
-                    if (zOut != null)
-                        zOut.close ();
-                } catch(IOException ex) {
-                    // If we're in this finally clause because of an exception, we don't 
-                    // really care if there's an exception when closing the stream. E.g. if it
-                    // throws "ZIP file must have at least one entry", because an exception happened
-                    // before we added any files, then we must swallow this exception. Otherwise,
-                    // the error that's reported will be the close() error, which is not the real 
-                    // cause of the problem.
-                    if (success)
-                        throw ex;
-                }
-            }
-        } catch (IOException ioe) {
-            String msg = "Problem creating " + archiveType + ": " + ioe.getMessage();
-
-            // delete a bogus ZIP file
-            if (!zipFile.delete()) {
-                msg += " (and the archive is probably corrupt but I could not delete it)";
-            }
-
-            throw new BuildException(msg, ioe, location);
-        } finally {
-            cleanUp();
-        }
-    }
-
-    /**
-     * Add all files of the given FileScanner to the ZipOutputStream
-     * prependig the given prefix to each filename.
-     *
-     * <p>Ensure parent directories have been added as well.  
-     */
-    protected void addFiles(FileScanner scanner, ZipOutputStream zOut, 
-                            String prefix, String fullpath) throws IOException {
-        if (prefix.length() > 0 && fullpath.length() > 0)
-             throw new BuildException("Both prefix and fullpath attributes may not be set on the same fileset.");
-
-        File thisBaseDir = scanner.getBasedir();
-
-        // directories that matched include patterns
-        String[] dirs = scanner.getIncludedDirectories();
-        if (dirs.length > 0 && fullpath.length() > 0)
-            throw new BuildException("fullpath attribute may only be specified for filesets that specify a single file.");
-        for (int i = 0; i < dirs.length; i++) {
-            String name = dirs[i].replace(File.separatorChar,'/');
-            if (!name.endsWith("/")) {
-                name += "/";
-            }
-            addParentDirs(thisBaseDir, name, zOut, prefix);
-        }
-
-        // files that matched include patterns
-        String[] files = scanner.getIncludedFiles();
-         if (files.length > 1 && fullpath.length() > 0)
-            throw new BuildException("fullpath attribute may only be specified for filesets that specify a single file.");
-        for (int i = 0; i < files.length; i++) {
-            File f = new File(thisBaseDir, files[i]);
-            if (fullpath.length() > 0)
-            {
-                // Add this file at the specified location.
-                addParentDirs(null, fullpath, zOut, "");
-                zipFile(f, zOut, fullpath);
-            }
-            else
-            {
-                // Add this file with the specified prefix.
-                String name = files[i].replace(File.separatorChar,'/');
-                addParentDirs(thisBaseDir, name, zOut, prefix);
-                zipFile(f, zOut, prefix+name);
-            }
-        }
-    }
-
-    protected void addZipEntries(ZipFileSet fs, DirectoryScanner ds,
-      ZipOutputStream zOut, String prefix)
-        throws IOException
-    {
-        ZipScanner zipScanner = (ZipScanner) ds;
-        File zipSrc = fs.getSrc();
-
-        ZipEntry entry;
-        ZipInputStream in = new ZipInputStream(new FileInputStream(zipSrc));
-        while ((entry = in.getNextEntry()) != null) {
-            String vPath = entry.getName();
-            if (zipScanner.match(vPath)) {
-                addParentDirs(null, vPath, zOut, prefix);
-                if (! entry.isDirectory()) {
-                  zipFile(in, zOut, prefix+vPath, entry.getTime());
-                }
-            }
-        }
-    }
-
-    protected void initZipOutputStream(ZipOutputStream zOut)
-        throws IOException, BuildException
-    {
-    }
-
-    /**
-     * Check whether the archive is up-to-date; and handle behavior for empty archives.
-     * @param scanners list of prepared scanners containing files to archive
-     * @param zipFile intended archive file (may or may not exist)
-     * @return true if nothing need be done (may have done something already); false if
-     *         archive creation should proceed
-     * @exception BuildException if it likes
-     */
-    protected boolean isUpToDate(FileScanner[] scanners, File zipFile) throws BuildException
-    {
-        String[][] fileNames = grabFileNames(scanners);
-        File[] files = grabFiles(scanners, fileNames);
-        if (files.length == 0) {
-            if (emptyBehavior.equals("skip")) {
-                log("Warning: skipping "+archiveType+" archive " + zipFile +
-                    " because no files were included.", Project.MSG_WARN);
-                return true;
-            } else if (emptyBehavior.equals("fail")) {
-                throw new BuildException("Cannot create "+archiveType+" archive " + zipFile +
-                                         ": no files were included.", location);
-            } else {
-                // Create.
-                if (zipFile.exists()) return true;
-                // In this case using java.util.zip will not work
-                // because it does not permit a zero-entry archive.
-                // Must create it manually.
-                log("Note: creating empty "+archiveType+" archive " + zipFile, Project.MSG_INFO);
-                try {
-                    OutputStream os = new FileOutputStream(zipFile);
-                    try {
-                        // Cf. PKZIP specification.
-                        byte[] empty = new byte[22];
-                        empty[0] = 80; // P
-                        empty[1] = 75; // K
-                        empty[2] = 5;
-                        empty[3] = 6;
-                        // remainder zeros
-                        os.write(empty);
-                    } finally {
-                        os.close();
-                    }
-                } catch (IOException ioe) {
-                    throw new BuildException("Could not create empty ZIP archive", ioe, location);
-                }
-                return true;
-            }
-        } else {
-            if (!zipFile.exists()) return false;
-
-            SourceFileScanner sfs = new SourceFileScanner(this);
-            MergingMapper mm = new MergingMapper();
-            mm.setTo(zipFile.getAbsolutePath());
-            for (int i=0; i<scanners.length; i++) {
-                if (sfs.restrict(fileNames[i], scanners[i].getBasedir(), null,
-                                 mm).length > 0) {
-                    return false;
-                }
-            }
-            return true;
-        }
-    }
-
-    protected static File[] grabFiles(FileScanner[] scanners) {
-        return grabFiles(scanners, grabFileNames(scanners));
-    }
-
-    protected static File[] grabFiles(FileScanner[] scanners, 
-                                      String[][] fileNames) {
-        Vector files = new Vector();
-        for (int i = 0; i < fileNames.length; i++) {
-            File thisBaseDir = scanners[i].getBasedir();
-            for (int j = 0; j < fileNames[i].length; j++)
-                files.addElement(new File(thisBaseDir, fileNames[i][j]));
-        }
-        File[] toret = new File[files.size()];
-        files.copyInto(toret);
-        return toret;
-    }
-
-    protected static String[][] grabFileNames(FileScanner[] scanners) {
-        String[][] result = new String[scanners.length][];
-        for (int i=0; i<scanners.length; i++) {
-            String[] files = scanners[i].getIncludedFiles();
-            String[] dirs = scanners[i].getIncludedDirectories();
-            result[i] = new String[files.length + dirs.length];
-            System.arraycopy(files, 0, result[i], 0, files.length);
-            System.arraycopy(dirs, 0, result[i], files.length, dirs.length);
-        }
-        return result;
-    }
-
-    protected void zipDir(File dir, ZipOutputStream zOut, String vPath)
-        throws IOException
-    {
-        if (addedDirs.get(vPath) != null) {
-            // don't add directories we've already added.
-            // no warning if we try, it is harmless in and of itself
-            return;
-        }
-        addedDirs.put(vPath, vPath);
-        
-        ZipEntry ze = new ZipEntry (vPath);
-        if (dir != null) ze.setTime (dir.lastModified ());
-        ze.setSize (0);
-        ze.setMethod (ZipEntry.STORED);
-        // This is faintly ridiculous:
-        ze.setCrc (emptyCrc);
-        zOut.putNextEntry (ze);
-    }
-
-    protected void zipFile(InputStream in, ZipOutputStream zOut, String vPath,
-                           long lastModified)
-        throws IOException
-    {
-        ZipEntry ze = new ZipEntry(vPath);
-        ze.setTime(lastModified);
-
-        /*
-         * XXX ZipOutputStream.putEntry expects the ZipEntry to know its
-         * size and the CRC sum before you start writing the data when using 
-         * STORED mode.
-         *
-         * This forces us to process the data twice.
-         *
-         * I couldn't find any documentation on this, just found out by try 
-         * and error.
-         */
-        if (!doCompress) {
-            long size = 0;
-            CRC32 cal = new CRC32();
-            if (!in.markSupported()) {
-                // Store data into a byte[]
-                ByteArrayOutputStream bos = new ByteArrayOutputStream();
-
-                byte[] buffer = new byte[8 * 1024];
-                int count = 0;
-                do {
-                    size += count;
-                    cal.update(buffer, 0, count);
-                    bos.write(buffer, 0, count);
-                    count = in.read(buffer, 0, buffer.length);
-                } while (count != -1);
-                in = new ByteArrayInputStream(bos.toByteArray());
-
-            } else {
-                in.mark(Integer.MAX_VALUE);
-                byte[] buffer = new byte[8 * 1024];
-                int count = 0;
-                do {
-                    size += count;
-                    cal.update(buffer, 0, count);
-                    count = in.read(buffer, 0, buffer.length);
-                } while (count != -1);
-                in.reset();
-            }
-            ze.setSize(size);
-            ze.setCrc(cal.getValue());
-        }
-
-        zOut.putNextEntry(ze);
-
-        byte[] buffer = new byte[8 * 1024];
-        int count = 0;
-        do {
-            zOut.write(buffer, 0, count);
-            count = in.read(buffer, 0, buffer.length);
-        } while (count != -1);
-    }
-
-    protected void zipFile(File file, ZipOutputStream zOut, String vPath)
-        throws IOException
-    {
-        FileInputStream fIn = new FileInputStream(file);
-        try {
-            zipFile(fIn, zOut, vPath, file.lastModified());
-        } finally {
-            fIn.close();
-        }
-    }
-
-    /**
-     * Ensure all parent dirs of a given entry have been added.
-     */
-    protected void addParentDirs(File baseDir, String entry,
-                                 ZipOutputStream zOut, String prefix)
-        throws IOException {
-
-        Stack directories = new Stack();
-        int slashPos = entry.length();
-
-        while ((slashPos = entry.lastIndexOf((int)'/', slashPos-1)) != -1) {
-            String dir = entry.substring(0, slashPos+1);
-            if (addedDirs.get(prefix+dir) != null) {
-                break;
-            }
-            directories.push(dir);
-        }
-
-        while (!directories.isEmpty()) {
-            String dir = (String) directories.pop();
-            File f = null;
-            if (baseDir != null) {
-                f = new File(baseDir, dir);
-            } else {
-                f = new File(dir);
-            }
-            zipDir(f, zOut, prefix+dir);
-        }
-    }
-
-    /**
-     * Iterate over the given Vector of (zip)filesets and add
-     * all files to the ZipOutputStream using the given prefix.
-     */
-    protected void addFiles(Vector filesets, ZipOutputStream zOut)
-        throws IOException {
-        // Add each fileset in the Vector.
-        for (int i = 0; i<filesets.size(); i++) {
-            FileSet fs = (FileSet) filesets.elementAt(i);
-            DirectoryScanner ds = fs.getDirectoryScanner(project);
-
-            String prefix = "";
-            String fullpath = "";
-            if (fs instanceof ZipFileSet) {
-                ZipFileSet zfs = (ZipFileSet) fs;
-                prefix = zfs.getPrefix();
-                fullpath = zfs.getFullpath();
-            }
-            
-            if (prefix.length() > 0 
-                && !prefix.endsWith("/")
-                && !prefix.endsWith("\\")) {
-                prefix += "/";
-            }
-
-            // Need to manually add either fullpath's parent directory, or 
-            // the prefix directory, to the archive. 
-            if (prefix.length() > 0) {
-                addParentDirs(null, prefix, zOut, "");
-                zipDir(null, zOut, prefix);
-            } else if (fullpath.length() > 0) {
-                addParentDirs(null, fullpath, zOut, "");
-            }
-
-            if (fs instanceof ZipFileSet
-                && ((ZipFileSet) fs).getSrc() != null) {
-                addZipEntries((ZipFileSet) fs, ds, zOut, prefix);
-            } else {
-                // Add the fileset.
-                addFiles(ds, zOut, prefix, fullpath);
-            }
-        }
-    }
-
-    /**
-     * Do any clean up necessary to allow this instance to be used again.
-     *
-     * <p>When we get here, the Zip file has been closed and all we
-     * need to do is to reset some globals.</p>
-     */
-    protected void cleanUp() {}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapter.java b/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapter.java
deleted file mode 100644
index 82c79fd..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapter.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.compilers;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.taskdefs.Javac;
-
-/**
- * The interface that all compiler adapters must adher to.  
- *
- * <p>A compiler adapter is an adapter that interprets the javac's
- * parameters in preperation to be passed off to the compier this
- * adapter represents.  As all the necessary values are stored in the
- * Javac task itself, the only thing all adapters need is the javac
- * task, the execute command and a parameterless constructor (for
- * reflection).</p>
- *
- * @author Jay Dickon Glanville <a href="mailto:jayglanville@home.com">jayglanville@home.com</a>
- */
-
-public interface CompilerAdapter {
-
-    /**
-     * Sets the compiler attributes, which are stored in the Javac task.
-     */
-    public void setJavac( Javac attributes );
-
-    /**
-     * Executes the task.
-     *
-     * @return has the compilation been successful
-     */
-    public boolean execute() throws BuildException;
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java b/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java
deleted file mode 100644
index ed3dcfb..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.compilers;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.Project;
-
-/**
- * Creates the necessary compiler adapter, given basic criteria.
- *
- * @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
- */
-public class CompilerAdapterFactory {
-
-    /** This is a singlton -- can't create instances!! */
-    private CompilerAdapterFactory() {
-    }
-
-    /**
-     * Based on the parameter passed in, this method creates the necessary
-     * factory desired.
-     *
-     * The current mapping for compiler names are as follows:
-     * <ul><li>jikes = jikes compiler
-     * <li>classic, javac1.1, javac1.2 = the standard compiler from JDK
-     * 1.1/1.2
-     * <li>modern, javac1.3 = the new compiler of JDK 1.3
-     * <li>jvc, microsoft = the command line compiler from Microsoft's SDK
-     * for Java / Visual J++
-     * <li><i>a fully quallified classname</i> = the name of a compiler
-     * adapter
-     * </ul>
-     *
-     * @param compilerType either the name of the desired compiler, or the
-     * full classname of the compiler's adapter.
-     * @param task a task to log through.
-     * @throws BuildException if the compiler type could not be resolved into
-     * a compiler adapter.
-     */
-    public static CompilerAdapter getCompiler( String compilerType, Task task ) 
-        throws BuildException {
-            /* If I've done things right, this should be the extent of the
-             * conditional statements required.
-             */
-            if ( compilerType.equalsIgnoreCase("jikes") ) {
-                return new Jikes();
-            }
-            if ( compilerType.equalsIgnoreCase("classic") ||
-                    compilerType.equalsIgnoreCase("javac1.1") ||
-                    compilerType.equalsIgnoreCase("javac1.2")) {
-                return new Javac12();
-            }
-            if ( compilerType.equalsIgnoreCase("modern") ||
-                    compilerType.equalsIgnoreCase("javac1.3")) {
-                // does the modern compiler exist?
-                try {
-                    Class.forName("com.sun.tools.javac.Main");
-                } catch (ClassNotFoundException cnfe) {
-                    task.log("Modern compiler is not available - using "
-                            + "classic compiler", Project.MSG_WARN);
-                    return new Javac12();
-                }
-                return new Javac13();
-            }
-            if ( compilerType.equalsIgnoreCase("jvc") ||
-                    compilerType.equalsIgnoreCase("microsoft")) {
-                return new Jvc();
-            }
-            return resolveClassName( compilerType );
-        }
-
-    /**
-     * Tries to resolve the given classname into a compiler adapter.
-     * Throws a fit if it can't.
-     *
-     * @param className The fully qualified classname to be created.
-     * @throws BuildException This is the fit that is thrown if className
-     * isn't an instance of CompilerAdapter.
-     */
-    private static CompilerAdapter resolveClassName( String className )
-        throws BuildException {
-        try {
-            Class c = Class.forName( className );
-            Object o = c.newInstance();
-            return (CompilerAdapter) o;
-        } catch ( ClassNotFoundException cnfe ) {
-            throw new BuildException( className + " can\'t be found.", cnfe );
-        } catch ( ClassCastException cce ) {
-            throw new BuildException(className + " isn\'t the classname of "
-                    + "a compiler adapter.", cce);
-        } catch ( Throwable t ) {
-            // for all other possibilities
-            throw new BuildException(className + " caused an interesting "
-                    + "exception.", t);
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
deleted file mode 100644
index 867cb3a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.compilers;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-
-import java.io.*;
-import java.util.Random;
-
-/**
- * This is the default implementation for the CompilerAdapter interface.
- * Currently, this is a cut-and-paste of the original javac task.
- *
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- * @author Robin Green <a href="mailto:greenrd@hotmail.com">greenrd@hotmail.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
- */
-public abstract class DefaultCompilerAdapter implements CompilerAdapter {
-
-    /* jdg - TODO - all these attributes are currently protected, but they
-     * should probably be private in the near future.
-     */
-
-    protected Path src;
-    protected File destDir;
-    protected String encoding;
-    protected boolean debug = false;
-    protected boolean optimize = false;
-    protected boolean deprecation = false;
-    protected boolean depend = false;
-    protected boolean verbose = false;
-    protected String target;
-    protected Path bootclasspath;
-    protected Path extdirs;
-    protected Path compileClasspath;
-    protected Project project;
-    protected Location location;
-    protected boolean includeAntRuntime;
-    protected boolean includeJavaRuntime;
-
-    protected File[] compileList;
-    protected static String lSep = System.getProperty("line.separator");
-    protected Javac attributes;
-
-    public void setJavac( Javac attributes ) {
-        this.attributes = attributes;
-        src = attributes.getSrcdir();
-        destDir = attributes.getDestdir();
-        encoding = attributes.getEncoding();
-        debug = attributes.getDebug();
-        optimize = attributes.getOptimize();
-        deprecation = attributes.getDeprecation();
-        depend = attributes.getDepend();
-        verbose = attributes.getVerbose();
-        target = attributes.getTarget();
-        bootclasspath = attributes.getBootclasspath();
-        extdirs = attributes.getExtdirs();
-        compileList = attributes.getFileList();
-        compileClasspath = attributes.getClasspath();
-        project = attributes.getProject();
-        location = attributes.getLocation();
-        includeAntRuntime = attributes.getIncludeantruntime();
-        includeJavaRuntime = attributes.getIncludejavaruntime();
-    }
-
-    public Javac getJavac() {
-        return attributes;
-    }
-
-    /**
-     * Builds the compilation classpath.
-     *
-     */
-    protected Path getCompileClasspath() {
-        Path classpath = new Path(project);
-
-        // add dest dir to classpath so that previously compiled and
-        // untouched classes are on classpath
-
-        if (destDir != null) {
-            classpath.setLocation(destDir);
-        }
-
-        // Combine the build classpath with the system classpath, in an 
-        // order determined by the value of build.classpath
-
-        if (compileClasspath == null) {
-            if ( includeAntRuntime ) {
-                classpath.addExisting(Path.systemClasspath);
-            }
-        } else {
-            if ( includeAntRuntime ) {
-                classpath.addExisting(compileClasspath.concatSystemClasspath("last"));
-            } else {
-                classpath.addExisting(compileClasspath.concatSystemClasspath("ignore"));
-            }
-        }
-
-        if (includeJavaRuntime) {
-            if (System.getProperty("java.vendor").toLowerCase().indexOf("microsoft") >= 0) {
-                // Pull in *.zip from packages directory
-                FileSet msZipFiles = new FileSet();
-                msZipFiles.setDir(new File(System.getProperty("java.home") + File.separator + "Packages"));
-                msZipFiles.setIncludes("*.ZIP");
-                classpath.addFileset(msZipFiles);
-            }
-            else if (Project.getJavaVersion() == Project.JAVA_1_1) {
-                classpath.addExisting(new Path(null,
-                                                System.getProperty("java.home")
-                                                + File.separator + "lib"
-                                                + File.separator 
-                                                + "classes.zip"));
-            } else {
-                // JDK > 1.1 seems to set java.home to the JRE directory.
-                classpath.addExisting(new Path(null,
-                                                System.getProperty("java.home")
-                                                + File.separator + "lib"
-                                                + File.separator + "rt.jar"));
-                // Just keep the old version as well and let addExistingToPath
-                // sort it out.
-                classpath.addExisting(new Path(null,
-                                                System.getProperty("java.home")
-                                                + File.separator +"jre"
-                                                + File.separator + "lib"
-                                                + File.separator + "rt.jar"));
-            }
-        }
-            
-        return classpath;
-    }
-
-    /**
-     * Does the command line argument processing common to classic and
-     * modern.  
-     */
-    protected Commandline setupJavacCommand() {
-        Commandline cmd = new Commandline();
-        Path classpath = getCompileClasspath();
-
-        if (deprecation == true) {
-            cmd.createArgument().setValue("-deprecation");
-        }
-
-        if (destDir != null) {
-            cmd.createArgument().setValue("-d");
-            cmd.createArgument().setFile(destDir);
-        }
-        
-        cmd.createArgument().setValue("-classpath");
-        // Just add "sourcepath" to classpath ( for JDK1.1 )
-        if (Project.getJavaVersion().startsWith("1.1")) {
-            cmd.createArgument().setValue(classpath.toString() 
-                                          + File.pathSeparator 
-                                          + src.toString());
-        } else {
-            cmd.createArgument().setPath(classpath);
-            cmd.createArgument().setValue("-sourcepath");
-            cmd.createArgument().setPath(src);
-            if (target != null) {
-                cmd.createArgument().setValue("-target");
-                cmd.createArgument().setValue(target);
-            }
-        }
-        if (encoding != null) {
-            cmd.createArgument().setValue("-encoding");
-            cmd.createArgument().setValue(encoding);
-        }
-        if (debug) {
-            cmd.createArgument().setValue("-g");
-        }
-        if (optimize) {
-            cmd.createArgument().setValue("-O");
-        }
-        if (bootclasspath != null) {
-            cmd.createArgument().setValue("-bootclasspath");
-            cmd.createArgument().setPath(bootclasspath);
-        }
-        if (extdirs != null) {
-            cmd.createArgument().setValue("-extdirs");
-            cmd.createArgument().setPath(extdirs);
-        }
-
-        if (depend) {
-            if (Project.getJavaVersion().startsWith("1.1")) {
-                cmd.createArgument().setValue("-depend");
-            } else if (Project.getJavaVersion().startsWith("1.2")) {
-                cmd.createArgument().setValue("-Xdepend");
-            } else {
-                attributes.log("depend attribute is not supported by the modern compiler",
-                    Project.MSG_WARN);
-            }
-        }
-
-        if (verbose) {
-            cmd.createArgument().setValue("-verbose");
-        }
-
-        logAndAddFilesToCompile(cmd);
-        return cmd;
-    }
-
-    /**
-     * Logs the compilation parameters, adds the files to compile and logs the 
-     * &qout;niceSourceList&quot;
-     */
-    protected void logAndAddFilesToCompile(Commandline cmd) {
-        attributes.log("Compilation args: " + cmd.toString(),
-            Project.MSG_VERBOSE);
-
-        StringBuffer niceSourceList = new StringBuffer("File");
-        if (compileList.length != 1) {
-            niceSourceList.append("s");
-        }
-        niceSourceList.append(" to be compiled:");
-
-        niceSourceList.append(lSep);
-
-        for (int i=0; i < compileList.length; i++) {
-            String arg = compileList[i].getAbsolutePath();
-            cmd.createArgument().setValue(arg);
-            niceSourceList.append("    " + arg + lSep);
-        }
-
-        attributes.log(niceSourceList.toString(), Project.MSG_VERBOSE);
-    }
-
-    /**
-     * Do the compile with the specified arguments.
-     * @param args - arguments to pass to process on command line
-     * @param firstFileName - index of the first source file in args
-     */
-    protected int executeExternalCompile(String[] args, int firstFileName) {
-        String[] commandArray = null;
-        File tmpFile = null;
-
-        try {
-            /*
-             * Many system have been reported to get into trouble with 
-             * long command lines - no, not only Windows ;-).
-             *
-             * POSIX seems to define a lower limit of 4k, so use a temporary 
-             * file if the total length of the command line exceeds this limit.
-             */
-            if (Commandline.toString(args).length() > 4096) {
-                PrintWriter out = null;
-                try {
-                    tmpFile = new File("jikes"+(new Random(System.currentTimeMillis())).nextLong());
-                    out = new PrintWriter(new FileWriter(tmpFile));
-                    for (int i = firstFileName; i < args.length; i++) {
-                        out.println(args[i]);
-                    }
-                    out.flush();
-                    commandArray = new String[firstFileName+1];
-                    System.arraycopy(args, 0, commandArray, 0, firstFileName);
-                    commandArray[firstFileName] = "@" + tmpFile.getAbsolutePath();
-                } catch (IOException e) {
-                    throw new BuildException("Error creating temporary file", e, location);
-                } finally {
-                    if (out != null) {
-                        try {out.close();} catch (Throwable t) {}
-                    }
-                }
-            } else {
-                commandArray = args;
-            }
-            
-            try {
-                Execute exe = new Execute(new LogStreamHandler(attributes, 
-                                                               Project.MSG_INFO,
-                                                               Project.MSG_WARN));
-                exe.setAntRun(project);
-                exe.setWorkingDirectory(project.getBaseDir());
-                exe.setCommandline(commandArray);
-                exe.execute();
-                return exe.getExitValue();
-            } catch (IOException e) {
-                throw new BuildException("Error running " + args[0] 
-                        + " compiler", e, location);
-            }
-        } finally {
-            if (tmpFile != null) {
-                tmpFile.delete();
-            }
-        }
-    }
-
-    /**
-     * Emulation of extdirs feature in java >= 1.2.
-     * This method adds all files in the given
-     * directories (but not in sub-directories!) to the classpath,
-     * so that you don't have to specify them all one by one.
-     * @param classpath - Path to append files to
-     */
-    protected void addExtdirsToClasspath(Path classpath) {
-        if (extdirs == null) {
-            String extProp = System.getProperty("java.ext.dirs");
-            if (extProp != null) {
-                extdirs = new Path(project, extProp);
-            } else {
-                return;
-            }
-        }
-
-        String[] dirs = extdirs.list();
-        for (int i=0; i<dirs.length; i++) {
-            if (!dirs[i].endsWith(File.separator)) {
-                dirs[i] += File.separator;
-            }
-            File dir = project.resolveFile(dirs[i]);
-            FileSet fs = new FileSet();
-            fs.setDir(dir);
-            fs.setIncludes("*");
-            classpath.addFileset(fs);
-        }
-    }
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/Javac12.java b/src/main/org/apache/tools/ant/taskdefs/compilers/Javac12.java
deleted file mode 100644
index aca48f7..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Javac12.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.compilers;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.LogOutputStream;
-import org.apache.tools.ant.types.Commandline;
-
-import java.io.*;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-/**
- * The implementation of the javac compiler for JDK 1.2
- * This is primarily a cut-and-paste from the original javac task before it
- * was refactored.
- *
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- * @author Robin Green <a href="mailto:greenrd@hotmail.com">greenrd@hotmail.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
- */
-public class Javac12 extends DefaultCompilerAdapter {
-
-    public boolean execute() throws BuildException {
-        attributes.log("Using classic compiler", Project.MSG_VERBOSE);
-        Commandline cmd = setupJavacCommand();
-
-        try {
-            // Create an instance of the compiler, redirecting output to
-            // the project log
-            OutputStream logstr = new LogOutputStream(attributes, Project.MSG_WARN);
-            Class c = Class.forName("sun.tools.javac.Main");
-            Constructor cons = c.getConstructor(new Class[] { OutputStream.class, String.class });
-            Object compiler = cons.newInstance(new Object[] { logstr, "javac" });
-
-            // Call the compile() method
-            Method compile = c.getMethod("compile", new Class [] { String[].class });
-            Boolean ok = (Boolean)compile.invoke(compiler, new Object[] {cmd.getArguments()});
-            return ok.booleanValue();
-        }
-        catch (ClassNotFoundException ex) {
-            throw new BuildException("Cannot use classic compiler, as it is not available"+
-                                                         " A common solution is to set the environment variable"+
-                                     " JAVA_HOME to your jdk directory.", location);
-        }
-        catch (Exception ex) {
-            if (ex instanceof BuildException) {
-                throw (BuildException) ex;
-            } else {
-                throw new BuildException("Error starting classic compiler: ", ex, location);
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java b/src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java
deleted file mode 100644
index a50713f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.compilers;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.LogOutputStream;
-import org.apache.tools.ant.types.Commandline;
-
-import java.lang.reflect.Method;
-import java.io.*;
-
-/**
- * The implementation of the javac compiler for JDK 1.3
- * This is primarily a cut-and-paste from the original javac task before it
- * was refactored.
- *
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- * @author Robin Green <a href="mailto:greenrd@hotmail.com">greenrd@hotmail.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
- */
-public class Javac13 extends DefaultCompilerAdapter {
-
-    /**
-     * Integer returned by the "Modern" jdk1.3 compiler to indicate success.
-     */
-    private static final int MODERN_COMPILER_SUCCESS = 0;
-
-    public boolean execute() throws BuildException {
-        attributes.log("Using modern compiler", Project.MSG_VERBOSE);
-        Commandline cmd = setupJavacCommand();
-
-        PrintStream err = System.err;
-        PrintStream out = System.out;
-
-        // Use reflection to be able to build on all JDKs >= 1.1:
-        try {
-            PrintStream logstr = 
-                new PrintStream(new LogOutputStream(attributes, Project.MSG_WARN));
-            System.setOut(logstr);
-            System.setErr(logstr);
-            Class c = Class.forName ("com.sun.tools.javac.Main");
-            Object compiler = c.newInstance ();
-            Method compile = c.getMethod ("compile",
-                new Class [] {(new String [] {}).getClass ()});
-            int result = ((Integer) compile.invoke
-                          (compiler, new Object[] {cmd.getArguments()})) .intValue ();
-            return (result == MODERN_COMPILER_SUCCESS);
-        } catch (Exception ex) {
-            if (ex instanceof BuildException) {
-                throw (BuildException) ex;
-            } else {
-                throw new BuildException("Error starting modern compiler", ex, location);
-            }
-        } finally {
-            System.setErr(err);
-            System.setOut(out);
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/Jikes.java b/src/main/org/apache/tools/ant/taskdefs/compilers/Jikes.java
deleted file mode 100644
index fbc4e12..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Jikes.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.compilers;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.*;
-
-/**
- * The implementation of the jikes compiler.
- * This is primarily a cut-and-paste from the original javac task before it
- * was refactored.
- *
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- * @author Robin Green <a href="mailto:greenrd@hotmail.com">greenrd@hotmail.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
- */
-public class Jikes extends DefaultCompilerAdapter {
-
-    /**
-     * Performs a compile using the Jikes compiler from IBM..
-     * Mostly of this code is identical to doClassicCompile()
-     * However, it does not support all options like
-     * bootclasspath, extdirs, deprecation and so on, because
-     * there is no option in jikes and I don't understand
-     * what they should do.
-     *
-     * It has been successfully tested with jikes >1.10
-     *
-     * @author skanthak@muehlheim.de
-     */
-    public boolean execute() throws BuildException {
-        attributes.log("Using jikes compiler", Project.MSG_VERBOSE);
-
-        Path classpath = new Path(project);
-
-        // Jikes doesn't support bootclasspath dir (-bootclasspath)
-        // so we'll emulate it for compatibility and convenience.
-        if (bootclasspath != null) {
-            classpath.append(bootclasspath);
-        }
-
-        // Jikes doesn't support an extension dir (-extdir)
-        // so we'll emulate it for compatibility and convenience.
-        addExtdirsToClasspath(classpath);
-
-        if ( (bootclasspath == null) || (bootclasspath.size() == 0) ) {
-            // no bootclasspath, therefore, get one from the java runtime
-            includeJavaRuntime = true;
-        } else {
-            // there is a bootclasspath stated.  By default, the
-            // includeJavaRuntime is false.  If the user has stated a
-            // bootclasspath and said to include the java runtime, it's on
-            // their head!
-        }
-        classpath.append(getCompileClasspath());
-
-        // Jikes has no option for source-path so we
-        // will add it to classpath.
-        classpath.append(src);
-
-        // if the user has set JIKESPATH we should add the contents as well
-        String jikesPath = System.getProperty("jikes.class.path");
-        if (jikesPath != null) {
-            classpath.append(new Path(project, jikesPath));
-        }
-        
-        Commandline cmd = new Commandline();
-        cmd.setExecutable("jikes");
-
-        if (deprecation == true)
-            cmd.createArgument().setValue("-deprecation");
-
-        if (destDir != null) {
-            cmd.createArgument().setValue("-d");
-            cmd.createArgument().setFile(destDir);
-        }
-        
-        cmd.createArgument().setValue("-classpath");
-        cmd.createArgument().setPath(classpath);
-
-        if (encoding != null) {
-            cmd.createArgument().setValue("-encoding");
-            cmd.createArgument().setValue(encoding);
-        }
-        if (debug) {
-            cmd.createArgument().setValue("-g");
-        }
-        if (optimize) {
-            cmd.createArgument().setValue("-O");
-        }
-        if (verbose) {
-            cmd.createArgument().setValue("-verbose");
-        }
-        if (depend) {
-            cmd.createArgument().setValue("-depend");
-        } 
-        /**
-         * XXX
-         * Perhaps we shouldn't use properties for these
-         * three options (emacs mode, warnings and pedantic),
-         * but include it in the javac directive?
-         */
-
-        /**
-         * Jikes has the nice feature to print error
-         * messages in a form readable by emacs, so
-         * that emacs can directly set the cursor
-         * to the place, where the error occured.
-         */
-        String emacsProperty = project.getProperty("build.compiler.emacs");
-        if (emacsProperty != null && Project.toBoolean(emacsProperty)) {
-            cmd.createArgument().setValue("+E");
-        }
-
-        /**
-         * Jikes issues more warnings that javac, for
-         * example, when you have files in your classpath
-         * that don't exist. As this is often the case, these
-         * warning can be pretty annoying.
-         */
-        String warningsProperty = project.getProperty("build.compiler.warnings");
-        if (warningsProperty != null && !Project.toBoolean(warningsProperty)) {
-            cmd.createArgument().setValue("-nowarn");
-        }
-
-        /**
-         * Jikes can issue pedantic warnings. 
-         */
-        String pedanticProperty = project.getProperty("build.compiler.pedantic");
-        if (pedanticProperty != null && Project.toBoolean(pedanticProperty)) {
-            cmd.createArgument().setValue("+P");
-        }
- 
-        /**
-         * Jikes supports something it calls "full dependency
-         * checking", see the jikes documentation for differences
-         * between -depend and +F.
-         */
-        String fullDependProperty = project.getProperty("build.compiler.fulldepend");
-        if (fullDependProperty != null && Project.toBoolean(fullDependProperty)) {
-            cmd.createArgument().setValue("+F");
-        }
-
-        int firstFileName = cmd.size();
-        logAndAddFilesToCompile(cmd);
-
-        return executeExternalCompile(cmd.getCommandline(), firstFileName) == 0;
-    }
-
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/Jvc.java b/src/main/org/apache/tools/ant/taskdefs/compilers/Jvc.java
deleted file mode 100644
index e78788d..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Jvc.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.compilers;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.*;
-
-/**
- * The implementation of the jvc compiler from microsoft.
- * This is primarily a cut-and-paste from the original javac task before it
- * was refactored.
- *
- * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
- * @author Robin Green <a href="mailto:greenrd@hotmail.com">greenrd@hotmail.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
- */
-public class Jvc extends DefaultCompilerAdapter {
-
-    public boolean execute() throws BuildException {
-        attributes.log("Using jvc compiler", Project.MSG_VERBOSE);
-
-        Path classpath = new Path(project);
-
-        // jvc doesn't support bootclasspath dir (-bootclasspath)
-        // so we'll emulate it for compatibility and convenience.
-        if (bootclasspath != null) {
-            classpath.append(bootclasspath);
-        }
-
-        // jvc doesn't support an extension dir (-extdir)
-        // so we'll emulate it for compatibility and convenience.
-        addExtdirsToClasspath(classpath);
-
-        if ( (bootclasspath == null) || (bootclasspath.size() == 0) ) {
-            // no bootclasspath, therefore, get one from the java runtime
-            includeJavaRuntime = true;
-        } else {
-            // there is a bootclasspath stated.  By default, the
-            // includeJavaRuntime is false.  If the user has stated a
-            // bootclasspath and said to include the java runtime, it's on
-            // their head!
-        }
-        classpath.append(getCompileClasspath());
-
-        // jvc has no option for source-path so we
-        // will add it to classpath.
-        classpath.append(src);
-
-        Commandline cmd = new Commandline();
-        cmd.setExecutable("jvc");
-
-        if (destDir != null) {
-            cmd.createArgument().setValue("/d");
-            cmd.createArgument().setFile(destDir);
-        }
-        
-        // Add the Classpath before the "internal" one.
-        cmd.createArgument().setValue("/cp:p");
-        cmd.createArgument().setPath(classpath);
-
-        // Enable MS-Extensions and ...
-        cmd.createArgument().setValue("/x-");
-        // ... do not display a Message about this.
-        cmd.createArgument().setValue("/nomessage");
-        // Do not display Logo
-        cmd.createArgument().setValue("/nologo");
-
-        if (debug) {
-            cmd.createArgument().setValue("/g");
-        }
-        if (optimize) {
-            cmd.createArgument().setValue("/O");
-        }
-        if (verbose) {
-            cmd.createArgument().setValue("/verbose");
-        }
-
-        int firstFileName = cmd.size();
-        logAndAddFilesToCompile(cmd);
-
-        return executeExternalCompile(cmd.getCommandline(), firstFileName) == 0;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/defaults.properties b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
deleted file mode 100644
index c2d950d..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties
+++ /dev/null
@@ -1,98 +0,0 @@
-# standard ant tasks
-mkdir=org.apache.tools.ant.taskdefs.Mkdir
-javac=org.apache.tools.ant.taskdefs.Javac
-chmod=org.apache.tools.ant.taskdefs.Chmod
-delete=org.apache.tools.ant.taskdefs.Delete
-copy=org.apache.tools.ant.taskdefs.Copy
-move=org.apache.tools.ant.taskdefs.Move
-jar=org.apache.tools.ant.taskdefs.Jar
-rmic=org.apache.tools.ant.taskdefs.Rmic
-cvs=org.apache.tools.ant.taskdefs.Cvs
-get=org.apache.tools.ant.taskdefs.Get
-unzip=org.apache.tools.ant.taskdefs.Expand
-unjar=org.apache.tools.ant.taskdefs.Expand
-unwar=org.apache.tools.ant.taskdefs.Expand
-echo=org.apache.tools.ant.taskdefs.Echo
-javadoc=org.apache.tools.ant.taskdefs.Javadoc
-zip=org.apache.tools.ant.taskdefs.Zip
-gzip=org.apache.tools.ant.taskdefs.GZip
-gunzip=org.apache.tools.ant.taskdefs.GUnzip
-replace=org.apache.tools.ant.taskdefs.Replace
-java=org.apache.tools.ant.taskdefs.Java
-tstamp=org.apache.tools.ant.taskdefs.Tstamp
-property=org.apache.tools.ant.taskdefs.Property
-taskdef=org.apache.tools.ant.taskdefs.Taskdef
-ant=org.apache.tools.ant.taskdefs.Ant
-exec=org.apache.tools.ant.taskdefs.ExecTask
-tar=org.apache.tools.ant.taskdefs.Tar
-untar=org.apache.tools.ant.taskdefs.Untar
-available=org.apache.tools.ant.taskdefs.Available
-filter=org.apache.tools.ant.taskdefs.Filter
-fixcrlf=org.apache.tools.ant.taskdefs.FixCRLF
-patch=org.apache.tools.ant.taskdefs.Patch
-style=org.apache.tools.ant.taskdefs.XSLTProcess
-touch=org.apache.tools.ant.taskdefs.Touch
-signjar=org.apache.tools.ant.taskdefs.SignJar
-genkey=org.apache.tools.ant.taskdefs.GenerateKey
-antstructure=org.apache.tools.ant.taskdefs.AntStructure
-execon=org.apache.tools.ant.taskdefs.ExecuteOn
-antcall=org.apache.tools.ant.taskdefs.CallTarget
-sql=org.apache.tools.ant.taskdefs.SQLExec
-mail=org.apache.tools.ant.taskdefs.SendEmail
-fail=org.apache.tools.ant.taskdefs.Exit
-war=org.apache.tools.ant.taskdefs.War
-uptodate=org.apache.tools.ant.taskdefs.UpToDate
-apply=org.apache.tools.ant.taskdefs.Transform
-
-# optional tasks
-script=org.apache.tools.ant.taskdefs.optional.Script
-netrexxc=org.apache.tools.ant.taskdefs.optional.NetRexxC
-renameext=org.apache.tools.ant.taskdefs.optional.RenameExtensions
-ejbc=org.apache.tools.ant.taskdefs.optional.ejb.Ejbc
-ddcreator=org.apache.tools.ant.taskdefs.optional.ejb.DDCreator
-wlrun=org.apache.tools.ant.taskdefs.optional.ejb.WLRun
-wlstop=org.apache.tools.ant.taskdefs.optional.ejb.WLStop
-vssget=org.apache.tools.ant.taskdefs.optional.vss.MSVSSGET
-ejbjar=org.apache.tools.ant.taskdefs.optional.ejb.EjbJar
-mparse=org.apache.tools.ant.taskdefs.optional.metamata.MParse
-junit=org.apache.tools.ant.taskdefs.optional.junit.JUnitTask
-cab=org.apache.tools.ant.taskdefs.optional.Cab
-ftp=org.apache.tools.ant.taskdefs.optional.net.FTP
-javacc=org.apache.tools.ant.taskdefs.optional.javacc.JavaCC
-jjtree=org.apache.tools.ant.taskdefs.optional.javacc.JJTree
-starteam=org.apache.tools.ant.taskdefs.optional.scm.AntStarTeamCheckOut
-wljspc=org.apache.tools.ant.taskdefs.optional.jsp.WLJspc
-jlink=org.apache.tools.ant.taskdefs.optional.jlink.JlinkTask
-native2ascii=org.apache.tools.ant.taskdefs.optional.Native2Ascii
-propertyfile=org.apache.tools.ant.taskdefs.optional.PropertyFile
-depend=org.apache.tools.ant.taskdefs.optional.depend.Depend
-antlr=org.apache.tools.ant.taskdefs.optional.ANTLR
-vajload=org.apache.tools.ant.taskdefs.optional.ide.VAJLoadProjects
-vajexport=org.apache.tools.ant.taskdefs.optional.ide.VAJExport
-vajimport=org.apache.tools.ant.taskdefs.optional.ide.VAJImport
-telnet=org.apache.tools.ant.taskdefs.optional.net.TelnetTask
-csc=org.apache.tools.ant.taskdefs.optional.dotnet.CSharp
-ilasm=org.apache.tools.ant.taskdefs.optional.dotnet.Ilasm
-stylebook=org.apache.tools.ant.taskdefs.optional.StyleBook
-test=org.apache.tools.ant.taskdefs.optional.Test
-p4change=org.apache.tools.ant.taskdefs.optional.perforce.P4Change
-p4label=org.apache.tools.ant.taskdefs.optional.perforce.P4Label
-p4have=org.apache.tools.ant.taskdefs.optional.perforce.P4Have
-p4sync=org.apache.tools.ant.taskdefs.optional.perforce.P4Sync
-p4edit=org.apache.tools.ant.taskdefs.optional.perforce.P4Edit
-p4submit=org.apache.tools.ant.taskdefs.optional.perforce.P4Submit
-javah=org.apache.tools.ant.taskdefs.optional.Javah
-ccupdate=org.apache.tools.ant.taskdefs.optional.clearcase.CCUpdate
-cccheckout=org.apache.tools.ant.taskdefs.optional.clearcase.CCCheckout
-cccheckin=org.apache.tools.ant.taskdefs.optional.clearcase.CCCheckin
-ccuncheckout=org.apache.tools.ant.taskdefs.optional.clearcase.CCUnCheckout
-sound=org.apache.tools.ant.taskdefs.optional.sound.SoundTask
-junitreport=org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator
-
-# deprecated ant tasks (kept for back compatibility)
-javadoc2=org.apache.tools.ant.taskdefs.Javadoc
-compileTask=org.apache.tools.ant.taskdefs.CompileTask
-copydir=org.apache.tools.ant.taskdefs.Copydir
-copyfile=org.apache.tools.ant.taskdefs.Copyfile
-deltree=org.apache.tools.ant.taskdefs.Deltree
-rename=org.apache.tools.ant.taskdefs.Rename
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java b/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java
deleted file mode 100644
index 781de16..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import java.io.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-/**
- * @author Erik Meade, emeade@geekfarm.org
- */
-public class ANTLR extends Task {
-
-    private CommandlineJava commandline = new CommandlineJava();
-    private File target;
-    private File outputDirectory;
-    private boolean fork = false;
-    private File dir;
-
-    public ANTLR() {
-        commandline.setVm("java");
-        commandline.setClassname("antlr.Tool");
-    }
-
-    public void setTarget(File target) {
-        log("Setting target to: " + target.toString(), Project.MSG_VERBOSE);
-        this.target = target;
-    }
-
-    public void setOutputdirectory(File outputDirectory) {
-        log("Setting output directory to: " + outputDirectory.toString(), Project.MSG_VERBOSE);
-        this.outputDirectory = outputDirectory;
-    }
-
-    public void setFork(boolean s) {
-        this.fork = s;
-    }
-
-    /**
-     * The working directory of the process
-     */
-    public void setDir(File d) {
-        this.dir = d;
-    }
-
-
-    public void execute() throws BuildException {
-        validateAttributes();
-
-        //TODO: use ANTLR to parse the grammer file to do this.
-        if (target.lastModified() > getGeneratedFile().lastModified()) {
-            commandline.createArgument().setValue("-o");
-            commandline.createArgument().setValue(outputDirectory.toString());
-            commandline.createArgument().setValue(target.toString());
-
-            if (fork) {
-                log("Forking " + commandline.toString(), Project.MSG_VERBOSE);
-                int err = run(commandline.getCommandline());
-                if (err == 1) {
-                    throw new BuildException("ANTLR returned: "+err, location);
-                }
-            }
-            else {
-                Execute.runCommand(this, commandline.getCommandline());
-            }
-        }
-    }
-
-    private void validateAttributes() throws BuildException{
-        if (target == null || !target.isFile()) {
-            throw new BuildException("Invalid target: " + target);
-        }
-
-        // if no output directory is specified, used the target's directory
-        if (outputDirectory == null) {
-            String fileName = target.toString();
-            setOutputdirectory(new File(target.getParent()));
-        }
-        if (!outputDirectory.isDirectory()) {
-            throw new BuildException("Invalid output directory: " + outputDirectory);
-        }
-        if (fork && (dir == null || !dir.isDirectory())) {
-            throw new BuildException("Invalid working directory: " + dir);
-        }
-    }
-
-    private File getGeneratedFile() throws BuildException {
-        String generatedFileName = null;
-        try {
-            BufferedReader in = new BufferedReader(new FileReader(target));
-            String line;
-            while ((line = in.readLine()) != null) {
-                int extendsIndex = line.indexOf(" extends ");
-                if (line.startsWith("class ") &&  extendsIndex > -1) {
-                    generatedFileName = line.substring(6, extendsIndex).trim();
-                    break;
-                }
-            }
-            in.close();
-        } catch (Exception e) {
-            throw new BuildException("Unable to determine generated class");
-        }
-        if (generatedFileName == null) {
-            throw new BuildException("Unable to determine generated class");
-        }
-        return new File(outputDirectory, generatedFileName + ".java");
-    }
-
-    private int run(String[] command) throws BuildException {
-        Execute exe = new Execute(new LogStreamHandler(this, Project.MSG_INFO,
-                                                       Project.MSG_WARN), null);
-        exe.setAntRun(project);
-        exe.setWorkingDirectory(dir);
-        exe.setCommandline(command);
-        try {
-            return exe.execute();
-        } catch (IOException e) {
-            throw new BuildException(e, location);
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java b/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
deleted file mode 100644
index 1ea8b9c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-
-import java.io.*;
-import java.util.Enumeration;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import java.util.Random;
-import java.text.DecimalFormat;
-
-/**
- * Create a CAB archive.
- *
- * @author Roger Vaughn <a href="mailto:rvaughn@seaconinc.com">rvaughn@seaconinc.com</a>
- */
-
-public class Cab extends MatchingTask {
-
-    private File cabFile;
-    private File baseDir;
-    private Vector filesets = new Vector();
-    private boolean doCompress = true;
-    private boolean doVerbose = false;
-    private String cmdOptions;
-    
-    protected String archiveType = "cab";
-
-    private static String myos;
-    private static boolean isWindows;
-
-    static {
-        myos = System.getProperty("os.name");
-        isWindows = myos.toLowerCase().indexOf("windows") >= 0;
-    }
-    
-    /**
-     * This is the name/location of where to 
-     * create the .cab file.
-     */
-    public void setCabfile(File cabFile) {
-        this.cabFile = cabFile;
-    }
-    
-    /**
-     * This is the base directory to look in for 
-     * things to cab.
-     */
-    public void setBasedir(File baseDir) {
-        this.baseDir = baseDir;
-    }
-
-    /**
-     * Sets whether we want to compress the files or only store them.
-     */
-    public void setCompress(boolean compress) {
-        doCompress = compress;
-    }
-
-    /**
-     * Sets whether we want to see or suppress cabarc output.
-     */
-    public void setVerbose(boolean verbose) {
-        doVerbose = verbose;
-    }
-
-    /**
-     * Sets additional cabarc options that aren't supported directly.
-     */
-    public void setOptions(String options) {
-        cmdOptions = options;
-    }
-
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
-
-    /*
-     * I'm not fond of this pattern: "sub-method expected to throw
-     * task-cancelling exceptions".  It feels too much like programming
-     * for side-effects to me...
-     */
-    protected void checkConfiguration() throws BuildException {
-        if (baseDir == null) {
-            throw new BuildException("basedir attribute must be set!");
-        }
-        if (!baseDir.exists()) {
-            throw new BuildException("basedir does not exist!");
-        }
-        if (cabFile == null) {
-            throw new BuildException("cabfile attribute must be set!");
-        }
-    }
-
-    /**
-     * Create a new exec delegate.  The delegate task is populated so that
-     * it appears in the logs to be the same task as this one.
-     */
-    protected ExecTask createExec() throws BuildException
-    {
-        ExecTask exec = (ExecTask)project.createTask("exec");
-        exec.setOwningTarget(this.getOwningTarget());
-        exec.setTaskName(this.getTaskName());
-        exec.setDescription(this.getDescription());
-
-        return exec;
-    }
-
-    /**
-     * Check to see if the target is up to date with respect to input files.
-     * @return true if the cab file is newer than its dependents.
-     */
-    protected boolean isUpToDate(Vector files)
-    {
-        boolean upToDate = true;
-        for (int i=0; i<files.size() && upToDate; i++)
-        {
-            String file = files.elementAt(i).toString();
-            if (new File(baseDir,file).lastModified() > 
-                cabFile.lastModified())
-                upToDate = false;
-        }
-        return upToDate;
-    }
-
-    /**
-     * Create the cabarc command line to use.
-     */
-    protected Commandline createCommand(File listFile)
-    {
-        Commandline command = new Commandline();
-        command.setExecutable("cabarc");
-        command.createArgument().setValue("-r");
-        command.createArgument().setValue("-p");
-
-        if (!doCompress)
-        {
-            command.createArgument().setValue("-m");
-            command.createArgument().setValue("none");
-        }
-
-        if (cmdOptions != null)
-        {
-            command.createArgument().setValue(cmdOptions);
-        }
-        
-        command.createArgument().setValue("n");
-        command.createArgument().setFile(cabFile);
-        command.createArgument().setValue("@" + listFile.getAbsolutePath());
-
-        return command;
-    }
-
-    private static int counter = new Random().nextInt() % 100000;
-    protected File createTempFile(String prefix, String suffix)
-    {
-        if (suffix == null)
-        {
-            suffix = ".tmp";
-        }
-
-        String name = prefix +
-            new DecimalFormat("#####").format(new Integer(counter++)) +
-            suffix;
-
-        String tmpdir = System.getProperty("java.io.tmpdir");
-
-        // java.io.tmpdir is not present in 1.1
-        if (tmpdir == null)
-            return new File(name);
-        else
-            return new File(tmpdir, name);
-    }
-
-    /**
-     * Creates a list file.  This temporary file contains a list of all files
-     * to be included in the cab, one file per line.
-     */
-    protected File createListFile(Vector files)
-        throws IOException
-    {
-        File listFile = createTempFile("ant", null);
-        
-        PrintWriter writer = new PrintWriter(new FileOutputStream(listFile));
-
-        for (int i = 0; i < files.size(); i++)
-        {
-            writer.println(files.elementAt(i).toString());
-        }
-        writer.close();
-
-        return listFile;
-    }
-
-    /**
-     * Append all files found by a directory scanner to a vector.
-     */
-    protected void appendFiles(Vector files, DirectoryScanner ds)
-    {
-        String[] dsfiles = ds.getIncludedFiles();
-
-        for (int i = 0; i < dsfiles.length; i++)
-        {
-            files.addElement(dsfiles[i]);
-        }
-    }
-
-    /**
-     * Get the complete list of files to be included in the cab.  Filenames
-     * are gathered from filesets if any have been added, otherwise from the
-     * traditional include parameters.
-     */
-    protected Vector getFileList() throws BuildException
-    {
-        Vector files = new Vector();
-
-        if (filesets.size() == 0)
-        {
-            // get files from old methods - includes and nested include
-            appendFiles(files, super.getDirectoryScanner(baseDir));
-        }
-        else
-        {
-            // get files from filesets
-            for (int i = 0; i < filesets.size(); i++)
-            {
-                FileSet fs = (FileSet) filesets.elementAt(i);
-                if (fs != null)
-                {
-                    appendFiles(files, fs.getDirectoryScanner(project));
-                }
-            }
-        }
-
-        return files;
-    }
-
-    public void execute() throws BuildException {
-
-        checkConfiguration();
-
-        Vector files = getFileList();
-    
-        // quick exit if the target is up to date
-        if (isUpToDate(files)) return;
-
-        log("Building "+ archiveType +": "+ cabFile.getAbsolutePath());
-
-        // we must be on Windows to continue
-        if (!isWindows) {
-            log("Using listcab/libcabinet", Project.MSG_VERBOSE);
-            
-            StringBuffer sb = new StringBuffer();
-            
-            Enumeration fileEnum = files.elements();
-            
-            while (fileEnum.hasMoreElements()) {
-                sb.append(fileEnum.nextElement()).append("\n");
-            }
-            sb.append("\n").append(cabFile.getAbsolutePath()).append("\n");
-            
-            try {
-                Process p = Runtime.getRuntime().exec("listcab");
-                OutputStream out = p.getOutputStream();
-                out.write(sb.toString().getBytes());
-                out.flush();
-                out.close();
-            } catch (IOException ex) {
-                String msg = "Problem creating " + cabFile + " " + ex.getMessage();
-                throw new BuildException(msg);
-            }
-        } else {
-            try {
-                File listFile = createListFile(files);
-                ExecTask exec = createExec();
-                File outFile = null;
-                
-                // die if cabarc fails
-                exec.setFailonerror(true);
-                exec.setDir(baseDir);
-                
-                if (!doVerbose) {
-                    outFile = createTempFile("ant", null);
-                    exec.setOutput(outFile);
-                }
-                    
-                exec.setCommand(createCommand(listFile));
-                exec.execute();
-    
-                if (outFile != null) {
-                    outFile.delete();
-                }
-                
-                listFile.delete();
-            } catch (IOException ioe) {
-                String msg = "Problem creating " + cabFile + " " + ioe.getMessage();
-                throw new BuildException(msg);
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java b/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java
deleted file mode 100755
index 7818978..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java
+++ /dev/null
@@ -1,466 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.LogOutputStream;
-import org.apache.tools.ant.types.*;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Constructor;
-import java.io.*;
-import java.util.*;
-
-/**
- * Task to generate JNI header files using javah. This task can take the following
- * arguments:
- * <ul>
- * <li>classname - the fully-qualified name of a class</li>
- * <li>outputFile - Concatenates the resulting header or source files for all
- *     the classes listed into this file</li>
- * <li>destdir - Sets the directory where javah saves the header files or the
- *     stub files</li>
- * <li>classpath</li>
- * <li>bootclasspath</li>
- * <li>force - Specifies that output files should always be written
-       (JDK1.2 only)</li>
- * <li>old - Specifies that old JDK1.0-style header files should be generated
- *     (otherwise output file contain JNI-style native method
- *      function prototypes) (JDK1.2 only)</li>
- * <li>stubs - generate C declarations from the Java object file (used with old)</li>
- * <li>verbose - causes javah to print a message to stdout concerning the status
- *     of the generated files</li>
- * <li>extdirs - Override location of installed extensions</li>
- * </ul>
- * Of these arguments, either <b>outputFile</b> or <b>destdir</b> is required,
- * but not both. More than one classname may be specified, using a comma-separated
- * list or by using <code>&lt;class name="xxx"&gt;</code> elements within the task.
- * <p>
- * When this task executes, it will generate C header and source files that
- * are needed to implement native methods.
- *
- * @author Rick Beton <a href="mailto:richard.beton@physics.org">richard.beton@physics.org</a>
- */
-
-public class Javah extends Task {
-
-    private static final String FAIL_MSG = "Compile failed, messages should have been provided.";
-
-    private Vector classes = new Vector(2);
-    private String cls;
-    private File destDir;
-    private Path classpath = null;
-    private String outputFile = null;
-    private boolean verbose = false;
-    private boolean force   = false;
-    private boolean old     = false;
-    private boolean stubs   = false;
-    private Path bootclasspath;
-    //private Path extdirs;
-    private static String lSep = System.getProperty("line.separator");
-
-    public void setClass(String cls) {
-        this.cls = cls;
-    }
-
-    public ClassArgument createClass() {
-        ClassArgument ga = new ClassArgument();
-        classes.addElement(ga);
-        return ga;
-    }
-
-    public class ClassArgument {
-        private String name;
-
-        public ClassArgument() {
-        }
-
-        public void setName(String name) {
-            this.name = name;
-            log("ClassArgument.name="+name);
-        }
-
-        public String getName() {
-            return name;
-        }
-    }
-
-    /**
-     * Set the destination directory into which the Java source
-     * files should be compiled.
-     */
-    public void setDestdir(File destDir) {
-        this.destDir = destDir;
-    }
-
-    public void setClasspath(Path src) {
-        if (classpath == null) {
-            classpath = src;
-        } else {
-            classpath.append(src);
-        }
-    }
-    public Path createClasspath() {
-        if (classpath == null) {
-            classpath = new Path(project);
-        }
-        return classpath.createPath();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setClasspathRef(Reference r) {
-        createClasspath().setRefid(r);
-    }
-
-    public void setBootclasspath(Path src) {
-        if (bootclasspath == null) {
-            bootclasspath = src;
-        } else {
-            bootclasspath.append(src);
-        }
-    }
-    public Path createBootclasspath() {
-        if (bootclasspath == null) {
-            bootclasspath = new Path(project);
-        }
-        return bootclasspath.createPath();
-    }
-
-    /**
-     * Adds a reference to a CLASSPATH defined elsewhere.
-     */
-    public void setBootClasspathRef(Reference r) {
-        createBootclasspath().setRefid(r);
-    }
-
-    ///**
-    // * Sets the extension directories that will be used during the
-    // * compilation.
-    // */
-    //public void setExtdirs(Path extdirs) {
-    //    if (this.extdirs == null) {
-    //        this.extdirs = extdirs;
-    //    } else {
-    //        this.extdirs.append(extdirs);
-    //    }
-    //}
-
-    ///**
-    // * Maybe creates a nested classpath element.
-    // */
-    //public Path createExtdirs() {
-    //    if (extdirs == null) {
-    //        extdirs = new Path(project);
-    //    }
-    //    return extdirs.createPath();
-    //}
-
-    /**
-     * Set the output file name.
-     */
-    public void setOutputFile(String outputFile) {
-        this.outputFile = outputFile;
-    }
-
-    /**
-     * Set the force-write flag.
-     */
-    public void setForce(boolean force) {
-        this.force = force;
-    }
-
-    /**
-     * Set the old flag.
-     */
-    public void setOld(boolean old) {
-        this.old = old;
-    }
-
-    /**
-     * Set the stubs flag.
-     */
-    public void setStubs(boolean stubs) {
-        this.stubs = stubs;
-    }
-
-    /**
-     * Set the verbose flag.
-     */
-    public void setVerbose(boolean verbose) {
-        this.verbose = verbose;
-    }
-
-    /**
-     * Executes the task.
-     */
-    public void execute() throws BuildException {
-        // first off, make sure that we've got a srcdir
-
-        if ((cls == null) && (classes.size() == 0)) {
-            throw new BuildException("class attribute must be set!", location);
-        }
-
-        if ((cls != null) && (classes.size() > 0)) {
-            throw new BuildException("set class attribute or class element, not both.", location);
-        }
-
-        if (destDir != null) {
-            if (!destDir.isDirectory()) {
-                throw new BuildException("destination directory \"" + destDir + "\" does not exist or is not a directory", location);
-            }
-            if (outputFile != null) {
-                throw new BuildException("destdir and outputFile are mutually exclusive", location);
-            }
-        }
-
-        if (classpath == null) {
-            classpath = Path.systemClasspath;
-        }
-
-        String compiler = project.getProperty("build.compiler");
-        if (compiler == null) {
-            if (Project.getJavaVersion().startsWith("1.3")) {
-                compiler = "modern";
-            } else {
-                compiler = "classic";
-            }
-        }
-
-        doClassicCompile();
-    }
-
-    // XXX
-    // we need a way to not use the current classpath.
-
-    /**
-     * Peforms a compile using the classic compiler that shipped with
-     * JDK 1.1 and 1.2.
-     */
-
-    private void doClassicCompile() throws BuildException {
-        Commandline cmd = setupJavahCommand();
-
-        // Use reflection to be able to build on all JDKs
-        /*
-        // provide the compiler a different message sink - namely our own
-        sun.tools.javac.Main compiler =
-                new sun.tools.javac.Main(new LogOutputStream(this, Project.MSG_WARN), "javac");
-
-        if (!compiler.compile(cmd.getArguments())) {
-            throw new BuildException("Compile failed");
-        }
-        */
-        PrintStream err = System.err;
-        PrintStream out = System.out;
-
-        try {
-            // Javac uses logstr to change the output stream and calls
-            // the constructor's invoke method to create a compiler instance
-            // dynamically. However, javah has a different interface and this
-            // makes it harder, so here's a simple alternative.
-            //------------------------------------------------------------------
-            PrintStream logstr = 
-                new PrintStream(new LogOutputStream(this, Project.MSG_WARN));
-            System.setOut(logstr);
-            System.setErr(logstr);
-            com.sun.tools.javah.Main main = new com.sun.tools.javah.Main( cmd.getArguments() );
-            main.run();
-        }
-        //catch (ClassNotFoundException ex) {
-        //    throw new BuildException("Cannot use javah because it is not available"+
-        //                             " A common solution is to set the environment variable"+
-        //                             " JAVA_HOME to your jdk directory.", location);
-        //}
-        catch (Exception ex) {
-            if (ex instanceof BuildException) {
-                throw (BuildException) ex;
-            } else {
-                throw new BuildException("Error starting javah: ", ex, location);
-            }
-        } finally {
-            System.setErr(err);
-            System.setOut(out);
-        }
-    }
-
-    /**
-     * Does the command line argument processing common to classic and
-     * modern.
-     */
-    private Commandline setupJavahCommand() {
-        Commandline cmd = new Commandline();
-
-        if (destDir != null) {
-            cmd.createArgument().setValue("-d");
-            cmd.createArgument().setFile(destDir);
-        }
-
-        if (outputFile != null) {
-            cmd.createArgument().setValue("-o");
-            cmd.createArgument().setValue(outputFile);
-        }
-
-        if (classpath != null) {
-            cmd.createArgument().setValue("-classpath");
-            cmd.createArgument().setPath(classpath);
-        }
-
-        // JDK1.1 is rather simpler than JDK1.2
-        if (Project.getJavaVersion().startsWith("1.1")) {
-            if (verbose) {
-                cmd.createArgument().setValue("-v");
-            }
-        } else {
-            if (verbose) {
-                cmd.createArgument().setValue("-verbose");
-            }
-            if (old) {
-                cmd.createArgument().setValue("-old");
-            }
-            if (force) {
-                cmd.createArgument().setValue("-force");
-            }
-        }
-
-        if (stubs) {
-            if (!old) {
-                throw new BuildException("stubs only available in old mode.", location);
-            }
-            cmd.createArgument().setValue("-stubs");
-        }
-        if (bootclasspath != null) {
-            cmd.createArgument().setValue("-bootclasspath");
-            cmd.createArgument().setPath(bootclasspath);
-        }
-
-        logAndAddFilesToCompile(cmd);
-        return cmd;
-    }
-
-    /**
-     * Logs the compilation parameters, adds the files to compile and logs the
-     * &qout;niceSourceList&quot;
-     */
-    protected void logAndAddFilesToCompile(Commandline cmd) {
-        int n = 0;
-        log("Compilation args: " + cmd.toString(),
-            Project.MSG_VERBOSE);
-
-        StringBuffer niceClassList = new StringBuffer();
-        if (cls != null) {
-            StringTokenizer tok = new StringTokenizer(cls, ",", false);
-            while (tok.hasMoreTokens()) {
-                String aClass = tok.nextToken().trim();
-                cmd.createArgument().setValue(aClass);
-                niceClassList.append("    " + aClass + lSep);
-                n++;
-            }
-        }
-
-        Enumeration enum = classes.elements();
-        while (enum.hasMoreElements()) {
-            ClassArgument arg = (ClassArgument)enum.nextElement();
-            String aClass = arg.getName();
-            cmd.createArgument().setValue(aClass);
-            niceClassList.append("    " + aClass + lSep);
-            n++;
-        }
-
-        StringBuffer prefix = new StringBuffer("Class");
-        if (n > 1) {
-            prefix.append("es");
-        }
-        prefix.append(" to be compiled:");
-        prefix.append(lSep);
-
-        log(prefix.toString() + niceClassList.toString(), Project.MSG_VERBOSE);
-    }
-
-    ///**
-    // * Emulation of extdirs feature in java >= 1.2.
-    // * This method adds all files in the given
-    // * directories (but not in sub-directories!) to the classpath,
-    // * so that you don't have to specify them all one by one.
-    // * @param classpath - Path to append files to
-    // */
-    //protected void addExtdirsToClasspath(Path classpath) {
-    //    if (extdirs == null) {
-    //        String extProp = System.getProperty("java.ext.dirs");
-    //        if (extProp != null) {
-    //            extdirs = new Path(project, extProp);
-    //        } else {
-    //            return;
-    //        }
-    //    }
-    //
-    //    String[] dirs = extdirs.list();
-    //    for (int i=0; i<dirs.length; i++) {
-    //        if (!dirs[i].endsWith(File.separator)) {
-    //            dirs[i] += File.separator;
-    //        }
-    //        File dir = project.resolveFile(dirs[i]);
-    //        FileSet fs = new FileSet();
-    //        fs.setDir(dir);
-    //        fs.setIncludes("*");
-    //        classpath.addFileset(fs);
-    //    }
-    //}
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Native2Ascii.java b/src/main/org/apache/tools/ant/taskdefs/optional/Native2Ascii.java
deleted file mode 100644
index 870a364..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Native2Ascii.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.MatchingTask;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Mapper;
-import org.apache.tools.ant.util.*;
-
-import java.io.File;
-
-/**
- * Convert files from native encodings to ascii.
- *
- * @author Drew Sudell <asudell@acm.org>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class Native2Ascii extends MatchingTask {
-
-    private boolean reverse = false;  // convert from ascii back to native
-    private String encoding = null;   // encoding to convert to/from
-    private File srcDir = null;       // Where to find input files
-    private File destDir = null;      // Where to put output files
-    private String extension = null;  // Extension of output files if different
-
-    private Mapper mapper;
-
-    /**
-     * Flag the conversion to run in the reverse sense,
-     * that is Ascii to Native encoding.
-     * 
-     * @param reverse True if the conversion is to be reversed,
-     *                otherwise false;
-     */
-    public void setReverse(boolean reverse){
-        this.reverse = reverse;
-    }
-
-    /**
-     * Set the encoding to translate to/from.
-     * If unset, the default encoding for the JVM is used.
-     *
-     * @param encoding String containing the name of the Native 
-     *                 encoding to convert from or to.
-     */
-    public void setEncoding(String encoding){
-        this.encoding = encoding;
-    }
-
-    /**
-     * Set the source directory in which to find files to convert.
-     *
-     * @param srcDir Direcrory to find input file in.
-     */
-    public void setSrc(File srcDir){
-        this.srcDir = srcDir;
-    }
-
-
-    /**
-     * Set the destination dirctory to place converted files into.
-     *
-     * @param destDir directory to place output file into.
-     */
-    public void setDest(File destDir){
-        this.destDir = destDir;
-    }
-
-    /**
-     * Set the extension which converted files should have.
-     * If unset, files will not be renamed.
-     *
-     * @param ext File extension to use for converted files.
-     */
-    public void setExt(String ext){
-        this.extension = ext;
-    }
-
-    /**
-     * Defines the FileNameMapper to use (nested mapper element).
-     */
-    public Mapper createMapper() throws BuildException {
-        if (mapper != null) {
-            throw new BuildException("Cannot define more than one mapper",
-                                     location);
-        }
-        mapper = new Mapper(project);
-        return mapper;
-    }
-
-    public void execute() throws BuildException {
-
-        Commandline baseCmd = null;      // the common portion of our cmd line
-        DirectoryScanner scanner = null; // Scanner to find our inputs
-        String[] files;                  // list of files to process
-
-        // default srcDir to basedir
-        if (srcDir == null){
-            srcDir = project.resolveFile(".");
-        }
-
-        // Require destDir
-        if (destDir == null){
-            throw new BuildException("The dest attribute must be set.");
-        }
-
-        // if src and dest dirs are the same, require the extension
-        // to be set, so we don't stomp every file.  One could still
-        // include a file with the same extension, but ....
-        if (srcDir.equals(destDir) && extension == null && mapper == null){
-            throw new BuildException("The ext attribute or a mapper must be set if"
-                                     + " src and dest dirs are the same.");
-        }
-
-        FileNameMapper m = null;
-        if (mapper == null) {
-            if (extension == null) {
-                m = new IdentityMapper();
-            } else {
-                m = new ExtMapper();
-            }
-        } else {
-            m = mapper.getImplementation();
-        }
-        
-        scanner = getDirectoryScanner(srcDir);
-        files = scanner.getIncludedFiles();
-        SourceFileScanner sfs = new SourceFileScanner(this);
-        files = sfs.restrict(files, srcDir, destDir, m);
-        int count = files.length;
-        if (count == 0) {
-            return;
-        }
-        String message = "Converting "+ count + " file"
-            + (count != 1 ? "s" : "") + " from ";
-        log(message + srcDir + " to " + destDir);
-        for (int i = 0; i < files.length; i++){
-            convert(files[i], m.mapFileName(files[i])[0]);
-        }
-    }
-
-    /**
-     * Convert a single file.
-     *
-     * @param fileName Name of the file to convert (relative to srcDir).
-     */
-    private void convert(String srcName, String destName) throws BuildException {
-
-        Commandline cmd = new Commandline();  // Command line to run
-        File srcFile;                         // File to convert
-        File destFile;                        // where to put the results
-
-        // Set up the basic args (this could be done once, but
-        // it's cleaner here)
-        if (reverse){
-            cmd.createArgument().setValue("-reverse");
-        }
-
-        if (encoding != null){
-            cmd.createArgument().setValue("-encoding");
-            cmd.createArgument().setValue(encoding);
-        }
-
-        // Build the full file names
-        srcFile = new File(srcDir, srcName);
-        destFile = new File(destDir, destName);
-
-        cmd.createArgument().setFile(srcFile);
-        cmd.createArgument().setFile(destFile);
-        // Make sure we're not about to clobber something
-        if (srcFile.equals(destFile)){
-            throw new BuildException("file " + srcFile 
-                                     + " would overwrite its self");
-        }
-
-        // Make intermediate directories if needed
-        // XXX JDK 1.1 dosen't have File.getParentFile,
-        String parentName = destFile.getParent();
-        if (parentName != null){
-            File parentFile = new File(parentName);
-            
-            if ((! parentFile.exists()) && ( ! parentFile.mkdirs())){
-                throw new BuildException("cannot create parent directory "
-                                         + parentName);
-            }
-        }
-                        
-        log("converting " + srcName, Project.MSG_VERBOSE);
-        sun.tools.native2ascii.Main n2a
-            = new sun.tools.native2ascii.Main();
-        if(! n2a.convert(cmd.getArguments())){
-            throw new BuildException("conversion failed");
-        }
-    }
-
-    private class ExtMapper implements FileNameMapper {
-
-        public void setFrom(String s) {}
-        public void setTo(String s) {}
-
-        public String[] mapFileName(String fileName) {
-            int lastDot = fileName.lastIndexOf('.');
-            if (lastDot >= 0) {
-                return new String[] {fileName.substring(0, lastDot) + extension};
-            } else {
-                return new String[] {fileName + extension};
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/NetRexxC.java b/src/main/org/apache/tools/ant/taskdefs/optional/NetRexxC.java
deleted file mode 100644
index 4af0a02..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/NetRexxC.java
+++ /dev/null
@@ -1,661 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.*;
-import netrexx.lang.Rexx;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-
-/**
- * Task to compile NetRexx source files. This task can take the following
- * arguments:
- * <ul>
- * <li>binary</li>
- * <li>classpath</li>
- * <li>comments</li>
- * <li>compile</li>
- * <li>console</li>
- * <li>crossref</li>
- * <li>decimal</li>
- * <li>destdir</li>
- * <li>diag</li>
- * <li>explicit</li>
- * <li>format</li>
- * <li>keep</li>
- * <li>logo</li>
- * <li>replace</li>
- * <li>savelog</li>
- * <li>srcdir</li>
- * <li>sourcedir</li>
- * <li>strictargs</li>
- * <li>strictassign</li>
- * <li>strictcase</li>
- * <li>strictimport</li>
- * <li>symbols</li>
- * <li>time</li>
- * <li>trace</li>
- * <li>utf8</li>
- * <li>verbose</li>
- * </ul>
- * Of these arguments, the <b>srcdir</b> argument is required.
- *
- * <p>When this task executes, it will recursively scan the srcdir
- * looking for NetRexx source files to compile. This task makes its
- * compile decision based on timestamp.
- * <p>Before files are compiled they and any other file in the
- * srcdir will be copied to the destdir allowing support files to be
- * located properly in the classpath. The reason for copying the source files
- * before the compile is that NetRexxC has only two destinations for classfiles:
- * <ol>
- * <li>The current directory, and,</li>
- * <li>The directory the source is in (see sourcedir option)
- * </ol>
- *
- * @author dIon Gillard <a href="mailto:dion@multitask.com.au">dion@multitask.com.au</a>
- */
-
-public class NetRexxC extends MatchingTask {
-
-    // variables to hold arguments
-    private boolean binary;
-    private String classpath;
-    private boolean comments;
-    private boolean compact;
-    private boolean compile = true;
-    private boolean console;
-    private boolean crossref;
-    private boolean decimal = true;
-    private File destDir;
-    private boolean diag;
-    private boolean explicit;
-    private boolean format;
-    private boolean java;
-    private boolean keep;
-    private boolean logo = true;
-    private boolean replace;
-    private boolean savelog;
-    private File srcDir;
-    private boolean sourcedir = true; // ?? Should this be the default for ant?
-    private boolean strictargs;
-    private boolean strictassign;
-    private boolean strictcase;
-    private boolean strictimport;
-    private boolean strictprops;
-    private boolean strictsignal;
-    private boolean symbols;
-    private boolean time;
-    private String trace = "trace2";
-    private boolean utf8;
-    private String verbose = "verbose3";
-
-    // other implementation variables
-    private Vector compileList = new Vector();
-    private Hashtable filecopyList = new Hashtable();
-    private String oldClasspath = System.getProperty("java.class.path");
-
-
-    /**
-     * Set whether literals are treated as binary, rather than NetRexx types
-     */
-    public void setBinary(boolean binary) {
-        this.binary = binary;
-    }
-
-    /**
-     * Set the classpath used for NetRexx compilation
-     */
-    public void setClasspath(String classpath) {
-        this.classpath = classpath;
-    }
-
-    /**
-     * Set whether comments are passed through to the generated java source.
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false
-     */
-    public void setComments(boolean comments) {
-        this.comments = comments;
-    }
-
-    /**
-     * Set whether error messages come out in compact or verbose format.
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false
-     */
-    public void setCompact(boolean compact) {
-        this.compact = compact;
-    }
-
-    /**
-     * Set whether the NetRexx compiler should compile the generated java code
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is true.
-     * Setting this flag to false, will automatically set the keep flag to true.
-     */
-    public void setCompile(boolean compile) {
-        this.compile = compile;
-        if (!this.compile && !this.keep) this.keep = true;
-    }
-
-    /**
-     * Set whether or not messages should be displayed on the 'console'
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is true.
-     */
-    public void setConsole(boolean console) {
-        this.console = console;
-    }
-
-    /**
-     * Whether variable cross references are generated
-     */
-    public void setCrossref(boolean crossref) {
-        this.crossref = crossref;
-    }
-
-    /**
-     * Set whether decimal arithmetic should be used for the netrexx code.
-     * Binary arithmetic is used when this flag is turned off.
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is true.
-     */
-    public void setDecimal(boolean decimal) {
-        this.decimal = decimal;
-    }
-
-    /**
-     * Set the destination directory into which the NetRexx source
-     * files should be copied and then compiled.
-     */
-    public void setDestDir(String destDirName) {
-        destDir = project.resolveFile(destDirName);
-    }
-
-    /**
-     * Whether diagnostic information about the compile is generated
-     */
-    public void setDiag(boolean diag) {
-        this.diag = diag;
-    }
-
-    /**
-     * Sets whether variables must be declared explicitly before use.
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setExplicit(boolean explicit) {
-        this.explicit = explicit;
-    }
-
-    /**
-     * Whether the generated java code is formatted nicely or left to match NetRexx
-     * line numbers for call stack debugging
-     */
-    public void setFormat(boolean format) {
-        this.format = format;
-    }
-
-    /**
-     * Whether the generated java code is produced
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setJava(boolean java) {
-        this.java = java;
-    }
-
-
-    /**
-     * Sets whether the generated java source file should be kept after compilation.
-     * The generated files will have an extension of .java.keep, <b>not</b> .java
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setKeep(boolean keep) {
-        this.keep = keep;
-    }
-
-    /**
-     * Whether the compiler text logo is displayed when compiling
-     */
-    public void setLogo(boolean logo) {
-        this.logo = logo;
-    }
-
-    /**
-     * Whether the generated .java file should be replaced when compiling
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setReplace(boolean replace) {
-        this.replace = replace;
-    }
-
-    /**
-     * Sets whether the compiler messages will be written to NetRexxC.log as
-     * well as to the console
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setSavelog(boolean savelog) {
-        this.savelog = savelog;
-    }
-
-    /**
-     * Tells the NetRexx compiler to store the class files in the same directory
-     * as the source files. The alternative is the working directory
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is true.
-     */
-    public void setSourcedir(boolean sourcedir) {
-        this.sourcedir = sourcedir;
-    }
-
-    /**
-     * Set the source dir to find the source Java files.
-     */
-    public void setSrcDir(String srcDirName) {
-        srcDir = project.resolveFile(srcDirName);
-    }
-
-    /**
-     * Tells the NetRexx compiler that method calls always need parentheses,
-     * even if no arguments are needed, e.g. <code>aStringVar.getBytes</code>
-     * vs. <code>aStringVar.getBytes()</code>
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setStrictargs(boolean strictargs) {
-        this.strictargs = strictargs;
-    }
-
-    /**
-     * Tells the NetRexx compile that assignments must match exactly on type
-     */
-    public void setStrictassign(boolean strictassign) {
-        this.strictassign = strictassign;
-    }
-
-    /**
-     * Specifies whether the NetRexx compiler should be case sensitive or not
-     */
-    public void setStrictcase(boolean strictcase) {
-        this.strictcase = strictcase;
-    }
-
-    /**
-     * Sets whether classes need to be imported explicitly using an
-     * <code>import</code> statement. By default the NetRexx compiler will import
-     * certain packages automatically
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setStrictimport(boolean strictimport) {
-        this.strictimport = strictimport;
-    }
-
-    /**
-     * Sets whether local properties need to be qualified explicitly using <code>this</code>
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setStrictprops(boolean strictprops) {
-        this.strictprops = strictprops;
-    }
-
-
-    /**
-     * Whether the compiler should force catching of exceptions by explicitly named types
-     */
-    public void setStrictsignal(boolean strictsignal) {
-        this.strictsignal = strictsignal;
-    }
-
-    /**
-     * Sets whether debug symbols should be generated into the class file
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setSymbols(boolean symbols) {
-        this.symbols = symbols;
-    }
-
-    /**
-     * Asks the NetRexx compiler to print compilation times to the console
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setTime(boolean time) {
-        this.time = time;
-    }
-
-    /**
-     * Turns on or off tracing and directs the resultant trace output
-     * Valid values are: "trace", "trace1", "trace2" and "notrace".
-     * "trace" and "trace2"
-     */
-    public void setTrace(String trace) {
-        if (trace.equalsIgnoreCase("trace")
-            || trace.equalsIgnoreCase("trace1")
-            || trace.equalsIgnoreCase("trace2")
-            || trace.equalsIgnoreCase("notrace")) {
-            this.trace = trace;
-        } else {
-            throw new BuildException("Unknown trace value specified: '" + trace + "'");
-        }
-    }
-
-    /**
-     * Tells the NetRexx compiler that the source is in UTF8
-     * Valid true values are "on" or "true". Anything else sets the flag to false.
-     * The default value is false.
-     */
-    public void setUtf8(boolean utf8) {
-        this.utf8 = utf8;
-    }
-
-    /**
-     * Whether lots of warnings and error messages should be generated
-     */
-    public void setVerbose(String verbose) {
-        this.verbose = verbose;
-    }
-
-    /**
-     * Executes the task, i.e. does the actual compiler call
-     */
-    public void execute() throws BuildException {
-
-        // first off, make sure that we've got a srcdir and destdir
-        if (srcDir == null || destDir == null ) {
-            throw new BuildException("srcDir and destDir attributes must be set!");
-        }
-
-        // scan source and dest dirs to build up both copy lists and
-        // compile lists
-        //        scanDir(srcDir, destDir);
-        DirectoryScanner ds = getDirectoryScanner(srcDir);
-
-        String[] files = ds.getIncludedFiles();
-
-        scanDir(srcDir, destDir, files);
-
-        // copy the source and support files
-        copyFilesToDestination();
-
-        // compile the source files
-        if (compileList.size() > 0) {
-            log("Compiling " + compileList.size() + " source file"
-                + (compileList.size() == 1 ? "" : "s")
-                + " to " + destDir);
-            doNetRexxCompile();
-        }
-    }
-
-    /**
-     * Scans the directory looking for source files to be compiled and
-     * support files to be copied.
-     */
-    private void scanDir(File srcDir, File destDir, String[] files) {
-        for (int i = 0; i < files.length; i++) {
-            File srcFile = new File(srcDir, files[i]);
-            File destFile = new File(destDir, files[i]);
-            String filename = files[i];
-            // if it's a non source file, copy it if a later date than the
-            // dest
-            // if it's a source file, see if the destination class file
-            // needs to be recreated via compilation
-            if (filename.toLowerCase().endsWith(".nrx")) {
-                File classFile = 
-                    new File(destDir, 
-                             filename.substring(0, filename.lastIndexOf('.')) + ".class");
-
-                if (!compile || srcFile.lastModified() > classFile.lastModified()) {
-                    filecopyList.put(srcFile.getAbsolutePath(), destFile.getAbsolutePath());
-                    compileList.addElement(destFile.getAbsolutePath());
-                }
-            } else {
-                if (srcFile.lastModified() > destFile.lastModified()) {
-                    filecopyList.put(srcFile.getAbsolutePath(), destFile.getAbsolutePath());
-                }
-            }
-        }
-    }
-
-    /**
-     * Copy eligible files from the srcDir to destDir
-     */
-    private void copyFilesToDestination() {
-        if (filecopyList.size() > 0) {
-            log("Copying " + filecopyList.size() + " file"
-                + (filecopyList.size() == 1 ? "" : "s")
-                + " to " + destDir.getAbsolutePath());
-            Enumeration enum = filecopyList.keys();
-            while (enum.hasMoreElements()) {
-                String fromFile = (String)enum.nextElement();
-                String toFile = (String)filecopyList.get(fromFile);
-                try {
-                    project.copyFile(fromFile, toFile);
-                } catch (IOException ioe) {
-                    String msg = "Failed to copy " + fromFile + " to " + toFile
-                        + " due to " + ioe.getMessage();
-                    throw new BuildException(msg, ioe);
-                }
-            }
-        }
-    }
-
-    /**
-     * Peforms a copmile using the NetRexx 1.1.x compiler
-     */
-    private void doNetRexxCompile() throws BuildException {
-        log("Using NetRexx compiler", Project.MSG_VERBOSE);
-        String classpath = getCompileClasspath();
-        StringBuffer compileOptions = new StringBuffer();
-        StringBuffer fileList = new StringBuffer();
-
-        // create an array of strings for input to the compiler: one array
-        // comes from the compile options, the other from the compileList
-        String[] compileOptionsArray = getCompileOptionsAsArray();
-        String[] fileListArray = new String[compileList.size()];
-        Enumeration e = compileList.elements();
-        int j = 0;
-        while (e.hasMoreElements()) {
-            fileListArray[j] = (String)e.nextElement();
-            j++;
-        }
-        // create a single array of arguments for the compiler
-        String compileArgs[] = new String[compileOptionsArray.length + fileListArray.length];
-        for (int i = 0; i < compileOptionsArray.length; i++) {
-            compileArgs[i] = compileOptionsArray[i];
-        }
-        for (int i = 0; i < fileListArray.length; i++) {
-            compileArgs[i+compileOptionsArray.length] = fileListArray[i];
-        }
-
-        // print nice output about what we are doing for the log
-        compileOptions.append("Compilation args: ");
-        for (int i = 0; i < compileOptionsArray.length; i++) {
-            compileOptions.append(compileOptionsArray[i]);
-            compileOptions.append(" ");
-        }
-        log(compileOptions.toString(), Project.MSG_VERBOSE);
-
-        String eol = System.getProperty("line.separator");
-        StringBuffer niceSourceList = new StringBuffer("Files to be compiled:" + eol);
-
-        for (int i = 0; i < compileList.size(); i++) {
-            niceSourceList.append("    ");
-            niceSourceList.append(compileList.elementAt(i).toString());
-            niceSourceList.append(eol);
-        }
-
-        log(niceSourceList.toString(), Project.MSG_VERBOSE);
-
-        // need to set java.class.path property and restore it later
-        // since the NetRexx compiler has no option for the classpath
-        String currentClassPath = System.getProperty("java.class.path");
-        Properties currentProperties = System.getProperties();
-        currentProperties.put("java.class.path", classpath);
-
-        try {
-            StringWriter out = new StringWriter(); 
-            int rc = COM.ibm.netrexx.process.NetRexxC.
-                main(new Rexx(compileArgs), new PrintWriter(out));
-
-            if (rc > 1) { // 1 is warnings from real NetRexxC
-                log(out.toString(), Project.MSG_ERR);
-                String msg = "Compile failed, messages should have been provided.";
-                throw new BuildException(msg);
-            }
-            else if (rc == 1) {
-                log(out.toString(), Project.MSG_WARN);
-            }
-            else {
-                log(out.toString(), Project.MSG_INFO);
-            }        
-        } finally {
-            // need to reset java.class.path property
-            // since the NetRexx compiler has no option for the classpath
-            currentProperties = System.getProperties();
-            currentProperties.put("java.class.path", currentClassPath);
-        }
-    }
-
-    /**
-     * Builds the compilation classpath.
-     */
-    private String getCompileClasspath() {
-        StringBuffer classpath = new StringBuffer();
-
-        // add dest dir to classpath so that previously compiled and
-        // untouched classes are on classpath
-        classpath.append(destDir.getAbsolutePath());
-
-        // add our classpath to the mix
-        if (this.classpath != null) {
-            addExistingToClasspath(classpath, this.classpath);
-        }
-
-        // add the system classpath
-        // addExistingToClasspath(classpath,System.getProperty("java.class.path"));
-        return classpath.toString();
-    }
-
-    /**
-     * This
-     */
-    private String[] getCompileOptionsAsArray() {
-        Vector options = new Vector();
-        options.addElement(binary ? "-binary" : "-nobinary");
-        options.addElement(comments ? "-comments" : "-nocomments");
-        options.addElement(compile ? "-compile" : "-nocompile");
-        options.addElement(compact ? "-compact" : "-nocompact");
-        options.addElement(console ? "-console" : "-noconsole");
-        options.addElement(crossref ? "-crossref" : "-nocrossref");
-        options.addElement(decimal ? "-decimal" : "-nodecimal");
-        options.addElement(diag ? "-diag" : "-nodiag");
-        options.addElement(explicit ? "-explicit": "-noexplicit");
-        options.addElement(format ? "-format" : "-noformat");
-        options.addElement(keep ? "-keep" : "-nokeep");
-        options.addElement(logo ? "-logo" : "-nologo");
-        options.addElement(replace ? "-replace" : "-noreplace");
-        options.addElement(savelog ? "-savelog" : "-nosavelog");
-        options.addElement(sourcedir ? "-sourcedir" : "-nosourcedir");
-        options.addElement(strictargs ? "-strictargs" : "-nostrictargs");
-        options.addElement(strictassign ? "-strictassign" : "-nostrictassign");
-        options.addElement(strictcase ? "-strictcase": "-nostrictcase");
-        options.addElement(strictimport ? "-strictimport" : "-nostrictimport");
-        options.addElement(strictprops ? "-strictprops" : "-nostrictprops");
-        options.addElement(strictsignal ? "-strictsignal" : "-nostrictsignal");
-        options.addElement(symbols ? "-symbols" : "-nosymbols");
-        options.addElement(time ? "-time" : "-notime");
-        options.addElement("-" + trace);
-        options.addElement(utf8 ? "-utf8" : "-noutf8");
-        options.addElement("-" + verbose);
-        String[] results = new String[options.size()];
-        options.copyInto(results);
-        return results;
-    }
-    /**
-     * Takes a classpath-like string, and adds each element of
-     * this string to a new classpath, if the components exist.
-     * Components that don't exist, aren't added.
-     * We do this, because jikes issues warnings for non-existant
-     * files/dirs in his classpath, and these warnings are pretty
-     * annoying.
-     * @param target - target classpath
-     * @param source - source classpath
-     * to get file objects.
-     */
-    private void addExistingToClasspath(StringBuffer target,String source) {
-        StringTokenizer tok = new StringTokenizer(source,
-                                                  System.getProperty("path.separator"), false);
-        while (tok.hasMoreTokens()) {
-            File f = project.resolveFile(tok.nextToken());
-
-            if (f.exists()) {
-                target.append(File.pathSeparator);
-                target.append(f.getAbsolutePath());
-            } else {
-                log("Dropping from classpath: "+
-                    f.getAbsolutePath(), Project.MSG_VERBOSE);
-            }
-        }
-
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java b/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
deleted file mode 100644
index 89ecd21..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
+++ /dev/null
@@ -1,639 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000-2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.*;
-import java.text.*;
-
-/**
- *PropertyFile task uses java.util.Properties to modify integer, String and
- *Date settings in a property file.<p>
- *
- *
- *The following is an example of its usage:
- *    <ul>&lt;target name="setState"&gt;<br>
- *    <ul>&lt;property<br>
- *        <ul>name="header"<br>
- *        value="##Generated file - do not modify!"/&gt;<br>
- *      &lt;propertyfile file="apropfile.properties" comment="${header}"&gt;<br>
- *        &lt;entry key="product.version.major" type="int"  value="5"/&gt;<br>
- *        &lt;entry key="product.version.minor" type="int"  value="0"/&gt;<br>
- *        &lt;entry key="product.build.major"   type="int"  value="0" /&gt;<br>
- *        &lt;entry key="product.build.minor"   type="int"  operation="+" /&gt;<br>
- *        &lt;entry key="product.build.date"    type="date" operation="now" /&gt;<br>
- *        &lt;entry key="intSet" type="int" operation="=" value="681"/&gt;<br>
- *        &lt;entry key="intDec" type="int" operation="-"/&gt;<br>
- *        &lt;entry key="NeverDate" type="date" operation="never"/&gt;<br>
- *        &lt;entry key="StringEquals" type="string" value="testValue"/&gt;<br>
- *        &lt;entry key="NowDate" type="date" operation="now"/&gt;<br></ul>
- *     &lt;/propertyfile&gt;<br></ul>
- *   &lt;/target&gt;</ul><p>
- *
- *The &lt;propertyfile&gt; task must have:<br>
- *    <ul><li>file</li></ul>
- *Other parameters are:<br>
- *    <ul><li>comment, key, operation, type and value (the final four being eliminated shortly)</li></ul>
- *
- *The &lt;entry&gt; task must have:<br>
- *    <ul><li>key</li></ul>
- *Other parameters are:<br>
- *    <ul><li>operation</li>
- *        <li>type</li>
- *        <li>value</li>
- *        <li>offset</li></ul>
- *
- *If type is unspecified, it defaults to string
- *
- *Parameter values:<br>
- *    <ul><li>operation:</li>
- *        <ul><li>"=" (set -- default)</li>
- *        <li>"-" (dec)</li>
- *        <li>"+" (inc)</li>
- *
- *    <li>type:</li>
- *        <ul><li>"int"</li>
- *        <li>"date"</li>
- *        <li>"string"</li></ul></ul>
- *
- *    <li>value:</li>
- *      <ul><li>holds the default value, if the property
- *              was not found in property file</li>
- *          <li>"now" In case of type "date", the
- *              value "now" will be replaced by the current
- *              date/time and used even if a valid date was
- *              found in the property file.</li></ul>
- *
- *    <li>offset:<br>valid for "-" or "+", the offset (default
- *    set to 1) will be added or subtracted from "int" or
- *    "date" type value.</li>
- *    </ul>
- *
- *String property types can only use the "=" operation.
- *Date property types can only use the "never" or "now" operations.
- *Int property types can only use the "=", "-" or "+" operations.<p>
- *
- *The message property is used for the property file header, with "\\" being
- *a newline delimiter charater.
- *
- * @author Thomas Christen <a href="mailto:chr@active.ch">chr@active.ch</a>
- * @author Jeremy Mawson <a href="mailto:jem@loftinspace.com.au>jem@loftinspace.com.au</a>
-*/
-public class PropertyFile extends Task
-{
-
-    /* ========================================================================
-    *
-    * Static variables.
-    */
-
-    private static final String NEWLINE = System.getProperty("line.separator");
-
-
-    /* ========================================================================
-    *
-    * Instance variables.
-    */
-
-    // Use this to prepend a message to the properties file
-    private String              m_comment;
-
-    private Properties          m_properties;
-    private File                m_propertyfile;
-
-    private Vector entries = new Vector();
-
-    /* ========================================================================
-    *
-    * Constructors
-    */
-
-    /* ========================================================================
-    *
-    * Methods
-    */
-
-    public void execute() throws BuildException
-    {
-        checkParameters();
-        readFile();
-        executeOperation();
-        writeFile();
-    }
-
-    public Entry createEntry()
-    {
-        Entry e = new Entry();
-        entries.addElement(e);
-        return e;
-    }
-
-    private void executeOperation() throws BuildException
-    {
-        for (Enumeration e = entries.elements(); e.hasMoreElements(); )
-        {
-            Entry entry = (Entry)e.nextElement();
-            entry.executeOn(m_properties);
-        }
-    }
-
-    private void readFile() throws BuildException
-    {
-        // Create the PropertyFile
-        m_properties = new Properties();
-        try
-        {
-            if (m_propertyfile.exists())
-            {
-                log("Updating property file: "+m_propertyfile.getAbsolutePath());
-                m_properties.load(new BufferedInputStream(
-                                    new FileInputStream(m_propertyfile)));
-            }
-            else
-            {
-                log("Creating new property file: "+
-                    m_propertyfile.getAbsolutePath());
-                FileOutputStream out = new FileOutputStream(m_propertyfile.getAbsolutePath());
-                out.flush();
-                out.close();
-            }
-        }
-        catch(IOException ioe)
-        {
-            throw new BuildException(ioe.toString());
-        }
-    }
-
-    private void checkParameters() throws BuildException
-    {
-        if (!checkParam(m_propertyfile))
-        {
-            throw new BuildException("file token must not be null.", location);
-        }
-    }
-
-    public void setFile(File file)
-    {
-        m_propertyfile = file;
-    }
-
-    public void setComment(String hdr)
-    {
-        m_comment = hdr;
-    }
-
-    private void writeFile() throws BuildException
-    {
-        BufferedOutputStream bos = null;
-        try
-        {
-            bos = new BufferedOutputStream(new FileOutputStream(m_propertyfile));
-
-            // Properties.store is not available in JDK 1.1
-            Method m =
-                Properties.class.getMethod("store",
-                                           new Class[] {
-                                               OutputStream.class,
-                                               String.class}
-                                           );
-            m.invoke(m_properties, new Object[] {bos, m_comment});
-
-        } catch (NoSuchMethodException nsme) {
-            m_properties.save(bos, m_comment);
-        } catch (InvocationTargetException ite) {
-            Throwable t = ite.getTargetException();
-            throw new BuildException(t, location);
-        } catch (IllegalAccessException iae) {
-            // impossible
-            throw new BuildException(iae, location);
-        }
-        catch (IOException ioe)
-        {
-            throw new BuildException(ioe, location);
-        }
-        finally {
-            if (bos != null) {
-                try {
-                    bos.close();
-                } catch (IOException ioex) {}
-            }
-        }
-    }
-
-    /*
-    * Returns whether the given parameter has been defined.
-    */
-    private boolean checkParam(String param)
-    {
-        return !((param == null) || (param.equals("null")));
-    }
-
-    private boolean checkParam(File param)
-    {
-        return !(param == null);
-    }
-
-    /**
-     * Instance of this class represents nested elements of
-     * a task propertyfile.
-     */
-    public static class Entry
-    {
-
-        static final String NOW_VALUE_ =        "now";
-        static final String NULL_VALUE_ =       "never";
-
-        private static final int    DEFAULT_INT_VALUE =     1;
-        private static final GregorianCalendar
-            DEFAULT_DATE_VALUE = new GregorianCalendar();
-
-        private String              m_key = null;
-        private int                 m_type = Type.STRING_TYPE;
-        private int                 m_operation = Operation.EQUALS_OPER;
-        private String              m_value ="1";
-        private String              m_default = null;
-        private String              m_pattern = null;
-
-        public void setKey(String value)
-        {
-            this.m_key = value;
-        }
-        public void setValue(String value)
-        {
-            this.m_value = value;
-        }
-        public void setOperation(Operation value)
-        {
-            int newOperation = Operation.toOperation(value.getValue());
-            if (newOperation == Operation.NOW_VALUE) {
-                this.m_operation = Operation.EQUALS_OPER;
-                this.setValue(this.NOW_VALUE_);
-            }
-            else if (newOperation == Operation.NULL_VALUE) {
-                this.m_operation = Operation.EQUALS_OPER;
-                this.setValue(this.NULL_VALUE_);
-            }
-            else {
-                this.m_operation = newOperation;
-            }
-        }
-        public void setType(Type value)
-        {
-            this.m_type = Type.toType(value.getValue());
-        }
-        public void setDefault(String value)
-        {
-            this.m_default = value;
-        }
-        public void setPattern(String value)
-        {
-            this.m_pattern = value;
-        }
-
-        protected void executeOn(Properties props) throws BuildException
-        {
-            checkParameters();
-
-            // m_type may be null because it wasn't set
-            try {
-                if (m_type == Type.INTEGER_TYPE)
-                {
-                    executeInteger((String)props.get(m_key));
-                }
-                else if (m_type == Type.DATE_TYPE)
-                {
-                    executeDate((String)props.get(m_key));
-                }
-                else if (m_type == Type.STRING_TYPE)
-                {
-                    executeString((String)props.get(m_key));
-                }
-                else
-                {
-                    throw new BuildException("Unknown operation type: "+m_type+"");
-                }
-            } catch (NullPointerException npe) {
-                // Default to string type
-                // which means do nothing
-                npe.printStackTrace();
-            }
-            // Insert as a string by default
-            props.put(m_key, m_value);
-
-        }
-
-        /**
-        * Handle operations for type <code>date</code>.
-        *
-        * @param oldValue the current value read from the property file or
-        *                 <code>null</code> if the <code>key</code> was
-        *                 not contained in the property file.
-        */
-        private void executeDate(String oldValue) throws BuildException
-        {
-            GregorianCalendar value = new GregorianCalendar();
-            GregorianCalendar newValue = new GregorianCalendar();
-
-            if (m_pattern == null) m_pattern = "yyyy/MM/dd HH:mm";
-            DateFormat fmt = new SimpleDateFormat(m_pattern);
-
-            if (m_value != null) {
-                if (NOW_VALUE_.equals(m_value.toLowerCase())) {
-                    value.setTime(new Date());
-                }
-                else if (NULL_VALUE_.equals(m_value.toLowerCase())) {
-                    value = null;
-                }
-                else {
-                    try {
-                        value.setTime(fmt.parse(m_value));
-                    }
-                    catch (Exception ex) {
-                        // obviously not a date, try a simple int
-                        try {
-                            int offset = Integer.parseInt(m_value);
-                            value.clear();
-                            value.set(Calendar.DAY_OF_YEAR, offset);
-                        }
-                        catch (Exception ex_) {
-                            value.clear();
-                            value.set(Calendar.DAY_OF_YEAR, 1);
-                        }
-                    }
-
-                }
-            }
-
-            // special case
-            if (m_default != null &&
-                NOW_VALUE_.equals(m_default.toLowerCase()) &&
-                (m_operation == Operation.INCREMENT_OPER ||
-                 m_operation == Operation.DECREMENT_OPER) ) {
-                oldValue = null;
-            }
-
-            if (oldValue != null) {
-                try {
-                    newValue.setTime(fmt.parse(oldValue));
-                }
-                catch (ParseException pe)  { /* swollow */ }
-            }
-            else {
-                if (m_default != null) {
-                    if (NOW_VALUE_.equals(m_default.toLowerCase())) {
-                        newValue.setTime(new Date());
-                    }
-                    else if (NULL_VALUE_.equals(m_default.toLowerCase())) {
-                        newValue = null;
-                    }
-                    else {
-                        try {
-                            newValue.setTime(fmt.parse(m_default));
-                        }
-                        catch (ParseException pe)  { /* swollow */ }
-                    }
-                }
-            }
-
-            if (m_operation == Operation.EQUALS_OPER) {
-                newValue = value;
-            }
-            else if (m_operation == Operation.INCREMENT_OPER) {
-                newValue.add(Calendar.SECOND, value.get(Calendar.SECOND));
-                newValue.add(Calendar.MINUTE, value.get(Calendar.MINUTE));
-                newValue.add(Calendar.HOUR_OF_DAY, value.get(Calendar.HOUR_OF_DAY));
-                newValue.add(Calendar.DAY_OF_YEAR, value.get(Calendar.DAY_OF_YEAR));
-            }
-            else if (m_operation == Operation.DECREMENT_OPER) {
-                newValue.add(Calendar.SECOND, -1 * value.get(Calendar.SECOND));
-                newValue.add(Calendar.MINUTE, -1 * value.get(Calendar.MINUTE));
-                newValue.add(Calendar.HOUR_OF_DAY, -1 * value.get(Calendar.HOUR_OF_DAY));
-                newValue.add(Calendar.DAY_OF_YEAR, -1 * value.get(Calendar.DAY_OF_YEAR));
-            }
-            if (newValue != null) {
-                m_value = fmt.format(newValue.getTime());
-            }
-            else {
-                m_value = "";
-            }
-        }
-
-
-        /**
-        * Handle operations for type <code>int</code>.
-        *
-        * @param oldValue the current value read from the property file or
-        *                 <code>null</code> if the <code>key</code> was
-        *                 not contained in the property file.
-        */
-        private void executeInteger(String oldValue) throws BuildException
-        {
-            int value = 0;
-            int newValue  = 0;
-
-            DecimalFormat fmt = (m_pattern != null) ? new DecimalFormat(m_pattern)
-                                                    : new DecimalFormat();
-
-            if (m_value != null) {
-                try {
-                    value = fmt.parse(m_value).intValue();
-                }
-                catch (NumberFormatException nfe) { /* swollow */ }
-                catch (ParseException pe)  { /* swollow */ }
-            }
-            if (oldValue != null) {
-                try {
-                    newValue = fmt.parse(oldValue).intValue();
-                }
-                catch (NumberFormatException nfe) { /* swollow */ }
-                catch (ParseException pe)  { /* swollow */ }
-            }
-            else if (m_default != null) {
-                try {
-                    newValue = fmt.parse(m_default).intValue();
-                }
-                catch (NumberFormatException nfe) { /* swollow */ }
-                catch (ParseException pe)  { /* swollow */ }
-            }
-
-            if (m_operation == Operation.EQUALS_OPER) {
-                newValue = value;
-            }
-            else if (m_operation == Operation.INCREMENT_OPER) {
-                newValue += value;
-            }
-            else if (m_operation == Operation.DECREMENT_OPER) {
-                newValue -= value;
-            }
-            m_value = fmt.format(newValue);
-        }
-
-        /**
-        * Handle operations for type <code>string</code>.
-        *
-        * @param oldValue the current value read from the property file or
-        *                 <code>null</code> if the <code>key</code> was
-        *                 not contained in the property file.
-        */
-        private void executeString(String oldValue) throws BuildException
-        {
-            String value = "";
-            String newValue  = "";
-
-            if (m_value != null) {
-                value = m_value;
-            }
-            if (oldValue != null) {
-                newValue = oldValue;
-            }
-            else if (m_default != null) {
-                newValue = m_default;
-            }
-
-            if (m_operation == Operation.EQUALS_OPER) {
-                newValue = value;
-            }
-            else if (m_operation == Operation.INCREMENT_OPER) {
-                newValue += value;
-            }
-            m_value = newValue;
-        }
-
-        /**
-         * Check if parameter combinations can be supported
-         */
-        private void checkParameters() throws BuildException {
-            if (m_type == Type.STRING_TYPE &&
-                m_operation == Operation.DECREMENT_OPER) {
-                throw new BuildException("- is not suported for string properties (key:" + m_key + ")");
-            }
-            if (m_value == null) {
-                throw new BuildException("value is mandatory (key:" + m_key + ")");
-            }
-            if (m_key == null) {
-                throw new BuildException("key is mandatory");
-            }
-            if (m_type == Type.STRING_TYPE &&
-                m_pattern != null) {
-                throw new BuildException("pattern is not suported for string properties (key:" + m_key + ")");
-            }
-        }
-
-        /**
-         * Enumerated attribute with the values "+", "-", "=", "now" and "never".
-         */
-        public static class Operation extends EnumeratedAttribute {
-
-            // Property type operations
-            public static final int INCREMENT_OPER =   0;
-            public static final int DECREMENT_OPER =   1;
-            public static final int EQUALS_OPER =      2;
-
-            // Special values
-            public static final int NOW_VALUE =        3;
-            public static final int NULL_VALUE =       4;
-
-            public String[] getValues() {
-                return new String[] {"+", "-", "=", NOW_VALUE_, NULL_VALUE_};
-            }
-
-            public static int toOperation(String oper) {
-                if ("+".equals(oper)) {
-                    return INCREMENT_OPER;
-                }
-                else if ("-".equals(oper)) {
-                    return DECREMENT_OPER;
-                }
-                else if (NOW_VALUE_.equals(oper)) {
-                    return NOW_VALUE;
-                }
-                else if (NULL_VALUE_.equals(oper)) {
-                    return NULL_VALUE;
-                }
-                return EQUALS_OPER;
-            }
-        }
-
-        /**
-         * Enumerated attribute with the values "int", "date" and "string".
-         */
-        public static class Type extends EnumeratedAttribute {
-
-            // Property types
-            public static final int INTEGER_TYPE =     0;
-            public static final int DATE_TYPE =        1;
-            public static final int STRING_TYPE =      2;
-
-            public String[] getValues() {
-                return new String[] {"int", "date", "string"};
-            }
-
-            public static int toType(String type) {
-                if ("int".equals(type)) {
-                    return INTEGER_TYPE;
-                }
-                else if ("date".equals(type)) {
-                    return DATE_TYPE;
-                }
-                return STRING_TYPE;
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java b/src/main/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java
deleted file mode 100644
index e486ab1..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- * 
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * Task to rename files based on extension. This task has the following
- * properties which can be set:
- * <ul>
- * <li>fromExtension: </li>
- * <li>toExtension: </li>
- * <li>srcDir: </li>
- * <li>replace: </li>
- * </ul>
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.Mapper;
-
-/**
- *
- * @author dIon Gillard <a href="mailto:dion@multitask.com.au">dion@multitask.com.au</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version 1.2
- */
-public class RenameExtensions extends MatchingTask {
-
-    private String fromExtension = "";
-    private String toExtension = "";
-    private boolean replace = false;
-    private File srcDir;
-
-    private Mapper.MapperType globType;
-
-
-    /** Creates new RenameExtensions */
-    public RenameExtensions() {
-        super();
-        globType = new Mapper.MapperType();
-        globType.setValue("glob");
-    }
-
-    /** store fromExtension **/
-    public void setFromExtension(String from) {
-        fromExtension = from;
-    }
-
-    /** store toExtension **/
-    public void setToExtension(String to) {
-        toExtension = to;
-    }
-
-    /**
-     * store replace attribute - this determines whether the target file
-     * should be overwritten if present
-     */
-    public void setReplace(boolean replace) {
-        this.replace = replace;
-    }
-
-    /**
-     * Set the source dir to find the files to be renamed.
-     */
-    public void setSrcDir(File srcDir) {
-        this.srcDir = srcDir;
-    }
-
-    /**
-     * Executes the task, i.e. does the actual compiler call
-     */
-    public void execute() throws BuildException {
-
-        // first off, make sure that we've got a from and to extension
-        if (fromExtension == null || toExtension == null || srcDir == null) {
-            throw new BuildException( "srcDir, fromExtension and toExtension " +
-                                      "attributes must be set!" );
-        }
-
-        log("DEPRECATED - The renameext task is deprecated.  Use move instead.",
-            Project.MSG_WARN);
-        log("Replace this with:", Project.MSG_INFO);
-        log("<move todir=\""+srcDir+"\" overwrite=\""+replace+"\">", 
-            Project.MSG_INFO);
-        log("  <fileset dir=\""+srcDir+"\" />", Project.MSG_INFO);
-        log("  <mapper type=\"glob\"", Project.MSG_INFO);
-        log("          from=\"*"+fromExtension+"\"", Project.MSG_INFO);
-        log("          to=\"*"+toExtension+"\" />", Project.MSG_INFO);
-        log("</move>", Project.MSG_INFO);
-        log("using the same patterns on <fileset> as you\'ve used here", 
-            Project.MSG_INFO);
-
-        Move move = (Move)project.createTask("move");
-        move.setOwningTarget(target);
-        move.setTaskName(getTaskName());
-        move.setLocation(getLocation());
-        move.setTodir(srcDir);
-        move.setOverwrite(replace);
-
-        fileset.setDir(srcDir);
-        move.addFileset(fileset);
-
-        Mapper me = move.createMapper();
-        me.setType(globType);
-        me.setFrom("*"+fromExtension);
-        me.setTo("*"+toExtension);
-
-        move.execute();
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Script.java b/src/main/org/apache/tools/ant/taskdefs/optional/Script.java
deleted file mode 100644
index 3be6b14..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Script.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional;
-
-import com.ibm.bsf.*;
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-/**
- * Execute a script
- *
- * @author Sam Ruby <a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a>
- */
-public class Script extends Task {
-    private String language;
-    private String script = "";
-    private Hashtable beans = new Hashtable();
-    
-    /**
-     * Add a list of named objects to the list to be exported to the script
-     */
-    private void addBeans(Hashtable dictionary) {
-        for (Enumeration e=dictionary.keys(); e.hasMoreElements(); ) {
-            String key = (String)e.nextElement();
-
-            boolean isValid = key.length()>0 &&
-                Character.isJavaIdentifierStart(key.charAt(0));
-
-            for (int i=1; isValid && i<key.length(); i++)
-                isValid = Character.isJavaIdentifierPart(key.charAt(i));
-
-            if (isValid) beans.put(key, dictionary.get(key));
-        }
-    }
-
-    /**
-     * Do the work.
-     *
-     * @exception BuildException if someting goes wrong with the build
-     */
-    public void execute() throws BuildException {
-        try {
-            addBeans(project.getProperties());
-            addBeans(project.getUserProperties());
-            addBeans(project.getTargets());
-            addBeans(project.getReferences());
-
-            BSFManager manager = new BSFManager ();
-
-            for (Enumeration e = beans.keys() ; e.hasMoreElements() ;) {
-                String key = (String)e.nextElement();
-                Object value = beans.get(key);
-                manager.declareBean(key, value, value.getClass());
-            }
-
-            // execute the script
-            manager.exec(language, "<ANT>", 0, 0, script);
-        } catch (BSFException be) {
-            Throwable t = be;
-            Throwable te = be.getTargetException();
-            if (te != null) {
-                if  (te instanceof BuildException) {
-                    throw (BuildException) te;
-                } else {
-                    t = te;
-                }
-            }
-            throw new BuildException(t);
-        }
-    }
-
-    /**
-     * Defines the language (required).
-     *
-     * @param msg Sets the value for the script variable.
-     */
-    public void setLanguage(String language) {
-        this.language = language;
-    }
-
-    /**
-     * Load the script from an external file 
-     *
-     * @param msg Sets the value for the script variable.
-     */
-    public void setSrc(String fileName) {
-        File file = new File(fileName);
-        if (!file.exists()) 
-            throw new BuildException("file " + fileName + " not found.");
-
-        int count = (int)file.length();
-        byte data[] = new byte[count];
-
-        try {
-            FileInputStream inStream = new FileInputStream(file);
-            inStream.read(data);
-            inStream.close();
-        } catch (IOException e) {
-            throw new BuildException(e);
-        }
-        
-        script += new String(data);
-    }
-
-    /**
-     * Defines the script.
-     *
-     * @param msg Sets the value for the script variable.
-     */
-    public void addText(String text) {
-        this.script += text;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/StyleBook.java b/src/main/org/apache/tools/ant/taskdefs/optional/StyleBook.java
deleted file mode 100644
index d13f03f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/StyleBook.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional;
-
-import java.io.File; 
-import org.apache.tools.ant.BuildException; 
-import org.apache.tools.ant.types.CommandlineJava; 
-import org.apache.tools.ant.types.Path; 
-import org.apache.tools.ant.Task; 
-import org.apache.tools.ant.taskdefs.Java; 
-
-/** 
- * Basic task for apache stylebook.
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a> 
- */ 
-public class StyleBook 
-    extends Java 
-{ 
-    protected File                   m_targetDirectory;
-    protected File                   m_skinDirectory;
-    protected File                   m_book;
-
-    public StyleBook() {
-        setClassname( "org.apache.stylebook.StyleBook" );
-        setFork( true );
-        setFailonerror( true );
-    }
-
-    public void setBook( final File book ) {
-        m_book = book;
-    } 
- 
-    public void setSkinDirectory( final File skinDirectory ) {
-        m_skinDirectory = skinDirectory;
-    } 
-
-    public void setTargetDirectory( final File targetDirectory ) {
-        m_targetDirectory = targetDirectory;
-    } 
-    
-    public void execute()  
-        throws BuildException  { 
-
-        if( null == m_targetDirectory ) {
-            throw new BuildException( "TargetDirectory attribute not set." );
-        }
-
-        if( null == m_skinDirectory ) {
-            throw new BuildException( "SkinDirectory attribute not set." );
-        }
-
-        if( null == m_book ) {
-            throw new BuildException( "book attribute not set." );
-        } 
-
-        createArg().setValue( "targetDirectory=" + m_targetDirectory );
-        createArg().setValue( m_book.toString() );
-        createArg().setValue( m_skinDirectory.toString() );
-
-        super.execute();
-    } 
-} 
- 
- 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Test.java b/src/main/org/apache/tools/ant/taskdefs/optional/Test.java
deleted file mode 100644
index 2e68a9e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Test.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional;
- 
-import org.apache.tools.ant.BuildException; 
-import org.apache.tools.ant.taskdefs.Java; 
-import java.util.Vector; 
- 
-/** 
- * 
- * @author <a href="mailto:donaldp@apache.org">Peter Donald</a> 
- */ 
-public class Test 
-    extends Java {
- 
-    protected Vector                          m_tests            = new Vector();
-
-    protected static final class TestletEntry {
-
-        protected String m_testname = "";
-
-        public void addText( final String testname ) {
-            m_testname += testname;
-        }
-
-        public String toString() {
-            return m_testname;
-        }
-    }
-
-    public Test() {
-        setClassname( "org.apache.testlet.engine.TextTestEngine" );
-    }
-
-    public TestletEntry createTestlet() {
-        final TestletEntry entry = new TestletEntry();
-        m_tests.addElement( entry );
-        return entry;
-    }
- 
-    public void setShowSuccess( final boolean showSuccess ) {
-        createArg().setValue( "-s=" + showSuccess );
-    } 
- 
-    public void setShowBanner( final String showBanner ) { 
-        createArg().setValue( "-b=" + showBanner );
-    } 
- 
-    public void setShowTrace( final boolean showTrace ) {
-         createArg().setValue( "-t=" + showTrace );
-    } 
- 
-    public void setForceShowTrace( final boolean forceShowTrace ) { 
-        createArg().setValue( "-f=" + forceShowTrace );
-    } 
- 
-    public void execute() 
-        throws BuildException  { 
-
-        final int size = m_tests.size();
-
-        for( int i = 0; i < size; i ++ ) {
-            createArg().setValue( m_tests.elementAt( i ).toString() );
-        }
-
-        super.execute();
-    } 
-} 
- 
- 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
deleted file mode 100644
index df0bd2f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import java.io.FileOutputStream;
-
-import org.apache.tools.ant.taskdefs.XSLTLiaison;
-
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.Templates;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-/**
- *
- * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
- * @author <a href="mailto:dims@yahoo.com">Davanum Srinivas</a>
- * @version $Revision$ $Date$
- */
-public class TraXLiaison implements XSLTLiaison {
-
-    protected final static String FILEURL = "file:";
-
-    /** The trax TransformerFactory */
-    private TransformerFactory tfactory = null;
-
-    /** Stylesheet template */
-    private Templates templates = null;
-
-    /** The trax Transformer itself */
-    private Transformer transformer;
-
-    public TraXLiaison() throws Exception {
-        tfactory = TransformerFactory.newInstance();
-    }
-
-    public void setStylesheet(String fileName) throws Exception {
-        templates = tfactory.newTemplates(new StreamSource(normalize(fileName)));
-        transformer = templates.newTransformer();
-    };
-
-    public void transform(String infile, String outfile) throws Exception {
-        transformer.transform(new StreamSource(normalize(infile)), new StreamResult(new FileOutputStream(outfile)));
-    }
-
-    protected String normalize(String fileName) {
-        if(fileName != null && !fileName.startsWith(FILEURL)) {
-            return FILEURL + fileName;
-        }
-        return fileName;
-    }
-    
-    public void addParam(String name, String value){
-        transformer.setParameter(name, value);
-    }
-} //-- TraXLiaison
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java
deleted file mode 100644
index e3a805d..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import org.apache.tools.ant.taskdefs.XSLTLiaison;
-
-import org.apache.xalan.xslt.XSLTProcessorFactory;
-import org.apache.xalan.xslt.XSLTProcessor;
-import org.apache.xalan.xslt.XSLTInputSource;
-import org.apache.xalan.xslt.XSLTResultTarget;
-
-/**
- *
- * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
- * @version $Revision$ $Date$
- */
-public class XalanLiaison implements XSLTLiaison {
-
-    protected final static String FILEURL = "file:";
-
-    XSLTProcessor processor;
-    XSLTInputSource xslSheet;
-
-    public XalanLiaison() throws Exception {
-      processor = XSLTProcessorFactory.getProcessor();
-    }
-
-    public void setStylesheet(String fileName) throws Exception {
-        xslSheet = new XSLTInputSource (normalize(fileName));
-    };
-
-    public void transform(String infile, String outfile) throws Exception {
-        processor.process(new XSLTInputSource(normalize(infile)), xslSheet,
-                        new XSLTResultTarget(outfile));
-    }
-
-    protected String normalize(String fileName) {
-        if(fileName != null && !fileName.startsWith(FILEURL)) {
-            return FILEURL + fileName;
-        }
-        return fileName;
-    }
-    
-    public void addParam(String name, String value){
-        processor.setStylesheetParam(name, value);
-    }
-} //-- XalanLiaison
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/XslpLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/XslpLiaison.java
deleted file mode 100644
index b6c8826..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/XslpLiaison.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import java.io.FileWriter;
-
-import org.apache.tools.ant.taskdefs.XSLTLiaison;
-
-import com.kvisco.xsl.XSLProcessor;
-import com.kvisco.xsl.XSLReader;
-import com.kvisco.xsl.XSLStylesheet;
-
-/**
- *
- * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
- * @version $Revision$ $Date$
- */
-public class XslpLiaison implements XSLTLiaison {
-
-    XSLProcessor processor;
-    XSLStylesheet xslSheet;
-
-    public XslpLiaison() {
-      processor = new XSLProcessor();
-    }
-
-    public void setStylesheet(String fileName) throws Exception {
-      XSLReader xslReader = new XSLReader();
-      xslSheet = xslReader.read( fileName );
-    };
-
-    public void transform(String infile, String outfile) throws Exception {
-      processor.process(infile, xslSheet, new FileWriter(outfile));
-    }
-
-    public void addParam(String name, String expression){
-      processor.setProperty(name, expression);
-    }
-
-} //-- XSLPLiaison
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCCheckin.java b/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCCheckin.java
deleted file mode 100644
index c6de9fa..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCCheckin.java
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.clearcase;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-
-/**
- * Task to perform Checkin command to ClearCase.
- * <p>
- * The following attributes are interpreted:
- * <table border="1">
- *   <tr>
- *     <th>Attribute</th>
- *     <th>Values</th>
- *     <th>Required</th>
- *   </tr>
- *   <tr>
- *      <td>viewpath</td>
- *      <td>Path to the ClearCase view file or directory that the command will operate on</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>comment</td>
- *      <td>Specify a comment. Only one of comment or cfile may be used.</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>commentfile</td>
- *      <td>Specify a file containing a comment. Only one of comment or cfile may be used.</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>nowarn</td>
- *      <td>Suppress warning messages</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>preservetime</td>
- *      <td>Preserve the modification time</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>keepcopy</td>
- *      <td>Keeps a copy of the file with a .keep extension</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>identical</td>
- *      <td>Allows the file to be checked in even if it is identical to the original</td>
- *      <td>No</td>
- *   <tr>
- * </table>
- *
- * @author Curtis White
- */
-public class CCCheckin extends ClearCase {
-    private String m_Comment = null;
-    private String m_Cfile = null;
-    private boolean m_Nwarn = false;
-    private boolean m_Ptime = false;
-    private boolean m_Keep = false;
-    private boolean m_Identical = true;
-
-    /**
-     * Executes the task.
-     * <p>
-     * Builds a command line to execute cleartool and then calls Exec's run method
-     * to execute the command line.
-     */
-    public void execute() throws BuildException {
-        Commandline commandLine = new Commandline();
-        Project aProj = getProject();
-        int result = 0;
-
-        // Default the viewpath to basedir if it is not specified
-        if (getViewPath() == null) {
-            setViewPath(aProj.getBaseDir().getPath());
-        }
-
-        // build the command line from what we got. the format is
-        // cleartool checkin [options...] [viewpath ...]
-        // as specified in the CLEARTOOL.EXE help
-        commandLine.setExecutable(getClearToolCommand());
-        commandLine.createArgument().setValue(COMMAND_CHECKIN);
-
-        checkOptions(commandLine);
-
-        result = run(commandLine);
-        if ( result != 0 ) {
-            String msg = "Failed executing: " + commandLine.toString();
-            throw new BuildException(msg, location);
-        }
-    }
-
-
-    /**
-     * Check the command line options.
-     */
-    private void checkOptions(Commandline cmd) {
-        if (getComment() != null) {
-            // -c
-            getCommentCommand(cmd);
-        } else {
-            if (getCommentFile() != null) {
-                // -cfile
-                getCommentFileCommand(cmd);
-            } else {
-                cmd.createArgument().setValue(FLAG_NOCOMMENT);
-            }
-        }
-
-        if (getNoWarn()) {
-            // -nwarn
-            cmd.createArgument().setValue(FLAG_NOWARN);
-        }
-
-        if (getPreserveTime()) {
-            // -ptime
-            cmd.createArgument().setValue(FLAG_PRESERVETIME);
-        }
-
-        if (getKeepCopy()) {
-            // -keep
-            cmd.createArgument().setValue(FLAG_KEEPCOPY);
-        }
-
-        if (getIdentical()) {
-            // -identical
-            cmd.createArgument().setValue(FLAG_IDENTICAL);
-        }
-
-        // viewpath
-        cmd.createArgument().setValue(getViewPath());
-    }
-
-
-    /**
-     * Set comment string
-     *
-     * @param comment the comment string
-     */
-    public void setComment(String comment) {
-        m_Comment = comment;
-    }
-
-    /**
-     * Get comment string
-     *
-     * @return String containing the comment
-     */
-    public String getComment() {
-        return m_Comment;
-    }
-
-    /**
-     * Set comment file
-     *
-     * @param cfile the path to the comment file
-     */
-    public void setCommentFile(String cfile) {
-        m_Cfile = cfile;
-    }
-
-    /**
-     * Get comment file
-     *
-     * @return String containing the path to the comment file
-     */
-    public String getCommentFile() {
-        return m_Cfile;
-    }
-
-    /**
-     * Set the nowarn flag
-     *
-     * @param nwarn the status to set the flag to
-     */
-    public void setNoWarn(boolean nwarn) {
-        m_Nwarn = nwarn;
-    }
-
-    /**
-     * Get nowarn flag status
-     *
-     * @return boolean containing status of nwarn flag
-     */
-    public boolean getNoWarn() {
-        return m_Nwarn;
-    }
-
-    /**
-     * Set preservetime flag
-     *
-     * @param ptime the status to set the flag to
-     */
-    public void setPreserveTime(boolean ptime) {
-        m_Ptime = ptime;
-    }
-
-    /**
-     * Get preservetime flag status
-     *
-     * @return boolean containing status of preservetime flag
-     */
-    public boolean getPreserveTime() {
-        return m_Ptime;
-    }
-
-    /**
-     * Set the keepcopy flag
-     *
-     * @param keep the status to set the flag to
-     */
-    public void setKeepCopy(boolean keep) {
-        m_Keep = keep;
-    }
-
-    /**
-     * Get keepcopy flag status
-     *
-     * @return boolean containing status of keepcopy flag
-     */
-    public boolean getKeepCopy() {
-        return m_Keep;
-    }
-
-    /**
-     * Set the identical flag
-     *
-     * @param identical the status to set the flag to
-     */
-    public void setIdentical(boolean identical) {
-        m_Identical = identical;
-    }
-
-    /**
-     * Get identical flag status
-     *
-     * @return boolean containing status of identical flag
-     */
-    public boolean getIdentical() {
-        return m_Identical;
-    }
-
-
-    /**
-     * Get the 'comment' command
-     *
-     * @return the 'comment' command if the attribute was specified, otherwise an empty string
-     *
-     * @param CommandLine containing the command line string with or without the comment flag and string appended
-     */
-    private void getCommentCommand(Commandline cmd) {
-        if (getComment() != null) {
-            /* Had to make two separate commands here because if a space is
-               inserted between the flag and the value, it is treated as a
-               Windows filename with a space and it is enclosed in double
-               quotes ("). This breaks clearcase.
-            */
-            cmd.createArgument().setValue(FLAG_COMMENT);
-            cmd.createArgument().setValue(getComment());
-        }
-    }
-
-    /**
-     * Get the 'commentfile' command
-     *
-     * @return the 'commentfile' command if the attribute was specified, otherwise an empty string
-     *
-     * @param CommandLine containing the command line string with or without the commentfile flag and file appended
-     */
-    private void getCommentFileCommand(Commandline cmd) {
-        if (getCommentFile() != null) {
-            /* Had to make two separate commands here because if a space is
-               inserted between the flag and the value, it is treated as a
-               Windows filename with a space and it is enclosed in double
-               quotes ("). This breaks clearcase.
-            */
-            cmd.createArgument().setValue(FLAG_COMMENTFILE);
-            cmd.createArgument().setValue(getCommentFile());
-        }
-    }
-
-
-        /**
-     * -c flag -- comment to attach to the file
-     */
-    public static final String FLAG_COMMENT = "-c";
-        /**
-     * -cfile flag -- file containing a comment to attach to the file
-     */
-    public static final String FLAG_COMMENTFILE = "-cfile";
-        /**
-     * -nc flag -- no comment is specified
-     */
-    public static final String FLAG_NOCOMMENT = "-nc";
-        /**
-     * -nwarn flag -- suppresses warning messages
-     */
-    public static final String FLAG_NOWARN = "-nwarn";
-        /**
-     * -ptime flag -- preserves the modification time
-     */
-    public static final String FLAG_PRESERVETIME = "-ptime";
-        /**
-     * -keep flag -- keeps a copy of the file with a .keep extension
-     */
-    public static final String FLAG_KEEPCOPY = "-keep";
-        /**
-     * -identical flag -- allows the file to be checked in even if it is identical to the original
-     */
-    public static final String FLAG_IDENTICAL = "-identical";
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCCheckout.java b/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCCheckout.java
deleted file mode 100644
index 31be966..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCCheckout.java
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.clearcase;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-
-/**
- * Task to perform Checkout command to ClearCase.
- * <p>
- * The following attributes are interpretted:
- * <table border="1">
- *   <tr>
- *     <th>Attribute</th>
- *     <th>Values</th>
- *     <th>Required</th>
- *   </tr>
- *   <tr>
- *      <td>viewpath</td>
- *      <td>Path to the ClearCase view file or directory that the command will operate on</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>reserved</td>
- *      <td>Specifies whether to check out the file as reserved or not</td>
- *      <td>Yes</td>
- *   <tr>
- *   <tr>
- *      <td>out</td>
- *      <td>Creates a writable file under a different filename</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>nodata</td>
- *      <td>Checks out the file but does not create an editable file containing its data</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>branch</td>
- *      <td>Specify a branch to check out the file to</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>version</td>
- *      <td>Allows checkout of a version other than main latest</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>nowarn</td>
- *      <td>Suppress warning messages</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>comment</td>
- *      <td>Specify a comment. Only one of comment or cfile may be used.</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>commentfile</td>
- *      <td>Specify a file containing a comment. Only one of comment or cfile may be used.</td>
- *      <td>No</td>
- *   <tr>
- * </table>
- *
- * @author Curtis White
- */
-public class CCCheckout extends ClearCase {
-    private boolean m_Reserved = true;
-    private String m_Out = null;
-    private boolean m_Ndata = false;
-    private String m_Branch = null;
-    private boolean m_Version = false;
-    private boolean m_Nwarn = false;
-    private String m_Comment = null;
-    private String m_Cfile = null;
-
-    /**
-     * Executes the task.
-     * <p>
-     * Builds a command line to execute cleartool and then calls Exec's run method
-     * to execute the command line.
-     */
-    public void execute() throws BuildException {
-        Commandline commandLine = new Commandline();
-        Project aProj = getProject();
-        int result = 0;
-
-        // Default the viewpath to basedir if it is not specified
-        if (getViewPath() == null) {
-            setViewPath(aProj.getBaseDir().getPath());
-        }
-
-        // build the command line from what we got the format is
-        // cleartool checkout [options...] [viewpath ...]
-        // as specified in the CLEARTOOL.EXE help
-        commandLine.setExecutable(getClearToolCommand());
-        commandLine.createArgument().setValue(COMMAND_CHECKOUT);
-
-        checkOptions(commandLine);
-
-        result = run(commandLine);
-        if ( result != 0 ) {
-            String msg = "Failed executing: " + commandLine.toString();
-            throw new BuildException(msg, location);
-        }
-    }
-
-
-    /**
-     * Check the command line options.
-     */
-    private void checkOptions(Commandline cmd) {
-        // ClearCase items
-        if (getReserved()) {
-            // -reserved
-            cmd.createArgument().setValue(FLAG_RESERVED);
-        } else {
-            // -unreserved
-            cmd.createArgument().setValue(FLAG_UNRESERVED);
-        }
-
-        if (getOut() != null) {
-            // -out
-            getOutCommand(cmd);
-        } else {
-            if (getNoData()) {
-                // -ndata
-                cmd.createArgument().setValue(FLAG_NODATA);
-            }
-
-        }
-
-        if (getBranch() != null) {
-            // -branch
-            getBranchCommand(cmd);
-        } else {
-            if (getVersion()) {
-                // -version
-                cmd.createArgument().setValue(FLAG_VERSION);
-            }
-
-        }
-
-        if (getNoWarn()) {
-            // -nwarn
-            cmd.createArgument().setValue(FLAG_NOWARN);
-        }
-
-        if (getComment() != null) {
-            // -c
-            getCommentCommand(cmd);
-        } else {
-            if (getCommentFile() != null) {
-                // -cfile
-                getCommentFileCommand(cmd);
-            } else {
-                cmd.createArgument().setValue(FLAG_NOCOMMENT);
-            }
-        }
-
-        // viewpath
-        cmd.createArgument().setValue(getViewPath());
-    }
-
-    /**
-     * Set reserved flag status
-     *
-     * @param reserved the status to set the flag to
-     */
-    public void setReserved(boolean reserved) {
-        m_Reserved = reserved;
-    }
-
-    /**
-     * Get reserved flag status
-     *
-     * @return boolean containing status of reserved flag
-     */
-    public boolean getReserved() {
-        return m_Reserved;
-    }
-
-    /**
-     * Set out file
-     *
-     * @param outf the path to the out file
-     */
-    public void setOut(String outf) {
-        m_Out = outf;
-    }
-
-    /**
-     * Get out file
-     *
-     * @return String containing the path to the out file
-     */
-    public String getOut() {
-        return m_Out;
-    }
-
-    /**
-     * Set the nodata flag
-     *
-     * @param ndata the status to set the flag to
-     */
-    public void setNoData(boolean ndata) {
-        m_Ndata = ndata;
-    }
-
-    /**
-     * Get nodata flag status
-     *
-     * @return boolean containing status of ndata flag
-     */
-    public boolean getNoData() {
-        return m_Ndata;
-    }
-
-    /**
-     * Set branch name
-     *
-     * @param branch the name of the branch
-     */
-    public void setBranch(String branch) {
-        m_Branch = branch;
-    }
-
-    /**
-     * Get branch name
-     *
-     * @return String containing the name of the branch
-     */
-    public String getBranch() {
-        return m_Branch;
-    }
-
-    /**
-     * Set the version flag
-     *
-     * @param version the status to set the flag to
-     */
-    public void setVersion(boolean version) {
-        m_Version = version;
-    }
-
-    /**
-     * Get version flag status
-     *
-     * @return boolean containing status of version flag
-     */
-    public boolean getVersion() {
-        return m_Version;
-    }
-
-    /**
-     * Set the nowarn flag
-     *
-     * @param nwarn the status to set the flag to
-     */
-    public void setNoWarn(boolean nwarn) {
-        m_Nwarn = nwarn;
-    }
-
-    /**
-     * Get nowarn flag status
-     *
-     * @return boolean containing status of nwarn flag
-     */
-    public boolean getNoWarn() {
-        return m_Nwarn;
-    }
-
-    /**
-     * Set comment string
-     *
-     * @param comment the comment string
-     */
-    public void setComment(String comment) {
-        m_Comment = comment;
-    }
-
-    /**
-     * Get comment string
-     *
-     * @return String containing the comment
-     */
-    public String getComment() {
-        return m_Comment;
-    }
-
-    /**
-     * Set comment file
-     *
-     * @param cfile the path to the comment file
-     */
-    public void setCommentFile(String cfile) {
-        m_Cfile = cfile;
-    }
-
-    /**
-     * Get comment file
-     *
-     * @return String containing the path to the comment file
-     */
-    public String getCommentFile() {
-        return m_Cfile;
-    }
-
-    /**
-     * Get the 'out' command
-     *
-     * @return the 'out' command if the attribute was specified, otherwise an empty string
-     *
-     * @param CommandLine containing the command line string with or without the out flag and path appended
-     */
-    private void getOutCommand(Commandline cmd) {
-        if (getOut() != null) {
-            /* Had to make two separate commands here because if a space is
-               inserted between the flag and the value, it is treated as a
-               Windows filename with a space and it is enclosed in double
-               quotes ("). This breaks clearcase.
-            */
-            cmd.createArgument().setValue(FLAG_OUT);
-            cmd.createArgument().setValue(getOut());
-        }
-    }
-
-    /**
-     * Get the 'branch' command
-     *
-     * @return the 'branch' command if the attribute was specified, otherwise an empty string
-     *
-     * @param CommandLine containing the command line string with or without the branch flag and name appended
-     */
-    private void getBranchCommand(Commandline cmd) {
-        if (getBranch() != null) {
-            /* Had to make two separate commands here because if a space is
-               inserted between the flag and the value, it is treated as a
-               Windows filename with a space and it is enclosed in double
-               quotes ("). This breaks clearcase.
-            */
-            cmd.createArgument().setValue(FLAG_BRANCH);
-            cmd.createArgument().setValue(getBranch());
-        }
-    }
-
-
-    /**
-     * Get the 'comment' command
-     *
-     * @return the 'comment' command if the attribute was specified, otherwise an empty string
-     *
-     * @param CommandLine containing the command line string with or without the comment flag and string appended
-     */
-    private void getCommentCommand(Commandline cmd) {
-        if (getComment() != null) {
-            /* Had to make two separate commands here because if a space is
-               inserted between the flag and the value, it is treated as a
-               Windows filename with a space and it is enclosed in double
-               quotes ("). This breaks clearcase.
-            */
-            cmd.createArgument().setValue(FLAG_COMMENT);
-            cmd.createArgument().setValue(getComment());
-        }
-    }
-
-    /**
-     * Get the 'cfile' command
-     *
-     * @return the 'cfile' command if the attribute was specified, otherwise an empty string
-     *
-     * @param CommandLine containing the command line string with or without the cfile flag and file appended
-     */
-    private void getCommentFileCommand(Commandline cmd) {
-        if (getCommentFile() != null) {
-            /* Had to make two separate commands here because if a space is
-               inserted between the flag and the value, it is treated as a
-               Windows filename with a space and it is enclosed in double
-               quotes ("). This breaks clearcase.
-            */
-            cmd.createArgument().setValue(FLAG_COMMENTFILE);
-            cmd.createArgument().setValue(getCommentFile());
-        }
-    }
-
-        /**
-     *  -reserved flag -- check out the file as reserved
-     */
-    public static final String FLAG_RESERVED = "-reserved";
-        /**
-     *  -reserved flag -- check out the file as unreserved
-     */
-    public static final String FLAG_UNRESERVED = "-unreserved";
-        /**
-     * -out flag -- create a writable file under a different filename
-     */
-    public static final String FLAG_OUT = "-out";
-        /**
-     * -ndata flag -- checks out the file but does not create an editable file containing its data
-     */
-    public static final String FLAG_NODATA = "-ndata";
-        /**
-     * -branch flag -- checks out the file on a specified branch
-     */
-    public static final String FLAG_BRANCH = "-branch";
-        /**
-     * -version flag -- allows checkout of a version that is not main latest
-     */
-    public static final String FLAG_VERSION = "-version";
-        /**
-     * -nwarn flag -- suppresses warning messages
-     */
-    public static final String FLAG_NOWARN = "-nwarn";
-        /**
-     * -c flag -- comment to attach to the file
-     */
-    public static final String FLAG_COMMENT = "-c";
-        /**
-     * -cfile flag -- file containing a comment to attach to the file
-     */
-    public static final String FLAG_COMMENTFILE = "-cfile";
-        /**
-     * -nc flag -- no comment is specified
-     */
-    public static final String FLAG_NOCOMMENT = "-nc";
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCUnCheckout.java b/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCUnCheckout.java
deleted file mode 100644
index b68f13c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCUnCheckout.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.clearcase;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-
-/**
- * Task to perform UnCheckout command to ClearCase.
- * <p>
- * The following attributes are interpretted:
- * <table border="1">
- *   <tr>
- *     <th>Attribute</th>
- *     <th>Values</th>
- *     <th>Required</th>
- *   </tr>
- *   <tr>
- *      <td>viewpath</td>
- *      <td>Path to the ClearCase view file or directory that the command will operate on</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>keepcopy</td>
- *      <td>Specifies whether to keep a copy of the file with a .keep extension or not</td>
- *      <td>No</td>
- *   <tr>
- * </table>
- *
- * @author Curtis White
- */
-public class CCUnCheckout extends ClearCase {
-    private boolean m_Keep = false;
-
-    /**
-     * Executes the task.
-     * <p>
-     * Builds a command line to execute cleartool and then calls Exec's run method
-     * to execute the command line.
-     */
-    public void execute() throws BuildException {
-        Commandline commandLine = new Commandline();
-        Project aProj = getProject();
-        int result = 0;
-
-        // Default the viewpath to basedir if it is not specified
-        if (getViewPath() == null) {
-            setViewPath(aProj.getBaseDir().getPath());
-        }
-
-        // build the command line from what we got the format is
-        // cleartool uncheckout [options...] [viewpath ...]
-        // as specified in the CLEARTOOL.EXE help
-        commandLine.setExecutable(getClearToolCommand());
-        commandLine.createArgument().setValue(COMMAND_UNCHECKOUT);
-
-        checkOptions(commandLine);
-
-        result = run(commandLine);
-        if ( result != 0 ) {
-            String msg = "Failed executing: " + commandLine.toString();
-            throw new BuildException(msg, location);
-        }
-    }
-
-
-    /**
-     * Check the command line options.
-     */
-    private void checkOptions(Commandline cmd) {
-        // ClearCase items
-        if (getKeepCopy()) {
-            // -keep
-            cmd.createArgument().setValue(FLAG_KEEPCOPY);
-        } else {
-            // -rm
-            cmd.createArgument().setValue(FLAG_RM);
-        }
-
-        // viewpath
-        cmd.createArgument().setValue(getViewPath());
-    }
-
-    /**
-     * Set keepcopy flag status
-     *
-     * @param keep the status to set the flag to
-     */
-    public void setKeepCopy(boolean keep) {
-        m_Keep = keep;
-    }
-
-    /**
-     * Get keepcopy flag status
-     *
-     * @return boolean containing status of keep flag
-     */
-    public boolean getKeepCopy() {
-        return m_Keep;
-    }
-
-
-        /**
-     *  -keep flag -- keep a copy of the file with .keep extension
-     */
-    public static final String FLAG_KEEPCOPY = "-keep";
-        /**
-     *  -rm flag -- remove the copy of the file
-     */
-    public static final String FLAG_RM = "-rm";
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCUpdate.java b/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCUpdate.java
deleted file mode 100644
index 8def7fe..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/CCUpdate.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.clearcase;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-import java.lang.System;
-
-/**
- * Task to perform an Update command to ClearCase.
- * <p>
- * The following attributes are interpretted:
- * <table border="1">
- *   <tr>
- *     <th>Attribute</th>
- *     <th>Values</th>
- *     <th>Required</th>
- *   </tr>
- *   <tr>
- *      <td>viewpath</td>
- *      <td>Path to the ClearCase view file or directory that the command will operate on</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>graphical</td>
- *      <td>Displays a graphical dialog during the update</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>log</td>
- *      <td>Specifies a log file for ClearCase to write to</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>overwrite</td>
- *      <td>Specifies whether to overwrite hijacked files or not</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>rename</td>
- *      <td>Specifies that hijacked files should be renamed with a .keep extension</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>currenttime</td>
- *      <td>Specifies that modification time should be written as the current time. Either currenttime or preservetime can be specified.</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>preservetime</td>
- *      <td>Specifies that modification time should preserved from the VOB time. Either currenttime or preservetime can be specified.</td>
- *      <td>No</td>
- *   <tr>
- * </table>
- *
- * @author Curtis White
- */
-public class CCUpdate extends ClearCase {
-    private boolean m_Graphical = false;
-    private boolean m_Overwrite = false;
-    private boolean m_Rename = false;
-    private boolean m_Ctime = false;
-    private boolean m_Ptime = false;
-    private String m_Log = null;
-
-    /**
-     * Executes the task.
-     * <p>
-     * Builds a command line to execute cleartool and then calls Exec's run method
-     * to execute the command line.
-     */
-    public void execute() throws BuildException {
-        Commandline commandLine = new Commandline();
-        Project aProj = getProject();
-        int result = 0;
-
-        // Default the viewpath to basedir if it is not specified
-        if (getViewPath() == null) {
-            setViewPath(aProj.getBaseDir().getPath());
-        }
-
-        // build the command line from what we got the format is
-        // cleartool update [options...] [viewpath ...]
-        // as specified in the CLEARTOOL.EXE help
-        commandLine.setExecutable(getClearToolCommand());
-        commandLine.createArgument().setValue(COMMAND_UPDATE);
-
-        // Check the command line options
-        checkOptions(commandLine);
-
-        // For debugging
-        System.out.println(commandLine.toString());
-
-        result = run(commandLine);
-        if ( result != 0 ) {
-            String msg = "Failed executing: " + commandLine.toString();
-            throw new BuildException(msg, location);
-        }
-    }
-
-    /**
-     * Check the command line options.
-     */
-    private void checkOptions(Commandline cmd) {
-        // ClearCase items
-        if (getGraphical()) {
-            // -graphical
-            cmd.createArgument().setValue(FLAG_GRAPHICAL);
-        } else {
-            if (getOverwrite()) {
-                // -overwrite
-                cmd.createArgument().setValue(FLAG_OVERWRITE);
-            } else {
-                if (getRename()) {
-                    // -rename
-                    cmd.createArgument().setValue(FLAG_RENAME);
-                } else {
-                    // -noverwrite
-                    cmd.createArgument().setValue(FLAG_NOVERWRITE);
-                }
-            }
-
-            if (getCurrentTime()) {
-                // -ctime
-                cmd.createArgument().setValue(FLAG_CURRENTTIME);
-            } else {
-                if (getPreserveTime()) {
-                    // -ptime
-                    cmd.createArgument().setValue(FLAG_PRESERVETIME);
-                }
-            }
-
-            // -log logname
-            getLogCommand(cmd);
-        }
-
-        // viewpath
-        cmd.createArgument().setValue(getViewPath());
-    }
-
-    /**
-     * Set graphical flag status
-     *
-     * @param graphical the status to set the flag to
-     */
-    public void setGraphical(boolean graphical) {
-        m_Graphical = graphical;
-    }
-
-    /**
-     * Get graphical flag status
-     *
-     * @return boolean containing status of graphical flag
-     */
-    public boolean getGraphical() {
-        return m_Graphical;
-    }
-
-    /**
-     * Set overwrite hijacked files status
-     *
-     * @param ow the status to set the flag to
-     */
-    public void setOverwrite(boolean ow) {
-        m_Overwrite = ow;
-    }
-
-    /**
-     * Get overwrite hijacked files status
-     *
-     * @return boolean containing status of overwrite flag
-     */
-    public boolean getOverwrite() {
-        return m_Overwrite;
-    }
-
-    /**
-     * Set rename hijacked files status
-     *
-     * @param ren the status to set the flag to
-     */
-    public void setRename(boolean ren) {
-        m_Rename = ren;
-    }
-
-    /**
-     * Get rename hijacked files status
-     *
-     * @return boolean containing status of rename flag
-     */
-    public boolean getRename() {
-        return m_Rename;
-    }
-
-    /**
-     * Set modified time based on current time
-     *
-     * @param ct the status to set the flag to
-     */
-    public void setCurrentTime(boolean ct) {
-        m_Ctime = ct;
-    }
-
-    /**
-     * Get current time status
-     *
-     * @return boolean containing status of current time flag
-     */
-    public boolean getCurrentTime() {
-        return m_Ctime;
-    }
-
-    /**
-     * Preserve modified time from the VOB time
-     *
-     * @param pt the status to set the flag to
-     */
-    public void setPreserveTime(boolean pt) {
-        m_Ptime = pt;
-    }
-
-    /**
-     * Get preserve time status
-     *
-     * @return boolean containing status of preserve time flag
-     */
-    public boolean getPreserveTime() {
-        return m_Ptime;
-    }
-
-    /**
-     * Set log file where cleartool can record the status of the command
-     *
-     * @param log the path to the log file
-     */
-    public void setLog(String log) {
-        m_Log = log;
-    }
-
-    /**
-     * Get log file
-     *
-     * @return String containing the path to the log file
-     */
-    public String getLog() {
-        return m_Log;
-    }
-
-    /**
-     * Get the 'log' command
-     *
-     * @return the 'log' command if the attribute was specified, otherwise an empty string
-     *
-     * @param CommandLine containing the command line string with or without the log flag and path appended
-     */
-    private void getLogCommand(Commandline cmd) {
-        if (getLog() == null) {
-            return;
-        } else {
-            /* Had to make two separate commands here because if a space is
-               inserted between the flag and the value, it is treated as a
-               Windows filename with a space and it is enclosed in double
-               quotes ("). This breaks clearcase.
-            */
-            cmd.createArgument().setValue(FLAG_LOG);
-            cmd.createArgument().setValue(getLog());
-        }
-    }
-
-        /**
-     *  -graphical flag -- display graphical dialog during update operation
-     */
-    public static final String FLAG_GRAPHICAL = "-graphical";
-        /**
-     * -log flag -- file to log status to
-     */
-    public static final String FLAG_LOG = "-log";
-        /**
-     * -overwrite flag -- overwrite hijacked files
-     */
-    public static final String FLAG_OVERWRITE = "-overwrite";
-        /**
-     * -noverwrite flag -- do not overwrite hijacked files
-     */
-    public static final String FLAG_NOVERWRITE = "-noverwrite";
-        /**
-     * -rename flag -- rename hijacked files with .keep extension
-     */
-    public static final String FLAG_RENAME = "-rename";
-        /**
-     * -ctime flag -- modified time is written as the current time
-     */
-    public static final String FLAG_CURRENTTIME = "-ctime";
-        /**
-     * -ptime flag -- modified time is written as the VOB time
-     */
-    public static final String FLAG_PRESERVETIME = "-ptime";
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java b/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java
deleted file mode 100644
index 1d12412..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/clearcase/ClearCase.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.clearcase;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.LogStreamHandler;
-import org.apache.tools.ant.types.Commandline;
-
-import java.io.File;
-
-/**
- * A base class for creating tasks for executing commands on ClearCase.
- * <p>
- * The class extends the 'exec' task as it operates by executing the cleartool program
- * supplied with ClearCase. By default the task expects the cleartool executable to be
- * in the path, * you can override this be specifying the cleartooldir attribute.
- * </p>
- * <p>
- * This class provides set and get methods for the 'viewpath' attribute. It
- * also contains constants for the flags that can be passed to cleartool.
- * </p>
- *
- * @author Curtis White
- */
-public abstract class ClearCase extends Task {
-    private String m_ClearToolDir = "";
-    private String m_viewPath = null;
-
-    /**
-     * Set the directory where the cleartool executable is located
-     *
-     * @param dir the directory containing the cleartool executable
-     */
-    public final void setClearToolDir(String dir) {
-        m_ClearToolDir = project.translatePath(dir);
-    }
-
-    /**
-     * Builds and returns the command string to execute cleartool
-     *
-     * @return String containing path to the executable
-     */
-    protected final String getClearToolCommand() {
-        String toReturn = m_ClearToolDir;
-        if ( !toReturn.equals("") && !toReturn.endsWith("/") ) {
-            toReturn += "/";
-        }
-
-        toReturn += CLEARTOOL_EXE;
-
-        return toReturn;
-    }
-
-    /**
-     * Set the path to the item in a clearcase view to operate on
-     *
-     * @param viewPath Path to the view directory or file
-     */
-    public final void setViewPath(String viewPath) {
-        m_viewPath = viewPath;
-    }
-
-    /**
-     * Get the path to the item in a clearcase view
-     *
-     * @return m_viewPath
-     */
-    public String getViewPath() {
-        return m_viewPath;
-    }
-
-
-    protected int run(Commandline cmd) {
-        try {
-            Project aProj = getProject();
-            Execute exe = new Execute(new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_WARN));
-            exe.setAntRun(aProj);
-            exe.setWorkingDirectory(aProj.getBaseDir());
-            exe.setCommandline(cmd.getCommandline());
-            return exe.execute();
-        }
-        catch (java.io.IOException e) {
-            throw new BuildException(e, location);
-        }
-    }
-
-    /**
-     * Constant for the thing to execute
-     */
-    private static final String CLEARTOOL_EXE = "cleartool";
-
-    /**
-     * The 'Update' command
-     */
-    public static final String COMMAND_UPDATE = "update";
-    /**
-     * The 'Checkout' command
-     */
-    public static final String COMMAND_CHECKOUT = "checkout";
-    /**
-     * The 'Checkin' command
-     */
-    public static final String COMMAND_CHECKIN = "checkin";
-    /**
-     * The 'UndoCheckout' command
-     */
-    public static final String COMMAND_UNCHECKOUT = "uncheckout";
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFile.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFile.java
deleted file mode 100644
index 4e9da34..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFile.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend;
-
-import java.io.*;
-import java.lang.reflect.Modifier;
-import java.util.*;
-import org.apache.tools.ant.taskdefs.optional.depend.constantpool.*;
-
-/**
- * A ClassFile object stores information about a Java class.
- * 
- * The class may be read from a DataInputStream.and written
- * to a DataOutputStream. These are usually streams from a Java
- * class file or a class file component of a Jar file.
- * 
- * @author Conor MacNeill
- */
-public class ClassFile {
-
-    /**
-     * The Magic Value that marks the start of a Java class file
-     */
-    static private final int CLASS_MAGIC = 0xCAFEBABE;
-
-
-    /**
-     * This class' constant pool.
-     */
-    private ConstantPool constantPool;
-
-
-    /**
-     * The class name for this class.
-     */
-    private String className;
-
-    /**
-     * Read the class from a data stream.
-     * 
-     * This method takes an InputStream as input and
-     * parses the class from the stream.
-     * <p>
-     * 
-     * @param stream an InputStream from which the class will be read
-     * 
-     * @throws IOException if there is a problem reading from the given stream.
-     * @throws ClassFormatError if the class cannot be parsed correctly
-     * 
-     */
-    public void read(InputStream stream) throws IOException, ClassFormatError {
-        DataInputStream classStream = new DataInputStream(stream);
-
-
-        if (classStream.readInt() != CLASS_MAGIC) {
-            throw new ClassFormatError("No Magic Code Found - probably not a Java class file.");
-        } 
-
-        // right we have a good looking class file.
-        int minorVersion = classStream.readUnsignedShort();
-        int majorVersion = classStream.readUnsignedShort();
-
-        // read the constant pool in and resolve it
-        constantPool = new ConstantPool();
-
-        constantPool.read(classStream);
-        constantPool.resolve();
-
-        int accessFlags = classStream.readUnsignedShort();
-        int thisClassIndex = classStream.readUnsignedShort();
-        int superClassIndex = classStream.readUnsignedShort();
-        className = ((ClassCPInfo) constantPool.getEntry(thisClassIndex)).getClassName();
-    } 
-
-
-    /**
-     * Get the classes which this class references.
-     */
-    public Vector getClassRefs() {
-
-        Vector classRefs = new Vector();
-
-        for (int i = 0; i < constantPool.size(); ++i) {
-            ConstantPoolEntry entry = constantPool.getEntry(i);
-
-            if (entry != null && entry.getTag() == ConstantPoolEntry.CONSTANT_Class) {
-                ClassCPInfo classEntry = (ClassCPInfo) entry;
-
-                if (!classEntry.getClassName().equals(className)) {
-                    classRefs.addElement(ClassFileUtils.convertSlashName(classEntry.getClassName()));
-                } 
-            } 
-        } 
-
-        return classRefs;
-    } 
-
-    /**
-     * Get the class' fully qualified name in dot format.
-     * 
-     * @return the class name in dot format (eg. java.lang.Object)
-     */
-    public String getFullClassName() {
-        return ClassFileUtils.convertSlashName(className);
-    } 
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFileIterator.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFileIterator.java
deleted file mode 100644
index 5bae205..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFileIterator.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend;
-
-
-public interface ClassFileIterator {
-
-    public ClassFile getNextClassFile();
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFileUtils.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFileUtils.java
deleted file mode 100644
index b68fd15..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFileUtils.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend;
-
-/**
- * Utility class file routines.
- * 
- * This class porovides a number of static utility methods to convert between the
- * formats used in the Java class file format and those commonly used in Java
- * programming.
- * 
- * @author Conor MacNeill
- */
-public class ClassFileUtils {
-
-    /**
-     * Convert a class name from class file slash notation to java source
-     * file dot notation.
-     * 
-     * @param slashName the class name in slash notation (eg. java/lang/Object)
-     * 
-     * @return the class name in dot notation (eg. java.lang.Object).
-     */
-    static public String convertSlashName(String name) {
-        String dotName = null;
-        int    startIndex = 0;
-        int    sepIndex = 0;
-
-        String slashName = name.replace('\\', '/');
-        do {
-            String component = null;
-
-            sepIndex = slashName.indexOf('/', startIndex);
-
-            if (sepIndex == -1) {
-                component = slashName.substring(startIndex);
-            } else {
-                component = slashName.substring(startIndex, sepIndex);
-                startIndex = sepIndex + 1;
-            } 
-
-            if (dotName == null) {
-                dotName = component;
-            } else {
-                dotName += "." + component;
-            } 
-        } while (sepIndex != -1);
-
-        return dotName;
-    } 
-
-    /**
-     * Convert a class name from java source file dot notation to class file slash notation..
-     * 
-     * @param dotName the class name in dot notation (eg. java.lang.Object).
-     * 
-     * @return the class name in slash notation (eg. java/lang/Object).
-     */
-    static public String convertDotName(String dotName) {
-        String slashName = null;
-        int    startIndex = 0;
-        int    sepIndex = 0;
-
-        do {
-            String component = null;
-
-            sepIndex = dotName.indexOf('.', startIndex);
-
-            if (sepIndex == -1) {
-                component = dotName.substring(startIndex);
-            } else {
-                component = dotName.substring(startIndex, sepIndex);
-                startIndex = sepIndex + 1;
-            } 
-
-            if (slashName == null) {
-                slashName = component;
-            } else {
-                slashName += "/" + component;
-            } 
-        } while (sepIndex != -1);
-
-        return slashName;
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java
deleted file mode 100644
index accfa85..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java
+++ /dev/null
@@ -1,436 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.depend;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.taskdefs.MatchingTask;
-
-import java.util.*;
-import java.io.*;
-
-import org.apache.tools.ant.taskdefs.optional.depend.*;
-
-/**
- * Generate a dependency file for a given set of classes 
- *
- * @author Conor MacNeill
- */
-public class Depend extends MatchingTask {
-    static private class ClassFileInfo {
-        public File absoluteFile;
-        public String relativeName;
-        public String className;
-    };
-
-    /**
-     * The path where source files exist
-     */    
-    private Path srcPath;
-
-    /**
-     * The path where compiled class files exist.
-     */
-    private Path destPath;
-    
-    /**
-     * The directory which contains the dependency cache.
-     */
-    private File cache;
-
-    /**
-     * A map which gives for every class a list of te class which it affects.
-     */
-    private Hashtable affectedClassMap;
-
-    /**
-     * A map which gives information about a class
-     */
-    private Hashtable classFileInfoMap;
-
-    /**
-     * The list of classes which are out of date.
-     */
-    private Vector outOfDateClasses;
-     
-    /**
-     * indicates that the dependency relationships should be extended
-     * beyond direct dependencies to include all classes. So if A directly
-     * affects B abd B directly affects C, then A indirectly affects C.
-     */
-    private boolean closure;
-
-    private void writeDependencyList(File depFile, Vector dependencyList) throws IOException {
-        // new dependencies so need to write them out to the cache
-        PrintWriter pw = null;
-        try {
-            String parent = depFile.getParent();
-            if (parent != null) {
-                new File(parent).mkdirs(); 
-            }
-            
-            pw = new PrintWriter(new FileWriter(depFile));
-            for (Enumeration deps = dependencyList.elements(); deps.hasMoreElements();) {
-                pw.println(deps.nextElement());
-            }
-        }
-        finally {
-            if (pw != null) { 
-                pw.close();
-            }
-        }
-    }
-
-    private Vector readDependencyList(File depFile) throws IOException {
-        Vector dependencyList = null;
-        BufferedReader in = null;
-        try {
-            in = new BufferedReader(new FileReader(depFile));
-            String line = null;
-            dependencyList = new Vector();
-            while ((line = in.readLine()) != null) {
-                dependencyList.addElement(line);
-            }
-        }
-        finally {
-            if (in != null) { 
-                in.close();
-            }
-        }
-        
-        return dependencyList;
-    }
-
-
-    private void determineDependencies() throws IOException {
-        affectedClassMap = new Hashtable();
-        classFileInfoMap = new Hashtable();
-        for (Enumeration e = getClassFiles(destPath).elements(); e.hasMoreElements(); ) {
-            ClassFileInfo info = (ClassFileInfo)e.nextElement();
-            log("Adding class info for " + info.className, Project.MSG_DEBUG);
-            classFileInfoMap.put(info.className, info);
-            
-            Vector dependencyList = null;
-            
-            if (cache != null) {
-                // try to read the dependency info from the cache if it is not out of date
-                File depFile = new File(cache, info.relativeName + ".dep");
-                if (depFile.exists() && depFile.lastModified() > info.absoluteFile.lastModified()) {
-                    // depFile exists and is newer than the class file
-                    // need to read dependency list from the file.
-                    dependencyList = readDependencyList(depFile);
-                }
-            }
-            
-            if (dependencyList == null) {
-                // not cached - so need to read directly from the class file
-                FileInputStream inFileStream = null;
-                try {
-                    inFileStream = new FileInputStream(info.absoluteFile);
-                    ClassFile classFile = new ClassFile();
-                    classFile.read(inFileStream);
-                    
-                    dependencyList = classFile.getClassRefs();
-                    
-                    if (cache != null) {
-                        // new dependencies so need to write them out to the cache
-                        File depFile = new File(cache, info.relativeName + ".dep");
-                        writeDependencyList(depFile, dependencyList);
-                    }
-                }
-                finally {
-                    if (inFileStream != null) {
-                        inFileStream.close();
-                    }
-                }
-            }
-            
-            // This class depends on each class in the dependency list. For each
-            // one of those, add this class into their affected classes list 
-            
-            for (Enumeration depEnum = dependencyList.elements(); depEnum.hasMoreElements(); ) {
-                String dependentClass = (String)depEnum.nextElement();
-                
-                Hashtable affectedClasses = (Hashtable)affectedClassMap.get(dependentClass);
-                if (affectedClasses == null) {
-                    affectedClasses = new Hashtable();
-                    affectedClassMap.put(dependentClass, affectedClasses);
-                }
-                
-                affectedClasses.put(info.className, info);
-            }
-        }
-    }
-    
-    
-    private void deleteAllAffectedFiles() {
-        for (Enumeration e = outOfDateClasses.elements(); e.hasMoreElements();) {
-            String className = (String)e.nextElement();
-            deleteAffectedFiles(className);
-        }            
-    }
-    
-    private void deleteAffectedFiles(String className) {
-        Hashtable affectedClasses = (Hashtable)affectedClassMap.get(className);
-        if (affectedClasses != null) {
-            for (Enumeration e = affectedClasses.keys(); e.hasMoreElements(); ) {
-                String affectedClassName = (String)e.nextElement();
-                ClassFileInfo affectedClassInfo = (ClassFileInfo)affectedClasses.get(affectedClassName);
-                if (affectedClassInfo.absoluteFile.exists()) {
-                    log("Deleting file " + affectedClassInfo.absoluteFile.getPath() + " since " + 
-                        className + " out of date", Project.MSG_VERBOSE);
-                    affectedClassInfo.absoluteFile.delete();
-                    if (closure) {
-                        deleteAffectedFiles(affectedClassName);
-                    }
-                    else {
-                        // without closure we may delete an inner class but not the
-                        // top level class which would not trigger a recompile.
-                           
-                        if (affectedClassName.indexOf("$") != -1) {
-                            // need to delete the main class
-                            String topLevelClassName 
-                                = affectedClassName.substring(0, affectedClassName.indexOf("$"));
-                            log("Top level class = " + topLevelClassName, Project.MSG_VERBOSE);
-                            ClassFileInfo topLevelClassInfo 
-                                = (ClassFileInfo)classFileInfoMap.get(topLevelClassName);
-                            if (topLevelClassInfo != null &&
-                                topLevelClassInfo.absoluteFile.exists()) {
-                                log("Deleting file " + topLevelClassInfo.absoluteFile.getPath() + " since " + 
-                                    "one of its inner classes was removed", Project.MSG_VERBOSE);
-                                topLevelClassInfo.absoluteFile.delete();
-                                if (closure) {
-                                    deleteAffectedFiles(topLevelClassName);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Does the work.
-     *
-     * @exception BuildException Thrown in unrecovrable error.
-     */
-    public void execute() throws BuildException {
-        try {
-            long start = System.currentTimeMillis();
-            String [] srcPathList = srcPath.list();
-            if (srcPathList.length == 0) {
-                throw new BuildException("srcdir attribute must be set!", location);
-            }
-        
-            if (destPath == null) {
-                destPath = srcPath;
-            }
-            
-            if (cache != null && cache.exists() && !cache.isDirectory()) {
-                throw new BuildException("The cache, if specified, must point to a directory");
-            }
-        
-            if (cache != null && !cache.exists()) {
-                cache.mkdirs();
-            }
-        
-            determineDependencies();
- 
-/*            
-            for (Enumeration e = affectedClassMap.keys(); e.hasMoreElements(); ) {
-                String className = (String)e.nextElement();
-                log("Class " + className + " affects:", Project.MSG_DEBUG);
-                Hashtable affectedClasses = (Hashtable)affectedClassMap.get(className);
-                for (Enumeration e2 = affectedClasses.keys(); e2.hasMoreElements(); ) {
-                    String affectedClass = (String)e2.nextElement();
-                    ClassFileInfo info = (ClassFileInfo)affectedClasses.get(affectedClass);
-                    log("   " + affectedClass + " in " + info.absoluteFile.getPath(), Project.MSG_DEBUG);
-                }
-            }
-*/            
-            // we now need to scan for out of date files. When we have the list
-            // we go through and delete all class files which are affected by these files.
-            outOfDateClasses = new Vector();
-            for (int i=0; i<srcPathList.length; i++) {
-                File srcDir = (File)project.resolveFile(srcPathList[i]);
-                if (srcDir.exists()) {
-        
-                    DirectoryScanner ds = this.getDirectoryScanner(srcDir);
-        
-                    String[] files = ds.getIncludedFiles();
-        
-                    scanDir(srcDir, files);
-                }
-            }
-            
-            // we now have a complete list of classes which are out of date
-            // We scan through the affected classes, deleting any affected classes.
-            deleteAllAffectedFiles();
-            
-            log("Duration = " + (System.currentTimeMillis() - start));
-        } catch (Exception e) {
-            throw new BuildException(e);
-        }
-    }
-
-    /**
-     * Scans the directory looking for source files that are newer than their class files.
-     * The results are returned in the class variable compileList
-     */
-    protected void scanDir(File srcDir, String files[]) {
-
-        long now = System.currentTimeMillis();
-
-        for (int i = 0; i < files.length; i++) {
-            File srcFile = new File(srcDir, files[i]);
-            if (files[i].endsWith(".java")) {
-                String filePath = srcFile.getPath();
-                String className = filePath.substring(srcDir.getPath().length() + 1,
-                                                      filePath.length() - ".java".length());
-                className = ClassFileUtils.convertSlashName(className);                                                      
-                ClassFileInfo info = (ClassFileInfo)classFileInfoMap.get(className);
-                if (info == null) {
-                    // there was no class file. add this class to the list
-                    outOfDateClasses.addElement(className);
-                }
-                else {
-                    if (srcFile.lastModified() > info.absoluteFile.lastModified()) {
-                        outOfDateClasses.addElement(className);
-                    }
-                }
-            }
-        }
-    }
-
-
-    /** 
-     * Get the list of class files we are going to analyse.
-     *
-     * @param classLocations a path structure containing all the directories
-     *                       where classes can be found.
-     * @return a vector containing the classes to analyse.
-     */
-    private Vector getClassFiles(Path classLocations) {
-        // break the classLocations into its components.        
-        String[] classLocationsList = classLocations.list();            
-        
-        Vector classFileList = new Vector();
-        
-        for (int i = 0; i < classLocationsList.length; ++i) {
-            File dir = new File(classLocationsList[i]);
-            if (dir.isDirectory()) {
-                addClassFiles(classFileList, dir, dir);
-            }
-        }
-        
-        return classFileList;
-    }
-
-    /** 
-     * Add the list of class files from the given directory to the 
-     * class file vector, including any subdirectories.
-     *
-     * @param classLocations a path structure containing all the directories
-     *                       where classes can be found.
-     * @return a vector containing the classes to analyse.
-     */
-    private void addClassFiles(Vector classFileList, File dir, File root) {
-        String[] filesInDir = dir.list();
-        
-        if (filesInDir != null) {
-            int length = filesInDir.length;
-
-            for (int i = 0; i < length; ++i) {
-                File file = new File(dir, filesInDir[i]);
-                if (file.isDirectory()) {
-                    addClassFiles(classFileList, file, root);
-                }
-                else if (file.getName().endsWith(".class")) {
-                    ClassFileInfo info = new ClassFileInfo();
-                    info.absoluteFile = file;
-                    info.relativeName = file.getPath().substring(root.getPath().length() + 1,
-                                                                 file.getPath().length() - 6);
-                    info.className = ClassFileUtils.convertSlashName(info.relativeName);                                                                 
-                    classFileList.addElement(info);
-                }
-            } 
-        } 
-    }
-    
-    
-    /**
-     * Set the source dirs to find the source Java files.
-     */
-    public void setSrcdir(Path srcPath) {
-        this.srcPath = srcPath;
-    }
-
-    /**
-     * Set the destination directory where the compiled java files exist.
-     */
-    public void setDestDir(Path destPath) {
-        this.destPath = destPath;
-    }
-    
-    public void setCache(File cache) {
-        this.cache = cache;
-    }
-    
-    public void setClosure(boolean closure) {
-        this.closure = closure;
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java
deleted file mode 100644
index f848249..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend;
-
-import java.util.*;
-import java.io.*;
-
-/**
- * An iterator which iterates through the contents of a java directory.
- * 
- * The iterator should be created with the directory at the root of the
- * Java namespace.
- * 
- * @author Conor MacNeill
- */
-public class DirectoryIterator implements ClassFileIterator {
-
-    /**
-     * This is a stack of current iterators supporting the depth first
-     * traversal of the directory tree.
-     */
-    private Stack enumStack;
-
-    /**
-     * The current directory iterator. As directories encounter lower level
-     * directories, the current iterator is pushed onto the iterator
-     * stack and a new iterator over the sub directory becomes the current
-     * directory. This implements a depth first traversal of the directory namespace.
-     */
-    private Enumeration currentEnum;
-
-    /**
-     * The length of the root directory. This is used to remove the root directory
-     * from full paths.
-     */
-    int rootLength;
-
-    /**
-     * Creates a directory iterator.
-     * 
-     * The directory iterator is created to scan the root directory. If the
-     * changeInto flag is given, then the entries returned will be relative to this
-     * directory and not the current directory.
-     * 
-     * @param rootDirectory the root if the directory namespace which is to be iterated over
-     * @param changeInto if true then the returned entries will be relative to the rootDirectory
-     * and not the current directory.
-     * 
-     * @throws IOException if there is a problem reading the directory information.
-     */
-    public DirectoryIterator(File rootDirectory, boolean changeInto) throws IOException {
-        super();
-
-        enumStack = new Stack();
-
-        if (rootDirectory.isAbsolute() || changeInto) {
-            rootLength = rootDirectory.getPath().length() + 1;
-        } else {
-            rootLength = 0;
-        } 
-
-        Vector filesInRoot = getDirectoryEntries(rootDirectory);
-
-        currentEnum = filesInRoot.elements();
-    }
-
-    /**
-     * Get a vector covering all the entries (files and subdirectories in a directory).
-     * 
-     * @param directory the directory to be scanned.
-     * 
-     * @return a vector containing File objects for each entry in the directory.
-     */
-    private Vector getDirectoryEntries(File directory) {
-        Vector files = new Vector();
-
-        // File[] filesInDir = directory.listFiles();
-        String[] filesInDir = directory.list();
-
-        if (filesInDir != null) {
-            int length = filesInDir.length;
-
-            for (int i = 0; i < length; ++i) {
-                files.addElement(new File(directory, filesInDir[i]));
-            } 
-        } 
-
-        return files;
-    } 
-
-    /**
-     * Template method to allow subclasses to supply elements for the iteration.
-     * 
-     * The directory iterator maintains a stack of iterators covering each level
-     * in the directory hierarchy. The current iterator covers the current directory
-     * being scanned. If the next entry in that directory is a subdirectory, the current
-     * iterator is pushed onto the stack and a new iterator is created for the
-     * subdirectory. If the entry is a file, it is returned as the next element and the
-     * iterator remains valid. If there are no more entries in the current directory,
-     * the topmost iterator on the statck is popped off to become the current iterator.
-     * 
-     * @return the next ClassFile in the iteration.
-     */
-    public ClassFile getNextClassFile() {
-        ClassFile nextElement = null;
-
-        try {
-            while (nextElement == null) {
-                if (currentEnum.hasMoreElements()) {
-                    File element = (File) currentEnum.nextElement();
-
-                    if (element.isDirectory()) {
-
-                        // push the current iterator onto the stack and then
-                        // iterate through this directory.
-                        enumStack.push(currentEnum);
-
-                        Vector files = getDirectoryEntries(element);
-
-                        currentEnum = files.elements();
-                    } else {
-
-                        // we have a file. create a stream for it
-                        FileInputStream inFileStream = new FileInputStream(element);
-
-                        if (element.getName().endsWith(".class")) {
-
-                            // create a data input stream from the jar input stream
-                            ClassFile javaClass = new ClassFile();
-
-                            javaClass.read(inFileStream);
-
-                            nextElement = javaClass;
-                        } 
-                    } 
-                } else {
-                    // this iterator is exhausted. Can we pop one off the stack
-                    if (enumStack.empty()) {
-                        break;
-                    } else {
-                        currentEnum = (Enumeration) enumStack.pop();
-                    } 
-                } 
-            } 
-        } catch (IOException e) {
-            nextElement = null;
-        } 
-
-        return nextElement;
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/JarFileIterator.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/JarFileIterator.java
deleted file mode 100644
index 99cea2f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/JarFileIterator.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend;
-
-import java.util.zip.*;
-import java.io.*;
-
-/**
- * A class file iterator which iterates through the contents of a Java jar file.
- * 
- * @author Conor MacNeill
- */
-public class JarFileIterator implements ClassFileIterator {
-    private ZipInputStream jarStream;
-
-    public JarFileIterator(InputStream stream) throws IOException {
-        super();
-
-        jarStream = new ZipInputStream(stream);
-    }
-
-    private byte[] getEntryBytes(InputStream stream) throws IOException {
-        byte[]                buffer = new byte[8192];
-        ByteArrayOutputStream baos = new ByteArrayOutputStream(2048);
-        int                   n;
-
-        while ((n = stream.read(buffer, 0, buffer.length)) != -1) {
-            baos.write(buffer, 0, n);
-        } 
-
-        return baos.toByteArray();
-    } 
-
-    public ClassFile getNextClassFile() {
-        ZipEntry         jarEntry;
-        ClassFile nextElement = null;
-
-        try {
-            jarEntry = jarStream.getNextEntry();
-
-
-            while (nextElement == null && jarEntry != null) {
-                String entryName = jarEntry.getName();
-
-                if (!jarEntry.isDirectory() && entryName.endsWith(".class")) {
-
-                        // create a data input stream from the jar input stream
-                        ClassFile javaClass = new ClassFile();
-
-                        javaClass.read(jarStream);
-
-                        nextElement = javaClass;
-                } else {
-                        
-                    jarEntry = jarStream.getNextEntry();
-                } 
-            } 
-        } catch (IOException e) {
-            String message = e.getMessage();
-            String text = e.getClass().getName();
-
-            if (message != null) {
-                text += ": " + message;
-            } 
-
-            throw new RuntimeException("Problem reading JAR file: " + text);
-        } 
-
-        return nextElement;
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ClassCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ClassCPInfo.java
deleted file mode 100644
index d157f5a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ClassCPInfo.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * The constant pool entry which stores class information.
- * 
- * @author Conor MacNeill
- */
-public class ClassCPInfo extends ConstantPoolEntry {
-
-    /**
-     * The class' name. This will be only valid if the entry has been resolved
-     * against the constant pool.
-     */
-    private String className;
-
-    /**
-     * The index into the constant pool where this class' name is stored. If the class
-     * name is changed, this entry is invalid until this entry is connected to a constant
-     * pool.
-     */
-    private int    index;
-
-    /**
-     * Constructor.
-     * 
-     * Sets the tag value for this entry to type Class
-     */
-    public ClassCPInfo() {
-        super(CONSTANT_Class, 1);
-    }
-
-    /**
-     * Read the entry from a stream.
-     * 
-     * @param cpStream the stream containing the constant pool entry to be read.
-     * 
-     * @exception IOException thrown if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        index = cpStream.readUnsignedShort();
-        className = "unresolved";
-    } 
-
-    /**
-     * Generate a string readable version of this entry
-     */
-    public String toString() {
-        return "Class Constant Pool Entry for " + className + "[" + index + "]";
-    } 
-
-    /**
-     * Resolve this class info against the given constant pool.
-     * 
-     * @param constantPool the constant pool with which to resolve the class.
-     */
-    public void resolve(ConstantPool constantPool) {
-        className = ((Utf8CPInfo) constantPool.getEntry(index)).getValue();
-
-        super.resolve(constantPool);
-    } 
-
-    /**
-     * Get the class name of this entry.
-     * 
-     * @return the class' name.
-     */
-    public String getClassName() {
-        return className;
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantCPInfo.java
deleted file mode 100644
index f058c40..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantCPInfo.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-
-/**
- * A Constant Pool entry which represents a constant value.
- * 
- * 
- * @author Conor MacNeill
- */
-abstract public class ConstantCPInfo extends ConstantPoolEntry {
-
-    /**
-     * The entry's untyped value.
-     * 
-     * Each subclass interprets the constant value based on the subclass's type.
-     * The value here must be compatible.
-     */
-    private Object value;
-
-    /**
-     * Initialise the constant entry.
-     * 
-     * @param tagValue the constant pool entry type to be used.
-     * @param entries the number of constant pool entry slots occupied by this entry.
-     */
-    protected ConstantCPInfo(int tagValue, int entries) {
-        super(tagValue, entries);
-    }
-
-    /**
-     * Get the value of the constant.
-     * 
-     * @return the value of the constant (untyped).
-     */
-    public Object getValue() {
-        return value;
-    } 
-
-    /**
-     * Set the constant value.
-     * 
-     * @param newValue the new untyped value of this constant.
-     */
-    public void setValue(Object newValue) {
-        value = newValue;
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPool.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPool.java
deleted file mode 100644
index fdd8e4a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPool.java
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * The constant pool of a Java class.
- * 
- * The constant pool is a collection of constants used in a Java class file. It stores
- * strings, constant values, class names, method names, field names etc.
- * 
- * @see <a href="http://java.sun.com/docs/books/vmspec/">The Java Virtual Machine Specification</a>
- * 
- * @author Conor MacNeill
- */
-public class ConstantPool {
-
-    /**
-     * The entries in the constant pool.
-     */
-    private Vector entries;
-
-    /**
-     * A Hashtable of UTF8 entries - used to get constant pool indexes of the UTF8 values quickly
-     */
-    private Hashtable utf8Indexes;
-
-    /**
-     * Initialise the constant pool.
-     */
-    public ConstantPool() {
-        entries = new Vector();
-
-        // The zero index is never present in the constant pool itself so
-        // we add a null entry for it
-        entries.addElement(null);
-
-        utf8Indexes = new Hashtable();
-    }
-
-    /**
-     * Read the constant pool from a class input stream.
-     * 
-     * @param classStream the DataInputStream of a class file.
-     * 
-     * @throws IOException if there is a problem reading the constant pool
-     * from the stream
-     */
-    public void read(DataInputStream classStream) throws IOException {
-        int numEntries = classStream.readUnsignedShort();
-
-        for (int i = 1; i < numEntries; ) {
-            ConstantPoolEntry nextEntry = ConstantPoolEntry.readEntry(classStream);
-
-            i += nextEntry.getNumEntries();
-
-            addEntry(nextEntry);
-        } 
-    } 
-
-    /**
-     * Get the size of the constant pool.
-     */
-    public int size() {
-        return entries.size();
-    }
-    
-    /**
-     * Add an entry to the constant pool.
-     * 
-     * @param entry the new entry to be added to the constant pool.
-     * 
-     * @return the index into the constant pool at which the entry is stored.
-     */
-    public int addEntry(ConstantPoolEntry entry) {
-        int index = entries.size();
-
-        entries.addElement(entry);
-
-        int numSlots = entry.getNumEntries();
-
-        // add null entries for any additional slots required.
-        for (int j = 0; j < numSlots - 1; ++j) {
-            entries.addElement(null);
-        } 
-
-        if (entry instanceof Utf8CPInfo) {
-            Utf8CPInfo utf8Info = (Utf8CPInfo) entry;
-
-            utf8Indexes.put(utf8Info.getValue(), new Integer(index));
-        } 
-
-        return index;
-    } 
-
-    /**
-     * Resolve the entries in the constant pool.
-     * 
-     * Resolution of the constant pool involves transforming indexes to
-     * other constant pool entries into the actual data for that entry.
-     */
-    public void resolve() {
-        for (Enumeration i = entries.elements(); i.hasMoreElements(); ) {
-            ConstantPoolEntry poolInfo = (ConstantPoolEntry) i.nextElement();
-
-            if (poolInfo != null &&!poolInfo.isResolved()) {
-                poolInfo.resolve(this);
-            } 
-        } 
-    } 
-
-
-    /**
-     * Get an constant pool entry at a particular index.
-     * 
-     * @param index the index into the constant pool.
-     * 
-     * @return the constant pool entry at that index.
-     */
-    public ConstantPoolEntry getEntry(int index) {
-        return (ConstantPoolEntry) entries.elementAt(index);
-    } 
-
-    /**
-     * Get the index of a given UTF8 constant pool entry.
-     * 
-     * @param value the string value of the UTF8 entry.
-     * 
-     * @return the index at which the given string occurs in the
-     * constant pool or -1 if the value does not occur.
-     */
-    public int getUTF8Entry(String value) {
-        int     index = -1;
-        Integer indexInteger = (Integer) utf8Indexes.get(value);
-
-        if (indexInteger != null) {
-            index = indexInteger.intValue();
-        } 
-
-        return index;
-    } 
-
-    /**
-     * Get the index of a given CONSTANT_Class entry in the constant pool.
-     * 
-     * @param className the name of the class for which the class entry index is required.
-     * 
-     * @return the index at which the given class entry occurs in the
-     * constant pool or -1 if the value does not occur.
-     */
-    public int getClassEntry(String className) {
-        int index = -1;
-
-        for (int i = 0; i < entries.size() && index == -1; ++i) {
-            Object element = entries.elementAt(i);
-
-            if (element instanceof ClassCPInfo) {
-                ClassCPInfo classinfo = (ClassCPInfo) element;
-
-                if (classinfo.getClassName().equals(className)) {
-                    index = i;
-                } 
-            } 
-        } 
-
-        return index;
-    } 
-
-    /**
-     * Get the index of a given constant value entry in the constant pool.
-     * 
-     * @param constantValue the constant value for which the index is required.
-     * 
-     * @return the index at which the given value entry occurs in the
-     * constant pool or -1 if the value does not occur.
-     */
-    public int getConstantEntry(Object constantValue) {
-        int index = -1;
-
-        for (int i = 0; i < entries.size() && index == -1; ++i) {
-            Object element = entries.elementAt(i);
-
-            if (element instanceof ConstantCPInfo) {
-                ConstantCPInfo constantEntry = (ConstantCPInfo) element;
-
-                if (constantEntry.getValue().equals(constantValue)) {
-                    index = i;
-                } 
-            } 
-        } 
-
-        return index;
-    } 
-
-    /**
-     * Get the index of a given CONSTANT_MethodRef entry in the constant pool.
-     * 
-     * @param methodClassName the name of the class which contains the method
-     * being referenced.
-     * @param methodName the name of the method being referenced.
-     * @param methodType the type descriptor of the metho dbeing referenced.
-     * 
-     * @return the index at which the given method ref entry occurs in the
-     * constant pool or -1 if the value does not occur.
-     */
-    public int getMethodRefEntry(String methodClassName, String methodName, String methodType) {
-        int index = -1;
-
-        for (int i = 0; i < entries.size() && index == -1; ++i) {
-            Object element = entries.elementAt(i);
-
-            if (element instanceof MethodRefCPInfo) {
-                MethodRefCPInfo methodRefEntry = (MethodRefCPInfo) element;
-
-                if (methodRefEntry.getMethodClassName().equals(methodClassName) 
-                        && methodRefEntry.getMethodName().equals(methodName) && methodRefEntry.getMethodType().equals(methodType)) {
-                    index = i;
-                } 
-            } 
-        } 
-
-        return index;
-    } 
-
-    /**
-     * Get the index of a given CONSTANT_InterfaceMethodRef entry in the constant pool.
-     * 
-     * @param interfaceMethodClassName the name of the interface which contains the method
-     * being referenced.
-     * @param interfaceMethodName the name of the method being referenced.
-     * @param interfaceMethodType the type descriptor of the metho dbeing referenced.
-     * 
-     * @return the index at which the given method ref entry occurs in the
-     * constant pool or -1 if the value does not occur.
-     */
-    public int getInterfaceMethodRefEntry(String interfaceMethodClassName, String interfaceMethodName, String interfaceMethodType) {
-        int index = -1;
-
-        for (int i = 0; i < entries.size() && index == -1; ++i) {
-            Object element = entries.elementAt(i);
-
-            if (element instanceof InterfaceMethodRefCPInfo) {
-                InterfaceMethodRefCPInfo interfaceMethodRefEntry = (InterfaceMethodRefCPInfo) element;
-
-                if (interfaceMethodRefEntry.getInterfaceMethodClassName().equals(interfaceMethodClassName) 
-                        && interfaceMethodRefEntry.getInterfaceMethodName().equals(interfaceMethodName) 
-                        && interfaceMethodRefEntry.getInterfaceMethodType().equals(interfaceMethodType)) {
-                    index = i;
-                } 
-            } 
-        } 
-
-        return index;
-    } 
-
-    /**
-     * Get the index of a given CONSTANT_FieldRef entry in the constant pool.
-     * 
-     * @param fieldClassName the name of the class which contains the field
-     * being referenced.
-     * @param fieldName the name of the field being referenced.
-     * @param fieldType the type descriptor of the field being referenced.
-     * 
-     * @return the index at which the given field ref entry occurs in the
-     * constant pool or -1 if the value does not occur.
-     */
-    public int getFieldRefEntry(String fieldClassName, String fieldName, String fieldType) {
-        int index = -1;
-
-        for (int i = 0; i < entries.size() && index == -1; ++i) {
-            Object element = entries.elementAt(i);
-
-            if (element instanceof FieldRefCPInfo) {
-                FieldRefCPInfo fieldRefEntry = (FieldRefCPInfo) element;
-
-                if (fieldRefEntry.getFieldClassName().equals(fieldClassName) && fieldRefEntry.getFieldName().equals(fieldName) 
-                        && fieldRefEntry.getFieldType().equals(fieldType)) {
-                    index = i;
-                } 
-            } 
-        } 
-
-        return index;
-    } 
-
-    /**
-     * Get the index of a given CONSTANT_NameAndType entry in the constant pool.
-     * 
-     * @param name the name
-     * @param type the type
-     * 
-     * @return the index at which the given NameAndType entry occurs in the
-     * constant pool or -1 if the value does not occur.
-     */
-    public int getNameAndTypeEntry(String name, String type) {
-        int index = -1;
-
-        for (int i = 0; i < entries.size() && index == -1; ++i) {
-            Object element = entries.elementAt(i);
-
-            if (element instanceof NameAndTypeCPInfo) {
-                NameAndTypeCPInfo nameAndTypeEntry = (NameAndTypeCPInfo) element;
-
-                if (nameAndTypeEntry.getName().equals(name) && nameAndTypeEntry.getType().equals(type)) {
-                    index = i;
-                } 
-            } 
-        } 
-
-        return index;
-    } 
-
-    /**
-     * Dump the constant pool to a string.
-     * 
-     * @return the constant pool entries as strings
-     */
-    public String toString() {
-        StringBuffer sb = new StringBuffer("\n");
-        int          size = entries.size();
-
-        for (int i = 0; i < size; ++i) {
-            sb.append("[" + i + "] = " + getEntry(i) + "\n");
-        } 
-
-        return sb.toString();
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPoolEntry.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPoolEntry.java
deleted file mode 100644
index 2f7d1fb..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/ConstantPoolEntry.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * An entry in the constant pool.
- * 
- * This class contains a represenation of the constant pool entries. It is
- * an abstract base class for all the different forms of constant pool entry.
- * 
- * @author Conor MacNeill
- * @see ConstantPool
- */
-public abstract class ConstantPoolEntry {
-
-    /**
-     * Tag value for UTF8 entries.
-     */
-    static public final int CONSTANT_Utf8 = 1;
-
-    /**
-     * Tag value for Integer entries.
-     */
-    static public final int CONSTANT_Integer = 3;
-
-    /**
-     * Tag value for Float entries.
-     */
-    static public final int CONSTANT_Float = 4;
-
-    /**
-     * Tag value for Long entries.
-     */
-    static public final int CONSTANT_Long = 5;
-
-    /**
-     * Tag value for Double entries.
-     */
-    static public final int CONSTANT_Double = 6;
-
-    /**
-     * Tag value for Class entries.
-     */
-    static public final int CONSTANT_Class = 7;
-
-    /**
-     * Tag value for String entries.
-     */
-    static public final int CONSTANT_String = 8;
-
-    /**
-     * Tag value for Field Reference entries.
-     */
-    static public final int CONSTANT_FieldRef = 9;
-
-    /**
-     * Tag value for Method Reference entries.
-     */
-    static public final int CONSTANT_MethodRef = 10;
-
-    /**
-     * Tag value for Interface Method Reference entries.
-     */
-    static public final int CONSTANT_InterfaceMethodRef = 11;
-
-    /**
-     * Tag value for Name and Type entries.
-     */
-    static public final int CONSTANT_NameAndType = 12;
-
-    /**
-     * This entry's tag which identifies the type of this constant pool entry.
-     */
-    private int             tag;
-
-    /**
-     * The number of slots in the constant pool, occupied by this entry.
-     */
-    private int             numEntries;
-
-    /**
-     * A flag which indiciates if this entry has been resolved or not.
-     */
-    private boolean         resolved;
-
-    /**
-     * Initialse the constant pool entry.
-     * 
-     * @param tagValue the tag value which identifies which type of constant pool entry this is.
-     * @param entries the number of constant pool entry slots this entry occupies.
-     */
-    public ConstantPoolEntry(int tagValue, int entries) {
-        tag = tagValue;
-        numEntries = entries;
-        resolved = false;
-    }
-
-    /**
-     * Read a constant pool entry from a stream.
-     * 
-     * This is a factory method which reads a constant pool entry
-     * form a stream and returns the appropriate subclass for the
-     * entry.
-     * 
-     * @param cpStream the stream from which the constant pool entry is to be read.
-     * 
-     * @returns the appropriate ConstantPoolEntry subclass representing the
-     * constant pool entry from the stream.
-     * 
-     * @throws IOExcception if there is a problem reading the entry from the stream.
-     */
-    static public ConstantPoolEntry readEntry(DataInputStream cpStream) throws IOException {
-        ConstantPoolEntry cpInfo = null;
-        int               cpTag = cpStream.readUnsignedByte();
-
-        switch (cpTag) {
-
-        case CONSTANT_Utf8:
-            cpInfo = new Utf8CPInfo();
-
-            break;
-
-        case CONSTANT_Integer:
-            cpInfo = new IntegerCPInfo();
-
-            break;
-
-        case CONSTANT_Float:
-            cpInfo = new FloatCPInfo();
-
-            break;
-
-        case CONSTANT_Long:
-            cpInfo = new LongCPInfo();
-
-            break;
-
-        case CONSTANT_Double:
-            cpInfo = new DoubleCPInfo();
-
-            break;
-
-        case CONSTANT_Class:
-            cpInfo = new ClassCPInfo();
-
-            break;
-
-        case CONSTANT_String:
-            cpInfo = new StringCPInfo();
-
-            break;
-
-        case CONSTANT_FieldRef:
-            cpInfo = new FieldRefCPInfo();
-
-            break;
-
-        case CONSTANT_MethodRef:
-            cpInfo = new MethodRefCPInfo();
-
-            break;
-
-        case CONSTANT_InterfaceMethodRef:
-            cpInfo = new InterfaceMethodRefCPInfo();
-
-            break;
-
-        case CONSTANT_NameAndType:
-            cpInfo = new NameAndTypeCPInfo();
-
-            break;
-
-        default:
-            throw new ClassFormatError("Invalid Constant Pool entry Type " + cpTag);
-        }
-
-        cpInfo.read(cpStream);
-
-        return cpInfo;
-    } 
-
-    /**
-     * Indicates whether this entry has been resolved.
-     * 
-     * In general a constant pool entry can reference another constant
-     * pool entry by its index value. Resolution involves replacing this
-     * index value with the constant pool entry at that index.
-     * 
-     * @return true if this entry has been resolved.
-     */
-    public boolean isResolved() {
-        return resolved;
-    } 
-
-    /**
-     * Resolve this constant pool entry with respect to its dependents in
-     * the constant pool.
-     * 
-     * @param constantPool the constant pool of which this entry is a member
-     * and against which this entry is to be resolved.
-     */
-    public void resolve(ConstantPool constantPool) {
-        resolved = true;
-    } 
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public abstract void read(DataInputStream cpStream) throws IOException;
-
-    /**
-     * Get the Entry's type tag.
-     * 
-     * @return The Tag value of this entry
-     */
-    public int getTag() {
-        return tag;
-    } 
-
-    /**
-     * Get the number of Constant Pool Entry slots within the constant pool occupied by this entry.
-     * 
-     * @return the number of slots used.
-     * 
-     */
-    public final int getNumEntries() {
-        return numEntries;
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/DoubleCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/DoubleCPInfo.java
deleted file mode 100644
index 49cf516..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/DoubleCPInfo.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.IOException;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-
-/**
- * The constant pool entry subclass used to represent double constant values.
- * 
- * @author Conor MacNeill
- */
-public class DoubleCPInfo extends ConstantCPInfo {
-    public DoubleCPInfo() {
-        super(CONSTANT_Double, 2);
-    }
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        setValue(new Double(cpStream.readDouble()));
-    } 
-
-    /**
-     * Print a readable version of the constant pool entry.
-     * 
-     * @return the string representation of this constant pool entry.
-     */
-    public String toString() {
-        return "Double Constant Pool Entry: " + getValue();
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/FieldRefCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/FieldRefCPInfo.java
deleted file mode 100644
index 2891407..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/FieldRefCPInfo.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * A FieldRef CP Info
- * 
- * @author Conor MacNeill
- */
-public class FieldRefCPInfo extends ConstantPoolEntry {
-    private String fieldClassName;
-    private String fieldName;
-    private String fieldType;
-    private int    classIndex;
-    private int    nameAndTypeIndex;
-
-    /**
-     * Constructor.
-     * 
-     */
-    public FieldRefCPInfo() {
-        super(CONSTANT_FieldRef, 1);
-    }
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        classIndex = cpStream.readUnsignedShort();
-        nameAndTypeIndex = cpStream.readUnsignedShort();
-    } 
-
-    /**
-     * Resolve this constant pool entry with respect to its dependents in
-     * the constant pool.
-     * 
-     * @param constantPool the constant pool of which this entry is a member
-     * and against which this entry is to be resolved.
-     */
-    public void resolve(ConstantPool constantPool) {
-        ClassCPInfo fieldClass = (ClassCPInfo) constantPool.getEntry(classIndex);
-
-        fieldClass.resolve(constantPool);
-
-        fieldClassName = fieldClass.getClassName();
-
-        NameAndTypeCPInfo nt = (NameAndTypeCPInfo) constantPool.getEntry(nameAndTypeIndex);
-
-        nt.resolve(constantPool);
-
-        fieldName = nt.getName();
-        fieldType = nt.getType();
-
-        super.resolve(constantPool);
-    } 
-
-    /**
-     * Print a readable version of the constant pool entry.
-     * 
-     * @return the string representation of this constant pool entry.
-     */
-    public String toString() {
-        String value;
-
-        if (isResolved()) {
-            value = "Field : Class = " + fieldClassName + ", name = " + fieldName + ", type = " + fieldType;
-        } else {
-            value = "Field : Class index = " + classIndex + ", name and type index = " + nameAndTypeIndex;
-        } 
-
-        return value;
-    } 
-
-    public String getFieldClassName() {
-        return fieldClassName;
-    } 
-
-    public String getFieldName() {
-        return fieldName;
-    } 
-
-    public String getFieldType() {
-        return fieldType;
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/FloatCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/FloatCPInfo.java
deleted file mode 100644
index f9aee58..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/FloatCPInfo.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-
-/**
- * A Float CP Info
- * 
- * @author Conor MacNeill
- */
-public class FloatCPInfo extends ConstantCPInfo {
-
-    /**
-     * Constructor.
-     * 
-     */
-    public FloatCPInfo() {
-        super(CONSTANT_Float, 1);
-    }
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        setValue(new Float(cpStream.readFloat()));
-    } 
-
-    /**
-     * Print a readable version of the constant pool entry.
-     * 
-     * @return the string representation of this constant pool entry.
-     */
-    public String toString() {
-        return "Float Constant Pool Entry: " + getValue();
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/IntegerCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/IntegerCPInfo.java
deleted file mode 100644
index 6bb1e49..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/IntegerCPInfo.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-
-/**
- * An Integer CP Info
- * 
- * @author Conor MacNeill
- */
-public class IntegerCPInfo extends ConstantCPInfo {
-
-    /**
-     * Constructor.
-     * 
-     */
-    public IntegerCPInfo() {
-        super(CONSTANT_Integer, 1);
-    }
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        setValue(new Integer(cpStream.readInt()));
-    } 
-
-    /**
-     * Print a readable version of the constant pool entry.
-     * 
-     * @return the string representation of this constant pool entry.
-     */
-    public String toString() {
-        return "Integer Constant Pool Entry: " + getValue();
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/InterfaceMethodRefCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/InterfaceMethodRefCPInfo.java
deleted file mode 100644
index fed755c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/InterfaceMethodRefCPInfo.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * A InterfaceMethodRef CP Info
- * 
- * 
- * @author Conor MacNeill
- */
-public class InterfaceMethodRefCPInfo extends ConstantPoolEntry {
-    private String interfaceMethodClassName;
-    private String interfaceMethodName;
-    private String interfaceMethodType;
-    private int    classIndex;
-    private int    nameAndTypeIndex;
-
-    /**
-     * Constructor.
-     * 
-     */
-    public InterfaceMethodRefCPInfo() {
-        super(CONSTANT_InterfaceMethodRef, 1);
-    }
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        classIndex = cpStream.readUnsignedShort();
-        nameAndTypeIndex = cpStream.readUnsignedShort();
-    } 
-
-    /**
-     * Resolve this constant pool entry with respect to its dependents in
-     * the constant pool.
-     * 
-     * @param constantPool the constant pool of which this entry is a member
-     * and against which this entry is to be resolved.
-     */
-    public void resolve(ConstantPool constantPool) {
-        ClassCPInfo interfaceMethodClass = (ClassCPInfo) constantPool.getEntry(classIndex);
-
-        interfaceMethodClass.resolve(constantPool);
-
-        interfaceMethodClassName = interfaceMethodClass.getClassName();
-
-        NameAndTypeCPInfo nt = (NameAndTypeCPInfo) constantPool.getEntry(nameAndTypeIndex);
-
-        nt.resolve(constantPool);
-
-        interfaceMethodName = nt.getName();
-        interfaceMethodType = nt.getType();
-
-        super.resolve(constantPool);
-    } 
-
-    /**
-     * Print a readable version of the constant pool entry.
-     * 
-     * @return the string representation of this constant pool entry.
-     */
-    public String toString() {
-        String value;
-
-        if (isResolved()) {
-            value = "InterfaceMethod : Class = " + interfaceMethodClassName + ", name = " + interfaceMethodName + ", type = " 
-                    + interfaceMethodType;
-        } else {
-            value = "InterfaceMethod : Class index = " + classIndex + ", name and type index = " + nameAndTypeIndex;
-        } 
-
-        return value;
-    } 
-
-    public String getInterfaceMethodClassName() {
-        return interfaceMethodClassName;
-    } 
-
-    public String getInterfaceMethodName() {
-        return interfaceMethodName;
-    } 
-
-    public String getInterfaceMethodType() {
-        return interfaceMethodType;
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/LongCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/LongCPInfo.java
deleted file mode 100644
index 2e5aeab..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/LongCPInfo.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-
-/**
- * A Long CP Info
- * 
- * @author Conor MacNeill
- */
-public class LongCPInfo extends ConstantCPInfo {
-
-    /**
-     * Constructor.
-     * 
-     */
-    public LongCPInfo() {
-        super(CONSTANT_Long, 2);
-    }
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        setValue(new Long(cpStream.readLong()));
-    } 
-
-    /**
-     * Print a readable version of the constant pool entry.
-     * 
-     * @return the string representation of this constant pool entry.
-     */
-    public String toString() {
-        return "Long Constant Pool Entry: " + getValue();
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/MethodRefCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/MethodRefCPInfo.java
deleted file mode 100644
index f38e381..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/MethodRefCPInfo.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * A MethodRef CP Info
- * 
- * @author Conor MacNeill
- */
-public class MethodRefCPInfo extends ConstantPoolEntry {
-    private String methodClassName;
-    private String methodName;
-    private String methodType;
-    private int    classIndex;
-    private int    nameAndTypeIndex;
-
-    /**
-     * Constructor.
-     * 
-     */
-    public MethodRefCPInfo() {
-        super(CONSTANT_MethodRef, 1);
-    }
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        classIndex = cpStream.readUnsignedShort();
-        nameAndTypeIndex = cpStream.readUnsignedShort();
-    } 
-
-    /**
-     * Print a readable version of the constant pool entry.
-     * 
-     * @return the string representation of this constant pool entry.
-     */
-    public String toString() {
-        String value;
-
-        if (isResolved()) {
-            value = "Method : Class = " + methodClassName + ", name = " + methodName + ", type = " + methodType;
-        } else {
-            value = "Method : Class index = " + classIndex + ", name and type index = " + nameAndTypeIndex;
-        } 
-
-        return value;
-    } 
-
-    /**
-     * Resolve this constant pool entry with respect to its dependents in
-     * the constant pool.
-     * 
-     * @param constantPool the constant pool of which this entry is a member
-     * and against which this entry is to be resolved.
-     */
-    public void resolve(ConstantPool constantPool) {
-        ClassCPInfo methodClass = (ClassCPInfo) constantPool.getEntry(classIndex);
-
-        methodClass.resolve(constantPool);
-
-        methodClassName = methodClass.getClassName();
-
-        NameAndTypeCPInfo nt = (NameAndTypeCPInfo) constantPool.getEntry(nameAndTypeIndex);
-
-        nt.resolve(constantPool);
-
-        methodName = nt.getName();
-        methodType = nt.getType();
-
-        super.resolve(constantPool);
-    } 
-
-    public String getMethodClassName() {
-        return methodClassName;
-    } 
-
-    public String getMethodName() {
-        return methodName;
-    } 
-
-    public String getMethodType() {
-        return methodType;
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/NameAndTypeCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/NameAndTypeCPInfo.java
deleted file mode 100644
index 328b8c6..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/NameAndTypeCPInfo.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * A NameAndType CP Info
- * 
- * @author Conor MacNeill
- */
-public class NameAndTypeCPInfo extends ConstantPoolEntry {
-
-    /**
-     * Constructor.
-     * 
-     */
-    public NameAndTypeCPInfo() {
-        super(CONSTANT_NameAndType, 1);
-    }
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        nameIndex = cpStream.readUnsignedShort();
-        descriptorIndex = cpStream.readUnsignedShort();
-    } 
-
-    /**
-     * Print a readable version of the constant pool entry.
-     * 
-     * @return the string representation of this constant pool entry.
-     */
-    public String toString() {
-        String value;
-
-        if (isResolved()) {
-            value = "Name = " + name + ", type = " + type;
-        } else {
-            value = "Name index = " + nameIndex + ", descriptor index = " + descriptorIndex;
-        } 
-
-        return value;
-    } 
-
-    /**
-     * Resolve this constant pool entry with respect to its dependents in
-     * the constant pool.
-     * 
-     * @param constantPool the constant pool of which this entry is a member
-     * and against which this entry is to be resolved.
-     */
-    public void resolve(ConstantPool constantPool) {
-        name = ((Utf8CPInfo) constantPool.getEntry(nameIndex)).getValue();
-        type = ((Utf8CPInfo) constantPool.getEntry(descriptorIndex)).getValue();
-
-        super.resolve(constantPool);
-    } 
-
-    public String getName() {
-        return name;
-    } 
-
-    public String getType() {
-        return type;
-    } 
-
-    private String name;
-    private String type;
-    private int    nameIndex;
-    private int    descriptorIndex;
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/StringCPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/StringCPInfo.java
deleted file mode 100644
index e9b01cb..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/StringCPInfo.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * A String Constant Pool Entry.
- * 
- * The String info contains an index into the constant pool where
- * a UTF8 string is stored.
- * 
- * @author Conor MacNeill
- */
-public class StringCPInfo extends ConstantCPInfo {
-
-    /**
-     * Constructor.
-     * 
-     */
-    public StringCPInfo() {
-        super(CONSTANT_String, 1);
-    }
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        index = cpStream.readUnsignedShort();
-
-        setValue("unresolved");
-    } 
-
-    /**
-     * Print a readable version of the constant pool entry.
-     * 
-     * @return the string representation of this constant pool entry.
-     */
-    public String toString() {
-        return "String Constant Pool Entry for " + getValue() + "[" + index + "]";
-    } 
-
-    /**
-     * Resolve this constant pool entry with respect to its dependents in
-     * the constant pool.
-     * 
-     * @param constantPool the constant pool of which this entry is a member
-     * and against which this entry is to be resolved.
-     */
-    public void resolve(ConstantPool constantPool) {
-        setValue(((Utf8CPInfo) constantPool.getEntry(index)).getValue());
-        super.resolve(constantPool);
-    } 
-
-    private int index;
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/Utf8CPInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/Utf8CPInfo.java
deleted file mode 100644
index e424c44..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/constantpool/Utf8CPInfo.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * A UTF8 Constant Pool Entry.
- * 
- * @author Conor MacNeill
- */
-public class Utf8CPInfo extends ConstantPoolEntry {
-    private String value;
-
-    /**
-     * Constructor.
-     * 
-     */
-    public Utf8CPInfo() {
-        super(CONSTANT_Utf8, 1);
-    }
-
-    /**
-     * read a constant pool entry from a class stream.
-     * 
-     * @param cpStream the DataInputStream which contains the constant pool entry to be read.
-     * 
-     * @throws IOException if there is a problem reading the entry from the stream.
-     */
-    public void read(DataInputStream cpStream) throws IOException {
-        value = cpStream.readUTF();
-    } 
-
-    /**
-     * Print a readable version of the constant pool entry.
-     * 
-     * @return the string representation of this constant pool entry.
-     */
-    public String toString() {
-        return "UTF8 Value = " + value;
-    } 
-
-    public String getValue() {
-        return value;
-    } 
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
deleted file mode 100644
index d0cc826..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
+++ /dev/null
@@ -1,781 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-/* build notes
-
-    -The reference CD to listen to while editing this file is 
-        nap: Underworld  - Everything, Everything
-    -variable naming policy from Fowler's refactoring book.
-    -tested against the PDC pre-beta of csc.exe; future versions will 
-     inevitably change things
-*/
-
-// ====================================================================
-// place in the optional ant tasks package
-// but in its own dotnet group
-// ====================================================================
-
-package org.apache.tools.ant.taskdefs.optional.dotnet;
-
-// ====================================================================
-// imports
-// ====================================================================
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-import java.io.*;
-
-
-// ====================================================================
-/**
-This task compiles CSharp source into executables or modules.
-The task will only work on win2K until other platforms support csc.exe or 
-an equivalent. CSC.exe must be on the execute path too.
-
-<p>
-All parameters are optional: &lt;csc/&gt; should suffice to produce a debug
-build of all *.cs files. References to external files do require explicit 
-enumeration, so are one of the first attributes to consider adding. 
-
-<p>
-
-The task is a directory based task, so attributes like <b>includes="*.cs"</b> and 
-<b>excludes="broken.cs"</b> can be used to control the files pulled in. By default, 
-all *.cs files from the project folder down are included in the command. 
-When this happens the output file -if not specified-
-is taken as the first file in the list, which may be somewhat hard to control.
-Specifying the output file with <b>'outfile'</b> seems prudent. 
-
-<p>
-
-
-<p>
-TODO
-<ol>
-    <li>is incremental build still broken in beta-1?
-    <li>is Win32Icon broken?
-    <li>all the missing options
-</ol>
-<p>
-History
-    <Table>
-    <tr><td>0.3</td>
-        <td> Beta 1 edition </td>
-        <td> To avoid having to remember which assemblies to include, 
-        the task automatically refers to the main dotnet libraries in Beta1.
-        
-    </tr>    <tr><td>0.2</td>
-        <td> Slightly different</td>
-        <td> Split command execution to a separate class; 
-    </tr>
-    <tr><td>0.1</td>
-        <td> "I can't believe it's so rudimentary"</td>
-        <td>  First pass; minimal builds only support; 
-    </tr>
-
-    </table>
-@version 0.3
-@author Steve Loughran steve_l@iseran.com
-
- */
-
-public class CSharp 
-    extends org.apache.tools.ant.taskdefs.MatchingTask {
-
-    /** constructor inits everything and set up the search pattern
-    */
-    
-    public CSharp () {
-        Clear();
-        setIncludes(csc_file_pattern);
-    }
-    
-    /** name of the executable. the .exe suffix is deliberately not included 
-     * in anticipation of the unix version
-     */
-    protected static final String csc_exe_name="csc";
-    
-    /** what is the file extension we search on?
-     */
-    protected static final String csc_file_ext="cs";
-    
-    /** derive the search pattern from the extension 
-     */
-    protected static final String csc_file_pattern="**/*."+csc_file_ext;
-    
-    /** list of reference classes. (pretty much a classpath equivalent)
-     */
-    protected  String _references;
-    
-    /**
-     *  Set the reference list to be used for this compilation. 
-     *
-     * @param  s  The new References value 
-     */
-    public void setReferences(String s) {
-        _references=s;
-    }
-    
-    /**
-     *  get the reference string or null for no argument needed 
-     *
-     * @return    The References Parameter to CSC 
-     */
-    protected String getReferencesParameter() {
-        //bail on no references
-        if (notEmpty(_references)) 
-            return "/reference:"+_references;
-        else
-            return null;
-    }
-                
-    /**
-     using the path approach didnt work as it could not handle the implicit
-     execution path. Perhaps that could be extracted from the runtime and then
-     the path approach would be viable
-    */
-    protected  Path _referenceFiles;
-    
-    /**
-     * add another path to the reference file path list
-     * @param path another path to append
-     */
-    public void setReferenceFiles(Path path) {
-        //demand create pathlist
-        if(_referenceFiles==null)
-                _referenceFiles=new Path(this.project);
-        _referenceFiles.append(path);
-    }
-    
-    /**
-     turn the path list into a list of files and a /references argument
-     @return null or a string of references.
-    */ 
-    protected String getReferenceFilesParameter() {
-        //bail on no references
-        if (_references==null)
-            return null;
-        //iterate through the ref list & generate an entry for each
-        //or just rely on the fact that the toString operator does this, but
-        //noting that the separator is ';' on windows, ':' on unix
-        String refpath=_references.toString();
-    
-        //bail on no references listed
-        if (refpath.length()==0)
-            return null;
-        
-        StringBuffer s=new StringBuffer("/reference:");
-        s.append(refpath);
-        return new String(s);
-    }   
-    
-    /** 
-     * C# is really dumb in how it handles inclusion. You have to list
-     * every 'assembly' -read DLL that is imported. So already you are
-     * making a platform assumption -shared libraries have a .dll extension
-     * and the poor developer has to know every library which is included
-     * why the compiler cant find classes on the path or in a directory,
-     * is a mystery.
-     *
-     * To reduce the need to be explicit, here is a long list of 
-     * the core libraries used in Beta-1 of .NET
-     * ommitting the blatantly non portable (MS.win32.interop)
-     * and the .designer libraries. (ripping out Com was tempting)
-     * Casing is chosen to match that of the file system <i>exactly</i>
-     * so may work on a unix box too. 
-     */
-    protected static final String DEFAULT_REFERENCE_LIST
-        ="System.dll;System.Drawing.dll;System.Data.dll;"+
-         "System.Diagnostics.dll;"+
-         "System.DirectoryServices.dll;"+
-         "System.IO.dll;"+
-         "System.Management.dll;"+
-         "System.Messaging.dll;"+
-         "System.Net.dll;"+
-         "System.Runtime.Remoting.dll;"+
-         "System.Runtime.Serialization.Formatters.Soap.dll;"+
-         "System.Security.dll;"+
-         "System.ServiceProcess.dll;"+
-         "System.Text.RegularExpressions.dll;"+
-         "System.Timers.dll;"+
-         "System.Web.dll;"+
-         "System.Web.Services.dll;"+
-         "System.WinForms.dll;"+
-         "System.XML.dll;"+
-         "System.XML.Serialization.dll;"+
-         "Microsoft.ComServices.dll;";
-    
-    /** 
-     * get default reference list
-     * @return null or a string of references.
-    */ 
-    protected String getDefaultReferenceParameter() {
-        if(_includeDefaultReferences) {
-            StringBuffer s=new StringBuffer("/reference:");
-            s.append(DEFAULT_REFERENCE_LIST);
-            return new String(s);
-        }
-        else
-            return null;            
-    }
-     
-     /** flag to enable automatic reference inclusion
-      *
-     */
-     protected boolean _includeDefaultReferences;
-
-    /** set the automatic reference inclusion flag on or off
-     *  this flag controls the string of references and the 
-     *  /nostdlib option in CSC
-    @param f on/off flag
-    */
-    public void setIncludeDefaultReferences(boolean f) {
-        _includeDefaultReferences=f;
-    }
-    
-    /** query the optimise flag
-    @return true if optimise is turned on
-     */
-    public boolean getIncludeDefaultReferences() {
-        return _includeDefaultReferences;
-    }
-    
-    /**
-     *  get the include default references flag or null for no argument needed 
-     *
-     * @return    The Parameter to CSC 
-     */
-    protected String getIncludeDefaultReferencesParameter() {
-        return "/nostdlib"+(_includeDefaultReferences?"-":"+");
-    }    
-    
-    /** optimise flag
-     */
-    protected boolean _optimize;
-    
-    /** set the optimise flag on or off
-    @param f on/off flag
-    */
-    public void setOptimize(boolean f) {
-        _optimize=f;
-    }
-    
-    /** query the optimise flag
-    @return true if optimise is turned on
-     */
-    public boolean getOptimize() {
-        return _optimize;
-    }
-    
-    /**
-     *  get the optimise flag or null for no argument needed 
-     *
-     * @return    The Optimize Parameter to CSC 
-     */
-    protected String getOptimizeParameter() {
-        return "/optimize"+(_optimize?"+":"-");
-    }   
-        
-    /** incremental build flag */
-    protected boolean _incremental;
-    
-    /** set the incremental compilation flag on or off
-     * @param f on/off flag
-     */
-    public void setIncremental(boolean f){
-        _incremental=f;
-    }
-    
-    /** query the incrementalflag
-     * @return true iff incremental compilation is turned on
-     */
-    public boolean getIncremental() {
-        return _incremental;
-    }
-    
-    /**
-     *  get the incremental build argument
-     *
-     * @return    The Incremental Parameter to CSC 
-     */
-    protected String getIncrementalParameter() {
-        return "/incremental"+(_incremental?"+":"-");
-    }   
-    
-    /** debug flag. Controls generation of debug information. 
-     */
-    protected boolean _debug;
-    
-    /** set the debug flag on or off
-     * @param f on/off flag
-     */
-    public void setDebug(boolean f) {
-        _debug=f;
-    }
-        
-    /** query the debug flag
-     * @return true if debug is turned on
-     */
-    public boolean getDebug() {
-        return _debug;
-    }
-    
-    /**
-     *  get the debug switch argument  
-     *
-     * @return    The Debug Parameter to CSC 
-     */
-    protected String getDebugParameter() {
-        return "/debug"+(_debug?"+":"-");
-    }   
-    
-    /** output XML documentation flag
-    */  
-    protected File _docFile;
-        
-    /** file for generated XML documentation
-     * @param f output file
-     */
-    public void setDocFile(String f) {
-        _docFile=project.resolveFile(f);
-    }
-            
-    /** get the argument or null for no argument needed
-     * @return    The DocFile Parameter to CSC 
-     */
-    protected String getDocFileParameter() {
-        if (_docFile!=null)
-            return "/doc:"+_docFile.toString();
-        else
-            return null;
-    }   
-        
-    /** warning level: 0-4, with 4 being most verbose
-    */
-    private int _warnLevel;
-    
-    /** set warn level (no range checking)
-     * @param warnLevel warn level -see .net docs for valid range (probably 0-4)
-    */
-    public void setWarnLevel(int warnLevel)
-        {this._warnLevel=warnLevel;}
-    
-    /** query warn level
-     * @return current value
-    */
-    public int getWarnLevel()
-        {return _warnLevel;}
-    
-    /**
-     *  get the warn level switch 
-     *
-     * @return    The WarnLevel Parameter to CSC 
-     */
-    protected String getWarnLevelParameter() {
-        return "/warn:"+_warnLevel;
-    }   
-    
-    /** enable unsafe code flag. Clearly set to false by default
-     */
-    protected boolean _unsafe;
-    
-    /**
-     *  Sets the Unsafe attribute 
-     *
-     * @param  unsafe  The new Unsafe value 
-     */
-    public void setUnsafe(boolean unsafe)
-        {this._unsafe=unsafe;}
-    
-    /**
-     *  query the Unsafe attribute 
-     *
-     * @return    The Unsafe value 
-     */
-    public boolean getUnsafe()
-        {return this._unsafe;}
-    
-    /** get the argument or null for no argument needed
-     * @return    The Unsafe Parameter to CSC 
-    */
-    protected String getUnsafeParameter(){
-        return _unsafe?"/unsafe":null;
-    }   
-        
-    /** main class (or null for automatic choice)
-     */
-    protected String _mainClass;
-    
-    /**
-     *  Sets the MainClass attribute
-     *
-     * @param  mainClass  The new MainClass value 
-     */
-    public void setMainClass(String mainClass)
-        {this._mainClass=mainClass;}
-    
-    /**
-     *  Gets the MainClass attribute 
-     *
-     * @return    The MainClass value 
-     */
-    public String getMainClass()
-        {return this._mainClass;}
-    
-    /**
-     *  get the /main argument or null for no argument needed 
-     *
-     * @return    The MainClass Parameter to CSC 
-     */
-    protected String getMainClassParameter(){
-        if (_mainClass!=null && _mainClass.length()!=0)
-            return "/main:"+_mainClass;
-        else
-            return null;
-    } 
-    
-    /** any extra command options?
-     */
-    protected String _extraOptions;
-    
-    /**
-     *  Sets the ExtraOptions attribute
-     *
-     * @param  extraOptions  The new ExtraOptions value 
-     */
-    public void setExtraOptions(String extraOptions)
-        {this._extraOptions=extraOptions;}
-    
-    /**
-     *  Gets the ExtraOptions attribute 
-     *
-     * @return    The ExtraOptions value 
-     */
-    public String getExtraOptions()
-        {return this._extraOptions;}
-    
-    /**
-     *  get any extra options or null for no argument needed 
-     *
-     * @return    The ExtraOptions Parameter to CSC 
-     */
-    protected String getExtraOptionsParameter() {
-        if (_extraOptions!=null && _extraOptions.length()!=0)
-            return _extraOptions;
-        else
-            return null;
-    } 
-    
-    /** source directory upon which the search pattern is applied
-     */
-    private File _srcDir;
-    
-    /**
-     * Set the source dir to find the files to be compiled
-     * @param  srcDirName  The new SrcDir value 
-     */
-    public void setSrcDir(String srcDirName){
-        _srcDir = project.resolveFile(srcDirName);
-    }
-    
-    /** destination directory (null means use the source directory)
-    * NB: this is currently not used 
-    */
-    private File _destDir;
-    
-    /**
-     * Set the destination dir to find the files to be compiled
-     * @param  dirName  The new DestDir value 
-     */
-    public void setDestDir(String dirName) {
-        _destDir = project.resolveFile(dirName);
-    }
-    
-    /** type of target. Should be one of exe|library|module|winexe|(null)
-    default is exe; the actual value (if not null) is fed to the command line.
-    <br>See /target
-     */
-    protected String _targetType;
-    
-    /** define the target
-     * @param  targetType          The new TargetType value 
-     * @exception  BuildException  if target is not one of exe|library|module|winexe 
-     */
-    public void setTargetType(String targetType)
-        throws  BuildException {
-        targetType=targetType.toLowerCase();
-        if(targetType.equals("exe") || targetType.equals("library") ||
-            targetType.equals("module") ||targetType.equals("winexe") ) {
-            _targetType=targetType; 
-        }
-        else 
-            throw new BuildException("targetType " +targetType+" is not a valid type");
-    }
-    
-    /**
-     *  Gets the TargetType attribute  
-     *
-     * @return    The TargetType value 
-     */
-    public String getTargetType() { 
-            return _targetType;
-    }   
-    
-    /**
-     *  get the argument or null for no argument needed 
-     *
-     * @return    The TargetType Parameter to CSC 
-     */
-    protected String getTargetTypeParameter() {
-        if (notEmpty(_targetType)) 
-            return "/target:"+_targetType;
-        else
-            return null;
-    }   
-    
-    /** icon for incorporation into apps
-     */     
-    protected File _win32icon;  
-    
-    /**
-     * Set the win32 icon 
-     * @param fileName path to the file. Can be relative, absolute, whatever.
-     */
-    public void setWin32Icon(String fileName) {
-        _win32icon = project.resolveFile(fileName);
-    }
-    
-    /**
-     *  get the argument or null for no argument needed 
-     *
-     * @return    The Win32Icon Parameter to CSC 
-     */
-    protected String getWin32IconParameter() {
-        if (_win32icon!=null)
-            return "/win32icon:"+_win32icon.toString();
-        else
-            return null;
-    }
-    
-    /** defines list
-    * something like 'RELEASE;WIN32;NO_SANITY_CHECKS;;SOMETHING_ELSE'
-    */
-    String _definitions;
-    
-    /**
-     * Set the definitions
-     * @param list of definitions split by ; or , or even :
-     */
-    public void setDefinitions(String params) {
-        _definitions=params;
-    }
-      
-    /**
-    *  get the argument or null for no argument needed 
-    *
-    * @return    The Definitions Parameter to CSC 
-    */
-    protected String getDefinitionsParameter() {
-        if (notEmpty(_definitions))
-            return "/define:" + _definitions;
-        else
-            return null;
-    }
-    
-    /** list of extra modules to refer to 
-     *
-    */    
-    String _additionalModules;
-    
-    /**
-     * Set the definitions
-     * @param list of definitions split by ; or , or even :
-     */
-    public void setAdditionalModules(String params) {
-        _additionalModules=params;
-    }
-    
-    /** get the argument or null for no argument needed
-    * @return    The AdditionalModules Parameter to CSC 
-     */
-    protected String getAdditionalModulesParameter() {
-        if (notEmpty(_additionalModules)) 
-            return "/addmodule:" + _additionalModules;
-        else 
-            return null;
-    }
-    
-    /** output file. If not supplied this is derived from the
-     *  source file
-     */    
-    protected String _outputFile;
-    
-    /**
-     * Set the definitions
-     * @param list of definitions split by ; or , or even :
-     */
-    public void setOutputFile(String params) {
-        _outputFile=params;
-    }
-    
-    /** get the argument or null for no argument needed
-    * @return    The OutputFile Parameter to CSC 
-    */
-    protected String getOutputFileParameter() {
-        if (notEmpty(_outputFile)) {
-            File f=project.resolveFile(_outputFile);
-            return "/out:"+f.toString();
-        }
-        else            
-            return null;
-    }
-    
-    /** flag to control action on execution trouble
-    */
-    protected boolean _failOnError;
-    
-    /**set fail on error flag
-    * @param  b  The new FailOnError value 
-    */
-    public void setFailOnError(boolean b){
-        _failOnError=b;
-    }
-    
-    /** query fail on error flag
-     * @return    The FailFailOnError value 
-    */
-    public boolean getFailFailOnError() {
-            return _failOnError;
-    }
-    
-    /** reset all contents. 
-    */
-    public void Clear() {
-        _targetType=null;
-        _win32icon=null;
-        _srcDir=null;
-        _destDir=null;
-        _mainClass=null;
-        _unsafe=false;
-        _warnLevel=3;
-        _docFile = null;
-        _incremental=false;
-        _optimize=false;
-        _debug=true;
-        _references=null;
-        _failOnError=true;
-        _definitions=null;
-        _additionalModules=null;
-        _includeDefaultReferences=true;
-        _extraOptions=null;
-    }
-    
-    /**
-     *  test for a string containing something useful 
-     *
-     * @param  s  string in 
-     * @return    true if the argument is not null or empty 
-     */
-    protected boolean notEmpty(String s) {
-        return s != null && s.length() != 0;
-    }
-    
-    /** do the work by building the command line and then calling it
-    */
-    public void execute() 
-        throws BuildException {
-        if (_srcDir == null)
-            _srcDir=project.resolveFile(".");
-    
-        NetCommand command=new NetCommand(this,"CSC",csc_exe_name);
-        command.setFailOnError(getFailFailOnError());
-        //DEBUG helper
-        command.setTraceCommandLine(true);
-        //fill in args
-        command.addArgument("/nologo");
-        command.addArgument(getAdditionalModulesParameter());
-        command.addArgument(getDefinitionsParameter());
-        command.addArgument(getDebugParameter());
-        command.addArgument(getDocFileParameter());
-        command.addArgument(getIncrementalParameter());
-        command.addArgument(getMainClassParameter());
-        command.addArgument(getOptimizeParameter());
-        command.addArgument(getReferencesParameter());
-        command.addArgument(getTargetTypeParameter());
-        command.addArgument(getUnsafeParameter());
-        command.addArgument(getWarnLevelParameter());
-        command.addArgument(getWin32IconParameter());
-        command.addArgument(getOutputFileParameter());   
-        command.addArgument(getIncludeDefaultReferencesParameter());
-        command.addArgument(getDefaultReferenceParameter());
-        command.addArgument(getExtraOptionsParameter());
-    
-        //get dependencies list. 
-        DirectoryScanner scanner = super.getDirectoryScanner(_srcDir);
-        String[] dependencies = scanner.getIncludedFiles();
-        log("compiling "+dependencies.length+" file"+((dependencies.length==1)?"":"s"));
-        String baseDir=scanner.getBasedir().toString();
-        //add to the command
-        for (int i = 0; i < dependencies.length; i++) {
-            String targetFile=dependencies[i];
-            targetFile=baseDir+File.separator+targetFile;
-            command.addArgument(targetFile);
-        }
-        
-        //now run the command of exe + settings + files
-        command.runCommand();
-    } // end execute
-    
-} //end class
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java
deleted file mode 100644
index e8b0a86..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-/* build notes
-
-   -The reference CD to listen to while editing this file is 
-       nap: Underworld  - Everything, Everything
-   -variable naming policy from Fowler's refactoring book.
-   -tested against the PDC pre-beta of csc.exe; future versions will 
-    inevitably change things
-*/
-
-// ====================================================================
-// place in the optional ant tasks package
-// but in its own dotnet group
-// ====================================================================
-
-package org.apache.tools.ant.taskdefs.optional.dotnet;
-
-// ====================================================================
-// imports
-// ====================================================================
-
-import java.io.*;
-import java.text.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-
-/**
-Task to assemble .net 'Intermediate Language' files.
-The task will only work on win2K until other platforms support csc.exe or 
-an equivalent. ilasm.exe must be on the execute path too.
-<p>
-
-<p>
-All parameters are optional: &lt;il/&gt; should suffice to produce a debug
-build of all *.il files.
-The option set is roughly compatible with the CSharp class;
-even though the command line options are only vaguely
-equivalent. [The low level commands take things like /OUT=file,
-csc wants /out:file ... /verbose is used some places; /quiet here in
-ildasm... etc.] It would be nice if someone made all the command line
-tools consistent (and not as brittle as the java cmdline tools) 
-
-
-<p>
-
-The task is a directory based task, so attributes like <b>includes="*.il"</b> and 
-<b>excludes="broken.il"</b> can be used to control the files pulled in. 
-Each file is built on its own, producing an appropriately named output file unless
-manually specified with <b>outfile</b>
-
-
-@author Steve Loughran steve_l@iseran.com
-@version 0.2
- */
-
-
-public class Ilasm
-    extends org.apache.tools.ant.taskdefs.MatchingTask {
-
-    /** constructor inits everything and set up the search pattern
-    */
-    public Ilasm () {
-        Clear();
-        setIncludes(file_pattern);
-    }
-
-    /** name of the executable. the .exe suffix is deliberately not included 
-     * in anticipation of the unix version
-     */
-    protected static final String exe_name="ilasm";
-    
-    /** what is the file extension we search on?
-     */
-    protected static final String file_ext="il";
-    
-    /** and now derive the search pattern from the extension 
-     */
-    protected static final String file_pattern="**/*."+file_ext;
-    
-    /** title of task for external presentation
-     */
-    protected static final String exe_title="ilasm";
-    
-    /** reset all contents. 
-    */
-    public void Clear() {
-        _targetType=null;
-        _srcDir=null;
-        _listing = false;
-        _verbose=false;
-        _debug=true;
-        _owner=null;
-        _outputFile=null;
-        _failOnError=true;
-        _resourceFile=null;
-        _owner=null;
-        _extraOptions=null;     
-    }
-
-    /** source directory upon which the search pattern is applied
-     */
-    private File _srcDir;
-    
-    /**
-     * Set the source dir to find the files to be compiled
-     * @param  srcDirName  The new SrcDir value 
-     */
-    public void setSrcDir(String srcDirName){
-        _srcDir = project.resolveFile(srcDirName);
-    }
-    
-
-    /** type of target. Should be one of exe|library|module|winexe|(null)
-    default is exe; the actual value (if not null) is fed to the command line.
-    <br>See /target
-     */
-    protected String _targetType;
-    
-    /** define the target
-     * @param  targetType          one of exe|library|
-     * @exception BuildException if target is not one of exe|library|module|winexe 
-     */
-    
-    public void setTargetType(String targetType)
-        throws  BuildException {
-        targetType=targetType.toLowerCase();
-        if(targetType.equals("exe") || targetType.equals("library")) {
-            _targetType=targetType; 
-        }
-        else 
-            throw new BuildException("targetType " +targetType+" is not a valid type");
-    }
-
-    /**
-     * accessor method for target type
-     * @return the current target option
-     */
-    public String getTargetType() { 
-        return _targetType;
-    }   
-    
-    /** g
-     *  get the target type or null for no argument needed 
-     *
-     * @return    The TargetTypeParameter value 
-    */
-
-    protected String getTargetTypeParameter() {
-        if(!notEmpty(_targetType))
-            return null;
-        if (_targetType.equals("exe"))
-            return "/exe";
-        else 
-        if (_targetType.equals("library"))
-            return "/dll";
-        else
-            return null;
-    }   
-        
-    /** owner string is a slightly trivial barrier to disassembly
-    */
-    
-    protected String _owner;
-    
-    /**
-     *  Sets the Owner attribute 
-     *
-     * @param  s  The new Owner value 
-     */
-    
-    public void setOwner(String s) {
-        _owner=s;
-        }
-    
-    /**
-     *  Gets the Owner switch for ilasm
-     *
-     * @return    The Owner string
-     */    
-    protected String getOwnerParameter() {
-        if(notEmpty(_owner))
-            return "/owner="+_owner;
-        else 
-            return null;
-    }
-        
-    /** test for a string containing something useful
-     * @param string to test
-     * @returns true if the argument is not null or empty
-    */
-    protected boolean notEmpty(String s)
-        {return s!=null && s.length()!=0;}
-    
-    /** verbose flag
-     */
-    protected boolean _verbose;
-
-    /** 
-     * enable/disable verbose ILASM output
-     * @param b flag set to true for verbose on
-     */
-    public void setVerbose(boolean b) {
-        _verbose=b;
-    }
-    
-    /** 
-     * turn the verbose flag into a parameter for ILASM
-     * @return null or the appropriate command line string
-     */
-    protected String getVerboseParameter() {
-        return _verbose?null:"/quiet";
-    }   
-    
-        
-    /** listing flag
-     */
-         
-    protected boolean _listing;
-
-    /** 
-     * enable/disable listing
-     * @param b flag set to true for listing on
-     */
-    public void setListing(boolean b) {
-        _listing=b;
-    }
-    
-    /** 
-     * turn the listing flag into a parameter for ILASM
-     * @return the appropriate string from the state of the listing flag
-     */
-    protected String getListingParameter() {
-        return _listing?"/listing":"/nolisting";
-    }
-       
-    
-    /**
-     * output file. If not supplied this is derived from the
-     *  source file
-     */
-     
-    protected String _outputFile;
-    
-    /**
-     * Set the definitions
-     * @param list of definitions split by ; or , or even :
-     */
-    public void setOutputFile(String params) {
-        _outputFile=params;
-    }
-    
-    /**
-     * get the output file 
-     * @return the argument string or null for no argument
-    */
-    protected String getOutputFileParameter() {
-        if (_outputFile==null || _outputFile.length()==0)
-            return null;
-        File f=project.resolveFile(_outputFile);
-        return "/output="+f.toString();
-    }
-    
-    /** resource file (.res format) to include in the app. 
-     */
-    protected File _resourceFile;
-    
-    /**
-     * Set the resource file 
-     * @param fileName path to the file. Can be relative, absolute, whatever.
-     */public void setResourceFile(String fileName) {
-        _resourceFile = project.resolveFile(fileName);
-    }
-        
-    protected String getResourceFileParameter() {
-        if(_resourceFile!=null) {
-            return "/resource="+_resourceFile.toString();
-        }
-        else {
-            return null;
-        }
-    }
-    
-    /** flag to control action on execution trouble
-    */
-    protected boolean _failOnError;
-    
-    /**set fail on error flag
-    */
-    public void setFailOnError(boolean b){
-        _failOnError=b;
-    }
-    
-    /** query fail on error flag
-    */
-    public boolean getFailFailOnError() {
-        return _failOnError;
-    }
-        
-    /** debug flag. Controls generation of debug information. 
-     */
-    protected boolean _debug;
-    
-    /** set the debug flag on or off
-     * @param f on/off flag
-     */
-    public void setDebug(boolean f)
-        {_debug=f;}
-        
-    /** query the debug flag
-     * @return true if debug is turned on
-     */
-    public boolean getDebug() {
-        return _debug;
-    }
-    
-    /** get the argument or null for no argument needed
-    */
-    protected String getDebugParameter() {
-        return _debug?"/debug":null;
-    }   
-
-    /** any extra command options?
-     */
-    protected String _extraOptions;
-    
-    /**
-     *  Sets the ExtraOptions attribute
-     *
-     * @param  extraOptions  The new ExtraOptions value 
-     */
-    public void setExtraOptions(String extraOptions)
-        {this._extraOptions=extraOptions;}
-    
-    /**
-     *  Gets the ExtraOptions attribute 
-     *
-     * @return    The ExtraOptions value 
-     */
-    public String getExtraOptions()
-        {return this._extraOptions;}
-    
-    /**
-     *  get any extra options or null for no argument needed 
-     *
-     * @return    The ExtraOptions Parameter to CSC 
-     */
-    protected String getExtraOptionsParameter() {
-        if (_extraOptions!=null && _extraOptions.length()!=0)
-            return _extraOptions;
-        else
-            return null;
-    } 
-
-        
-    /** This is the execution entry point. Build a list of files and
-     *  call ilasm on each of them.
-     * @throws BuildException if the assembly failed and FailOnError is true
-     */
-    public void execute() 
-        throws BuildException {
-        if (_srcDir == null)
-                _srcDir=project.resolveFile(".");
-    
-        //get dependencies list. 
-        DirectoryScanner scanner = super.getDirectoryScanner(_srcDir);
-        String[] dependencies = scanner.getIncludedFiles();
-        log("assembling "+dependencies.length+" file"+((dependencies.length==1)?"":"s"));
-        String baseDir=scanner.getBasedir().toString();
-        //add to the command
-        for (int i = 0; i < dependencies.length; i++) {
-            String targetFile=dependencies[i];
-            targetFile=baseDir+File.separator+targetFile;
-            executeOneFile(targetFile);
-        }
-        
-    } // end execute
-    
-        
-    /**
-     * do the work for one file by building the command line then calling it
-     * @param targetFile name of the the file to assemble
-     * @throws BuildException if the assembly failed and FailOnError is true
-     */
-    public void executeOneFile(String targetFile) 
-        throws BuildException {
-        NetCommand command=new NetCommand(this,exe_title,exe_name);
-        command.setFailOnError(getFailFailOnError());
-        //DEBUG helper
-        command.setTraceCommandLine(true);
-        //fill in args
-        command.addArgument(getDebugParameter());
-        command.addArgument(getTargetTypeParameter());
-        command.addArgument(getListingParameter());
-        command.addArgument(getOutputFileParameter());   
-        command.addArgument(getOwnerParameter());
-        command.addArgument(getResourceFileParameter());
-        command.addArgument(getVerboseParameter());
-        command.addArgument(getExtraOptionsParameter());
- 
-
-        /* space for more argumentativeness
-           command.addArgument();
-           command.addArgument();
-        */
-    
-        command.addArgument(targetFile);
-        //now run the command of exe + settings + file
-        command.runCommand();
-    } // end executeOneFile
-} //class
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java
deleted file mode 100644
index bef6d7c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/NetCommand.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-/* build notes
-
-The reference CD to listen to while editing this file is
-Underworld Everything, Everything
-variable naming policy from Fowler's refactoring book.
- */
-
-// place below the optional ant tasks package
-
-package org.apache.tools.ant.taskdefs.optional.dotnet;
-
-// imports
-
-import java.io.*;
-import java.text.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-
-
-/**
-This is a helper class to spawn net commands out. 
-In its initial form it contains no .net specifics, just contains
-all the command line/exe construction stuff. However, it may be handy in future
-to have a means of setting the path to point to the dotnet bin directory; in which
-case the shared code should go in here.
-@author Steve Loughran steve_l@iseran.com
-@created 2000-11-01
-@version 0.3
- */
-
-public class NetCommand {
-    
-    /** constructor
-    @param owning task
-    @param title (for logging/errors)
-    @param executable. Leave off the '.exe. for future portability
-    */
-    
-    public NetCommand(Task owner, String title, String program) {
-        _owner=owner;
-        _title=title;
-        _program=program;
-        _commandLine=new Commandline();
-        _commandLine.setExecutable(_program);
-        prepareExecutor();
-        }
-    
-    /** owner project
-     */
-    protected Task _owner;
-    
-    /** executabe
-     */
-    protected Execute _exe;
-    
-    /** what is the command line
-     */
-    protected Commandline _commandLine;
-    
-    /** title of the command
-     */
-    protected String _title;
-    
-    /** actual program to invoke
-     */
-    protected String _program;
-    
-    /** trace flag
-     */
-    protected boolean _traceCommandLine=false;
-    
-    /**
-     * turn tracing on or off
-     * @param b trace flag
-     */
-    public void setTraceCommandLine(boolean b){
-        _traceCommandLine=b;
-    }
-    
-    /** flag to control action on execution trouble
-    */
-    protected boolean _failOnError;
-    
-    /**
-     * set fail on error flag
-     * @param b fail flag -set to true to cause an exception to be raised if
-     * the return value != 0
-     */
-    public void setFailOnError(boolean b){
-        _failOnError=b;
-    }
-    
-    /** query fail on error flag
-    */
-    public boolean getFailFailOnError() {
-        return _failOnError;
-    }
-    
-    /** 
-     * verbose text log
-     * @param msg string to add to log iff verbose is defined for the build
-     */
-    protected void logVerbose(String msg){
-        _owner.getProject().log(msg,Project.MSG_VERBOSE);
-        }
-    
-    
-    /**
-     * error text log
-     * @param  msg  message to display as an error
-     */
-    protected void logError(String msg) {
-        _owner.getProject().log(msg,Project.MSG_ERR);
-    }
-    
-    /**
-     * add an argument to a command line; do nothing if the arg is null or empty string
-     * @param  argument  The feature to be added to the Argument attribute 
-     */
-    public void addArgument(String argument){
-        if(argument!=null && argument.length()!=0) {
-            _commandLine.createArgument().setValue(argument);
-        }
-    }
-    
-    /**
-     * set up the command sequence..
-     */
-    protected void prepareExecutor() {
-        // default directory to the project's base directory
-        File dir = _owner.getProject().getBaseDir();
-        ExecuteStreamHandler handler=new LogStreamHandler(_owner,
-                   Project.MSG_INFO, Project.MSG_WARN);
-        _exe = new Execute(handler, null);
-        _exe.setAntRun(_owner.getProject());
-        _exe.setWorkingDirectory(dir);
-    }
-    
-    /**
-     * Run the command using the given Execute instance.
-     * @throws an exception of something goes wrong and the failOnError flag is true
-     */
-    public void runCommand()
-        throws BuildException {
-        int err = -1; // assume the worst
-        try {
-            if(_traceCommandLine) {
-                _owner.log(_commandLine.toString());
-            }
-            else {
-                //in verbose mode we always log stuff
-                logVerbose(_commandLine.toString());
-            }
-            _exe.setCommandline(_commandLine.getCommandline());
-            err = _exe.execute();
-            if (err != 0) {
-                if (_failOnError) {
-                    throw new BuildException(_title+" returned: "+err, _owner.getLocation());
-                } else {
-                    _owner.log(_title+"  Result: " + err, Project.MSG_ERR);
-                }
-            }
-        } catch (IOException e) {
-            throw new BuildException(_title+" failed: " + e, e, _owner.getLocation());
-        }
-    }
-} //class
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreator.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreator.java
deleted file mode 100644
index ff2ff8b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreator.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-
-import java.io.File;
-
-/**
- * Build a serialised deployment descriptor given a text file description of the 
- * descriptor in the format supported by WebLogic.
- *
- * This ant task is a front end for the weblogic DDCreator tool.
- *
- * @author <a href="mailto:conor@cortexebusiness.com.au">Conor MacNeill</a>, Cortex ebusiness Pty Limited
- */
-public class DDCreator extends MatchingTask {
-    /**
-     * The root directory of the tree containing the textual deployment desciptors. The actual
-     * deployment descriptor files are selected using include and exclude constructs
-     * on the EJBC task, as supported by the MatchingTask superclass.
-     */
-    private File descriptorDirectory;
-    
-    /**
-     * The directory where generated serialised deployment descriptors are placed.
-     */
-    private File generatedFilesDirectory;
-        
-    /**
-     * The classpath to be used in the weblogic ejbc calls. It must contain the weblogic
-     * classes necessary fro DDCreator <b>and</b> the implementation classes of the 
-     * home and remote interfaces.
-     */
-    private String classpath;
-    
-    /**
-     * Do the work.
-     *
-     * The work is actually done by creating a helper task. This approach allows
-     * the classpath of the helper task to be set. Since the weblogic tools require
-     * the class files of the project's home and remote interfaces to be available in
-     * the classpath, this also avoids having to start ant with the class path of the
-     * project it is building.
-     *
-     * @exception BuildException if someting goes wrong with the build
-     */
-    public void execute() throws BuildException {
-        if (descriptorDirectory == null ||
-            !descriptorDirectory.isDirectory()) {
-            throw new BuildException("descriptors directory " + descriptorDirectory.getPath() + 
-                                     " is not valid");
-        }
-        if (generatedFilesDirectory == null ||
-            !generatedFilesDirectory.isDirectory()) {
-            throw new BuildException("dest directory " + generatedFilesDirectory.getPath() + 
-                                     " is not valid");
-        }
-                                    
-        String args = descriptorDirectory + " " + generatedFilesDirectory;
-            
-        // get all the files in the descriptor directory
-        DirectoryScanner ds = super.getDirectoryScanner(descriptorDirectory);
-    
-        String[] files = ds.getIncludedFiles();
-
-        for (int i = 0; i < files.length; ++i) {
-            args += " " + files[i];
-        }
-            
-        String systemClassPath = System.getProperty("java.class.path");
-        String execClassPath = project.translatePath(systemClassPath + ":" + classpath);
-        Java ddCreatorTask = (Java)project.createTask("java");
-        ddCreatorTask.setTaskName(getTaskName());
-        ddCreatorTask.setFork(true);
-        ddCreatorTask.setClassname("org.apache.tools.ant.taskdefs.optional.ejb.DDCreatorHelper");
-        Commandline.Argument arguments = ddCreatorTask.createArg();
-        arguments.setLine(args);
-        ddCreatorTask.setClasspath(new Path(project, execClassPath));                         
-        if (ddCreatorTask.executeJava() != 0) {                         
-            throw new BuildException("Execution of ddcreator helper failed");
-        }
-    }
-
-    /**
-     * Set the directory from where the text descriptions of the deployment descriptors are
-     * to be read.
-     *
-     * @param dirName the name of the directory containing the text deployment descriptor files.
-     */
-    public void setDescriptors(String dirName) {
-        descriptorDirectory = new File(dirName);
-    }
-    
-    /**
-     * Set the directory into which the serialised deployment descriptors are to 
-     * be written.
-     *
-     * @param dirName the name of the directory into which the serialised deployment
-     *                descriptors are written.
-     */
-    public void setDest(String dirName) {
-        generatedFilesDirectory = new File(dirName);
-    }
-
-    /**
-     * Set the classpath to be used for this compilation.
-     *
-     * @param s the classpath to use for the ddcreator tool.
-     */
-    public void setClasspath(String s) {
-        this.classpath = project.translatePath(s);
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreatorHelper.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreatorHelper.java
deleted file mode 100644
index beeb359..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreatorHelper.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-import java.io.File;
-
-/**
- * A helper class which performs the actual work of the ddcreator task.
- *
- * This class is run with a classpath which includes the weblogic tools and the home and remote
- * interface class files referenced in the deployment descriptors being built.
- *
- * @author <a href="mailto:conor@cortexebusiness.com.au">Conor MacNeill</a>, Cortex ebusiness Pty Limited
- */
-public class DDCreatorHelper {
-    /**
-     * The root directory of the tree containing the textual deployment desciptors. 
-     */
-    private File descriptorDirectory;
-    
-    /**
-     * The directory where generated serialised desployment descriptors are written.
-     */
-    private File generatedFilesDirectory;
-
-    /**
-     * The descriptor text files for which a serialised descriptor is to be created.
-     */
-    String[] descriptors; 
-
-    /**
-     * The main method.
-     *
-     * The main method creates an instance of the DDCreatorHelper, passing it the 
-     * args which it then processes.
-     */    
-    public static void main(String[] args) throws Exception {
-        DDCreatorHelper helper = new DDCreatorHelper(args);
-        helper.process();
-    }
-  
-    /**
-     * Initialise the helper with the command arguments.
-     *
-     */
-    private DDCreatorHelper(String[] args) {
-        int index = 0;
-        descriptorDirectory = new File(args[index++]);
-        generatedFilesDirectory = new File(args[index++]);
-        
-        descriptors = new String[args.length - index];
-        for (int i = 0; index < args.length; ++i) {
-            descriptors[i] = args[index++];
-        }
-    }
-    
-    /**
-     * Do the actual work.
-     *
-     * The work proceeds by examining each descriptor given. If the serialised
-     * file does not exist or is older than the text description, the weblogic
-     * DDCreator tool is invoked directly to build the serialised descriptor.
-     */    
-    private void process() throws Exception {
-        for (int i = 0; i < descriptors.length; ++i) {
-            String descriptorName = descriptors[i];
-            File descriptorFile = new File(descriptorDirectory, descriptorName);
-
-            int extIndex = descriptorName.lastIndexOf(".");
-            String serName = null;
-            if (extIndex != -1) {
-                serName = descriptorName.substring(0, extIndex) + ".ser";
-            }
-            else {
-                serName = descriptorName + ".ser";
-            }
-            File serFile = new File(generatedFilesDirectory, serName);
-                
-            // do we need to regenerate the file
-            if (!serFile.exists() || serFile.lastModified() < descriptorFile.lastModified()) {
-                
-                String[] args = {"-noexit", 
-                                 "-d", serFile.getParent(),
-                                 "-outputfile", serFile.getName(),
-                                 descriptorFile.getPath()};
-                try {
-                    weblogic.ejb.utils.DDCreator.main(args);
-                }
-                catch (Exception e) {
-                    // there was an exception - run with no exit to get proper error
-                    String[] newArgs = {"-d", generatedFilesDirectory.getPath(),
-                                 "-outputfile", serFile.getName(),
-                                 descriptorFile.getPath()};
-                    weblogic.ejb.utils.DDCreator.main(newArgs);
-                }
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java
deleted file mode 100644
index ba6da6c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-import java.util.*;
-import java.io.*;
-
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.AttributeList;
-
-/**
- * Inner class used by EjbJar to facilitate the parsing of deployment
- * descriptors and the capture of appropriate information. Extends
- * HandlerBase so it only implements the methods needed. During parsing
- * creates a hashtable consisting of entries mapping the name it should be
- * inserted into an EJB jar as to a File representing the file on disk. This
- * list can then be accessed through the getFiles() method.
- */
-public class DescriptorHandler extends org.xml.sax.HandlerBase {
-    /**
-     * Bunch of constants used for storing entries in a hashtable, and for
-     * constructing the filenames of various parts of the ejb jar.
-     */
-    private static final String EJB_REF   = "ejb-ref";
-    private static final String HOME_INTERFACE   = "home";
-    private static final String REMOTE_INTERFACE = "remote";
-    private static final String BEAN_CLASS       = "ejb-class";
-    private static final String PK_CLASS         = "prim-key-class";
-
-    /**
-     * Instance variable used to store the name of the current element being
-     * processed by the SAX parser.  Accessed by the SAX parser call-back methods
-     * startElement() and endElement().
-     */
-    protected String currentElement = null;
-
-    /**
-     * The text of the current element
-     */
-    protected String currentText = null;
-
-    /**
-     * Instance variable that stores the names of the files as they will be
-     * put into the jar file, mapped to File objects  Accessed by the SAX
-     * parser call-back method characters().
-     */
-    protected Hashtable ejbFiles = null;
-
-    private Hashtable fileDTDs = new Hashtable();
-    
-    private Hashtable resourceDTDs = new Hashtable();
-
-    private boolean inEJBRef = false;
-
-    /**
-     * The directory containing the bean classes and interfaces. This is 
-     * used for performing dependency file lookups.
-     */
-    private File srcDir;
-
-    public DescriptorHandler(File srcDir) {
-        this.srcDir = srcDir;
-    }
-    
-    public void registerDTD(String publicId, String location) {
-        if (location == null) {
-            return;
-        }
-        
-        File fileDTD = new File(location);
-        if (fileDTD.exists()) {
-            fileDTDs.put(publicId, fileDTD);
-            return;
-        }
-        
-        if (getClass().getResource(location) != null) {
-            resourceDTDs.put(publicId, location);
-        }
-    }
-
-    public InputSource resolveEntity(String publicId, String systemId)
-        throws SAXException
-    {
-        
-        File dtdFile = (File) fileDTDs.get(publicId);
-        if (dtdFile != null) {
-            try {
-                return new InputSource(new FileInputStream(dtdFile));
-            } catch( FileNotFoundException ex ) {
-                // ignore
-            }
-        }
-
-        String dtdResourceName = (String)resourceDTDs.get(publicId); 
-        if (dtdResourceName != null) {
-            InputStream is = this.getClass().getResourceAsStream(dtdResourceName);
-            if( is != null ) {
-                return new InputSource(is);
-            }
-        }
-        
-        return null;
-    }
-
-    /**
-     * Getter method that returns the set of files to include in the EJB jar.
-     */
-    public Hashtable getFiles() {
-        return (ejbFiles == null) ? new Hashtable() : ejbFiles;
-    }
-
-
-    /**
-     * SAX parser call-back method that is used to initialize the values of some
-     * instance variables to ensure safe operation.
-     */
-    public void startDocument() throws SAXException {
-        this.ejbFiles = new Hashtable(10, 1);
-        this.currentElement = null;
-        inEJBRef = false;
-    }
-
-
-    /**
-     * SAX parser call-back method that is invoked when a new element is entered
-     * into.  Used to store the context (attribute name) in the currentAttribute
-     * instance variable.
-     * @param name The name of the element being entered.
-     * @param attrs Attributes associated to the element.
-     */
-    public void startElement(String name, AttributeList attrs) 
-        throws SAXException {
-        this.currentElement = name;
-        currentText = "";
-        if (name.equals(EJB_REF)) {
-            inEJBRef = true;
-        }
-    }
-
-
-    /**
-     * SAX parser call-back method that is invoked when an element is exited.
-     * Used to blank out (set to the empty string, not nullify) the name of
-     * the currentAttribute.  A better method would be to use a stack as an
-     * instance variable, however since we are only interested in leaf-node
-     * data this is a simpler and workable solution.
-     * @param name The name of the attribute being exited. Ignored
-     *        in this implementation.
-     */
-    public void endElement(String name) throws SAXException {
-        processElement();
-        currentText = "";
-        this.currentElement = "";
-        if (name.equals(EJB_REF)) {
-            inEJBRef = false;
-        }
-    }
-
-    /**
-     * SAX parser call-back method invoked whenever characters are located within
-     * an element.  currentAttribute (modified by startElement and endElement)
-     * tells us whether we are in an interesting element (one of the up to four
-     * classes of an EJB).  If so then converts the classname from the format
-     * org.apache.tools.ant.Parser to the convention for storing such a class,
-     * org/apache/tools/ant/Parser.class.  This is then resolved into a file
-     * object under the srcdir which is stored in a Hashtable.
-     * @param ch A character array containing all the characters in
-     *        the element, and maybe others that should be ignored.
-     * @param start An integer marking the position in the char
-     *        array to start reading from.
-     * @param length An integer representing an offset into the
-     *        char array where the current data terminates.
-     */
-    public void characters(char[] ch, int start, int length)
-        throws SAXException {
-
-        currentText += new String(ch, start, length);
-    }
-    
-    
-    protected void processElement() {
-        if (inEJBRef) {
-            return;
-        }
-        
-        if (currentElement.equals(HOME_INTERFACE)   ||
-            currentElement.equals(REMOTE_INTERFACE) ||
-            currentElement.equals(BEAN_CLASS)       ||
-            currentElement.equals(PK_CLASS)) {
-            
-            // Get the filename into a String object
-            File classFile = null;
-            String className = currentText;
-
-            // If it's a primitive wrapper then we shouldn't try and put
-            // it into the jar, so ignore it.
-            if (!className.startsWith("java.lang")) {
-                // Translate periods into path separators, add .class to the
-                // name, create the File object and add it to the Hashtable.
-                className = className.replace('.', File.separatorChar);
-                className += ".class";
-                classFile = new File(srcDir, className);
-                ejbFiles.put(className, classFile);
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EJBDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EJBDeploymentTool.java
deleted file mode 100644
index 6600311..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EJBDeploymentTool.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-import java.io.*;
-
-import javax.xml.parsers.SAXParser;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.*;
-
-public interface EJBDeploymentTool {
-    /**
-     * Process a deployment descriptor, generating the necessary vendor specific
-     * deployment files.
-     *
-     * @param descriptorFilename the name of the deployment descriptor
-     * @param saxParser a SAX parser which can be used to parse the deployment descriptor. 
-     * @param supportFileSet a fileset containing all the files to be included in the 
-     * `                     generated jarfile as support classes.
-     */
-    public void processDescriptor(String descriptorFilename, SAXParser saxParser) 
-        throws BuildException;
-    
-    /**
-     * Called to validate that the tool parameters have been configured.
-     *
-     */
-    public void validateConfigured() throws BuildException;
-
-    /**
-     * Set the task which owns this tool
-     */
-    public void setTask(Task task);
-    
-    /**
-     * Configure this tool for use in the ejbjar task.
-     */
-    public void configure(EjbJar.Config config);     
-}
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbJar.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbJar.java
deleted file mode 100644
index 5c5265a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbJar.java
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-// Standard java imports
-import java.io.*;
-import java.util.*;
-
-// XML imports
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import org.xml.sax.SAXException;
-
-// Apache/Ant imports
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.taskdefs.MatchingTask;
-import org.apache.tools.ant.types.*;
-
-/**
- * <p>Provides automated ejb jar file creation for ant.  Extends the MatchingTask
- * class provided in the default ant distribution to provide a directory scanning
- * EJB jarfile generator.</p>
- *
- * <p>The task works by taking the deployment descriptors one at a time and
- * parsing them to locate the names of the classes which should be placed in
- * the jar.  The classnames are translated to java.io.Files by replacing periods
- * with File.separatorChar and resolving the generated filename as a relative
- * path under the srcDir attribute.  All necessary files are then assembled into
- * a jarfile.  One jarfile is constructed for each deployment descriptor found.
- * </p>
- *
- * <p>Functionality is currently provided for standard EJB1.1 jars and Weblogic
- * 5.1 jars. The weblogic deployment descriptors, used in constructing the 
- * Weblogic jar, are located based on a simple naming convention. The name of the
- * standard deployment descriptor is taken upto the first instance of a String,
- * specified by the attribute baseNameTerminator, and then the regular Weblogic
- * descriptor name is appended. For example if baseNameTerminator is set to '-',
- * its default value, and a standard descriptor is called Foo-ejb-jar.xml then
- * the files Foo-weblogic-ejb-jar.xml and Foo-weblogic-cmp-rdbms-jar.xml will be
- * looked for, and if found, included in the jarfile.</p>
- *
- * <p>Attributes and setter methods are provided to support optional generation
- * of Weblogic5.1 jars, optional deletion of generic jar files, setting alternate
- * values for baseNameTerminator, and setting the strings to append to the names
- * of the generated jarfiles.</p>
- *
- * @author <a href="mailto:tfennell@sapient.com">Tim Fennell</a>
- */
-public class EjbJar extends MatchingTask {
-    
-    static class DTDLocation {
-        private String publicId;
-        private String location;
-        
-        public void setPublicId(String publicId) {
-            this.publicId = publicId;
-        }
-        
-        public void setLocation(String location) {
-            this.location = location;
-        }
-        
-        public String getPublicId() {
-            return publicId;
-        }
-        
-        public String getLocation() {
-            return location;
-        }
-    }
-
-    /**
-     * A class which contains the configuration state of the ejbjar task.
-     * This state is passed to the deployment tools for configuration
-     */
-    static class Config {
-        /** Stores a handle to the directory under which to search for class files */
-        public File srcDir;
-
-        /** Stores a handle to the directory under which to search for deployment descriptors */
-        public File descriptorDir;
-        
-        /** Instance variable that marks the end of the 'basename' */
-        public String baseNameTerminator = "-";
-
-        /** Stores a handle to the destination EJB Jar file */
-        public String baseJarName;
-
-        /**
-         * Instance variable that determines whether to use a package structure
-         * of a flat directory as the destination for the jar files.
-         */
-        public boolean flatDestDir = false;
-        
-        /**
-         * The classpath to use when loading classes
-         */
-        public Path classpath;
-    
-        /**
-         * A Fileset of support classes
-         */
-        public FileSet supportFileSet = null;
-        
-        /**
-         * The list of configured DTD locations
-         */
-        public ArrayList dtdLocations = new ArrayList();
-    };
-
-    private Config config = new Config();
-
-
-    /** Stores a handle to the directory to put the Jar files in. This is only used
-        by the generic deployment descriptor tool which is created if no other
-        deployment descriptor tools are provided. Normally each deployment tool
-        will specify the desitination dir itself. */
-    private File destDir;
- 
-    /** Instance variable that stores the suffix for the generated jarfile. */
-    private String genericJarSuffix = "-generic.jar";
-
-    /**
-     * The list of deployment tools we are going to run.
-     */
-    private ArrayList deploymentTools = new ArrayList();
-
-    /**
-     * Create a weblogic nested element used to configure a
-     * deployment tool for Weblogic server.
-     *
-     * @return the deployment tool instance to be configured.
-     */
-    public WeblogicDeploymentTool createWeblogic() {
-        WeblogicDeploymentTool tool = new WeblogicDeploymentTool();
-        tool.setTask(this);
-        deploymentTools.add(tool);
-        return tool;
-    }
-
-    /**
-     * Create a nested element for weblogic when using the Toplink
-     * Object- Relational mapping.
-     *
-     * @return the deployment tool instance to be configured.
-     */
-    public WeblogicTOPLinkDeploymentTool createWeblogictoplink() {
-        WeblogicTOPLinkDeploymentTool tool = new WeblogicTOPLinkDeploymentTool();
-        tool.setTask(this);
-        deploymentTools.add(tool);
-        return tool;
-    }
-
-    /**
-     * creates a nested classpath element.
-     *
-     * This classpath is used to locate the super classes and interfaces
-     * of the classes that will make up the EJB jar.
-     * 
-     * @return the path to be configured.
-     */
-    public Path createClasspath() {
-        if (config.classpath == null) {
-            config.classpath = new Path(project);
-        }
-        return config.classpath.createPath();
-    }
-
-    /**
-     * Create a DTD location record. This stores the location of a DTD. The DTD is identified
-     * by its public Id. The location may either be a file location or a resource location.
-     */
-    public DTDLocation createDTD() {
-        DTDLocation dtdLocation = new DTDLocation();
-        config.dtdLocations.add(dtdLocation);
-        
-        return dtdLocation;
-    }
-
-    /**
-     * Create a file set for support elements
-     *
-     * @return a fileset which can be populated with support files.
-     */
-    public FileSet createSupport() {
-        config.supportFileSet = new FileSet();
-        return config.supportFileSet;
-    }
-    
-
-    /**
-     * Set the srcdir attribute. The source directory is the directory that contains
-     * the classes that will be added to the EJB jar. Typically this will include the 
-     * home and remote interfaces and the bean class.
-     *
-     * @param inDir the source directory.
-     */
-    public void setSrcdir(File inDir) {
-        config.srcDir = inDir;
-    }
-
-    /**
-     * Set the descriptor directory.
-     *
-     * The descriptor directory contains the EJB deployment descriptors. These are XML
-     * files that declare the properties of a bean in a particular deployment scenario. Such
-     * properties include, for example, the transactional nature of the bean and the security
-     * access control to the bean's methods.  
-     *
-     * @param inDir the directory containing the deployment descriptors.
-     */
-    public void setDescriptordir(File inDir) {
-        config.descriptorDir = inDir;
-    }
-
-    /**
-     * Set the base name of the EJB jar that is to be created if it is not to be
-     * determined from the name of the deployment descriptor files. 
-     * 
-     * @param inValue the basename that will be used when writing the jar file containing
-     * the EJB
-     */
-    public void setBasejarname(String inValue) {
-        config.baseJarName = inValue;
-    }
-
-    /**
-     * Set the destination directory.
-     * 
-     * The EJB jar files will be written into this directory. The jar files that exist in
-     * this directory are also used when determining if the contents of the jar file 
-     * have changed.
-     *
-     * Note that this parameter is only used if no deployment tools are specified. Typically
-     * each deployment tool will specify its own destination directory.
-     * 
-     * @param inFile the destination directory.
-     */
-    public void setDestdir(File inDir) {
-        this.destDir = inDir;
-    }
-
-    /**
-     * Set the classpath to use when resolving classes for inclusion in the jar. 
-     *
-     * @param classpath the classpath to use.
-     */
-    public void setClasspath(Path classpath) {
-        config.classpath = classpath;
-    }
-
-    /**
-     * Set the flat dest dir flag.
-     *
-     * This flag controls whether the destination jars are written out in the 
-     * destination directory with the same hierarchal structure from which 
-     * the deployment descriptors have been read. If this is set to true the 
-     * generated EJB jars are written into the root of the destination directory,
-     * otherwise they are written out in the same relative position as the deployment
-     * descriptors in the descriptor directory.
-     * 
-     * @param inValue the new value of the flatdestdir flag.
-     */
-    public void setFlatdestdir(boolean inValue) {
-        config.flatDestDir = inValue;
-    }
-     
-    /**
-     * Set the suffix for the generated jar file.
-     * When generic jars are generated, they have a suffix which is appended to the
-     * the bean name to create the name of the jar file. Note that this suffix includes
-     * the extension fo te jar file and should therefore end with an appropriate 
-     * extension such as .jar or .ear
-     * 
-     * @param inString the string to use as the suffix.
-     */
-    public void setGenericjarsuffix(String inString) {
-        this.genericJarSuffix = inString;
-    }
-
-    /**
-     * Set the baseNameTerminator.
-     *
-     * The basename terminator is the string which terminates the bean name. The convention
-     * used by this task is that bean descriptors are named as the BeanName with some suffix. 
-     * The baseNameTerminator string separates the bean name and the suffix and is used to
-     * determine the bean name.
-     *
-     * @param inValue a string which marks the end of the basename.
-     */
-    public void setBasenameterminator(String inValue) {
-        config.baseNameTerminator = inValue;
-    }
-
-    private void validateConfig() {
-        if (config.srcDir == null) {
-            throw new BuildException("The srcDir attribute must be specified");
-        }
-
-        if (config.descriptorDir == null) {
-            config.descriptorDir = config.srcDir;
-        }
-    }        
-
-    /**
-     * Invoked by Ant after the task is prepared, when it is ready to execute
-     * this task.  
-     *
-     * This will configure all of the nested deployment tools to allow them to 
-     * process the jar. If no deployment tools have been configured a generic 
-     * tool is created to handle the jar.
-     * 
-     * A parser is configured and then each descriptor found is passed to all
-     * the deployment tool elements for processing.
-     *
-     * @exception BuildException thrown whenever a problem is
-     *            encountered that cannot be recovered from, to signal to ant
-     *            that a major problem occurred within this task.
-     */
-    public void execute() throws BuildException {
-        validateConfig();
-        
-        if (deploymentTools.size() == 0) {
-            GenericDeploymentTool genericTool = new GenericDeploymentTool();
-            genericTool.setTask(this);
-            genericTool.setDestdir(destDir);
-            genericTool.setGenericJarSuffix(genericJarSuffix);
-            deploymentTools.add(genericTool);
-        }
-        
-        for (Iterator i = deploymentTools.iterator(); i.hasNext(); ) {
-            EJBDeploymentTool tool = (EJBDeploymentTool)i.next();
-            tool.configure(config);
-            tool.validateConfigured();
-        }
-        
-        try {
-            // Create the parser using whatever parser the system dictates
-            SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
-            saxParserFactory.setValidating(true);
-            SAXParser saxParser = saxParserFactory.newSAXParser();
-    
-                        
-            DirectoryScanner ds = getDirectoryScanner(config.descriptorDir);
-            ds.scan();
-            String[] files = ds.getIncludedFiles();
-    
-            log(files.length + " deployment descriptors located.",
-                Project.MSG_VERBOSE);
-            
-            // Loop through the files. Each file represents one deployment
-            // descriptor, and hence one bean in our model.
-            for (int index = 0; index < files.length; ++index) {
-                // process the deployment descriptor in each tool
-                for (Iterator i = deploymentTools.iterator(); i.hasNext(); ) {
-                    EJBDeploymentTool tool = (EJBDeploymentTool)i.next();
-                    tool.processDescriptor(files[index], saxParser);
-                }
-            }    
-        }
-        catch (SAXException se) {
-            String msg = "SAXException while creating parser."
-                + "  Details: "
-                + se.getMessage();
-            throw new BuildException(msg, se);
-        }
-        catch (ParserConfigurationException pce) {
-            String msg = "ParserConfigurationException while creating parser. "
-                       + "Details: " + pce.getMessage();
-            throw new BuildException(msg, pce);
-        }
-    } // end of execute()
-}
-
-
-
-
-
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/Ejbc.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/Ejbc.java
deleted file mode 100644
index 6122cda..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/Ejbc.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-
-import java.io.File;
-
-/**
- * Build EJB support classes using Weblogic's ejbc tool from a directory containing
- * a set of deployment descriptors.
- 
- *
- * @author <a href="mailto:conor@cortexebusiness.com.au">Conor MacNeill</a>, Cortex ebusiness Pty Limited
- */
-public class Ejbc extends MatchingTask {
-    /**
-     * The root directory of the tree containing the serialised deployment desciptors. The actual
-     * deployment descriptor files are selected using include and exclude constructs
-     * on the ejbc task provided by the MatchingTask superclass.
-     */
-    private File descriptorDirectory;
-    
-    /**
-     * The directory where generated files are placed.
-     */
-    private File generatedFilesDirectory;
-    
-    /**
-     * The name of the manifest file generated for the EJB jar.
-     */
-    private File generatedManifestFile;
-    
-    /**
-     * The classpath to be used in the weblogic ejbc calls. It must contain the weblogic
-     * classes <b>and</b> the implementation classes of the home and remote interfaces.
-     */
-    private String classpath;
-    
-    /**
-     * The source directory for the home and remote interfaces. This is used to determine if
-     * the generated deployment classes are out of date.
-     */
-    private File sourceDirectory;
-    
-    public boolean keepgenerated;
-    
-    /**
-     * Do the work.
-     *
-     * The work is actually done by creating a separate JVM to run a helper task. 
-     * This approach allows the classpath of the helper task to be set. Since the 
-     * weblogic tools require the class files of the project's home and remote 
-     * interfaces to be available in the classpath, this also avoids having to 
-     * start ant with the class path of the project it is building.
-     *
-     * @exception BuildException if someting goes wrong with the build
-     */
-    public void execute() throws BuildException {
-        if (descriptorDirectory == null ||
-            !descriptorDirectory.isDirectory()) {
-            throw new BuildException("descriptors directory " + descriptorDirectory.getPath() + 
-                                     " is not valid");
-        }
-        if (generatedFilesDirectory == null ||
-            !generatedFilesDirectory.isDirectory()) {
-            throw new BuildException("dest directory " + generatedFilesDirectory.getPath() + 
-                                     " is not valid");
-        }
-                                    
-        if (sourceDirectory == null ||
-            !sourceDirectory.isDirectory()) {
-            throw new BuildException("src directory " + sourceDirectory.getPath() + 
-                                     " is not valid");
-        }
-        
-        String systemClassPath = System.getProperty("java.class.path");
-        String execClassPath = project.translatePath(systemClassPath + ":" + classpath +
-                                                         ":" + generatedFilesDirectory);
-        // get all the files in the descriptor directory
-        DirectoryScanner ds = super.getDirectoryScanner(descriptorDirectory);
-   
-        String[] files = ds.getIncludedFiles();
-
-        Java helperTask = (Java)project.createTask("java");
-        helperTask.setTaskName(getTaskName());
-        helperTask.setFork(true);
-        helperTask.setClassname("org.apache.tools.ant.taskdefs.optional.ejb.EjbcHelper");
-        String args = "";
-        args += " " + descriptorDirectory;
-        args += " " + generatedFilesDirectory;
-        args += " " + sourceDirectory;
-        args += " " + generatedManifestFile;
-        args += " " + keepgenerated;
-        
-        for (int i = 0; i < files.length; ++i) {
-            args += " " + files[i];
-        }
-                                    
-        Commandline.Argument arguments = helperTask.createArg();
-        arguments.setLine(args);
-        helperTask.setClasspath(new Path(project, execClassPath));
-        if (helperTask.executeJava() != 0) {                         
-            throw new BuildException("Execution of ejbc helper failed");
-        }
-    }
-    
-    public boolean getKeepgenerated() {
-        return keepgenerated;
-    }
-    
-    /**
-     * Set the directory from where the serialised deployment descriptors are
-     * to be read.
-     *
-     * @param dirName the name of the directory containing the serialised deployment descriptors.
-     */
-    public void setDescriptors(String dirName) {
-        descriptorDirectory = new File(dirName);
-    }
-    
-    /**
-     * Set the directory into which the support classes, RMI stubs, etc are to be written
-     *
-     * @param dirName the name of the directory into which code is generated
-     */
-    public void setDest(String dirName) {
-        generatedFilesDirectory = new File(dirName);
-    }
-    
-    public void setKeepgenerated(String newKeepgenerated) {
-        keepgenerated = Boolean.valueOf(newKeepgenerated.trim()).booleanValue();
-        
-    }
-    
-    /**
-     * Set the generated manifest file. 
-     *
-     * For each EJB that is processed an entry is created in this file. This can then be used
-     * to create a jar file for dploying the beans.
-     *
-     * @param manfestFilename the name of the manifest file to be generated.
-     */
-    public void setManifest(String manifestFilename) {
-        generatedManifestFile = new File(manifestFilename);
-    }
-    
-    /**
-     * Set the classpath to be used for this compilation.
-     */
-    public void setClasspath(String s) {
-        this.classpath = project.translatePath(s);
-    }
-    
-    /**
-     * Set the directory containing the source code for the home interface, remote interface
-     * and public key class definitions.
-     *
-     * @param dirName the directory containg the source tree for the EJB's interface classes.
-     */
-    public void setSrc(String dirName) {
-        sourceDirectory = new File(dirName);
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbcHelper.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbcHelper.java
deleted file mode 100644
index 625c8a5..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbcHelper.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-import java.io.*;
-import java.util.*;
-
-import javax.ejb.deployment.EntityDescriptor;
-import javax.ejb.deployment.DeploymentDescriptor;
-
-
-/**
- * A helper class which performs the actual work of the ejbc task.
- *
- * This class is run with a classpath which includes the weblogic tools and the home and remote
- * interface class files referenced in the deployment descriptors being processed.
- *
- * @author <a href="mailto:conor@cortexebusiness.com.au">Conor MacNeill</a>, Cortex ebusiness Pty Limited
- */
-public class EjbcHelper {
-    /**
-     * The root directory of the tree containing the serialised deployment desciptors. 
-     */
-    private File descriptorDirectory;
-    
-    /**
-     * The directory where generated files are placed.
-     */
-    private File generatedFilesDirectory;
-    
-    /**
-     * The name of the manifest file generated for the EJB jar.
-     */
-    private File manifestFile;
-    
-    /**
-     * The classpath to be used in the weblogic ejbc calls. It must contain the weblogic
-     * classes <b>and</b> the implementation classes of the home and remote interfaces.
-     */
-    private String classpath;
-    
-    /**
-     * The source directory for the home and remote interfaces. This is used to determine if
-     * the generated deployment classes are out of date.
-     */
-    private File sourceDirectory;
-   
-    /**
-     * The names of the serialised deployment descriptors
-     */
-    String[] descriptors;
-
-    private boolean keepGenerated;
-
-    /**
-     * Command line interface for the ejbc helper task.
-     */    
-    public static void main(String[] args) throws Exception {
-        EjbcHelper helper = new EjbcHelper(args);
-        helper.process();
-    }
-    
-    /**
-     * Initialise the EjbcHelper by reading the command arguments.
-     */    
-    private EjbcHelper(String[] args) {
-        int index = 0;
-        descriptorDirectory = new File(args[index++]);
-        generatedFilesDirectory = new File(args[index++]);
-        sourceDirectory = new File(args[index++]);
-        manifestFile = new File(args[index++]);
-        keepGenerated = Boolean.valueOf(args[index++]).booleanValue();
-        
-        descriptors = new String[args.length - index];
-        for (int i = 0; index < args.length; ++i) {
-            descriptors[i] = args[index++];
-        }
-    }
-    
-    private String[] getCommandLine(boolean debug, File descriptorFile) {
-        Vector v = new Vector();
-        if (!debug) {
-            v.add("-noexit");
-        }
-        if (keepGenerated) {
-            v.add("-keepgenerated");        
-        }
-        v.add("-d");
-        v.add(generatedFilesDirectory.getPath());
-        v.add(descriptorFile.getPath());
-    
-        String[] args = new String[v.size()];
-        v.copyInto(args);
-        return args;
-    }
-
-    /**
-     * Determine if the weblogic EJB support classes need to be regenerated
-     * for a given deployment descriptor.
-     *
-     * This process attempts to determine if the support classes need to be
-     * rebuilt. It does this by examining only some of the support classes 
-     * which are typically generated. If the ejbc task is interrupted generating
-     * the support classes for a bean, all of the support classes should be removed
-     * to force regeneration of the support classes.
-     *
-     * @param descriptorFile the serialised deployment descriptor
-     *
-     * @return true if the support classes need to be regenerated.
-     *
-     * @throws IOException if the descriptor file cannot be closed.
-     */
-    private boolean isRegenRequired(File descriptorFile) throws IOException {
-        // read in the descriptor. Under weblogic, the descriptor is a weblogic
-        // specific subclass which has references to the implementation classes.
-        // These classes must, therefore, be in the classpath when the deployment
-        // descriptor is loaded from the .ser file
-        FileInputStream fis = null;
-        try {
-            fis = new FileInputStream(descriptorFile);
-            ObjectInputStream ois = new ObjectInputStream(fis);
-            DeploymentDescriptor dd = (DeploymentDescriptor)ois.readObject();
-            fis.close();
-            
-            String homeInterfacePath = dd.getHomeInterfaceClassName().replace('.', '/') + ".java";
-            String remoteInterfacePath = dd.getRemoteInterfaceClassName().replace('.', '/') + ".java";
-            String primaryKeyClassPath = null;
-            if (dd instanceof EntityDescriptor) {
-                primaryKeyClassPath = ((EntityDescriptor)dd).getPrimaryKeyClassName().replace('.', '/') + ".java";;
-            }
-        
-            File homeInterfaceSource = new File(sourceDirectory, homeInterfacePath);
-            File remoteInterfaceSource = new File(sourceDirectory, remoteInterfacePath);
-            File primaryKeyClassSource = null;
-            if (primaryKeyClassPath != null) {
-                primaryKeyClassSource = new File(sourceDirectory, remoteInterfacePath);
-            }
-            
-            // are any of the above out of date. 
-            // we find the implementation classes and see if they are older than any
-            // of the above or the .ser file itself.
-            String beanClassBase = dd.getEnterpriseBeanClassName().replace('.', '/');
-            File ejbImplentationClass 
-                = new File(generatedFilesDirectory, beanClassBase + "EOImpl.class");
-            File homeImplementationClass 
-                = new File(generatedFilesDirectory, beanClassBase + "HomeImpl.class");
-            File beanStubClass 
-                = new File(generatedFilesDirectory, beanClassBase + "EOImpl_WLStub.class");
-                
-            // if the implementation classes don;t exist regenerate                
-            if (!ejbImplentationClass.exists() || !homeImplementationClass.exists() ||
-                    !beanStubClass.exists()) {
-                return true;
-            }
-                
-            // Is the ser file or any of the source files newer then the class files.
-            // firstly find the oldest of the two class files.
-            long classModificationTime = ejbImplentationClass.lastModified();
-            if (homeImplementationClass.lastModified() < classModificationTime) {
-                classModificationTime = homeImplementationClass.lastModified();
-            }
-            if (beanStubClass.lastModified() < classModificationTime) {
-                classModificationTime = beanStubClass.lastModified();
-            }
-            
-            if (descriptorFile.lastModified() > classModificationTime ||
-                    homeInterfaceSource.lastModified() > classModificationTime ||
-                    remoteInterfaceSource.lastModified() > classModificationTime) {
-                return true;
-            }
-            
-            if (primaryKeyClassSource != null && 
-                    primaryKeyClassSource.lastModified() > classModificationTime) {
-                return true;
-            }
-        }
-        catch (Throwable descriptorLoadException) {
-            System.out.println("Exception occurred reading " + descriptorFile.getName() + " - continuing");
-            // any problems - just regenerate
-            return true;
-        }
-        finally {
-            if (fis != null) {
-                fis.close();
-            }
-        }
-        
-        return false;
-    }
-    
-    /**
-     * Process the descriptors in turn generating support classes for each and a manifest
-     * file for all of the beans.
-     */            
-    private void process() throws Exception {
-        String manifest = "Manifest-Version: 1.0\n\n";
-        for (int i = 0; i < descriptors.length; ++i) {
-            String descriptorName = descriptors[i];
-            File descriptorFile = new File(descriptorDirectory, descriptorName);
-            
-            if (isRegenRequired(descriptorFile)) {
-                System.out.println("Running ejbc for " + descriptorFile.getName());
-                regenerateSupportClasses(descriptorFile);
-            }
-            else {
-                System.out.println(descriptorFile.getName() + " is up to date");
-            }
-            manifest += "Name: " + descriptorName.replace('\\', '/') + "\nEnterprise-Bean: True\n\n";
-        }
-        
-        FileWriter fw = new FileWriter(manifestFile);
-        PrintWriter pw = new PrintWriter(fw);
-        pw.print(manifest);
-        fw.flush();
-        fw.close();
-    }
-    
-    /**
-     * Perform the weblogic.ejbc call to regenerate the support classes.
-     *
-     * Note that this method relies on an undocumented -noexit option to the 
-     * ejbc tool to stop the ejbc tool exiting the VM altogether.
-     */
-    private void regenerateSupportClasses(File descriptorFile) throws Exception {
-        // create a Java task to do the rebuild
-
-        
-        String[] args = getCommandLine(false,descriptorFile);
-        
-        try {
-            weblogic.ejbc.main(args);
-        }
-        catch (Exception e) {
-            // run with no exit for better reporting
-            String[] newArgs = getCommandLine(true, descriptorFile);
-            weblogic.ejbc.main(newArgs);
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
deleted file mode 100644
index ebbeb57..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
+++ /dev/null
@@ -1,645 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-import java.io.*;
-import java.util.*;
-import java.util.jar.*;
-import java.util.zip.*;
-import java.net.*;
-
-import javax.xml.parsers.SAXParser;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-/**
- * A deployment tool which creates generic EJB jars. Generic jars contains
- * only those classes and META-INF entries specified in the EJB 1.1 standard
- *
- * This class is also used as a framework for the creation of vendor specific
- * deployment tools. A number of template methods are provided through which the
- * vendor specific tool can hook into the EJB creation process.
- */
-public class GenericDeploymentTool implements EJBDeploymentTool {
-    /** Private constants that are used when constructing the standard jarfile */
-    protected static final String META_DIR  = "META-INF/";
-    protected static final String EJB_DD    = "ejb-jar.xml";
-
-    /**
-     * The configuration from the containing task. This config combined with the 
-     * settings of the individual attributes here constitues the complete config for
-     * this deployment tool.
-     */
-    private EjbJar.Config config;
-
-    /** Stores a handle to the directory to put the Jar files in */
-    private File destDir;
-    
-    /** The classpath to use with this deployment tool. This is appended to 
-        any paths from the ejbjar task itself.*/
-    private Path classpath;
-
-    /** Instance variable that stores the suffix for the generated jarfile. */
-    private String genericJarSuffix = "-generic.jar";
-
-    /**
-     * The task to which this tool belongs. This is used to access services provided
-     * by the ant core, such as logging.
-     */
-    private Task task;
-    
-    /**
-     * The classloader generated from the given classpath to load
-     * the super classes and super interfaces.
-     */
-    private ClassLoader classpathLoader = null;
-    
-     /**
-     * List of files have been loaded into the EJB jar
-     */
-    private List addedfiles;
-
-    /**
-     * Setter used to store the value of destination directory prior to execute()
-     * being called.
-     * @param inDir the destination directory.
-     */
-    public void setDestdir(File inDir) {
-        this.destDir = inDir;
-    }
-
-    /**
-     * Get the desitination directory.
-     */
-    protected File getDestDir() {
-        return destDir;
-    }
-    
-
-    /**
-     * Set the task which owns this tool
-     */
-    public void setTask(Task task) {
-        this.task = task;
-    }
-       
-    /**
-     * Get the task for this tool.
-     */
-    protected Task getTask() {
-        return task;
-    }
-
-    /**
-     * Get the basename terminator.
-     */
-    protected EjbJar.Config getConfig() {
-        return config;
-    }
-    
-    /**
-     * Returns true, if the meta-inf dir is being explicitly set, false otherwise.
-     */
-    protected boolean usingBaseJarName() {
-        return config.baseJarName != null;
-    }
-    
-    /**
-     * Setter used to store the suffix for the generated jar file.
-     * @param inString the string to use as the suffix.
-     */
-    public void setGenericJarSuffix(String inString) {
-        this.genericJarSuffix = inString;
-    }
-
-    /**
-     * Add the classpath for the user classes
-     */
-    public Path createClasspath() {
-        if (classpath == null) {
-            classpath = new Path(task.getProject());
-        }
-        return classpath.createPath();
-    }
-
-    /**
-     * Set the classpath to be used for this compilation.
-     */
-    public void setClasspath(Path classpath) {
-        this.classpath = classpath;
-    }
-
-    /**
-     * Get the classpath by combining the one from the surrounding task, if any
-     * and the one from tis tool.
-     */
-    protected Path getCombinedClasspath() {
-        Path combinedPath = classpath;
-        if (config.classpath != null) {
-            if (combinedPath == null) {
-                combinedPath = config.classpath;
-            }
-            else {
-                combinedPath.append(config.classpath);
-            }
-        }
-        
-        return combinedPath;
-    }
-    
-    protected void log(String message, int level) {
-        getTask().log(message, level);
-    }
-
-
-    /**
-     * Configure this tool for use in the ejbjar task.
-     */
-    public void configure(EjbJar.Config config) {
-        this.config = config;
-        
-        classpathLoader = null;
-    }
-
-    /**
-     * Utility method that encapsulates the logic of adding a file entry to
-     * a .jar file.  Used by execute() to add entries to the jar file as it is
-     * constructed.
-     * @param jStream A JarOutputStream into which to write the
-     *        jar entry.
-     * @param inputFile A File from which to read the
-     *        contents the file being added.
-     * @param logicalFilename A String representing the name, including
-     *        all relevant path information, that should be stored for the entry
-     *        being added.
-     */
-    protected void addFileToJar(JarOutputStream jStream,
-                                File inputFile,
-                                String logicalFilename)
-        throws BuildException {
-        FileInputStream iStream = null;
-        try {
-            if (!addedfiles.contains(logicalFilename)) {
-                iStream = new FileInputStream(inputFile);
-                // Create the zip entry and add it to the jar file
-                ZipEntry zipEntry = new ZipEntry(logicalFilename.replace('\\','/'));
-                jStream.putNextEntry(zipEntry);
-                   
-                // Create the file input stream, and buffer everything over
-                // to the jar output stream
-                byte[] byteBuffer = new byte[2 * 1024];
-                int count = 0;
-                do {
-                    jStream.write(byteBuffer, 0, count);
-                    count = iStream.read(byteBuffer, 0, byteBuffer.length);
-                } while (count != -1);
-                
-                //add it to list of files in jar
-                addedfiles.add(logicalFilename);
-           }       
-        }
-        catch (IOException ioe) {
-            String msg = "IOException while adding entry "
-                         + logicalFilename + " to jarfile from " + inputFile.getPath() + "."
-                         + ioe.getMessage();
-            throw new BuildException(msg, ioe);
-        }
-        finally {
-            // Close up the file input stream for the class file
-            if (iStream != null) {
-                try {
-                    iStream.close();
-                }
-                catch (IOException closeException) {}
-            }
-        }
-    }
-
-    protected DescriptorHandler getDescriptorHandler(File srcDir) {
-        return new DescriptorHandler(srcDir);
-    }
-    
-    public void processDescriptor(String descriptorFileName, SAXParser saxParser) {
-        FileInputStream descriptorStream = null;
-
-        try {
-            DescriptorHandler handler = getDescriptorHandler(config.srcDir);
-            
-            /* Parse the ejb deployment descriptor.  While it may not
-             * look like much, we use a SAXParser and an inner class to
-             * get hold of all the classfile names for the descriptor.
-             */
-            descriptorStream = new FileInputStream(new File(config.descriptorDir, descriptorFileName));
-            saxParser.parse(new InputSource(descriptorStream), handler);
-                            
-            Hashtable ejbFiles = handler.getFiles();
-                    
-            // add in support classes if any
-            if (config.supportFileSet != null) {
-                Project project = task.getProject();
-                File supportBaseDir = config.supportFileSet.getDir(project);
-                DirectoryScanner supportScanner = config.supportFileSet.getDirectoryScanner(project);
-                supportScanner.scan();
-                String[] supportFiles = supportScanner.getIncludedFiles();
-                for (int i = 0; i < supportFiles.length; ++i) {
-                    ejbFiles.put(supportFiles[i], new File(supportBaseDir, supportFiles[i]));
-                }
-            }            
-
-            String baseName = "";
-            
-            // Work out what the base name is
-            if (config.baseJarName != null) {
-                baseName = config.baseJarName;
-            } else {
-                int lastSeparatorIndex = descriptorFileName.lastIndexOf(File.separator);
-                int endBaseName = -1;
-                if (lastSeparatorIndex != -1) {
-                    endBaseName = descriptorFileName.indexOf(config.baseNameTerminator, 
-                                                             lastSeparatorIndex);
-                }
-                else {
-                    endBaseName = descriptorFileName.indexOf(config.baseNameTerminator);
-                }
-
-                if (endBaseName != -1) {
-                    baseName = descriptorFileName.substring(0, endBaseName);
-                }
-                baseName = descriptorFileName.substring(0, endBaseName);
-            }
-
-            // First the regular deployment descriptor
-            ejbFiles.put(META_DIR + EJB_DD,
-                         new File(config.descriptorDir, descriptorFileName));
-            
-            // now the vendor specific files, if any             
-            addVendorFiles(ejbFiles, baseName);
-
-            // add any inherited files
-            checkAndAddInherited(ejbFiles);
-
-            // Lastly create File object for the Jar files. If we are using
-            // a flat destination dir, then we need to redefine baseName!
-            if (config.flatDestDir && baseName.length() != 0) {
-                int startName = baseName.lastIndexOf(File.separator);
-                if (startName == -1) {
-                    startName = 0;
-                }
-                
-                int endName   = baseName.length();
-                baseName = baseName.substring(startName, endName);
-            }
-            
-            File jarFile = getVendorOutputJarFile(baseName);
-            
-            // By default we assume we need to build.
-            boolean needBuild = true;
-
-            if (jarFile.exists()) {
-                long    lastBuild = jarFile.lastModified();
-                Iterator fileIter = ejbFiles.values().iterator();
-                // Set the need build to false until we find out otherwise.
-                needBuild = false;
-
-                // Loop through the files seeing if any has been touched
-                // more recently than the destination jar.
-                while( (needBuild == false) && (fileIter.hasNext()) ) {
-                    File currentFile = (File) fileIter.next();
-                    needBuild = ( lastBuild < currentFile.lastModified() );
-                    if (needBuild) {
-                        log("Build needed because " + currentFile.getPath() + " is out of date",
-                            Project.MSG_VERBOSE);
-                    }
-                }
-            }
-            
-            // Check to see if we need a build and start
-            // doing the work!
-            if (needBuild) {
-                // Log that we are going to build...
-                log( "building "
-                              + jarFile.getName()
-                              + " with "
-                              + String.valueOf(ejbFiles.size())
-                              + " files",
-                              Project.MSG_INFO);
-    
-                // Use helper method to write the jarfile
-                writeJar(baseName, jarFile, ejbFiles);
-
-            }
-            else {
-                // Log that the file is up to date...
-                log(jarFile.toString() + " is up to date.",
-                              Project.MSG_VERBOSE);
-            }
-
-        }
-        catch (SAXException se) {
-            String msg = "SAXException while parsing '"
-                + descriptorFileName.toString()
-                + "'. This probably indicates badly-formed XML."
-                + "  Details: "
-                + se.getMessage();
-            throw new BuildException(msg, se);
-        }
-        catch (IOException ioe) {
-            String msg = "IOException while parsing'"
-                + descriptorFileName.toString()
-                + "'.  This probably indicates that the descriptor"
-                + " doesn't exist. Details: "
-                + ioe.getMessage();
-            throw new BuildException(msg, ioe);
-        }
-        finally {
-            if (descriptorStream != null) {
-                try {
-                    descriptorStream.close();
-                }
-                catch (IOException closeException) {}
-            }
-        }
-    }
-    
-    /**
-     * Add any vendor specific files which should be included in the 
-     * EJB Jar.
-     */
-    protected void addVendorFiles(Hashtable ejbFiles, String baseName) {
-        // nothing to add for generic tool.
-    }
-
-
-    /**
-     * Get the vendor specific name of the Jar that will be output. The modification date
-     * of this jar will be checked against the dependent bean classes.
-     */
-    File getVendorOutputJarFile(String baseName) {
-        return new File(destDir, baseName + genericJarSuffix);
-    }
-
-    /**
-     * Method used to encapsulate the writing of the JAR file. Iterates over the
-     * filenames/java.io.Files in the Hashtable stored on the instance variable
-     * ejbFiles.
-     */
-    protected void writeJar(String baseName, File jarfile, Hashtable files) throws BuildException{
-
-        JarOutputStream jarStream = null;
-        try {
-            // clean the addedfiles Vector 
-            addedfiles = new ArrayList();
-
-            /* If the jarfile already exists then whack it and recreate it.
-             * Should probably think of a more elegant way to handle this
-             * so that in case of errors we don't leave people worse off
-             * than when we started =)
-             */
-            if (jarfile.exists()) {
-                jarfile.delete();
-            }
-            jarfile.getParentFile().mkdirs();
-            jarfile.createNewFile();
-            
-            // Create the streams necessary to write the jarfile
-            
-            jarStream = new JarOutputStream(new FileOutputStream(jarfile));
-            jarStream.setMethod(JarOutputStream.DEFLATED);
-            
-            // Loop through all the class files found and add them to the jar
-            for (Iterator entryIterator = files.keySet().iterator(); entryIterator.hasNext(); ) {
-                String entryName = (String) entryIterator.next();
-                File entryFile = (File) files.get(entryName);
-                
-                log("adding file '" + entryName + "'",
-                              Project.MSG_VERBOSE);
-
-                addFileToJar(jarStream, entryFile, entryName);
-
-                // See if there are any inner classes for this class and add them in if there are
-                InnerClassFilenameFilter flt = new InnerClassFilenameFilter(entryFile.getName());
-                File entryDir = entryFile.getParentFile();
-                String[] innerfiles = entryDir.list(flt);
-                for (int i=0, n=innerfiles.length; i < n; i++) {
-            
-                    //get and clean up innerclass name
-                    entryName = entryName.substring(0, entryName.lastIndexOf(entryFile.getName())-1) + File.separatorChar + innerfiles[i];
-        
-                    // link the file
-                    entryFile = new File(config.srcDir, entryName);
-        
-                    log("adding innerclass file '" + entryName + "'", 
-                            Project.MSG_VERBOSE);
-        
-                    addFileToJar(jarStream, entryFile, entryName);
-        
-                }
-            }
-        }
-        catch(IOException ioe) {
-            String msg = "IOException while processing ejb-jar file '"
-                + jarfile.toString()
-                + "'. Details: "
-                + ioe.getMessage();
-            throw new BuildException(msg, ioe);
-        }
-        finally {
-            if (jarStream != null) {
-                try {
-                    jarStream.close();
-                }
-                catch (IOException closeException) {}
-            }
-        }
-    } // end of writeJar
-
-    /**
-     * Check if a EJB Class Inherits from a Superclass, and if a Remote Interface
-     * extends an interface other then javax.ejb.EJBObject directly.  Then add those 
-     * classes to the generic-jar so they dont have to added elsewhere.
-     *
-     */
-    protected void checkAndAddInherited(Hashtable checkEntries) throws BuildException
-    {
-        //Copy hashtable so were not changing the one we iterate through
-        Hashtable copiedHash = (Hashtable)checkEntries.clone();
-
-        // Walk base level EJBs and see if they have superclasses or extend extra interfaces which extend EJBObject
-        for (Iterator entryIterator = copiedHash.keySet().iterator(); entryIterator.hasNext(); ) 
-        {
-            String entryName = (String)entryIterator.next();
-            File entryFile = (File)copiedHash.get(entryName);
-
-            // only want class files, xml doesnt reflect very well =)
-            if (entryName.endsWith(".class"))
-            {
-                String classname = entryName.substring(0,entryName.lastIndexOf(".class")).replace(File.separatorChar,'.');
-                ClassLoader loader = getClassLoaderForBuild();
-                try {
-                    Class c = loader.loadClass(classname);
-
-                    // No primatives!!  sanity check, probably not nessesary
-                    if (!c.isPrimitive())
-                    {
-                        if (c.isInterface()) //get as an interface
-                        {
-                            log("looking at interface " + c.getName(),  Project.MSG_VERBOSE);
-                            Class[] interfaces = c.getInterfaces();
-                            for (int i = 0; i < interfaces.length; i++){
-                                log("     implements " + interfaces[i].getName(),  Project.MSG_VERBOSE);
-                                addInterface(interfaces[i], checkEntries);
-                            }
-                        }
-                        else  // get as a class
-                        {
-                            log("looking at class " + c.getName(),  Project.MSG_VERBOSE);
-                            Class s = c.getSuperclass();
-                            addSuperClass(c.getSuperclass(), checkEntries);
-                        }
-                    } //if primative
-                }
-                catch (ClassNotFoundException cnfe) {
-                    log("Could not load class " + classname + " for super class check", 
-                                  Project.MSG_WARN);
-                }                            
-                catch (NoClassDefFoundError ncdfe) {
-                    log("Could not fully load class " + classname + " for super class check", 
-                                  Project.MSG_WARN);
-                }                            
-            } //if 
-        } // while 
-    }
-
-    private void addInterface(Class theInterface, Hashtable checkEntries) {
-        if (!theInterface.getName().startsWith("java")) // do not add system interfaces
-        { 
-            File interfaceFile = new File(config.srcDir.getAbsolutePath() 
-                                        + File.separatorChar 
-                                        + theInterface.getName().replace('.',File.separatorChar)
-                                        + ".class"
-                                        );
-            if (interfaceFile.exists() && interfaceFile.isFile())
-            {
-                checkEntries.put(theInterface.getName().replace('.',File.separatorChar)+".class",
-                                 interfaceFile);
-                Class[] superInterfaces = theInterface.getInterfaces();
-                for (int i = 0; i < superInterfaces.length; i++) {
-                    addInterface(superInterfaces[i], checkEntries);
-                }
-            }
-        }
-    }
-     
-    private void addSuperClass(Class superClass, Hashtable checkEntries) {
-    
-        if (!superClass.getName().startsWith("java"))
-        {
-            File superClassFile = new File(config.srcDir.getAbsolutePath() 
-                                            + File.separatorChar 
-                                            + superClass.getName().replace('.',File.separatorChar)
-                                            + ".class");
-            if (superClassFile.exists() && superClassFile.isFile())
-            {
-                checkEntries.put(superClass.getName().replace('.',File.separatorChar) + ".class", 
-                                 superClassFile);
-                
-                // now need to get super classes and interfaces for this class
-                Class[] superInterfaces = superClass.getInterfaces();
-                for (int i = 0; i < superInterfaces.length; i++) {
-                    addInterface(superInterfaces[i], checkEntries);
-                }
-                
-                addSuperClass(superClass.getSuperclass(), checkEntries);
-            }               
-        }
-    }
-    
-    /**
-     * Returns a Classloader object which parses the passed in generic EjbJar classpath.
-     * The loader is used to dynamically load classes from javax.ejb.* and the classes 
-     * being added to the jar.
-     *
-     */ 
-    protected ClassLoader getClassLoaderForBuild()
-    {
-        if (classpathLoader != null) {
-            return classpathLoader;
-        }
-        
-        Path combinedClasspath = getCombinedClasspath();
-        
-        // only generate a new ClassLoader if we have a classpath
-        if (combinedClasspath == null) {
-            classpathLoader = getClass().getClassLoader();
-        }
-        else {
-            classpathLoader = new AntClassLoader(getTask().getProject(), combinedClasspath);
-        }
-        
-        return classpathLoader;
-    }
- 
-    /**
-     * Called to validate that the tool parameters have been configured.
-     *
-     */
-    public void validateConfigured() throws BuildException {
-        if (destDir == null) {
-            throw new BuildException("The destdir attribute must be specified");
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/InnerClassFilenameFilter.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/InnerClassFilenameFilter.java
deleted file mode 100644
index 48c892a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/InnerClassFilenameFilter.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-import java.io.*;
-
-public class InnerClassFilenameFilter implements FilenameFilter {
-    private String baseClassName;
-
-    InnerClassFilenameFilter(String baseclass){
-        int extidx = baseclass.lastIndexOf(".class");
-        if (extidx == -1) {
-            extidx = baseclass.length()-1;
-        }
-        baseClassName = baseclass.substring(0,extidx);
-    }
-
-    public boolean accept (File Dir, String filename){
-        if ((filename.lastIndexOf(".") != filename.lastIndexOf(".class")) 
-            || (filename.indexOf(baseClassName + "$") != 0)) {
-            return false;
-        }
-        return true;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLRun.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLRun.java
deleted file mode 100644
index 0322db7..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLRun.java
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000, 2001 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-
-/**
- * Execute a Weblogic server.
- 
- *
- * @author <a href="mailto:conor@cortexebusiness.com.au">Conor MacNeill</a>, Cortex ebusiness Pty Limited
- */
-public class WLRun extends Task {
-    static protected final String DEFAULT_WL51_POLICY_FILE = "weblogic.policy";
-    static protected final String DEFAULT_WL60_POLICY_FILE = "lib/weblogic.policy";
-    static protected final String DEFAULT_PROPERTIES_FILE = "weblogic.properties";
-
-    /**
-     * The classpath to be used when running the Java VM. It must contain the weblogic
-     * classes <b>and</b> the implementation classes of the home and remote interfaces.
-     */
-    private Path classpath;
-
-    /**
-     * The weblogic classpath to the be used when running weblogic.
-     */
-    private Path weblogicClasspath;
-
-    private String weblogicMainClass = "weblogic.Server";
-    
-    /**
-     * Addional arguments to pass to the JVM used to run weblogic
-     */
-    private String additionalArgs = "";
-    
-    /**
-     * The security policy to use when running the weblogic server
-     */
-    private String securityPolicy;
-    
-    /**
-     * The weblogic system home directory
-     */
-    private File weblogicSystemHome;
-
-    /**
-     * The weblogic domain
-     */
-    private String weblogicDomainName;
-    
-    /**
-     * The name of the weblogic server - used to select the server's directory in the 
-     * weblogic home directory.
-     */
-    private String weblogicSystemName = "myserver";
-    
-    /**
-     * The file containing the weblogic properties for this server.
-     */
-    private String weblogicPropertiesFile = null;
-
-    /**
-     * additional args to pass to the spawned jvm
-     */
-    private String additionalJvmArgs = "";
-
-    /**
-     * The location of the BEA Home under which this server is run.
-     * WL6 only
-     */
-    private File beaHome = null;
-
-    /**
-     * The management username
-     */
-    private String managementUsername = "system";
-    
-    /**
-     * The management password
-     */
-    private String managementPassword = null;
-
-    /**
-     * The provate key password - used for SSL
-     */
-    private String pkPassword = null;
-
-    /**
-     * Add the classpath for the user classes
-     */
-    public Path createClasspath() {
-        if (classpath == null) {
-            classpath = new Path(project);
-        }
-        return classpath.createPath();
-    }
-
-    /**
-     * Get the classpath to the weblogic classpaths
-     */
-    public Path createWLClasspath() {
-        if (weblogicClasspath == null) {
-            weblogicClasspath = new Path(project);
-        }
-        return weblogicClasspath.createPath();
-    }
-
-    /**
-     * Do the work.
-     *
-     * The work is actually done by creating a separate JVM to run a helper task. 
-     * This approach allows the classpath of the helper task to be set. Since the 
-     * weblogic tools require the class files of the project's home and remote 
-     * interfaces to be available in the classpath, this also avoids having to 
-     * start ant with the class path of the project it is building.
-     *
-     * @exception BuildException if someting goes wrong with the build
-     */
-    public void execute() throws BuildException {
-        if (weblogicSystemHome == null) {
-            throw new BuildException("weblogic home must be set");
-        }
-        if (!weblogicSystemHome.isDirectory()) {
-            throw new BuildException("weblogic home directory " + weblogicSystemHome.getPath() + 
-                                     " is not valid");
-        }
-
-        if (beaHome != null) {
-            executeWLS6();
-        }
-        else {
-            executeWLS();
-        }
-    }
-    
-    private void executeWLS6() {
-        
-        if (!beaHome.isDirectory()) {
-            throw new BuildException("BEA home " + beaHome.getPath() + 
-                                     " is not valid");
-        }
-        
-        File securityPolicyFile = null;
-        if (securityPolicy == null) {
-            securityPolicyFile = new File(weblogicSystemHome, DEFAULT_WL60_POLICY_FILE);
-        }
-        else {
-            securityPolicyFile = new File(weblogicSystemHome, securityPolicy);
-        }
-
-        File configFile = new File(weblogicSystemHome, "config/" + weblogicDomainName + "/config.xml");
-        if (!configFile.exists()) {
-            throw new BuildException("Server config file " + configFile + " not found.");
-        }
-        
-        if (managementPassword == null) {
-            throw new BuildException("You must supply a management password to start the server");
-        }
-
-        Java weblogicServer = (Java)project.createTask("java");
-        weblogicServer.setTaskName(getTaskName());
-        weblogicServer.setFork(true);
-        weblogicServer.setDir(weblogicSystemHome);
-        weblogicServer.setClassname(weblogicMainClass);
-
-        String jvmArgs = additionalJvmArgs;
-        
-        jvmArgs += " -Dweblogic.Domain=" + weblogicDomainName;
-        jvmArgs += " -Dweblogic.Name=" + weblogicSystemName;
-        jvmArgs += " -Dweblogic.system.home=" + weblogicSystemHome;
-
-        jvmArgs += " -Dbea.home=" + beaHome;
-        jvmArgs += " -Djava.security.policy==" + securityPolicyFile;
-        
-        jvmArgs += " -Dweblogic.management.username=" + managementUsername;
-        jvmArgs += " -Dweblogic.management.password=" + managementPassword;
-        if (pkPassword != null) {
-            jvmArgs += " -Dweblogic.pkpassword=" + pkPassword;
-        }
-        
-
-        weblogicServer.createJvmarg().setLine(jvmArgs);
-        weblogicServer.createArg().setLine(additionalArgs);
-        
-        if (classpath != null) {
-            weblogicServer.setClasspath(classpath);                         
-        }
-            
-        if (weblogicServer.executeJava() != 0) {                         
-            throw new BuildException("Execution of weblogic server failed");
-        }
-     }
-    
-    private void executeWLS() {
-
-        File propertiesFile = null;
-        
-        if (weblogicPropertiesFile == null) {
-            propertiesFile = new File(weblogicSystemHome, DEFAULT_PROPERTIES_FILE);
-        }
-        else {
-            propertiesFile = new File(weblogicSystemHome, weblogicPropertiesFile);
-        }
-        if (!propertiesFile.exists()) {
-            throw new BuildException("Properties file " + weblogicPropertiesFile +
-                                     " not found in weblogic home " + weblogicSystemHome);
-        }
-
-        File securityPolicyFile = null;
-        if (securityPolicy == null) {
-            securityPolicyFile = new File(weblogicSystemHome, DEFAULT_WL51_POLICY_FILE);
-        }
-        else {
-            securityPolicyFile = new File(weblogicSystemHome, securityPolicy);
-        }
-        
-        if (!securityPolicyFile.exists()) {
-            throw new BuildException("Security policy " + securityPolicyFile +
-                                     " was not found.");
-        }
-
-        Java weblogicServer = (Java)project.createTask("java");
-        weblogicServer.setTaskName(getTaskName());
-        weblogicServer.setFork(true);
-        weblogicServer.setClassname(weblogicMainClass);
-
-        String jvmArgs = additionalJvmArgs;
-        
-        if (weblogicClasspath != null) {
-            jvmArgs += " -Dweblogic.class.path=" + weblogicClasspath;
-        }
-            
-        jvmArgs += " -Djava.security.manager -Djava.security.policy==" + securityPolicyFile;
-        jvmArgs += " -Dweblogic.system.home=" + weblogicSystemHome;
-        jvmArgs += " -Dweblogic.system.name=" + weblogicSystemName;
-        jvmArgs += " -Dweblogic.system.propertiesFile=" + weblogicPropertiesFile;
-
-        weblogicServer.createJvmarg().setLine(jvmArgs);
-        weblogicServer.createArg().setLine(additionalArgs);
-        
-        if (classpath != null) {
-            weblogicServer.setClasspath(classpath);                         
-        }
-        if (weblogicServer.executeJava() != 0) {                         
-            throw new BuildException("Execution of weblogic server failed");
-        }
-    }
-
-    
-    /**
-     * Set the classpath to be used for this execution.
-     *
-     * @param s the classpath to use when executing the weblogic server.
-     */
-    public void setClasspath(Path classpath) {
-        this.classpath = classpath;
-    }
-    
-    /**
-     * Set the weblogic classpath.
-     *
-     * The weblogic classpath is used by weblogic to support dynamic class loading.
-     *
-     * @param weblogicClasspath the weblogic classpath
-     */
-    public void setWlclasspath(Path weblogicClasspath) {
-        this.weblogicClasspath = weblogicClasspath;
-    }
-    
-    /**
-     * Set the security policy for this invocation of weblogic.
-     *
-     * @param securityPolicy the security policy to use.
-     */
-    public void setPolicy(String securityPolicy) {
-        this.securityPolicy = securityPolicy;
-    }
-    
-    /**
-     * The location where weblogic lives.
-     *
-     * @param weblogicHome the home directory of weblogic.
-     *
-     */
-    public void setHome(File weblogicHome) {
-        weblogicSystemHome = weblogicHome;
-    }
-
-    /**
-     * The location of the BEA Home.
-     *
-     * @param beaHome the BEA Home directory.
-     *
-     */
-    public void setBEAHome(File beaHome) {
-        this.beaHome = beaHome;
-    }
-    
-    /**
-     * Set the name of the server to run
-     *
-     * @param systemName the name of the server.
-     */
-    public void setName(String serverName) {
-        this.weblogicSystemName = serverName;
-    }
-    
-    /**
-     * Set the Domain to run in
-     *
-     * @param domain the domain
-     */
-    public void setDomain(String domain) {
-        this.weblogicDomainName = domain;
-    }
-    
-    /**
-     * Set the properties file to use.
-     *
-     * The location of the properties file is relative to the weblogi system home
-     *
-     * @param propertiesFilename the properties file name
-     */
-    public void setProperties(String propertiesFilename) {
-        this.weblogicPropertiesFile = propertiesFilename;
-    }
-
-    /**
-     * Set the additional arguments to pass to the weblogic JVM
-     * @param args the arguments to be passed to the JVM
-     */
-    public void setJvmargs(String args) {
-        this.additionalJvmArgs = args;
-    }
-    
-    /**
-     * Set the management username to run the server
-     *
-     * @param username the management username of the server.
-     */
-    public void setUsername(String username) {
-        this.managementUsername = username;
-    }
-    
-
-    /**
-     * Set the management password of the server
-     *
-     * @param password the management pasword of the server.
-     */
-    public void setPassword(String password) {
-        this.managementPassword = password;
-    }
-    
-    /**
-     * Set the private key password so the server can decrypt the SSL private key file.
-     *
-     * @param pkpassword the private key password,
-     */
-    public void setPKPassword(String pkpassword) {
-        this.pkPassword = pkpassword;
-    }
-    
-    public void setArgs(String args) {
-        additionalArgs = args;
-    }
-
-    
-    public void setWeblogicMainClass(String c) {
-        weblogicMainClass = c;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLStop.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLStop.java
deleted file mode 100644
index 9db3ee6..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLStop.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-
-/**
- * Shutdown a Weblogic server.
- 
- *
- * @author <a href="mailto:conor@cortexebusiness.com.au">Conor MacNeill</a>, Cortex ebusiness Pty Limited
- */
-public class WLStop extends Task {
-    /**
-     * The classpath to be used. It must contains the weblogic.Admin class.
-     */
-    private String classpath;
-
-    /**
-     * The weblogic username to use to request the shutdown.
-     */
-    private String username;
-    
-    /**
-     * The password to use to shutdown the weblogic server.
-     */
-    private String password;
-    
-    /**
-     * The URL which the weblogic server is listening on.
-     */
-    private String serverURL;
-    
-    /**
-     * The delay (in seconds) to wait before shutting down.
-     */
-    private int delay = 0;
-    
-    /**
-     * The location of the BEA Home under which this server is run.
-     * WL6 only
-     */
-    private File beaHome = null;
-
-    /**
-     * Do the work.
-     *
-     * The work is actually done by creating a separate JVM to run the weblogic admin task
-     * This approach allows the classpath of the helper task to be set. 
-     *
-     * @exception BuildException if someting goes wrong with the build
-     */
-    public void execute() throws BuildException {
-        if (username == null || password == null) {
-            throw new BuildException("weblogic username and password must both be set");
-        }
-            
-        if (serverURL == null) {
-            throw new BuildException("The url of the weblogic server must be provided.");
-        }
-
-        String execClassPath = project.translatePath(classpath);
-        
-        Java weblogicAdmin = (Java)project.createTask("java");
-        weblogicAdmin.setFork(true);
-        weblogicAdmin.setClassname("weblogic.Admin");
-        String args;
-        
-        if (beaHome == null) {
-            args = serverURL + " SHUTDOWN " + username + " " + password + " " + delay;
-        }
-        else {
-            args = " -url " + serverURL + 
-                   " -username " + username +
-                   " -password " + password +
-                   " SHUTDOWN " + " " + delay;
-        }            
-
-        weblogicAdmin.setArgs(args);
-        weblogicAdmin.setClasspath(new Path(project, execClassPath));                         
-        weblogicAdmin.execute();
-    }
-    
-    /**
-     * Set the classpath to be used for this compilation.
-     *
-     * @param s the classpath to use when executing the weblogic admin task.
-     */
-    public void setClasspath(String s) {
-        this.classpath = project.translatePath(s);
-    }
-    
-    /**
-     * Set the username to use to request shutdown of the server.
-     *
-     * @param s the username.
-     */
-    public void setUser(String s) {
-        this.username = s;
-    }
-    
-    /**
-     * Set the password to use to request shutdown of the server.
-     *
-     * @param s the password.
-     */
-    public void setPassword(String s) {
-        this.password = s;
-    }
-    
-    /**
-     * Set the URL to which the weblogic server is listening.
-     *
-     * @param s the url.
-     */
-    public void setUrl(String s) {
-        this.serverURL = s;
-    }
-
-
-    /**
-     * Set the delay (in seconds) before shutting down the server.
-     *
-     * @param s the selay.
-     */
-    public void setDelay(String s) {
-        delay = Integer.parseInt(s);
-    }
-
-    /**
-     * The location of the BEA Home.
-     *
-     * @param beaHome the BEA Home directory.
-     *
-     */
-    public void setBEAHome(File beaHome) {
-        this.beaHome = beaHome;
-    }
-    
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
deleted file mode 100644
index ef47671..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
+++ /dev/null
@@ -1,643 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-import java.io.*;
-import java.util.jar.*;
-import java.util.*;
-import java.net.*;
-
-import javax.xml.parsers.*;
-import org.xml.sax.*;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-import org.apache.tools.ant.taskdefs.Java;
-
-public class WeblogicDeploymentTool extends GenericDeploymentTool {
-    public static final String PUBLICID_EJB11
-        = "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN";
-    public static final String PUBLICID_EJB20
-        = "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN";
-
-    public static final String PUBLICID_WEBLOGIC_EJB
-        = "-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN";
-    
-    protected static final String DEFAULT_WL51_EJB11_DTD_LOCATION 
-        = "/weblogic/ejb/deployment/xml/ejb-jar.dtd";
-    protected static final String DEFAULT_WL60_EJB11_DTD_LOCATION 
-        = "/weblogic/ejb20/dd/xml/ejb11-jar.dtd";
-    protected static final String DEFAULT_WL60_EJB20_DTD_LOCATION 
-        = "/weblogic/ejb20/dd/xml/ejb20-jar.dtd";
-
-    protected static final String DEFAULT_WL_DTD_LOCATION 
-        = "/weblogic/ejb/deployment/xml/weblogic-ejb-jar.dtd";
-
-    protected static final String WL_DD = "weblogic-ejb-jar.xml";
-    protected static final String WL_CMP_DD = "weblogic-cmp-rdbms-jar.xml";
-
-    /** Instance variable that stores the suffix for the weblogic jarfile. */
-    private String jarSuffix = ".jar";
-
-    /** Instance variable that stores the location of the weblogic DTD file. */
-    private String weblogicDTD;
-
-    /** Instance variable that stores the location of the ejb 1.1 DTD file. */
-    private String ejb11DTD;
-        
-    /** Instance variable that determines whether generic ejb jars are kept. */
-
-    private boolean keepgenerated = false;
-
-    private String additionalArgs = "";
-
-    private boolean keepGeneric = false;
-
-    private String compiler = null;
-
-    private boolean alwaysRebuild = true;
-
-    /**
-     * Indicates if the old CMP location convention is to be used.
-     */
-    private boolean oldCMP = true;
-
-    /** The classpath to the weblogic classes. */
-    private Path wlClasspath;
-
-    /**
-     * Get the classpath to the weblogic classpaths
-     */
-    public Path createWLClasspath() {
-        if (wlClasspath == null) {
-            wlClasspath = new Path(getTask().getProject());
-        }
-        return wlClasspath.createPath();
-    }
-
-    /**
-     * The compiler (switch <code>-compiler</code>) to use
-     */
-    public void setCompiler(String compiler) {
-        this.compiler = compiler;
-    }
-    
-    /**
-     * Set the rebuild flag to false to only update changes in the
-     * jar rather than rerunning ejbc
-     */
-    public void setRebuild(boolean rebuild) {
-        this.alwaysRebuild = rebuild;
-    }
-    
-
-    /**
-     * Setter used to store the suffix for the generated weblogic jar file.
-     * @param inString the string to use as the suffix.
-     */
-    public void setSuffix(String inString) {
-        this.jarSuffix = inString;
-    }
-
-    /**
-     * Setter used to store the value of keepGeneric
-     * @param inValue a string, either 'true' or 'false'.
-     */
-    public void setKeepgeneric(boolean inValue) {
-        this.keepGeneric = inValue;
-    }
-
-    /**
-     * Sets whether -keepgenerated is passed to ejbc (that is,
-     * the .java source files are kept).
-     * @param inValue either 'true' or 'false'
-     */
-    public void setKeepgenerated(String inValue) {
-        this.keepgenerated = Boolean.valueOf(inValue).booleanValue();
-    }
-
-    /**
-     * sets some additional args to send to ejbc.
-     */
-    public void setArgs(String args) {
-        this.additionalArgs = args;
-    }
-    
-    
-    /**
-     * Setter used to store the location of the ejb-jar DTD. This can be a file on the system 
-     * or a resource on the classpath. 
-     * @param inString the string to use as the DTD location.
-     */
-    public void setWeblogicdtd(String inString) {
-        setEJBdtd(inString);
-    }
-
-    /**
-     * Setter used to store the location of the weblogic DTD. This can be a file on the system 
-     * or a resource on the classpath. 
-     * @param inString the string to use as the DTD location.
-     */
-    public void setWLdtd(String inString) {
-        this.weblogicDTD = inString;
-    }
-
-    /**
-     * Setter used to store the location of the Sun's Generic EJB DTD. 
-     * This can be a file on the system or a resource on the classpath. 
-     * @param inString the string to use as the DTD location.
-     */
-    public void setEJBdtd(String inString) {
-        this.ejb11DTD = inString;
-    }
-
-    /**
-     * Set the value of the oldCMP scheme. The oldCMP scheme locates the 
-     * weblogic CMP descriptor based on the naming convention where the 
-     * weblogic CMP file is expected to be named with the bean name as the prefix.
-     * 
-     * Under this scheme the name of the CMP descriptor does not match the name
-     * actually used in the main weblogic EJB descriptor. Also, descriptors which 
-     * contain multiple CMP references could not be used.
-     *
-     * The old scheme is currently the default, but is also deprecated.
-     */
-    public void setOldCMP(boolean oldCMP) {
-        this.oldCMP = oldCMP;
-    }
-    
-
-    protected DescriptorHandler getDescriptorHandler(File srcDir) {
-        DescriptorHandler handler = new DescriptorHandler(srcDir);
-        // register all the DTDs, both the ones that are known and
-        // any supplied by the user
-        handler.registerDTD(PUBLICID_EJB11, DEFAULT_WL51_EJB11_DTD_LOCATION);
-        handler.registerDTD(PUBLICID_EJB11, DEFAULT_WL60_EJB11_DTD_LOCATION);
-        handler.registerDTD(PUBLICID_EJB11, ejb11DTD);
-        handler.registerDTD(PUBLICID_EJB20, DEFAULT_WL60_EJB20_DTD_LOCATION);
-        
-        
-        for (Iterator i = getConfig().dtdLocations.iterator(); i.hasNext();) {
-            EjbJar.DTDLocation dtdLocation = (EjbJar.DTDLocation)i.next();
-            handler.registerDTD(dtdLocation.getPublicId(), dtdLocation.getLocation());
-        }
-        
-        return handler;                                    
-    }
-
-    protected DescriptorHandler getWeblogicDescriptorHandler(File srcDir) {
-        DescriptorHandler handler = 
-            new DescriptorHandler(srcDir) {        
-                protected void processElement() {
-                    if (currentElement.equals("type-storage")) {
-                        // Get the filename of vendor specific descriptor
-                        String fileNameWithMETA = currentText;
-                        //trim the META_INF\ off of the file name
-                        String fileName = fileNameWithMETA.substring(META_DIR.length(), 
-                                                                     fileNameWithMETA.length() );
-                        File descriptorFile = new File(getConfig().descriptorDir, fileName);
-                        ejbFiles.put(fileNameWithMETA, descriptorFile);
-                    }
-                }
-            };
-
-        handler.registerDTD(PUBLICID_WEBLOGIC_EJB, 
-                            weblogicDTD == null ? DEFAULT_WL_DTD_LOCATION : weblogicDTD);
-        return handler;                                    
-    }
-
-    /**
-     * Add any vendor specific files which should be included in the 
-     * EJB Jar.
-     */
-    protected void addVendorFiles(Hashtable ejbFiles, String baseName) {
-        String ddPrefix = (usingBaseJarName() ? "" : baseName + getConfig().baseNameTerminator);
-
-        File weblogicDD = new File(getConfig().descriptorDir, ddPrefix + WL_DD);
-
-        if (weblogicDD.exists()) {
-            ejbFiles.put(META_DIR + WL_DD,
-                         weblogicDD);
-        }
-        else {
-            log("Unable to locate weblogic deployment descriptor. It was expected to be in " + 
-                weblogicDD.getPath(), Project.MSG_WARN);
-            return;
-        }
-
-        if (oldCMP) {
-            log("The old method for locating CMP files has been DEPRECATED.", Project.MSG_VERBOSE);
-            log("Please adjust your weblogic descriptor and set oldCMP=\"false\" " +
-                "to use the new CMP descriptor inclusion mechanism. ", Project.MSG_VERBOSE);
-            // The the weblogic cmp deployment descriptor
-            File weblogicCMPDD = new File(getConfig().descriptorDir, ddPrefix + WL_CMP_DD);
-                
-            if (weblogicCMPDD.exists()) {
-                ejbFiles.put(META_DIR + WL_CMP_DD,
-                             weblogicCMPDD);
-            }
-        }
-        else {
-            // now that we have the weblogic descriptor, we parse the file
-            // to find other descriptors needed to deploy the bean.
-            // this could be the weblogic-cmp-rdbms.xml or any other O/R
-            // mapping tool descriptors.
-            try
-            {
-                File ejbDescriptor = (File)ejbFiles.get(META_DIR + EJB_DD);
-                SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
-                saxParserFactory.setValidating(true);
-                SAXParser saxParser = saxParserFactory.newSAXParser();
-                DescriptorHandler handler = getWeblogicDescriptorHandler(ejbDescriptor.getParentFile());
-                saxParser.parse(new InputSource
-                                (new FileInputStream
-                                (weblogicDD)),
-                                handler);
-                                
-                Hashtable ht = handler.getFiles();
-                Enumeration e = ht.keys();
-                while(e.hasMoreElements()){
-                    String key = (String)e.nextElement();
-                    ejbFiles.put(key, ht.get(key));
-                }
-            }
-            catch(Exception e)
-            { 
-                String msg = "Exception while adding Vendor specific files: " + e.toString();
-                throw new BuildException(msg, e);
-            }
-        }
-    }
-    
-    /**
-     * Get the vendor specific name of the Jar that will be output. The modification date
-     * of this jar will be checked against the dependent bean classes.
-     */
-    File getVendorOutputJarFile(String baseName) {
-        return new File(getDestDir(), baseName + jarSuffix);
-    }
-
-    /**
-     * Helper method invoked by execute() for each WebLogic jar to be built.
-     * Encapsulates the logic of constructing a java task for calling
-     * weblogic.ejbc and executing it.
-     * @param sourceJar java.io.File representing the source (EJB1.1) jarfile.
-     * @param destJar java.io.File representing the destination, WebLogic
-     *        jarfile.
-     */
-    private void buildWeblogicJar(File sourceJar, File destJar) {
-        org.apache.tools.ant.taskdefs.Java javaTask = null;
-        
-        try {
-            String args = additionalArgs;
-            if (keepgenerated) {
-                args += " -keepgenerated";
-            }
-            
-            if (compiler != null) {
-                args += " -compiler " + compiler;
-            }
-            
-            args += " -noexit " + sourceJar.getPath() + " " + destJar.getPath();
-            
-            javaTask = (Java) getTask().getProject().createTask("java");
-            javaTask.setTaskName("ejbc");
-            javaTask.setClassname("weblogic.ejbc");
-            Commandline.Argument arguments = javaTask.createArg();
-            arguments.setLine(args);
-            Path classpath = wlClasspath;
-            if (classpath == null) {
-                classpath = getCombinedClasspath();
-            }
-            
-            if (classpath != null) {
-                javaTask.setClasspath(classpath);
-                javaTask.setFork(true);
-            }
-            else {
-                javaTask.setFork(false);
-            }
-            
-
-            log("Calling weblogic.ejbc for " + sourceJar.toString(),
-                          Project.MSG_VERBOSE);
-
-            javaTask.execute();
-        }
-        catch (Exception e) {
-            // Have to catch this because of the semantics of calling main()
-            String msg = "Exception while calling ejbc. Details: " + e.toString();
-            throw new BuildException(msg, e);
-        }
-    }
-
-    /**
-     * Method used to encapsulate the writing of the JAR file. Iterates over the
-     * filenames/java.io.Files in the Hashtable stored on the instance variable
-     * ejbFiles.
-     */
-    protected void writeJar(String baseName, File jarFile, Hashtable files) throws BuildException {
-        // need to create a generic jar first.
-        File genericJarFile = super.getVendorOutputJarFile(baseName);
-        super.writeJar(baseName, genericJarFile, files);
-        
-        if (alwaysRebuild || isRebuildRequired(genericJarFile, jarFile))
-        {
-            buildWeblogicJar(genericJarFile, jarFile);
-        }
-        if (!keepGeneric) {
-             log("deleting generic jar " + genericJarFile.toString(),
-                           Project.MSG_VERBOSE);
-             genericJarFile.delete();
-        }
-    }
-
-    /**
-     * Called to validate that the tool parameters have been configured.
-     *
-     */
-    public void validateConfigured() throws BuildException {
-        super.validateConfigured();
-    }
-
-    
-    /**
-     * Helper method to check to see if a weblogic EBJ1.1 jar needs to be rebuilt using 
-     * ejbc.  Called from writeJar it sees if the "Bean" classes  are the only thing that needs
-     * to be updated and either updates the Jar with the Bean classfile or returns true,
-     * saying that the whole weblogic jar needs to be regened with ejbc.  This allows faster 
-     * build times for working developers.
-     * <p>
-     * The way weblogic ejbc works is it creates wrappers for the publicly defined methods as 
-     * they are exposed in the remote interface.  If the actual bean changes without changing the 
-     * the method signatures then only the bean classfile needs to be updated and the rest of the 
-     * weblogic jar file can remain the same.  If the Interfaces, ie. the method signatures change 
-     * or if the xml deployment dicriptors changed, the whole jar needs to be rebuilt with ejbc.  
-     * This is not strictly true for the xml files.  If the JNDI name changes then the jar doesnt
-     * have to be rebuild, but if the resources references change then it does.  At this point the
-     * weblogic jar gets rebuilt if the xml files change at all.
-     *
-     * @param genericJarFile java.io.File The generic jar file.
-     * @param weblogicJarFile java.io.File The weblogic jar file to check to see if it needs to be rebuilt.
-     */
-    protected boolean isRebuildRequired(File genericJarFile, File weblogicJarFile)
-    {
-        boolean rebuild = false;
-
-        JarFile genericJar = null;
-        JarFile wlJar = null;
-        File newWLJarFile = null;
-        JarOutputStream newJarStream = null;
-        
-        try 
-        {
-            log("Checking if weblogic Jar needs to be rebuilt for jar " + weblogicJarFile.getName(),
-                Project.MSG_VERBOSE);
-            // Only go forward if the generic and the weblogic file both exist
-            if (genericJarFile.exists() && genericJarFile.isFile() 
-                && weblogicJarFile.exists() && weblogicJarFile.isFile())
-            {
-                //open jar files
-                genericJar = new JarFile(genericJarFile);
-                wlJar = new JarFile(weblogicJarFile);
-
-                Hashtable genericEntries = new Hashtable();
-                Hashtable wlEntries = new Hashtable();
-                Hashtable replaceEntries = new Hashtable();
-                
-                //get the list of generic jar entries
-                for (Enumeration e = genericJar.entries(); e.hasMoreElements();)
-                {
-                    JarEntry je = (JarEntry)e.nextElement();
-                    genericEntries.put(je.getName().replace('\\', '/'), je);
-                }
-                //get the list of weblogic jar entries
-                for (Enumeration e = wlJar.entries() ; e.hasMoreElements();)
-                {
-                    JarEntry je = (JarEntry)e.nextElement();
-                    wlEntries.put(je.getName(), je);
-                }
-
-                //Cycle Through generic and make sure its in weblogic
-                ClassLoader genericLoader = getClassLoaderFromJar(genericJarFile);
-                for (Enumeration e = genericEntries.keys(); e.hasMoreElements();)
-                {
-                    String filepath = (String)e.nextElement();
-                    if (wlEntries.containsKey(filepath))    // File name/path match
-                    {
-                        // Check files see if same
-                        JarEntry genericEntry = (JarEntry)genericEntries.get(filepath);
-                        JarEntry wlEntry = (JarEntry)wlEntries.get(filepath);
-                        if ((genericEntry.getCrc() !=  wlEntry.getCrc())  || // Crc's Match
-                            (genericEntry.getSize() != wlEntry.getSize()) ) // Size Match
-                        {
-                            if (genericEntry.getName().endsWith(".class"))
-                            {
-                                //File are different see if its an object or an interface
-                                String classname = genericEntry.getName().replace(File.separatorChar,'.');
-                                classname = classname.substring(0,classname.lastIndexOf(".class"));
-                                Class genclass = genericLoader.loadClass(classname);
-                                if (genclass.isInterface())
-                                {
-                                    //Interface changed   rebuild jar.
-                                    log("Interface " + genclass.getName() + " has changed",Project.MSG_VERBOSE);
-                                    rebuild = true;
-                                    break;
-                                }
-                                else
-                                {
-                                    //Object class Changed   update it.
-                                    replaceEntries.put(filepath, genericEntry);
-                                }
-                            }
-                            else
-                            {
-                                //File other then class changed   rebuild
-                                log("Non class file " + genericEntry.getName() + " has changed",Project.MSG_VERBOSE);
-                                rebuild = true;
-                                break;
-                            }
-                        }
-                    }
-                    else // a file doesnt exist rebuild
-                    {
-                        log("File " + filepath + " not present in weblogic jar",Project.MSG_VERBOSE);
-                        rebuild =  true;
-                        break;
-                    }
-                }
-                
-                if (!rebuild)
-                {
-                    log("No rebuild needed - updating jar",Project.MSG_VERBOSE);
-                    newWLJarFile = new File(weblogicJarFile.getAbsolutePath() + ".temp");
-                    if (newWLJarFile.exists()) {
-                        newWLJarFile.delete();
-                    }
-                    
-                    newJarStream = new JarOutputStream(new FileOutputStream(newWLJarFile));
-                    newJarStream.setLevel(0);
-                    
-                    //Copy files from old weblogic jar
-                    for (Enumeration e = wlEntries.elements() ; e.hasMoreElements();)
-                    {
-                        byte[] buffer = new byte[1024];
-                        int bytesRead;
-                        InputStream is;
-                        JarEntry je = (JarEntry)e.nextElement();
-                        if (je.getCompressedSize() == -1 ||
-                                je.getCompressedSize() == je.getSize()) {
-                            newJarStream.setLevel(0);
-                        }
-                        else {
-                            newJarStream.setLevel(9);
-                        }
-                            
-                        // Update with changed Bean class
-                        if (replaceEntries.containsKey(je.getName()))
-                        {
-                            log("Updating Bean class from generic Jar " + je.getName(),Project.MSG_VERBOSE);
-                            // Use the entry from the generic jar
-                            je = (JarEntry)replaceEntries.get(je.getName());
-                            is = genericJar.getInputStream(je);
-                        }   
-                        else  //use fle from original weblogic jar
-                        {
-                            is = wlJar.getInputStream(je);
-                        }
-                        newJarStream.putNextEntry(new JarEntry(je.getName()));
-
-                        while ((bytesRead = is.read(buffer)) != -1)
-                        {
-                            newJarStream.write(buffer,0,bytesRead);
-                        }
-                        is.close();
-                    }
-                }
-                else
-                {
-                    log("Weblogic Jar rebuild needed due to changed interface or XML",Project.MSG_VERBOSE);
-                }       
-            }
-            else
-            {
-                rebuild = true;
-            }
-        }
-        catch(ClassNotFoundException cnfe)
-        {
-            String cnfmsg = "ClassNotFoundException while processing ejb-jar file"
-                + ". Details: "
-                + cnfe.getMessage();
-            throw new BuildException(cnfmsg, cnfe);
-        }
-        catch(IOException ioe) {
-            String msg = "IOException while processing ejb-jar file "
-                + ". Details: "
-                + ioe.getMessage();
-            throw new BuildException(msg, ioe);
-        }
-        finally {
-            // need to close files and perhaps rename output
-            if (genericJar != null) {
-                try {
-                    genericJar.close();
-                }
-                catch (IOException closeException) {}
-            }
-            
-            if (wlJar != null) {
-                try {
-                    wlJar.close();
-                }
-                catch (IOException closeException) {}
-            }
-            
-            if (newJarStream != null) {
-                try {
-                    newJarStream.close();
-                }
-                catch (IOException closeException) {}
-
-                weblogicJarFile.delete();
-                newWLJarFile.renameTo(weblogicJarFile);
-                if (!weblogicJarFile.exists()) {
-                    rebuild = true;
-                }
-            }
-        }
-
-        return rebuild;
-    }
-    
-    /**
-    * Helper method invoked by isRebuildRequired to get a ClassLoader for 
-    * a Jar File passed to it.
-    *
-    * @param classjar java.io.File representing jar file to get classes from.
-    */
-    protected ClassLoader getClassLoaderFromJar(File classjar) throws IOException
-    {
-        Path lookupPath = new Path(getTask().getProject());
-        lookupPath.setLocation(classjar);
-        
-        Path classpath = getCombinedClasspath();
-        if (classpath != null) {
-            lookupPath.append(classpath);
-        }
-        
-        return new AntClassLoader(getTask().getProject(), lookupPath);
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicTOPLinkDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicTOPLinkDeploymentTool.java
deleted file mode 100644
index 02aa7dd..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicTOPLinkDeploymentTool.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.ejb;
-
-import java.io.*;
-import java.util.*;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-
-public class WeblogicTOPLinkDeploymentTool extends WeblogicDeploymentTool {
-
-    private static final String TL_DTD_LOC = "http://www.objectpeople.com/tlwl/dtd/toplink-cmp_2_5_1.dtd";
-
-    private String toplinkDescriptor;
-    private String toplinkDTD;
-    
-    /**
-     * Setter used to store the name of the toplink descriptor.
-     * @param inString the string to use as the descriptor name.
-     */
-    public void setToplinkdescriptor(String inString) {
-        this.toplinkDescriptor = inString;
-    }
-
-    /**
-     * Setter used to store the location of the toplink DTD file.
-     * This is expected to be an URL (file or otherwise). If running this on NT using a file URL, the safest 
-     * thing would be to not use a drive spec in the URL and make sure the file resides on the drive that 
-     * ANT is running from.  This will keep the setting in the build XML platform independent.
-     * @param inString the string to use as the DTD location.
-     */
-    public void setToplinkdtd(String inString) {
-        this.toplinkDTD = inString;
-    }
-
-    protected DescriptorHandler getDescriptorHandler(File srcDir) {
-        DescriptorHandler handler = super.getDescriptorHandler(srcDir);
-        if (toplinkDTD != null) {
-            handler.registerDTD("-//The Object People, Inc.//DTD TOPLink for WebLogic CMP 2.5.1//EN",
-                                toplinkDTD);
-        } else {
-            handler.registerDTD("-//The Object People, Inc.//DTD TOPLink for WebLogic CMP 2.5.1//EN",
-                                TL_DTD_LOC);
-        }
-        return handler;                                    
-    }
-
-    /**
-     * Add any vendor specific files which should be included in the 
-     * EJB Jar.
-     */
-    protected void addVendorFiles(Hashtable ejbFiles, String baseName) {
-        super.addVendorFiles(ejbFiles, baseName);
-        // Then the toplink deployment descriptor
-
-        // Setup a naming standard here?.
-
-
-        File toplinkDD = null;
-        if (usingBaseJarName()) {
-            toplinkDD = new File(getConfig().descriptorDir, toplinkDescriptor);
-        }
-        else {
-            String ddPrefix = baseName + getConfig().baseNameTerminator;
-            File actualDir = (new File(getConfig().descriptorDir, ddPrefix)).getParentFile();
-            toplinkDD = new File(actualDir, toplinkDescriptor);
-        }
-        
-        if (toplinkDD.exists()) {
-            ejbFiles.put(META_DIR + toplinkDescriptor,
-                         toplinkDD);
-        }
-        else {
-            log("Unable to locate toplink deployment descriptor. It was expected to be in " + 
-                toplinkDD.getPath(), Project.MSG_WARN);
-        }                
-    }
-    
-    /**
-     * Called to validate that the tool parameters have been configured.
-     *
-     */
-    public void validateConfigured() throws BuildException {
-        super.validateConfigured();
-        if (toplinkDescriptor == null) {
-            throw new BuildException( "The toplinkdescriptor attribute must be specified" );
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJAntTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJAntTool.java
deleted file mode 100644
index 6fdbe83..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJAntTool.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.apache.tools.ant.taskdefs.optional.ide;
-
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-import com.ibm.ivj.util.base.Project;
-import com.ibm.ivj.util.base.ToolData;
-import com.ibm.ivj.util.base.IvjException;
-import org.apache.tools.ant.BuildException;
-
-/**
- * This class is the equivalent to org.apache.tools.ant.Main for the
- * VAJ tool environment. It's main is called when the user selects
- * Tools->Ant Build from the VAJ project menu.
- * Additionally this class provides methods to save build info for
- * a project in the repository and load it from the repository
- *
- * @author: Wolf Siberski
- */
-public class VAJAntTool {
-	private static final String TOOL_DATA_KEY = "AntTool";
-/**
- * Loads the BuildInfo for the specified VAJ project from the
- * tool data for this project.
- * If there is no build info stored for that project, a new
- * default BuildInfo is returned
- * 
- * @return BuildInfo buildInfo build info for the specified project
- * @param projectName String project name
- */
-public static VAJBuildInfo loadBuildData(String projectName) {
-	VAJBuildInfo result = null;
-	try {
-		Project project = VAJUtil.getWorkspace().loadedProjectNamed( projectName );
-		if ( project.testToolRepositoryData(TOOL_DATA_KEY) ) {
-			ToolData td = project.getToolRepositoryData(TOOL_DATA_KEY);
-			String data = (String)td.getData();
-			result = VAJBuildInfo.parse( data );
-		} else {
-			result = new VAJBuildInfo();
-		}
-		result.setVAJProjectName( projectName );
-	} catch (Throwable t) {
-		System.out.println("BuildInfo for Project " + projectName + 
-			" could not be loaded" + t);
-		throw new BuildException(t);
-	}
-	return result;
-}
-/**
- * Starts the application.
- * @param args an array of command-line arguments
- */
-public static void main(java.lang.String[] args) {
-	VAJBuildInfo info;
-	if ( args.length >= 2 && args[1] instanceof String ) {
-		String projectName = (String)args[1];
-		info = loadBuildData( projectName );
-	} 
-	else {
-		info = new VAJBuildInfo();
-	}
-	
-	VAJAntToolGUI mainFrame = new VAJAntToolGUI( info );
-	mainFrame.show();
-}
-/**
- * Saves the BuildInfo for a project in the VAJ repository.
- * @param info BuildInfo build info to save
- */
-public static void saveBuildData(VAJBuildInfo info) {
-	String data = info.asDataString();
-	try {
-		ToolData td = new ToolData( TOOL_DATA_KEY, data );
-		VAJUtil.getWorkspace().loadedProjectNamed( info.getVAJProjectName() ).setToolRepositoryData( td );
-	} catch (Throwable t) {
-		throw new BuildException("BuildInfo for Project " + info.getVAJProjectName() + 
-			" could not be saved", t);
-	}
-}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJAntToolGUI.java b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJAntToolGUI.java
deleted file mode 100644
index 77112ca..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJAntToolGUI.java
+++ /dev/null
@@ -1,1391 +0,0 @@
-package org.apache.tools.ant.taskdefs.optional.ide;
-
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-import java.util.Vector;
-import java.awt.Frame;
-import java.awt.Dialog;
-import java.awt.Panel;
-import java.awt.MenuBar;
-import java.awt.Menu;
-import java.awt.MenuItem;
-import java.awt.Label;
-import java.awt.TextField;
-import java.awt.TextArea;
-import java.awt.List;
-import java.awt.Choice;
-import java.awt.Button;
-import java.awt.FileDialog;
-import java.awt.FlowLayout;
-import java.awt.BorderLayout;
-import java.awt.GridBagLayout;
-import java.awt.GridBagConstraints;
-import java.awt.Insets;
-import java.awt.Toolkit;
-import java.awt.Font;
-import java.awt.SystemColor;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemListener;
-import java.awt.event.TextListener;
-import java.awt.event.WindowListener;
-import java.awt.event.ActionEvent;
-import java.awt.event.ItemEvent;
-import java.awt.event.TextEvent;
-import java.awt.event.WindowEvent;
-import java.beans.PropertyChangeListener;
-import org.apache.tools.ant.Main;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.BuildEvent;
-import org.apache.tools.ant.Project;
-
-/**
- * This is a simple grafical user interface to provide the information needed by ANT and
- * to start the build-process within IBM VisualAge for Java.
- * <p>
- * I was using AWT to make it independent from the JDK-version. Please don't ask me for a Swing-version:
- * I am very familiar with Swing and I really think that it's not necessary for such a simple gui!
- * <p>
- * It is completely developed in VAJ using the visual composition editor. About 90% of the code is generated by VAJ,
- * but in fact I did a lot of <i>code-beautification</i> ;-).
- * <p>
- * @version 1.0 h
- * @author: Christoph Wilhelms, TUI Infotec GmbH
- */
-public class VAJAntToolGUI extends Frame {
-	/**
-	 * Members 
-	 */
-	private VAJBuildLogger logger = new VAJBuildLogger();
-	private String lineSeparator = "\r\n";
-	private PrivateEventHandler iEventHandler = new PrivateEventHandler();
-
-	/**
-	 * Members of the main-window
-	 */
-	// main model
-	private VAJBuildInfo iBuildInfo = null;
-	// Menue
-	private MenuBar iAntMakeMenuBar = null;
-	private Menu iFileMenu = null;
-	private MenuItem iSaveMenuItem = null;
-	private MenuItem iMenuSeparator = null;
-	private MenuItem iShowLogMenuItem = null;
-	private Menu iHelpMenu = null;
-	private MenuItem iAboutMenuItem = null;
-	// Container
-	private Panel iContentsPane = null;
-	private Panel iOptionenPanel = null;
-	private Panel iCommandButtonPanel = null;
-	private FlowLayout iCommandButtonPanelFlowLayout = null;
-	// Project name
-	private Label iProjectLabel = null;
-	private Label iProjectText = null;
-	// XML-file 
-	private Label iBuildFileLabel = null;
-	private TextField iBuildFileTextField = null;
-	private boolean iConnPtoP2Aligning = false;
-	private Button iBrowseButton = null;
-	private FileDialog iFileDialog = null;
-	// Options
-	private Choice iMessageOutputLevelChoice = null;
-	private Label iMessageOutputLevelLabel = null;
-	private Label iTargetLabel = null;
-	private List iTargetList = null;
-	// Command-buttons
-	private Button iBuildButton = null;
-	private Button iReloadButton = null;	
-	private Button iCloseButton = null;
-	/**
-	 * log-Window
-	 */
-	// Container
-	private Frame iMessageFrame = null;
-	private Panel iMessageCommandPanel = null;
-	private Panel iMessageContentPanel = null;
-	// Components
-	private TextArea iMessageTextArea = null;
-	private Button iMessageOkButton = null;
-	private Button iMessageClearLogButton = null;
-	/**
-	 * About-dialog
-	 */
-	// Container
-	private Dialog iAboutDialog = null;
-	private Panel iAboutDialogContentPanel = null;
-	private Panel iAboutInfoPanel = null;
-	private Panel iAboutCommandPanel = null;
-	// Labels
-	private Label iAboutTitleLabel = null;
-	private Label iAboutDevLabel = null;
-	private Label iAboutContactLabel = null;
-	// Buttons
-	private Button iAboutOkButton = null;
-
-	/**
-	 * This internal BuildLogger, to be honest, is just a BuildListener. 
-	 * It does nearly the same as the DefaultLogger, but uses the Loggin-Window for output.
-	 */
-	private class VAJBuildLogger implements BuildListener {
-		private long startTime = System.currentTimeMillis();
-
-		/**
-		 * VAJBuildLogger constructor comment.
-		 */
-		public VAJBuildLogger() {
-			super();
-		}
-
-		/**
-		 *  Fired after the last target has finished. This event
-		 *  will still be thrown if an error occured during the build.
-		 *
-		 *  @see BuildEvent#getException()
-		 */
-		public void buildFinished(BuildEvent event) {
-			Throwable error = event.getException();
-
-			if (error == null) {
-				getMessageTextArea().append(lineSeparator + "BUILD SUCCESSFUL");
-			}
-			else {
-				getMessageTextArea().append(lineSeparator + "BUILD FAILED" + lineSeparator);
-
-				if (error instanceof BuildException) {
-					getMessageTextArea().append(error.toString());
-
-					Throwable nested = ((BuildException)error).getException();
-					if (nested != null) {
-						nested.printStackTrace(System.err);
-					}
-				}
-				else {
-					error.printStackTrace(System.err);
-				}
-			}
-
-			getMessageTextArea().append(lineSeparator + "Total time: " + formatTime(System.currentTimeMillis() - startTime));
-		}
-
-		/**
-		 *  Fired before any targets are started.
-		 */
-		public void buildStarted(BuildEvent event) {
-			startTime = System.currentTimeMillis();
-			getMessageTextArea().append(lineSeparator);
-		}
-
-		/**
-		 *  Fired whenever a message is logged.
-		 *
-		 *  @see BuildEvent#getMessage()
-		 *  @see BuildEvent#getPriority()
-		 */
-		public void messageLogged(BuildEvent event) {
-			if (event.getPriority() <= getBuildInfo().getOutputMessageLevel()) {
-				String msg = "";
-				if (event.getTask() != null)
-					msg = "[" + event.getTask().getTaskName() + "] ";
-				getMessageTextArea().append(lineSeparator + msg + event.getMessage());
-			}
-		}
-
-		/**
-		 *  Fired when a target has finished. This event will
-		 *  still be thrown if an error occured during the build.
-		 *
-		 *  @see BuildEvent#getException()
-		 */
-		public void targetFinished(BuildEvent event) {
-		}
-
-		/**
-		 *  Fired when a target is started.
-		 *
-		 *  @see BuildEvent#getTarget()
-		 */
-		public void targetStarted(BuildEvent event) {
-			if (getBuildInfo().getOutputMessageLevel() <= Project.MSG_INFO) {
-				getMessageTextArea().append(lineSeparator + event.getTarget().getName() + ":");
-			}
-		}
-
-		/**
-		 *  Fired when a task has finished. This event will still
-		 *  be throw if an error occured during the build.
-		 *
-		 *  @see BuildEvent#getException()
-		 */
-		public void taskFinished(BuildEvent event) {
-		}
-
-		/**
-		 *  Fired when a task is started.
-		 *
-		 *  @see BuildEvent#getTask()
-		 */
-		public void taskStarted(BuildEvent event) {
-		}
-		/**
-		 * Chris: HACK: remove when Ant-Refactoring is finished!
-		 */
-		public void buildSuccessful() {
-			getMessageTextArea().append(lineSeparator + "BUILD SUCCESSFUL");
-			getMessageTextArea().append(lineSeparator + "Total time: " + formatTime(System.currentTimeMillis() - startTime));
-		}
-		/**
-		 * Chris: HACK: remove when Ant-Refactoring is finished!
-		 */
-		public void buildFailed(Throwable exc) {
-			getMessageTextArea().append(lineSeparator + "BUILD FAILED" + lineSeparator);
-
-			if (exc instanceof BuildException) {
-				getMessageTextArea().append(exc.toString());
-
-				Throwable nested = ((BuildException)exc).getException();
-				if (nested != null) {
-					nested.printStackTrace(System.err);
-				}
-			}
-			else {
-				exc.printStackTrace(System.err);
-			}
-			getMessageTextArea().append(lineSeparator + "Total time: " + formatTime(System.currentTimeMillis() - startTime));
-		}
-	}
-	
-	/**
-	 * Eventhandler to handle all AWT-events
-	 */
-	private class PrivateEventHandler implements ActionListener, ItemListener, TextListener, WindowListener, PropertyChangeListener {
-		/**
-		 * ActionListener method
-		 */
-		public void actionPerformed(ActionEvent e) {
-			try {
-				/* #### Main App-Frame #### */
-				// browse XML-File with filechooser
-				if (e.getSource() == VAJAntToolGUI.this.getBrowseButton()) {
-					getFileDialog().setDirectory(getBuildFileTextField().getText().substring(0, getBuildFileTextField().getText().lastIndexOf('\\') + 1));
-					getFileDialog().setFile("*.xml");
-					getFileDialog().show();
-					if (!getFileDialog().getFile().equals("") ) {
-						getBuildFileTextField().setText(getFileDialog().getDirectory() + getFileDialog().getFile());
-					}
-				}
-				// dispose and exit application 
-				if (e.getSource() == VAJAntToolGUI.this.getCloseButton()) {
-					dispose();
-					System.exit(0);
-				}
-				// start build-process
-				if (e.getSource() == VAJAntToolGUI.this.getBuildButton()) 
-					executeTarget();
-				if (e.getSource() == VAJAntToolGUI.this.getReloadButton()) {
-					try {
-						getBuildInfo().updateTargetList();
-						fillList();
-					}
-					catch (Throwable fileNotFound) {
-						handleException(fileNotFound);
-						getTargetList().removeAll();
-						getBuildButton().setEnabled(false);
-					}
-				}
-				// MenuItems
-				if (e.getSource() == VAJAntToolGUI.this.getSaveMenuItem()) 
-					saveBuildInfo();
-				if (e.getSource() == VAJAntToolGUI.this.getAboutMenuItem()) 
-					getAboutDialog().show();
-				if (e.getSource() == VAJAntToolGUI.this.getShowLogMenuItem()) 
-					getMessageFrame().show();
-				/* #### About dialog #### */
-				if (e.getSource() == VAJAntToolGUI.this.getAboutOkButton()) 
-					getAboutDialog().dispose();
-				/* #### Log frame #### */
-				if (e.getSource() == VAJAntToolGUI.this.getMessageOkButton())
-					getMessageFrame().dispose();
-				if (e.getSource() == VAJAntToolGUI.this.getMessageClearLogButton()) 
-					getMessageTextArea().setText("");
-				if (e.getSource() == VAJAntToolGUI.this.getMessageOkButton()) 
-					getMessageFrame().dispose();
-			}
-			catch (Throwable exc) {
-				handleException(exc);
-			}
-		}
-
-		/**
-		 * ItemListener method
-		 */
-		public void itemStateChanged(ItemEvent e) {
-			try {
-				if (e.getSource() == VAJAntToolGUI.this.getTargetList()) 
-					getBuildButton().setEnabled(true);
-				if (e.getSource() == VAJAntToolGUI.this.getMessageOutputLevelChoice()) 
-					getBuildInfo().setOutputMessageLevel(getMessageOutputLevelChoice().getSelectedIndex());
-				if (e.getSource() == VAJAntToolGUI.this.getTargetList()) 
-					getBuildInfo().setTarget(getTargetList().getSelectedItem());
-			}
-			catch (Throwable exc) {
-				handleException(exc);
-			}
-		}
-		
-		/**
-		 * PropertyChangeListener method
-		 */
-		public void propertyChange(java.beans.PropertyChangeEvent evt) {
-			if (evt.getSource() == VAJAntToolGUI.this.getBuildInfo() && (evt.getPropertyName().equals("projectName"))) 
-				connectProjectNameToLabel();
-			if (evt.getSource() == VAJAntToolGUI.this.getBuildInfo() && (evt.getPropertyName().equals("buildFileName"))) 
-				connectBuildFileNameToTextField();
-		}
-		
-		/**
-		 * TextListener method
-		 */
-		public void textValueChanged(TextEvent e) {
-			if (e.getSource() == VAJAntToolGUI.this.getBuildFileTextField()) 
-				connectTextFieldToBuildFileName();
-		}
-		
-		/**
-		 * WindowListener methods
-		 */
-		public void windowClosing(WindowEvent e) {
-			try {
-				if (e.getSource() == VAJAntToolGUI.this) {
-					dispose();
-					System.exit(0);
-				}
-				if (e.getSource() == VAJAntToolGUI.this.getAboutDialog()) 
-					getAboutDialog().dispose();
-				if (e.getSource() == VAJAntToolGUI.this.getMessageFrame()) 
-					getMessageFrame().dispose();
-			}
-			catch (Throwable exc) {
-				handleException(exc);
-			}
-		}
-		public void windowActivated(WindowEvent e) {};
-		public void windowClosed(WindowEvent e) {};
-		public void windowDeactivated(WindowEvent e) {};
-		public void windowDeiconified(WindowEvent e) {};
-		public void windowIconified(WindowEvent e) {};
-		public void windowOpened(WindowEvent e) {};
-	}
-	
-	/**
-	 * AntMake default-constructor.
-	 */
-	private VAJAntToolGUI() {
-		super();
-		initialize();
-	}
-	/**
-	 * AntMake constructor called by VAJAntTool integration.
-	 * @param buildInfo VAJBuildInfo
-	 */
-	 
-	public VAJAntToolGUI(VAJBuildInfo newBuildInfo) {
-		super();
-		setBuildInfo(newBuildInfo);
-		initialize();
-	}
-	/**
-	 * This method is used to center dialogs.
-	 */
-	public static void centerDialog(Dialog dialog) {
-		dialog.setLocation((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (dialog.getSize().width / 2), (java.awt.Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (dialog.getSize().height / 2));
-	}
-	/**
-	 * connectBuildFileNameToTextField:  (BuildInfo.buildFileName <--> BuildFileTextField.text)
-	 */
-	private void connectBuildFileNameToTextField() {
-		/* Set the target from the source */
-		try {
-			if (iConnPtoP2Aligning == false) {
-				iConnPtoP2Aligning = true;
-				if ((getBuildInfo() != null)) {
-					getBuildFileTextField().setText(getBuildInfo().getBuildFileName());
-				}
-				iConnPtoP2Aligning = false;
-			}
-		} catch (Throwable iExc) {
-			iConnPtoP2Aligning = false;
-			handleException(iExc);
-		}
-	}
-	/**
-	 * connectProjectNameToLabel:  (BuildInfo.vajProjectName <--> ProjectText.text)
-	 */
-	private void connectProjectNameToLabel() {
-		/* Set the target from the source */
-		try {
-			if ((getBuildInfo() != null)) {
-				getProjectText().setText(getBuildInfo().getVAJProjectName());
-			}
-		} catch (Throwable iExc) {
-			handleException(iExc);
-		}
-	}
-	/**
-	 * connectTextFieldToBuildFileName:  (BuildInfo.buildFileName <--> BuildFileTextField.text)
-	 */
-	private void connectTextFieldToBuildFileName() {
-		/* Set the source from the target */
-		try {
-			if (iConnPtoP2Aligning == false) {
-				iConnPtoP2Aligning = true;
-				if ((getBuildInfo() != null)) {
-					getBuildInfo().setBuildFileName(getBuildFileTextField().getText());
-				}
-				iConnPtoP2Aligning = false;
-			}
-		} catch (Throwable iExc) {
-			iConnPtoP2Aligning = false;
-			handleException(iExc);
-		}
-	}
-	/**
-	 * external build of a .jar-file
-	 */
-	private void executeTarget() {
-		try	{
-			getMessageFrame().show();
-			// Chris: HACK: remove when Ant-Refactoring is finished!
-			logger.buildStarted(null);
-			getBuildInfo().executeProject(logger);
-			// Chris: HACK: remove when Ant-Refactoring is finished!
-			logger.buildSuccessful();			
-		}
-		catch (Throwable exc) {
-			// We aren't interested in exceptions! All necessary information has been written to the logging-window!
-			// Unfortunately ANT-Refactoring isn't done yet!
-			// Chris: HACK: remove when Ant-Refactoring is finished!
-			logger.buildFailed( exc );			
-		}
-		return;
-	}
-	/**
-	 * Fills the taget-list with project-targets
-	 */
-	private void fillList() {
-		getTargetList().removeAll();
-		Vector targets = getBuildInfo().getProjectTargets();
-		for (int i = 0;i < targets.size(); i++) {
-			getTargetList().add(targets.elementAt(i).toString());
-		}
-		getTargetList().select(iBuildInfo.getProjectTargets().indexOf(iBuildInfo.getTarget()));
-		if (getTargetList().getSelectedIndex() >= 0) {
-			getBuildButton().setEnabled(true);
-		}
-	}
-	/**
-	 * Copied from DefaultLogger to provide the same time-format.
-	 */
-	public static String formatTime(long millis) {
-		long seconds = millis / 1000;
-		long minutes = seconds / 60;
-
-		if (minutes > 0) {
-			return Long.toString(minutes) + " minute"
-				+ (minutes == 1 ? " " : "s ")
-				+ Long.toString(seconds%60) + " second"
-				+ (seconds%60 == 1 ? "" : "s");
-		}
-		else {
-			return Long.toString(seconds) + " second"
-				+ (seconds%60 == 1 ? "" : "s");
-		}
-	}
-	/**
-	 * Return the AboutCommandPanel property value.
-	 * @return java.awt.Panel
-	 */
-	private Panel getAboutCommandPanel() {
-		if (iAboutCommandPanel == null) {
-			try {
-				iAboutCommandPanel = new Panel();
-				iAboutCommandPanel.setName("AboutCommandPanel");
-				iAboutCommandPanel.setLayout(new java.awt.FlowLayout());
-				getAboutCommandPanel().add(getAboutOkButton(), getAboutOkButton().getName());
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iAboutCommandPanel;
-	}
-	/**
-	 * Return the AboutContactLabel property value.
-	 * @return java.awt.Label
-	 */
-	private Label getAboutContactLabel() {
-		if (iAboutContactLabel == null) {
-			try {
-				iAboutContactLabel = new Label();
-				iAboutContactLabel.setName("AboutContactLabel");
-				iAboutContactLabel.setAlignment(java.awt.Label.CENTER);
-				iAboutContactLabel.setText("contact: wolf.siberski@tui.de or christoph.wilhelms@tui.de");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iAboutContactLabel;
-	}
-	/**
-	 * Return the AboutDevLabel property value.
-	 * @return java.awt.Label
-	 */
-	private Label getAboutDevLabel() {
-		if (iAboutDevLabel == null) {
-			try {
-				iAboutDevLabel = new Label();
-				iAboutDevLabel.setName("AboutDevLabel");
-				iAboutDevLabel.setAlignment(java.awt.Label.CENTER);
-				iAboutDevLabel.setText("developed by Wolf Siberski & Christoph Wilhelms");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iAboutDevLabel;
-	}
-	/**
-	 * Return the AboutDialog property value.
-	 * @return java.awt.Dialog
-	 */
-	private Dialog getAboutDialog() {
-		if (iAboutDialog == null) {
-			try {
-				iAboutDialog = new Dialog(this);
-				iAboutDialog.setName("AboutDialog");
-				iAboutDialog.setResizable(false);
-				iAboutDialog.setLayout(new java.awt.BorderLayout());
-				iAboutDialog.setBounds(550, 14, 383, 142);
-				iAboutDialog.setModal(true);
-				iAboutDialog.setTitle("About...");
-				getAboutDialog().add(getAboutDialogContentPanel(), "Center");
-				iAboutDialog.pack();
-				centerDialog(iAboutDialog);
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iAboutDialog;
-	}
-	/**
-	 * Return the AboutDialogContentPanel property value.
-	 * @return java.awt.Panel
-	 */
-	private Panel getAboutDialogContentPanel() {
-		if (iAboutDialogContentPanel == null) {
-			try {
-				iAboutDialogContentPanel = new Panel();
-				iAboutDialogContentPanel.setName("AboutDialogContentPanel");
-				iAboutDialogContentPanel.setLayout(new java.awt.BorderLayout());
-				getAboutDialogContentPanel().add(getAboutCommandPanel(), "South");
-				getAboutDialogContentPanel().add(getAboutInfoPanel(), "Center");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iAboutDialogContentPanel;
-	}
-	/**
-	 * Return the AboutInfoPanel property value.
-	 * @return java.awt.Panel
-	 */
-	private Panel getAboutInfoPanel() {
-		if (iAboutInfoPanel == null) {
-			try {
-				iAboutInfoPanel = new Panel();
-				iAboutInfoPanel.setName("AboutInfoPanel");
-				iAboutInfoPanel.setLayout(new GridBagLayout());
-
-				GridBagConstraints constraintsAboutTitleLabel = new GridBagConstraints();
-				constraintsAboutTitleLabel.gridx = 0; constraintsAboutTitleLabel.gridy = 0;
-				constraintsAboutTitleLabel.fill = GridBagConstraints.HORIZONTAL;
-				constraintsAboutTitleLabel.weightx = 1.0;
-				constraintsAboutTitleLabel.weighty = 1.0;
-				constraintsAboutTitleLabel.insets = new Insets(4, 0, 4, 0);
-				getAboutInfoPanel().add(getAboutTitleLabel(), constraintsAboutTitleLabel);
-
-				GridBagConstraints constraintsAboutDevLabel = new GridBagConstraints();
-				constraintsAboutDevLabel.gridx = 0; constraintsAboutDevLabel.gridy = 1;
-				constraintsAboutDevLabel.fill = GridBagConstraints.HORIZONTAL;
-				constraintsAboutDevLabel.weightx = 1.0;
-				constraintsAboutDevLabel.insets = new Insets(4, 0, 0, 0);
-				getAboutInfoPanel().add(getAboutDevLabel(), constraintsAboutDevLabel);
-
-				GridBagConstraints constraintsAboutContactLabel = new GridBagConstraints();
-				constraintsAboutContactLabel.gridx = 0; constraintsAboutContactLabel.gridy = 2;
-				constraintsAboutContactLabel.fill = GridBagConstraints.HORIZONTAL;
-				constraintsAboutContactLabel.weightx = 1.0;
-				constraintsAboutContactLabel.insets = new Insets(2, 0, 4, 0);
-				getAboutInfoPanel().add(getAboutContactLabel(), constraintsAboutContactLabel);
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iAboutInfoPanel;
-	}
-	/**
-	 * Return the AboutMenuItem property value.
-	 * @return java.awt.MenuItem
-	 */
-	private MenuItem getAboutMenuItem() {
-		if (iAboutMenuItem == null) {
-			try {
-				iAboutMenuItem = new MenuItem();
-				iAboutMenuItem.setLabel("About...");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iAboutMenuItem;
-	}
-	/**
-	 * Return the AboutOkButton property value.
-	 * @return java.awt.Button
-	 */
-	private Button getAboutOkButton() {
-		if (iAboutOkButton == null) {
-			try {
-				iAboutOkButton = new Button();
-				iAboutOkButton.setName("AboutOkButton");
-				iAboutOkButton.setLabel("OK");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iAboutOkButton;
-	}
-	/**
-	 * Return the AboutTitleLabel property value.
-	 * @return java.awt.Label
-	 */
-	private Label getAboutTitleLabel() {
-		if (iAboutTitleLabel == null) {
-			try {
-				iAboutTitleLabel = new Label();
-				iAboutTitleLabel.setName("AboutTitleLabel");
-				iAboutTitleLabel.setFont(new Font("Arial", 1, 12));
-				iAboutTitleLabel.setAlignment(Label.CENTER);
-				iAboutTitleLabel.setText("Ant VisualAge for Java Tool-Integration");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iAboutTitleLabel;
-	}
-	/**
-	 * Return the AntMakeMenuBar property value.
-	 * @return java.awt.MenuBar
-	 */
-	private MenuBar getAntMakeMenuBar() {
-		if (iAntMakeMenuBar == null) {
-			try {
-				iAntMakeMenuBar = new MenuBar();
-				iAntMakeMenuBar.add(getFileMenu());
-				iAntMakeMenuBar.add(getHelpMenu());
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iAntMakeMenuBar;
-	}
-	/**
-	 * Return the BrowseButton property value.
-	 * @return Button
-	 */
-	private Button getBrowseButton() {
-		if (iBrowseButton == null) {
-			try {
-				iBrowseButton = new Button();
-				iBrowseButton.setName("BrowseButton");
-				iBrowseButton.setLabel("...");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iBrowseButton;
-	}
-	/**
-	 * Return the BuildButton property value.
-	 * @return java.awt.Button
-	 */
-	private Button getBuildButton() {
-		if (iBuildButton == null) {
-			try {
-				iBuildButton = new Button();
-				iBuildButton.setName("BuildButton");
-				iBuildButton.setLabel("Build");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iBuildButton;
-	}
-	/**
-	 * Return the BuildFileLabel property value.
-	 * @return java.awt.Label
-	 */
-	private Label getBuildFileLabel() {
-		if (iBuildFileLabel == null) {
-			try {
-				iBuildFileLabel = new Label();
-				iBuildFileLabel.setName("BuildFileLabel");
-				iBuildFileLabel.setText("Ant-Buildfile:");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iBuildFileLabel;
-	}
-	/**
-	 * Return the BuildFileTextField property value.
-	 * @return java.awt.TextField
-	 */
-	private TextField getBuildFileTextField() {
-		if (iBuildFileTextField == null) {
-			try {
-				iBuildFileTextField = new TextField();
-				iBuildFileTextField.setName("BuildFileTextField");
-				iBuildFileTextField.setBackground(SystemColor.textHighlightText);
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iBuildFileTextField;
-	}
-	/**
-	 * Return the BuildInfo property value.
-	 * @return org.apache.tools.ant.taskdefs.optional.ide.VAJBuildInfo
-	 */
-	private VAJBuildInfo getBuildInfo() {
-		return iBuildInfo;
-	}
-	/**
-	 * Return the CloseButton property value.
-	 * @return java.awt.Button
-	 */
-	private Button getCloseButton() {
-		if (iCloseButton == null) {
-			try {
-				iCloseButton = new Button();
-				iCloseButton.setName("CloseButton");
-				iCloseButton.setLabel("Close");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iCloseButton;
-	}
-	/**
-	 * Return the CommandButtonPanel property value.
-	 * @return java.awt.Panel
-	 */
-	private Panel getCommandButtonPanel() {
-		if (iCommandButtonPanel == null) {
-			try {
-				iCommandButtonPanel = new Panel();
-				iCommandButtonPanel.setName("CommandButtonPanel");
-				iCommandButtonPanel.setLayout(getCommandButtonPanelFlowLayout());
-				iCommandButtonPanel.setBackground(SystemColor.control);
-				iCommandButtonPanel.add(getReloadButton());
-				getCommandButtonPanel().add(getBuildButton(), getBuildButton().getName());
-				getCommandButtonPanel().add(getCloseButton(), getCloseButton().getName());
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iCommandButtonPanel;
-	}
-	/**
-	 * Return the CommandButtonPanelFlowLayout property value.
-	 * @return java.awt.FlowLayout
-	 */
-	private FlowLayout getCommandButtonPanelFlowLayout() {
-		FlowLayout iCommandButtonPanelFlowLayout = null;
-		try {
-			/* Create part */
-			iCommandButtonPanelFlowLayout = new FlowLayout();
-			iCommandButtonPanelFlowLayout.setAlignment(FlowLayout.RIGHT);
-		} catch (Throwable iExc) {
-			handleException(iExc);
-		};
-		return iCommandButtonPanelFlowLayout;
-	}
-	/**
-	 * Return the ContentsPane property value.
-	 * @return java.awt.Panel
-	 */
-	private Panel getContentsPane() {
-		if (iContentsPane == null) {
-			try {
-				iContentsPane = new Panel();
-				iContentsPane.setName("ContentsPane");
-				iContentsPane.setLayout(new BorderLayout());
-				getContentsPane().add(getCommandButtonPanel(), "South");
-				getContentsPane().add(getOptionenPanel(), "Center");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iContentsPane;
-	}
-	/**
-	 * Return the FileDialog property value.
-	 * @return java.awt.FileDialog
-	 */
-	private FileDialog getFileDialog() {
-		if (iFileDialog == null) {
-			try {
-				iFileDialog = new FileDialog(this);
-				iFileDialog.setName("FileDialog");
-				iFileDialog.setLayout(null);
-				centerDialog(iFileDialog);
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iFileDialog;
-	}
-	/**
-	 * Return the FileMenu property value.
-	 * @return java.awt.Menu
-	 */
-	private Menu getFileMenu() {
-		if (iFileMenu == null) {
-			try {
-				iFileMenu = new Menu();
-				iFileMenu.setLabel("File");
-				iFileMenu.add(getSaveMenuItem());
-				iFileMenu.add(getMenuSeparator());
-				iFileMenu.add(getShowLogMenuItem());
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iFileMenu;
-	}
-	/**
-	 * Return the HelpMenu property value.
-	 * @return java.awt.Menu
-	 */
-	private Menu getHelpMenu() {
-		if (iHelpMenu == null) {
-			try {
-				iHelpMenu = new Menu();
-				iHelpMenu.setLabel("Help");
-				iHelpMenu.add(getAboutMenuItem());
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iHelpMenu;
-	}
-	/**
-	 * Return the MenuSeparator1 property value.
-	 * @return java.awt.MenuItem
-	 */
-	private MenuItem getMenuSeparator() {
-		if (iMenuSeparator == null) {
-			try {
-				iMenuSeparator = new MenuItem();
-				iMenuSeparator.setLabel("-");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iMenuSeparator;
-	}
-	/**
-	 * Return the MessageClearLogButton property value.
-	 * @return java.awt.Button
-	 */
-	private Button getMessageClearLogButton() {
-		if (iMessageClearLogButton == null) {
-			try {
-				iMessageClearLogButton = new Button();
-				iMessageClearLogButton.setName("MessageClearLogButton");
-				iMessageClearLogButton.setLabel("Clear Log");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iMessageClearLogButton;
-	}
-	/**
-	 * Return the MessageCommandPanel property value.
-	 * @return java.awt.Panel
-	 */
-	private Panel getMessageCommandPanel() {
-		if (iMessageCommandPanel == null) {
-			try {
-				iMessageCommandPanel = new Panel();
-				iMessageCommandPanel.setName("MessageCommandPanel");
-				iMessageCommandPanel.setLayout(new FlowLayout());
-				getMessageCommandPanel().add(getMessageClearLogButton(), getMessageClearLogButton().getName());
-				getMessageCommandPanel().add(getMessageOkButton(), getMessageOkButton().getName());
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iMessageCommandPanel;
-	}
-	/**
-	 * Return the MessageContentPanel property value.
-	 * @return java.awt.Panel
-	 */
-	private Panel getMessageContentPanel() {
-		if (iMessageContentPanel == null) {
-			try {
-				iMessageContentPanel = new Panel();
-				iMessageContentPanel.setName("MessageContentPanel");
-				iMessageContentPanel.setLayout(new BorderLayout());
-				iMessageContentPanel.setBackground(SystemColor.control);
-				getMessageContentPanel().add(getMessageTextArea(), "Center");
-				getMessageContentPanel().add(getMessageCommandPanel(), "South");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iMessageContentPanel;
-	}
-	/**
-	 * Return the MessageFrame property value.
-	 * @return java.awt.Frame
-	 */
-	private Frame getMessageFrame() {
-		if (iMessageFrame == null) {
-			try {
-				iMessageFrame = new Frame();
-				iMessageFrame.setName("MessageFrame");
-				iMessageFrame.setLayout(new BorderLayout());
-				iMessageFrame.setBounds(0, 0, 750, 250);
-				iMessageFrame.setTitle("Message Log");
-				iMessageFrame.add(getMessageContentPanel(), "Center");
-				iMessageFrame.setLocation((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (iMessageFrame.getSize().width / 2), (java.awt.Toolkit.getDefaultToolkit().getScreenSize().height / 2));
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iMessageFrame;
-	}
-	/**
-	 * Return the MessageOkButton property value.
-	 * @return java.awt.Button
-	 */
-	private Button getMessageOkButton() {
-		if (iMessageOkButton == null) {
-			try {
-				iMessageOkButton = new Button();
-				iMessageOkButton.setName("MessageOkButton");
-				iMessageOkButton.setLabel("Close");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iMessageOkButton;
-	}
-	/**
-	 * Return the MessageOutputLevelChoice property value.
-	 * @return java.awt.Choice
-	 */
-	private Choice getMessageOutputLevelChoice() {
-		if (iMessageOutputLevelChoice == null) {
-			try {
-				iMessageOutputLevelChoice = new Choice();
-				iMessageOutputLevelChoice.setName("MessageOutputLevelChoice");
-				iMessageOutputLevelChoice.add("Error");
-				iMessageOutputLevelChoice.add("Warning");
-				iMessageOutputLevelChoice.add("Info");
-				iMessageOutputLevelChoice.add("Verbose");
-				iMessageOutputLevelChoice.add("Debug");
-				iMessageOutputLevelChoice.select(2);
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iMessageOutputLevelChoice;
-	}
-	/**
-	 * Return the MessageOutputLevelLabel property value.
-	 * @return java.awt.Label
-	 */
-	private Label getMessageOutputLevelLabel() {
-		if (iMessageOutputLevelLabel == null) {
-			try {
-				iMessageOutputLevelLabel = new Label();
-				iMessageOutputLevelLabel.setName("MessageOutputLevelLabel");
-				iMessageOutputLevelLabel.setText("Message Level:");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iMessageOutputLevelLabel;
-	}
-	/**
-	 * Return the MessageTextArea property value.
-	 * @return java.awt.TextArea
-	 */
-	private TextArea getMessageTextArea() {
-		if (iMessageTextArea == null) {
-			try {
-				iMessageTextArea = new TextArea();
-				iMessageTextArea.setName("MessageTextArea");
-				iMessageTextArea.setFont(new Font("monospaced", 0, 12));
-				iMessageTextArea.setText("");
-				iMessageTextArea.setEditable(false);
-				iMessageTextArea.setEnabled(true);
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iMessageTextArea;
-	}
-	/**
-	 * Return the Panel1 property value.
-	 * @return java.awt.Panel
-	 */
-	private Panel getOptionenPanel() {
-		if (iOptionenPanel == null) {
-			try {
-				iOptionenPanel = new Panel();
-				iOptionenPanel.setName("OptionenPanel");
-				iOptionenPanel.setLayout(new GridBagLayout());
-				iOptionenPanel.setBackground(SystemColor.control);
-
-				GridBagConstraints constraintsProjectLabel = new GridBagConstraints();
-				constraintsProjectLabel.gridx = 0; constraintsProjectLabel.gridy = 0;
-				constraintsProjectLabel.anchor = GridBagConstraints.WEST;
-				constraintsProjectLabel.insets = new Insets(4, 4, 4, 4);
-				getOptionenPanel().add(getProjectLabel(), constraintsProjectLabel);
-
-				GridBagConstraints constraintsBuildFileLabel = new GridBagConstraints();
-				constraintsBuildFileLabel.gridx = 0; constraintsBuildFileLabel.gridy = 1;
-				constraintsBuildFileLabel.anchor = GridBagConstraints.WEST;
-				constraintsBuildFileLabel.insets = new Insets(4, 4, 4, 4);
-				getOptionenPanel().add(getBuildFileLabel(), constraintsBuildFileLabel);
-
-				GridBagConstraints constraintsTargetLabel = new GridBagConstraints();
-				constraintsTargetLabel.gridx = 0; constraintsTargetLabel.gridy = 2;
-				constraintsTargetLabel.anchor = GridBagConstraints.NORTHWEST;
-				constraintsTargetLabel.insets = new Insets(4, 4, 4, 4);
-				getOptionenPanel().add(getTargetLabel(), constraintsTargetLabel);
-
-				GridBagConstraints constraintsProjectText = new GridBagConstraints();
-				constraintsProjectText.gridx = 1; constraintsProjectText.gridy = 0;
-				constraintsProjectText.gridwidth = 2;
-				constraintsProjectText.fill = GridBagConstraints.HORIZONTAL;
-				constraintsProjectText.anchor = GridBagConstraints.WEST;
-				constraintsProjectText.insets = new Insets(4, 4, 4, 4);
-				getOptionenPanel().add(getProjectText(), constraintsProjectText);
-
-				GridBagConstraints constraintsBuildFileTextField = new GridBagConstraints();
-				constraintsBuildFileTextField.gridx = 1; constraintsBuildFileTextField.gridy = 1;
-				constraintsBuildFileTextField.fill = GridBagConstraints.HORIZONTAL;
-				constraintsBuildFileTextField.anchor = GridBagConstraints.WEST;
-				constraintsBuildFileTextField.weightx = 1.0;
-				constraintsBuildFileTextField.insets = new Insets(4, 4, 4, 4);
-				getOptionenPanel().add(getBuildFileTextField(), constraintsBuildFileTextField);
-
-				GridBagConstraints constraintsBrowseButton = new GridBagConstraints();
-				constraintsBrowseButton.gridx = 2; constraintsBrowseButton.gridy = 1;
-				constraintsBrowseButton.insets = new Insets(4, 4, 4, 4);
-				getOptionenPanel().add(getBrowseButton(), constraintsBrowseButton);
-
-				GridBagConstraints constraintsTargetList = new GridBagConstraints();
-				constraintsTargetList.gridx = 1; constraintsTargetList.gridy = 2;
-				constraintsTargetList.gridheight = 2;
-				constraintsTargetList.fill = GridBagConstraints.BOTH;
-				constraintsTargetList.weightx = 1.0;
-				constraintsTargetList.weighty = 1.0;
-				constraintsTargetList.insets = new Insets(4, 4, 4, 4);
-				getOptionenPanel().add(getTargetList(), constraintsTargetList);
-
-				GridBagConstraints constraintsMessageOutputLevelLabel = new GridBagConstraints();
-				constraintsMessageOutputLevelLabel.gridx = 0; constraintsMessageOutputLevelLabel.gridy = 4;
-				constraintsMessageOutputLevelLabel.anchor = GridBagConstraints.WEST;
-				constraintsMessageOutputLevelLabel.insets = new Insets(4, 4, 4, 4);
-				getOptionenPanel().add(getMessageOutputLevelLabel(), constraintsMessageOutputLevelLabel);
-
-				GridBagConstraints constraintsMessageOutputLevelChoice = new GridBagConstraints();
-				constraintsMessageOutputLevelChoice.gridx = 1; constraintsMessageOutputLevelChoice.gridy = 4;
-				constraintsMessageOutputLevelChoice.fill = GridBagConstraints.HORIZONTAL;
-				constraintsMessageOutputLevelChoice.anchor = GridBagConstraints.WEST;
-				constraintsMessageOutputLevelChoice.weightx = 1.0;
-				constraintsMessageOutputLevelChoice.insets = new Insets(4, 4, 4, 4);
-				getOptionenPanel().add(getMessageOutputLevelChoice(), constraintsMessageOutputLevelChoice);
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iOptionenPanel;
-	}
-	/**
-	 * Return the ProjectLabel property value.
-	 * @return java.awt.Label
-	 */
-	private Label getProjectLabel() {
-		if (iProjectLabel == null) {
-			try {
-				iProjectLabel = new Label();
-				iProjectLabel.setName("ProjectLabel");
-				iProjectLabel.setText("Projectname:");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iProjectLabel;
-	}
-	/**
-	 * Return the ProjectText property value.
-	 * @return java.awt.Label
-	 */
-	private Label getProjectText() {
-		if (iProjectText == null) {
-			try {
-				iProjectText = new Label();
-				iProjectText.setName("ProjectText");
-				iProjectText.setText(" ");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iProjectText;
-	}
-	/**
-	 * Return the ReloadButton property value.
-	 * @return java.awt.Button
-	 */
-	private Button getReloadButton() {
-		if (iReloadButton == null) {
-			try {
-				iReloadButton = new Button();
-				iReloadButton.setName("ReloadButton");
-				iReloadButton.setLabel("(Re)Load");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iReloadButton;
-	}
-	/**
-	 * Return the SaveMenuItem property value.
-	 * @return java.awt.MenuItem
-	 */
-	private MenuItem getSaveMenuItem() {
-		if (iSaveMenuItem == null) {
-			try {
-				iSaveMenuItem = new MenuItem();
-				iSaveMenuItem.setLabel("Save BuildInfo To Repository");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iSaveMenuItem;
-	}
-	/**
-	 * Return the ShowLogMenuItem property value.
-	 * @return java.awt.MenuItem
-	 */
-	private MenuItem getShowLogMenuItem() {
-		if (iShowLogMenuItem == null) {
-			try {
-				iShowLogMenuItem = new MenuItem();
-				iShowLogMenuItem.setLabel("Log");
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iShowLogMenuItem;
-	}
-	/**
-	 * Return the TargetLabel property value.
-	 * @return java.awt.Label
-	 */
-	private Label getTargetLabel() {
-		if (iTargetLabel == null) {
-			try {
-				iTargetLabel = new Label();
-				iTargetLabel.setName("TargetLabel");
-				iTargetLabel.setText("Target:");
-				iTargetLabel.setEnabled(true);
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iTargetLabel;
-	}
-	/**
-	 * Return the TargetList property value.
-	 * @return java.awt.List
-	 */
-	private List getTargetList() {
-		if (iTargetList == null) {
-			try {
-				iTargetList = new List();
-				iTargetList.setName("TargetList");
-				iTargetList.setEnabled(true);
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-		return iTargetList;
-	}
-	/**
-	 * Called whenever the part throws an exception.
-	 * @param exception Throwable
-	 */
-	private void handleException(Throwable exception) {
-		// Write exceptions to the log-window
-		getMessageTextArea().append(lineSeparator + lineSeparator + exception.getMessage());
-		getMessageFrame().show();
-		
-	}
-	/**
-	 * Initializes connections
-	 * @exception Exception The exception description.
-	 */
-	private void initConnections() throws Exception {
-		this.addWindowListener(iEventHandler);
-		getBrowseButton().addActionListener(iEventHandler);
-		getCloseButton().addActionListener(iEventHandler);
-		getBuildButton().addActionListener(iEventHandler);
-		getSaveMenuItem().addActionListener(iEventHandler);
-		getAboutOkButton().addActionListener(iEventHandler);
-		getAboutMenuItem().addActionListener(iEventHandler);
-		getMessageOkButton().addActionListener(iEventHandler);
-		getMessageClearLogButton().addActionListener(iEventHandler);
-		getMessageOkButton().addActionListener(iEventHandler);
-		getShowLogMenuItem().addActionListener(iEventHandler);
-		getAboutDialog().addWindowListener(iEventHandler);
-		getMessageFrame().addWindowListener(iEventHandler);
-		getReloadButton().addActionListener(iEventHandler);
-		getTargetList().addItemListener(iEventHandler);
-		getMessageOutputLevelChoice().addItemListener(iEventHandler);
-		getBuildFileTextField().addTextListener(iEventHandler);
-		connectProjectNameToLabel();
-		connectBuildFileNameToTextField();
-	}
-	/**
-	 * Initialize the class.
-	 */
-	private void initialize() {
-		try {
-			setName("AntMake");
-			setMenuBar(getAntMakeMenuBar());
-			setLayout(new java.awt.BorderLayout());
-			setSize(389, 222);
-			setTitle("Ant VisualAge for Java Tool-Integration");
-			add(getContentsPane(), "Center");
-			initConnections();
-		} catch (Throwable iExc) {
-			handleException(iExc);
-		}
-		setLocation((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (getSize().width / 2), (java.awt.Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (getSize().height));
-		if ((getTargetList().getItemCount() == 0) || (getTargetList().getSelectedIndex() < 0)) {
-			getBuildButton().setEnabled(false);
-		}
-	}
-	/**
-	 * Saves the build-informations to repository
-	 */
-	private void saveBuildInfo() {
-		try {
-			VAJAntTool.saveBuildData(getBuildInfo());
-		}
-		catch (Throwable exc) {
-			// This Exception occurs when you try to write into a versioned project
-			handleException( exc );
-		}
-		return;
-	}
-	/**
-	 * Set the BuildInfo to a new value.
-	 * @param newValue org.apache.tools.ant.taskdefs.optional.vaj.VAJBuildInfo
-	 */
-	private void setBuildInfo(VAJBuildInfo newValue) {
-		if (iBuildInfo != newValue) {
-			try {
-				/* Stop listening for events from the current object */
-				if (iBuildInfo != null) {
-					iBuildInfo.removePropertyChangeListener(iEventHandler);
-				}
-				iBuildInfo = newValue;
-
-				/* Listen for events from the new object */
-				if (iBuildInfo != null) {
-					iBuildInfo.addPropertyChangeListener(iEventHandler);
-				}
-				connectProjectNameToLabel();
-				connectBuildFileNameToTextField();
-
-				// Select the log-level given by BuildInfo
-				getMessageOutputLevelChoice().select(iBuildInfo.getOutputMessageLevel());
-				fillList();
-				// BuildInfo can conly be saved to a VAJ project if tool API is called via the projects context-menu
-				if ((iBuildInfo.getVAJProjectName() == null) || (iBuildInfo.getVAJProjectName().equals(""))) {
-					getSaveMenuItem().setEnabled(false);
-				}
-			} catch (Throwable iExc) {
-				handleException(iExc);
-			}
-		}
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJBuildInfo.java b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJBuildInfo.java
deleted file mode 100644
index 7bce108..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJBuildInfo.java
+++ /dev/null
@@ -1,343 +0,0 @@
-package org.apache.tools.ant.taskdefs.optional.ide;
-
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-import java.util.Hashtable;
-import java.util.Vector;
-import java.util.Enumeration;
-import org.apache.tools.ant.*;
-import java.io.File;
-
-/**
- * This class wraps the Ant project information needed to
- * start Ant from Visual Age.
- * It serves the following purposes:
- * - acts as model for AntMakeFrame
- * - converts itself to/from String (to store the information
- *   as ToolData in the VA repository)
- * - wraps Project functions for the GUI (get target list,
- *   execute target)
- *    
- * @author Wolf Siberski, TUI Infotec GmbH
- */
-
-public class VAJBuildInfo {
-	// name of the VA project this BuildInfo belongs to
-	private String vajProjectName = "";
-	
-		// name of the Ant build file
-	private String buildFileName = "";
-
-		// main targets found in the build file
-	private Vector projectTargets = new Vector();
-
-		// target selected for execution
-	private java.lang.String target = "";
-
-		// log level
-	private int outputMessageLevel = Project.MSG_INFO;
-
-		// Ant Project created from build file
-	private transient Project project;
-
-		// is true if Project initialization was successful
-	private transient boolean projectInitialized = false;
-
-		// Support for bound properties
-	protected transient java.beans.PropertyChangeSupport propertyChange;
-/**
- * The addPropertyChangeListener method was generated to support the propertyChange field.
- */
-public synchronized void addPropertyChangeListener(java.beans.PropertyChangeListener listener) {
-	getPropertyChange().addPropertyChangeListener(listener);
-}
-/**
- * Returns the BuildInfo information as String. The BuildInfo can
- * be rebuilt from that String by calling parse().
- * @return java.lang.String
- */
-public String asDataString() {
-	String result = getOutputMessageLevel() + "|" + getBuildFileName() + "|" + getTarget();
-	for ( Enumeration e = getProjectTargets().elements(); e.hasMoreElements(); ) {
-		result = result + "|" + e.nextElement();
-	}
-
-	return result;
-}
-/**
- * Executes the target set by setTarget().
- * @param listener  BuildListener for the output of the build
- */
-public void executeProject( BuildListener listener ) {
-	Throwable error = null;
-	try {
-		if (!isProjectInitialized()) {
-			project = new Project();
-		}
-		project.addBuildListener( listener );
-		// Chris: HACK: replace when Ant-Refactoring is finished!
-//		project.fireBuildStarted();
-		if (!isProjectInitialized()) {
-			initProject();
-		}
-		project.executeTarget(target);
-		
-	} catch (RuntimeException exc) {
-		error = exc;
-		throw exc;
-	} catch (Error err) {
-		error = err;
-		throw err;
-	} finally {
-		// Chris: HACK: replace when Ant-Refactoring is finished!
-//		project.fireBuildFinished(error);
-		project.removeBuildListener( listener );
-	}
-}
-	/**
-	 * Search for the insert position to keep names a sorted list of Strings
-	 * This method has been copied from org.apache.tools.ant.Main
-	 */
-	private static int findTargetPosition(Vector names, String name) {
-		int res = names.size();
-		for (int i=0; i<names.size() && res == names.size(); i++) {
-			if (name.compareTo((String)names.elementAt(i)) < 0) {
-				res = i;
-			}
-		}
-		return res;
-	}
-/**
- * The firePropertyChange method was generated to support the propertyChange field.
- */
-public void firePropertyChange(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue) {
-	getPropertyChange().firePropertyChange(propertyName, oldValue, newValue);
-}
-/**
- * Returns the build file name.
- * @return build file name.
- */
-public String getBuildFileName() {
-	return buildFileName;
-}
-/**
- * Returns the log level
- * @return log level.
- */
-public int getOutputMessageLevel() {
-	return outputMessageLevel;
-}
-/**
- * Returns the Ant project
- * @return org.apache.tools.ant.Project
- */
-private Project getProject() {
-	return project;
-}
-/**
- * return a list of all targets in the current buildfile
- */
-public Vector getProjectTargets() {
-	return projectTargets;
-}
-/**
- * Accessor for the propertyChange field.
- */
-protected java.beans.PropertyChangeSupport getPropertyChange() {
-	if (propertyChange == null) {
-		propertyChange = new java.beans.PropertyChangeSupport(this);
-	};
-	return propertyChange;
-}
-/**
- * Insert the method's description here.
- * Creation date: (07.11.2000 10:34:18)
- * @return java.lang.String
- */
-public java.lang.String getTarget() {
-	return target;
-}
-/**
- * returns the VA project name
- * @return The projectName property value.
- */
-public String getVAJProjectName() {
-	return vajProjectName;
-}
-/**
- * Initializes the Ant project. Assumes that the
- * project attribute is already set.
- */
-private void initProject() {
-	try {
-		project.init();
-		File buildFile = new File(getBuildFileName());
-		project.setUserProperty("ant.file", buildFile.getAbsolutePath());
-		ProjectHelper.configureProject(project, buildFile);
-		setProjectInitialized(true);
-	} catch (RuntimeException exc) {
-		setProjectInitialized(false);
-		throw exc;
-	} catch (Error err) {
-		setProjectInitialized(false);
-		throw err;
-	}
-}
-/**
- * Returns true, if the Ant project is initialized
- * (i.e. buildfile loaded)
- */
-public boolean isProjectInitialized() {
-	return projectInitialized;
-}
-/**
- * Creates a BuildInfo object from a String
- * The String must be in the format
- * outputMessageLevel'|'buildFileName'|'defaultTarget'|'(project target'|')*
- *
- * @return org.apache.tools.ant.taskdefs.optional.vaj.BuildInfo
- * @param data java.lang.String
- */
-public static VAJBuildInfo parse(String data) {
-	VAJBuildInfo result = new VAJBuildInfo();
-
-	try {
-		java.util.StringTokenizer tok = new java.util.StringTokenizer( data, "|" );
-		result.setOutputMessageLevel( tok.nextToken() );
-		result.setBuildFileName( tok.nextToken() );
-		result.setTarget( tok.nextToken() );
-		while( tok.hasMoreTokens() ) {
-			result.projectTargets.addElement( tok.nextToken() );
-		}
-	} catch ( Throwable t ) {
-	}
-	return result;
-}
-/**
- * The removePropertyChangeListener method was generated to support the propertyChange field.
- */
-public synchronized void removePropertyChangeListener(java.beans.PropertyChangeListener listener) {
-	getPropertyChange().removePropertyChangeListener(listener);
-}
-/**
- * Sets the build file name
- * @param buildFileName build file name
- */
-public void setBuildFileName(String newBuildFileName) {
-	String oldValue = buildFileName;
-	buildFileName = newBuildFileName;
-	setProjectInitialized(false);
-	firePropertyChange("buildFileName", oldValue, buildFileName);
-}
-/**
- * Sets the log level (value must be one of the constants in Project)
- * @param outputMessageLevel log level.
- */
-public void setOutputMessageLevel(int newOutputMessageLevel) {
-	int oldValue = outputMessageLevel;
-	outputMessageLevel = newOutputMessageLevel;
-	firePropertyChange("outputMessageLevel", new Integer(oldValue), new Integer(outputMessageLevel));
-}
-/**
- * Sets the log level (value must be one of the constants in Project)
- * @param outputMessageLevel log level as String.
- */
-private void setOutputMessageLevel(String outputMessageLevel) {
-	int level = Integer.parseInt( outputMessageLevel );
-	setOutputMessageLevel( level );
-}
-/**
-  */
-private void setProjectInitialized(boolean initialized) {
-	Boolean oldValue = new Boolean(projectInitialized);
-	projectInitialized = initialized;
-	firePropertyChange("projectInitialized", oldValue, new Boolean(projectInitialized));
-}
-/**
- * Sets the target to execute when executeBuild is called
- * @param newTarget build target
- */
-public void setTarget(String newTarget) {
-	String oldValue = target;
-	target = newTarget;
-	firePropertyChange("target", oldValue, target);
-}
-/**
- * Sets the name of the Visual Age for Java project where
- * this BuildInfo belongs to
- * @param newProjectName VAJ project
- */
-public void setVAJProjectName(String newVAJProjectName) {
-	String oldValue = vajProjectName;
-	vajProjectName = newVAJProjectName;
-	firePropertyChange("VAJProjectName", oldValue, vajProjectName);
-}
-/**
- * reloads the build file and updates the target list
- */
-public void updateTargetList() {
-	project = new Project();
-	initProject();
-	projectTargets.removeAllElements();
-	Enumeration ptargets = project.getTargets().elements();
-	while (ptargets.hasMoreElements()) {
-		Target currentTarget = (Target) ptargets.nextElement();
-		if ( currentTarget.getDescription() != null ) {
-			String targetName = currentTarget.getName();
-			int pos = findTargetPosition( projectTargets, targetName );
-			projectTargets.insertElementAt(targetName, pos);
-		}
-	}
-}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJExport.java b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJExport.java
deleted file mode 100644
index de6e6bf..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJExport.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
- 
-package org.apache.tools.ant.taskdefs.optional.ide;
-
-
-
-
-import com.ibm.ivj.util.base.ExportCodeSpec;
-import com.ibm.ivj.util.base.IvjException;
-import com.ibm.ivj.util.base.Package;
-import java.io.File;
-import java.util.Enumeration;
-import java.util.Vector;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.PatternSet;
-
-/**
- * Export packages from the Visual Age for Java workspace. 
- * The packages are specified similar to all other MatchingTasks. 
- * Since the VA Workspace is not file based, this task is simulating 
- * a directory hierarchy for the workspace:
- * The 'root' contains all project 'dir's, and the projects contain 
- * their respective package 'dir's.
- * Example:  
- * <blockquote> 
- * &lt;vajexport destdir="C:/builddir/source">
- * &nbsp;&lt;include name="/MyVAProject/org/foo/subsystem1/**" />
- * &nbsp;&lt;exclude name="/MyVAProject/org/foo/subsystem1/test/**"/>
- * &lt;/vajexport>
- * </blockquote>
- * exports all packages in the project MyVAProject which start with
- * 'org.foo.subsystem1' except of these starting with 
- * 'org.foo.subsystem1.test'.
- *
- * There are flags to choose which items to export:
- * exportSources:   export Java sources
- * exportResources: export project resources
- * exportClasses:   export class files
- * exportDebugInfo: export class files with debug info (use with exportClasses)
- * default is exporting Java files and resources.
- *
- * @author Wolf Siberski, TUI Infotec GmbH
- */
-
-public class VAJExport extends Task {
-    protected File destDir;
-    protected boolean exportSources = true;
-    protected boolean exportResources = true;
-    protected boolean exportClasses = false;
-    protected boolean exportDebugInfo = false;
-    protected boolean useDefaultExcludes = true;
-
-    protected PatternSet patternSet = new PatternSet();
-
-    /**
-     * add a name entry on the exclude list
-     */
-    public PatternSet.NameEntry createExclude() {
-        return patternSet.createExclude();
-    }
-
-    /**
-     * add a name entry on the include list
-     */
-    public PatternSet.NameEntry createInclude() {
-        return patternSet.createInclude();
-    }
-
-    /**
-     * do the export
-     */
-    public void execute() throws BuildException {
-        // first off, make sure that we've got a destdir
-        if (destDir == null) {
-            throw new BuildException("destdir attribute must be set!");
-        }
-
-        VAJWorkspaceScanner ds = this.getWorkspaceScanner();
-
-        Package[] packages = ds.getIncludedPackages();
-
-        export(packages);
-    }
-
-    /**
-     * export the array of Packages
-     */
-    public void export(Package[] packages) {
-        try {
-            String dest = destDir.getAbsolutePath();
-
-            log("Exporting " + packages.length + " package(s) to " + dest);
-            for (int i = 0; i < packages.length; i++) {
-                log("    " + packages[i].getName(), Project.MSG_VERBOSE);
-            }
-
-            ExportCodeSpec exportSpec = new ExportCodeSpec();
-
-            exportSpec.setPackages(packages);
-            exportSpec.includeJava(exportSources);
-            exportSpec.includeClass(exportClasses);
-            exportSpec.includeResources(exportResources);
-            exportSpec.includeClassDebugInfo(exportDebugInfo);
-            exportSpec.useSubdirectories(true);
-            exportSpec.overwriteFiles(true);
-            exportSpec.setExportDirectory(dest);
-            VAJUtil.getWorkspace().exportData(exportSpec);
-        } catch (IvjException ex) {
-            throw VAJUtil.createBuildException("Exporting failed!", ex);
-        }
-    }
-
-    /**
-     * Returns the directory scanner needed to access the files to process.
-     */
-    protected VAJWorkspaceScanner getWorkspaceScanner() {
-        VAJWorkspaceScanner scanner = new VAJWorkspaceScanner();
-        scanner.setIncludes(patternSet.getIncludePatterns(getProject()));
-        scanner.setExcludes(patternSet.getExcludePatterns(getProject()));
-        if (useDefaultExcludes)
-            scanner.addDefaultExcludes();
-        scanner.scan();
-        return scanner;
-    }
-
-    /**
-     * Sets whether default exclusions should be used or not.
-     *
-     * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions 
-     *                           should be used, "false"|"off"|"no" when they
-     *                           shouldn't be used.
-     */
-    public void setDefaultexcludes(boolean useDefaultExcludes) {
-        this.useDefaultExcludes = useDefaultExcludes;
-    }
-
-    /**
-     * Set the destination directory into which the Java source
-     * files should be compiled.
-     */
-    public void setDestdir(File destDir) {
-        this.destDir = destDir;
-    }
-
-    /**
-     * Sets the set of exclude patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param excludes the string containing the exclude patterns
-     */
-    public void setExcludes(String excludes) {
-        patternSet.setExcludes(excludes);
-    }
-
-    /**
-     */
-    public void setExportClasses(boolean doExport) {
-        exportClasses = doExport;
-    }
-
-    /**
-     */
-    public void setExportDebugInfo(boolean doExport) {
-        exportDebugInfo = doExport;
-    }
-
-    /**
-     */
-    public void setExportResources(boolean doExport) {
-        exportResources = doExport;
-    }
-
-    /**
-     */
-    public void setExportSources(boolean doExport) {
-        exportSources = doExport;
-    }
-    /**
-     * Sets the set of include patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param includes the string containing the include patterns
-     */
-    public void setIncludes(String includes) {
-        patternSet.setIncludes(includes);
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJImport.java b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJImport.java
deleted file mode 100644
index a045365..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJImport.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ide;
-
-import com.ibm.ivj.util.base.ImportCodeSpec;
-import com.ibm.ivj.util.base.IvjException;
-import com.ibm.ivj.util.base.Project;
-import com.ibm.ivj.util.base.ProjectEdition;
-import com.ibm.ivj.util.base.Type;
-import java.io.File;
-import java.util.Enumeration;
-import java.util.Vector;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.FileSet;
-
-/**
- * Import source, class files, and resources to the Visual Age for Java 
- * workspace using FileSets.
- * <p>
- * Example:  
- * <pre> 
- * &lt;vajimport project="MyVAProject"&gt;
- *   &lt;fileset dir="src"&gt;
- *     &lt;include name="org/foo/subsystem1/**" /&gt;
- *     &lt;exclude name="/org/foo/subsystem1/test/**" /&gt;
- *  &lt;/fileset&gt;
- * &lt;/vajexport&gt;
- * </pre>
- * import all source and resource files from the "src" directory
- * which start with 'org.foo.subsystem1', except of these starting with 
- * 'org.foo.subsystem1.test' into the project MyVAProject.
- * </p>
- * <p>If MyVAProject isn't loaded into the Workspace, a new edition is
- * created in the repository and automatically loaded into the Workspace.
- * There has to be at least one nested FileSet element.
- * </p>
- * <p>There are attributes to choose which items to export:
- * <table border="1" cellpadding="2" cellspacing="0">
- * <tr>
- *   <td valign="top"><b>Attribute</b></td>
- *   <td valign="top"><b>Description</b></td>
- *   <td align="center" valign="top"><b>Required</b></td>
- * </tr>
- * <tr>
- *   <td valign="top">project</td>
- *   <td valign="top">the name of the Project to import to</td>
- *   <td align="center" valign="top">Yes</td>
- * </tr>
- * <tr>
- *   <td valign="top">importSources</td>
- *   <td valign="top">import Java sources, defaults to "yes"</td>
- *   <td align="center" valign="top">No</td>
- * </tr>
- * <tr>
- *   <td valign="top">importResources</td>
- *   <td valign="top">import resource files (anything that doesn't
- *                    end with .java or .class), defaults to "yes"</td>
- *   <td align="center" valign="top">No</td>
- * </tr>
- * <tr>
- *   <td valign="top">importClasses</td>
- *   <td valign="top">import class files, defaults to "no"</td>
- *   <td align="center" valign="top">No</td>
- * </tr>
- * </table>
- *
- * @author: Glenn McAllister, inspired by a similar task written by Peter Kelley
- */
-public class VAJImport extends Task {
-    protected Vector filesets = new Vector();
-    protected boolean importSources = true;
-    protected boolean importResources = true;
-    protected boolean importClasses = false;
-    protected String importProject = null;
-    protected Project vajproject = null;
-
-    /**
-     * The VisualAge for Java Project name to import into.
-     */
-    public void setProject(String projectName) {
-        this.importProject = projectName;
-    }
-
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
-
-    /**
-     * Import .class files.
-     */
-    public void setImportClasses(boolean importClasses) {
-        this.importClasses = importClasses;
-    }
-
-    /**
-     * Import resource files (anything that doesn't end in
-     * .class or .java)
-     */
-    public void setImportResources(boolean importResources) {
-        this.importResources = importResources;
-    }
-
-    /**
-     * Import .java files
-     */
-    public void setImportSources(boolean importSources) {
-        this.importSources = importSources;
-    }
-
-    /**
-     * Do the import.
-     */
-    public void execute() throws BuildException {
-        if (filesets.size() == 0) {
-            throw new BuildException("At least one fileset is required!");
-        }
-
-        if (importProject == null || "".equals(importProject)) {
-            throw new BuildException("The VisualAge for Java Project name is required!");
-        }
-
-        vajproject = getVAJProject();
-        if (vajproject == null) {
-            try {
-                vajproject = VAJUtil.getWorkspace().createProject(this.importProject, true);
-            } catch (IvjException e) {
-                throw VAJUtil.createBuildException( "Error while creating Project " + 
-                                                    importProject + ": ", 
-                                                    e ); 
-            }
-        }
-
-        for (Enumeration e = filesets.elements(); e.hasMoreElements();) {
-            importFileset((FileSet) e.nextElement());
-        }
-    }
-
-    /**
-     * Try to get the project we want from the Workspace.
-     */
-    protected Project getVAJProject() {
-        Project found = null;
-        Project[] currentProjects = VAJUtil.getWorkspace().getProjects();
-
-        for (int i = 0; i < currentProjects.length; i++) {
-            Project p = currentProjects[i];
-            if (p.getName().equals(this.importProject)) {
-                found = p;
-                break;
-            }
-        }
-
-        return found;
-    }
-
-    /**
-     * Import all files from the fileset into the Project in the
-     * Workspace.
-     */
-    protected void importFileset(FileSet fileset) {
-        DirectoryScanner ds = fileset.getDirectoryScanner(this.project);
-        if (ds.getIncludedFiles().length == 0) {
-            return;
-        }
-
-        Vector classes = new Vector();
-        Vector sources = new Vector();
-        Vector resources = new Vector();
-
-        String[] classesArr = null;
-        String[] sourcesArr = null;
-        String[] resourcesArr = null;
-
-        StringBuffer msg = new StringBuffer();
-        msg.append("Importing ");
-        String connector = "";
-
-        ImportCodeSpec importSpec = new ImportCodeSpec();
-        importSpec.setDefaultProject(vajproject);
-
-        scan(
-             fileset.getDir(this.project), 
-             ds.getIncludedFiles(), 
-             classes, 
-             sources, 
-             resources); 
-
-        if (importClasses) {
-            classesArr = new String[classes.size()];
-            classes.copyInto(classesArr);
-            importSpec.setClassFiles(classesArr);
-            if (classesArr.length > 0) {
-                logFiles(classes, "class");
-                msg.append( classesArr.length );
-                msg.append( " class " );
-                msg.append( classesArr.length > 1 ? "files" : "file" );
-                connector = ", ";
-            }
-        }
-
-        if (importSources) {
-            sourcesArr = new String[sources.size()];
-            sources.copyInto(sourcesArr);
-            importSpec.setJavaFiles(sourcesArr);
-            if (sourcesArr.length > 0) {
-                logFiles(sources, "source");
-                msg.append( connector );
-                msg.append( sourcesArr.length );
-                msg.append( " source " );
-                msg.append( sourcesArr.length > 1 ? "files" : "file" );
-                connector = ", ";
-            }
-        }
-
-        if (importResources) {
-            String resourcePath = fileset.getDir(this.project).getAbsolutePath();
-            resourcesArr = new String[resources.size()];
-            resources.copyInto(resourcesArr);
-            importSpec.setResourcePath(resourcePath);
-            importSpec.setResourceFiles(resourcesArr);
-            if (resourcesArr.length > 0) {
-                logFiles(resources, "resource");
-                log( "  (relative to resource path '" + resourcePath + "')", 
-                     org.apache.tools.ant.Project.MSG_VERBOSE );
-
-                msg.append( connector );
-                msg.append( resourcesArr.length );
-                msg.append( " resource " );
-                msg.append( resourcesArr.length > 1 ? "files" : "file" );
-            }
-        }
-
-        msg.append( " into the " );
-        msg.append( importProject );
-        msg.append( " project." );
-
-        log(msg.toString());
-                
-        try {
-            Type[] importedTypes = VAJUtil.getWorkspace().importData(importSpec);
-            if (importedTypes == null) {
-                throw new BuildException("Unable to import into Workspace!");
-            }
-        } catch (IvjException ivje) {
-            VAJUtil.createBuildException("Error while importing into Workspace: ", ivje);
-        }
-    }
-
-    /**
-     * Sort the files into classes, sources, and resources.
-     */
-    protected void scan(
-                        File dir, 
-                        String[] files, 
-                        Vector classes, 
-                        Vector sources, 
-                        Vector resources) {
-        for (int i = 0; i < files.length; i++) {
-            String file = (new File(dir, files[i])).getAbsolutePath();
-            if (file.endsWith(".java") || file.endsWith(".JAVA")) {
-                sources.addElement(file);
-            } else
-                if (file.endsWith(".class") || file.endsWith(".CLASS")) {
-                    classes.addElement(file);
-                } else {
-                    // for resources VA expects the path relative to the resource path
-                    resources.addElement(files[i]);
-                }
-        }
-    }
-                
-    /**
-     * Logs a list of file names to the message log
-     * @param fileNames java.util.Vector file names to be logged
-     * @param type java.lang.String file type
-     */
-    protected void logFiles(Vector fileNames, String fileType) {
-        log(  fileType + " files found for import:", org.apache.tools.ant.Project.MSG_VERBOSE);
-        for ( Enumeration e = fileNames.elements(); e.hasMoreElements(); ) {
-            log( "    " + e.nextElement(), org.apache.tools.ant.Project.MSG_VERBOSE );
-        }
-    } 
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJLoadProjects.java b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJLoadProjects.java
deleted file mode 100644
index 664ad26..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJLoadProjects.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ide;
-
-
-import com.ibm.ivj.util.base.IvjException;
-import com.ibm.ivj.util.base.ProjectEdition;
-import java.util.Enumeration;
-import java.util.Vector;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-
-/**
- * Load specific project versions into the Visual Age for Java workspace.
- * Each project and version name has to be specified completely.
- * Example:  
- * <blockquote> 
- * &lt;vajload>
- * &nbsp;&lt;project name="MyVAProject" version="2.1"/>
- * &nbsp;&lt;project name="Apache Xerces" version="1.2.0"/>
- * &lt;/vajload>
- * </blockquote>
- *
- * @author Wolf Siberski, TUI Infotec GmbH
- */
-
-public class VAJLoadProjects extends Task {
-    Vector projectDescriptions = new Vector();
-    Vector expandedProjectDescriptions = new Vector();
-
-    /**
-     * Class to maintain VisualAge for Java Workspace Project descriptions.
-     */
-    public class VAJProjectDescription {
-        private String name;
-        private String version;
-        private boolean projectFound;
-
-        public VAJProjectDescription() {
-        }
-
-        public VAJProjectDescription(String n, String v) {
-            name = n;
-            version = v;
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public String getVersion() {
-            return version;
-        }
-
-        public boolean projectFound() {
-            return projectFound;
-        }
-
-        public void setName(String newName) {
-            if (newName == null || newName.equals("")) {
-                throw new BuildException("name attribute must be set");
-            }
-            name = newName;
-        }
-
-        public void setVersion(String newVersion) {
-            if (newVersion == null || newVersion.equals("")) {
-                throw new BuildException("version attribute must be set");
-            }
-            version = newVersion;
-        }
-
-        public void setProjectFound() {
-            projectFound = true;
-        }
-    }
-    
-    /**
-     * Add a project description entry on the project list.
-     */
-    public VAJProjectDescription createProject() {
-        VAJProjectDescription d = new VAJProjectDescription();
-        projectDescriptions.addElement(d);
-        return d;
-    }
-    /**
-     * Load specified projects.
-     */
-    public void execute() {
-        expandDescriptions();
-        log(
-            "Loading " + expandedProjectDescriptions.size() + " project(s) into workspace"); 
-        for (Enumeration e = expandedProjectDescriptions.elements(); 
-             e.hasMoreElements(); 
-             ) {
-            VAJProjectDescription d = (VAJProjectDescription) e.nextElement();
-
-            ProjectEdition pe = findProjectEdition(d.getName(), d.getVersion());
-            try {
-                log( "Loading " + d.getName() + ", Version " + d.getVersion() + 
-                     ", into Workspace", 
-                     Project.MSG_VERBOSE ); 
-                pe.loadIntoWorkspace();
-            } catch (IvjException ex) {
-                throw VAJUtil.createBuildException( "Project " + d.getName() + 
-                                                    " could not be loaded.", 
-                                                    ex ); 
-            }
-        }
-    }
-
-    /**
-     */
-    public void expandDescriptions() {
-        String[] projectNames;
-        try {
-            projectNames = VAJUtil.getWorkspace().getRepository().getProjectNames();
-        } catch (IvjException e) {
-            throw VAJUtil.createBuildException("VA Exception occured: ", e);
-        }
-
-        for (int i = 0; i < projectNames.length; i++) {
-            for (Enumeration e = projectDescriptions.elements(); e.hasMoreElements();) {
-                VAJProjectDescription d = (VAJProjectDescription) e.nextElement();
-                String pattern = d.getName();
-                if (VAJWorkspaceScanner.match(pattern, projectNames[i])) {
-                    d.setProjectFound();
-                    expandedProjectDescriptions.
-                        addElement(new VAJProjectDescription(projectNames[i], d.getVersion())); 
-                    break;
-                }
-            }
-        }
-
-        for (Enumeration e = projectDescriptions.elements(); e.hasMoreElements();) {
-            VAJProjectDescription d = (VAJProjectDescription) e.nextElement();
-            if (!d.projectFound()) {
-                log("No Projects match the name " + d.getName(), Project.MSG_WARN);
-            }
-        }
-    }
-
-    /**
-     */
-    public static Vector findMatchingProjects(String pattern) {
-        String[] projectNames;
-        try {
-            projectNames = VAJUtil.getWorkspace().getRepository().getProjectNames();
-        } catch (IvjException e) {
-            throw VAJUtil.createBuildException("VA Exception occured: ", e);
-        }
-
-        Vector matchingProjects = new Vector();
-        for (int i = 0; i < projectNames.length; i++) {
-            if (VAJWorkspaceScanner.match(pattern, projectNames[i])) {
-                matchingProjects.addElement(projectNames[i]);
-            }
-        }
-
-        return matchingProjects;
-    }
-
-    /**
-     * Finds a specific project edition in the repository.
-     *
-     * @param name project name
-     * @param versionName project version name
-     * @return com.ibm.ivj.util.base.ProjectEdition
-     */
-    public static ProjectEdition findProjectEdition(
-                                                    String name, 
-                                                    String versionName) {
-        try {
-            ProjectEdition[] editions = null;
-            editions = VAJUtil.getWorkspace().getRepository().getProjectEditions(name);
-
-            if (editions == null) {
-                throw new BuildException("Project " + name + " doesn't exist");
-            }
-
-            ProjectEdition pe = null;
-
-            for (int i = 0; i < editions.length && pe == null; i++) {
-                if (versionName.equals(editions[i].getVersionName())) {
-                    pe = editions[i];
-                }
-            }
-            if (pe == null) {
-                throw new BuildException( "Version " + versionName + " of Project " + 
-                                          name + " doesn't exist" ); 
-            }
-            return pe;
-
-        } catch (IvjException e) {
-            throw VAJUtil.createBuildException("VA Exception occured: ", e);
-        }
-
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJUtil.java b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJUtil.java
deleted file mode 100644
index c83d0c2..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJUtil.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ide;
-
-
-import com.ibm.ivj.util.base.IvjException;
-import com.ibm.ivj.util.base.ToolEnv;
-import com.ibm.ivj.util.base.Workspace;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Helper class for VAJ tasks. Holds Workspace singleton and
- * wraps IvjExceptions into BuildExceptions
- *
- * @author Wolf Siberski, TUI Infotec GmbH
- */
-class VAJUtil {
-    static private Workspace workspace;
-        
-    /**
-     * Wraps IvjException into a BuildException
-     *
-     * @return org.apache.tools.ant.BuildException
-     * @param errMsg Additional error message
-     * @param e IvjException which is wrapped
-     */
-    public static BuildException createBuildException(
-                                                      String errMsg, 
-                                                      IvjException e) {
-        errMsg = errMsg + "\n" + e.getMessage();
-        String[] errors = e.getErrors();
-        if (errors != null) {
-            for (int i = 0; i < errors.length; i++) {
-                errMsg = errMsg + "\n" + errors[i];
-            }
-        }
-        return new BuildException(errMsg);
-    }
-        
-    /**
-     * Insert the method's description here.
-     * Creation date: (19.09.2000 13:41:21)
-     * @return com.ibm.ivj.util.base.Workspace
-     */
-    public static Workspace getWorkspace() {
-        if (workspace == null) {
-            workspace = ToolEnv.connectToWorkspace();
-            if (workspace == null) {
-                throw new BuildException(
-                                         "Unable to connect to Workspace! "
-                                         + "Make sure you are running in VisualAge for Java."); 
-            }
-        }
-
-        return workspace;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJWorkspaceScanner.java b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJWorkspaceScanner.java
deleted file mode 100644
index 1348145..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJWorkspaceScanner.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.ide;
-
-import com.ibm.ivj.util.base.IvjException;
-import com.ibm.ivj.util.base.Package;
-import com.ibm.ivj.util.base.Project;
-import java.io.File;
-import java.util.Enumeration;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import org.apache.tools.ant.DirectoryScanner;
-
-/**
- * Class for scanning a Visual Age for Java workspace for packages matching
- * a certain criteria.
- * <p>
- * These criteria consist of a set of include and exclude patterns. With these
- * patterns, you can select which packages you want to have included, and which
- * packages you want to have excluded.  You can add patterns to be excluded by
- * default with the addDefaultExcludes method.  The patters that are excluded
- * by default include
- * <ul>
- *   <li>IBM*\**</li>
- *   <li>Java class libraries\**</li>
- *   <li>Sun class libraries*\**</li>
- *   <li>JSP Page Compile Generated Code\**</li>
- *   <li>VisualAge*\**</li>
- * </ul>
- * <p>
- * This class works like DirectoryScanner. 
- *
- * @see org.apache.tools.ant.DirectoryScanner
- *
- * @author Wolf Siberski, TUI Infotec (based on Arnout J. Kuipers DirectoryScanner)
- */
-public class VAJWorkspaceScanner extends DirectoryScanner {
-
-    /**
-     * Patterns that should be excluded by default.
-     *
-     * @see #addDefaultExcludes()
-     */
-    private final static String[] DEFAULTEXCLUDES = 
-    {
-        "IBM*/**", 
-        "Java class libraries/**", 
-        "Sun class libraries*/**", 
-        "JSP Page Compile Generated Code/**", 
-        "VisualAge*/**", 
-    }; 
-
-    /**
-     * The packages that where found and matched at least one includes, and
-     * matched no excludes.
-     */
-    private Vector packagesIncluded = new Vector();
-   
-    /**
-     * Adds the array with default exclusions to the current exclusions set.
-     */
-    public void addDefaultExcludes() {
-        int excludesLength = excludes == null ? 0 : excludes.length;
-        String[] newExcludes;
-        newExcludes = new String[excludesLength + DEFAULTEXCLUDES.length];
-        if (excludesLength > 0) {
-            System.arraycopy(excludes, 0, newExcludes, 0, excludesLength);
-        }
-        for (int i = 0; i < DEFAULTEXCLUDES.length; i++) {
-            newExcludes[i + excludesLength] = DEFAULTEXCLUDES[i].
-                replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); 
-        }
-        excludes = newExcludes;
-    }
-        
-    /**
-     * Finds all Projects specified in include patterns.
-     *
-     * @return the projects
-     */
-    public Vector findMatchingProjects() {
-        Project[] projects = VAJUtil.getWorkspace().getProjects();
-
-        Vector matchingProjects = new Vector();
-
-        boolean allProjectsMatch = false;
-        for (int i = 0; i < projects.length; i++) {
-            Project project = projects[i];
-            for (int j = 0; j < includes.length && !allProjectsMatch; j++) {
-                StringTokenizer tok = new StringTokenizer(includes[j], File.separator);
-                String projectNamePattern = tok.nextToken();
-                if (projectNamePattern.equals("**")) {
-                    // if an include pattern starts with '**', 
-                    // all projects match
-                    allProjectsMatch = true;
-                } else
-                    if (match(projectNamePattern, project.getName())) {
-                        matchingProjects.addElement(project);
-                        break;
-                    }
-            }
-        }
-
-        if (allProjectsMatch) {
-            matchingProjects = new Vector();
-            for (int i = 0; i < projects.length; i++) {
-                matchingProjects.addElement(projects[i]);
-            }
-        }
-
-        return matchingProjects;
-    }
-        
-    /**
-     * Get the names of the packages that matched at least one of the include
-     * patterns, and didn't match one of the exclude patterns.
-     *
-     * @return the matching packages
-     */
-    public Package[] getIncludedPackages() {
-        int count = packagesIncluded.size();
-        Package[] packages = new Package[count];
-        for (int i = 0; i < count; i++) {
-            packages[i] = (Package) packagesIncluded.elementAt(i);
-        }
-        return packages;
-    }
-        
-    /**
-     * Matches a string against a pattern. The pattern contains two special
-     * characters:
-     * '*' which means zero or more characters,
-     * '?' which means one and only one character.
-     *
-     * @param pattern the (non-null) pattern to match against
-     * @param str     the (non-null) string that must be matched against the
-     *                pattern
-     *
-     * @return <code>true</code> when the string matches against the pattern,
-     *         <code>false</code> otherwise.
-     */
-    protected static boolean match(String pattern, String str) {
-        return DirectoryScanner.match(pattern, str);
-    }
-    /**
-     * Scans the workspace for packages that match at least one include
-     * pattern, and don't match any exclude patterns.
-     *
-     */
-    public void scan() {
-        if (includes == null) {
-            // No includes supplied, so set it to 'matches all'
-            includes = new String[1];
-            includes[0] = "**";
-        }
-        if (excludes == null) {
-            excludes = new String[0];
-        }
-
-        // only scan projects which are included in at least one include pattern
-        Vector matchingProjects = findMatchingProjects();
-        for (Enumeration e = matchingProjects.elements(); e.hasMoreElements();) {
-            Project project = (Project) e.nextElement();
-            scanProject(project);
-        }
-    }
-        
-    /**
-     * Scans a project for packages that match at least one include
-     * pattern, and don't match any exclude patterns.
-     *
-     */
-    public void scanProject(Project project) {
-        try {
-            Package[] packages = project.getPackages();
-            if (packages != null) {
-                for (int i = 0; i < packages.length; i++) {
-                    Package item = packages[i];
-                    // replace '.' by file seperator because the patterns are
-                    // using file seperator syntax (and we can use the match
-                    // methods this way).
-                    String name = 
-                        project.getName()
-                        + File.separator
-                        + item.getName().replace('.', File.separatorChar); 
-                    if (isIncluded(name) && !isExcluded(name)) {
-                        packagesIncluded.addElement(item);
-                    }
-                }
-            }
-        } catch (IvjException e) {
-            throw VAJUtil.createBuildException("VA Exception occured: ", e);
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/default.ini b/src/main/org/apache/tools/ant/taskdefs/optional/ide/default.ini
deleted file mode 100644
index 1ccb894..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/default.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-Name=Ant
-Version=0.1
-Help-Item=Ant Help,doc/VAJAntTool.html
-Menu-Items=Ant Build,org.apache.tools.ant.taskdefs.optional.ide.VAJAntTool,-P;
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java b/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java
deleted file mode 100644
index d79b40a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.javacc;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.LogStreamHandler;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.CommandlineJava;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Hashtable;
-import java.util.Enumeration;
-
-/**
- * Taskdef for the JJTree compiler compiler.
- *
- * @author thomas.haas@softwired-inc.com
- * @author Michael Saunders <a href="mailto:michael@amtec.com">michael@amtec.com</a>
- */
-public class JJTree extends Task {
-
-    // keys to optional attributes
-    private static final String BUILD_NODE_FILES  = "BUILD_NODE_FILES";
-    private static final String MULTI             = "MULTI";
-    private static final String NODE_DEFAULT_VOID = "NODE_DEFAULT_VOID";
-    private static final String NODE_FACTORY      = "NODE_FACTORY";
-    private static final String NODE_SCOPE_HOOK   = "NODE_SCOPE_HOOK";
-    private static final String NODE_USES_PARSER  = "NODE_USES_PARSER";
-    private static final String STATIC            = "STATIC";
-    private static final String VISITOR           = "VISITOR";
-
-    private static final String NODE_PACKAGE      = "NODE_PACKAGE";
-    private static final String VISITOR_EXCEPTION = "VISITOR_EXCEPTION";
-    private static final String NODE_PREFIX       = "NODE_PREFIX";
-
-    private final Hashtable optionalAttrs = new Hashtable();
-
-    // required attributes
-    private File outputDirectory = null;
-    private File target          = null;
-    private File javaccHome      = null;
-
-    private CommandlineJava cmdl = new CommandlineJava();
-
-
-    public void setBuildnodefiles(boolean buildNodeFiles) {
-        optionalAttrs.put(BUILD_NODE_FILES, new Boolean(buildNodeFiles));
-    }
-
-    public void setMulti(boolean multi) {
-        optionalAttrs.put(MULTI, new Boolean(multi));
-    }
-
-    public void setNodedefaultvoid(boolean nodeDefaultVoid) {
-        optionalAttrs.put(NODE_DEFAULT_VOID, new Boolean(nodeDefaultVoid));
-    }
-
-    public void setNodefactory(boolean nodeFactory) {
-        optionalAttrs.put(NODE_FACTORY, new Boolean(nodeFactory));
-    }
-
-    public void setNodescopehook(boolean nodeScopeHook) {
-        optionalAttrs.put(NODE_SCOPE_HOOK, new Boolean(nodeScopeHook));
-    }
-
-    public void setNodeusesparser(boolean nodeUsesParser) {
-        optionalAttrs.put(NODE_USES_PARSER, new Boolean(nodeUsesParser));
-    }
-
-    public void setStatic(boolean staticParser) {
-        optionalAttrs.put(STATIC, new Boolean(staticParser));
-    }
-
-    public void setVisitor(boolean visitor) {
-        optionalAttrs.put(VISITOR, new Boolean(visitor));
-    }
-
-    public void setNodepackage(String nodePackage) {
-        optionalAttrs.put(NODE_PACKAGE, new String(nodePackage));
-    }
-
-    public void setVisitorException(String visitorException) {
-        optionalAttrs.put(VISITOR_EXCEPTION, new String(visitorException));
-    }
-
-    public void setNodeprefix(String nodePrefix) {
-        optionalAttrs.put(NODE_PREFIX, new String(nodePrefix));
-    }
-
-    public void setOutputdirectory(File outputDirectory) {
-        this.outputDirectory = outputDirectory;
-    }
-
-    public void setTarget(File target) {
-        this.target = target;
-    }
-
-    public void setJavacchome(File javaccHome) {
-        this.javaccHome = javaccHome;
-    }
-
-    public JJTree() {
-        cmdl.setVm("java");
-        cmdl.setClassname("COM.sun.labs.jjtree.Main");
-    }
-
-    public void execute() throws BuildException {
-
-        // load command line with optional attributes
-        Enumeration iter = optionalAttrs.keys();
-        while (iter.hasMoreElements()) {
-            String name  = (String)iter.nextElement();
-            Object value = optionalAttrs.get(name);
-            cmdl.createArgument().setValue("-"+name+":"+value.toString());
-        }
-
-        // load command line with required attributes
-        if (outputDirectory != null) {
-            if (!outputDirectory.isDirectory()) {
-                throw new BuildException("Outputdir not a directory.");
-            }
-            cmdl.createArgument().setValue(
-                "-OUTPUT_DIRECTORY:"+outputDirectory.getAbsolutePath());
-        }
-
-        if (target == null || !target.isFile()) {
-            throw new BuildException("Invalid target: " + target);
-        }
-        final File javaFile = new File(
-            target.toString().substring(0, target.toString().indexOf(".jjt")) + ".jj");
-        if (javaFile.exists() && target.lastModified() < javaFile.lastModified()) {
-            project.log("Target is already built - skipping (" + target + ")");
-            return;
-        }
-        cmdl.createArgument().setValue(target.getAbsolutePath());
-
-        if (javaccHome == null || !javaccHome.isDirectory()) {
-            throw new BuildException("Javacchome not set.");
-        }
-        final Path classpath = cmdl.createClasspath(project);
-        classpath.createPathElement().setPath(javaccHome.getAbsolutePath() +
-                                                  "/JavaCC.zip");
-
-        final Commandline.Argument arg = cmdl.createVmArgument();
-        arg.setValue("-mx140M");
-        arg.setValue("-Dinstall.root="+javaccHome.getAbsolutePath());
-
-        final Execute process =
-            new Execute(new LogStreamHandler(this,
-                                             Project.MSG_INFO,
-                                             Project.MSG_INFO),
-                        null);
-        log(cmdl.toString(), Project.MSG_VERBOSE);
-        process.setCommandline(cmdl.getCommandline());
-
-        try {
-            if (process.execute() != 0) {
-                throw new BuildException("JJTree failed.");
-            }
-        }
-        catch (IOException e) {
-            throw new BuildException("Failed to launch JJTree: " + e);
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java b/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java
deleted file mode 100644
index ae2d29d..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.javacc;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.LogStreamHandler;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.CommandlineJava;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Hashtable;
-import java.util.Enumeration;
-
-/**
- * Taskdef for the JavaCC compiler compiler.
- *
- * @author thomas.haas@softwired-inc.com
- * @author Michael Saunders <a href="mailto:michael@amtec.com">michael@amtec.com</a>
- */
-public class JavaCC extends Task {
-
-    // keys to optional attributes
-    private static final String LOOKAHEAD              = "LOOKAHEAD";
-    private static final String CHOICE_AMBIGUITY_CHECK = "CHOICE_AMBIGUITY_CHECK";
-    private static final String OTHER_AMBIGUITY_CHECK  = "OTHER_AMBIGUITY_CHECK";
-
-    private static final String STATIC                 = "STATIC";
-    private static final String DEBUG_PARSER           = "DEBUG_PARSER";
-    private static final String DEBUG_LOOKAHEAD        = "DEBUG_LOOKAHEAD";
-    private static final String DEBUG_TOKEN_MANAGER    = "DEBUG_TOKEN_MANAGER";
-    private static final String OPTIMIZE_TOKEN_MANAGER = "OPTIMIZE_TOKEN_MANAGER";
-    private static final String ERROR_REPORTING        = "ERROR_REPORTING";
-    private static final String JAVA_UNICODE_ESCAPE    = "JAVA_UNICODE_ESCAPE";
-    private static final String UNICODE_INPUT          = "UNICODE_INPUT";
-    private static final String IGNORE_CASE            = "IGNORE_CASE";
-    private static final String COMMON_TOKEN_ACTION    = "COMMON_TOKEN_ACTION";
-    private static final String USER_TOKEN_MANAGER     = "USER_TOKEN_MANAGER";
-    private static final String USER_CHAR_STREAM       = "USER_CHAR_STREAM";
-    private static final String BUILD_PARSER           = "BUILD_PARSER";
-    private static final String BUILD_TOKEN_MANAGER    = "BUILD_TOKEN_MANAGER";
-    private static final String SANITY_CHECK           = "SANITY_CHECK";
-    private static final String FORCE_LA_CHECK         = "FORCE_LA_CHECK";
-    private static final String CACHE_TOKENS           = "CACHE_TOKENS";
-
-    private final Hashtable optionalAttrs = new Hashtable();
-
-    // required attributes
-    private File outputDirectory = null;
-    private File target          = null;
-    private File javaccHome      = null;
-
-    private CommandlineJava cmdl = new CommandlineJava();
-
-
-    public void setLookahead(int lookahead) {
-        optionalAttrs.put(LOOKAHEAD, new Integer(lookahead));
-    }
-
-    public void setChoiceambiguitycheck(int choiceAmbiguityCheck) {
-        optionalAttrs.put(CHOICE_AMBIGUITY_CHECK, new Integer(choiceAmbiguityCheck));
-    }
-
-    public void setOtherambiguityCheck(int otherAmbiguityCheck) {
-        optionalAttrs.put(OTHER_AMBIGUITY_CHECK, new Integer(otherAmbiguityCheck));
-    }
-
-    public void setStatic(boolean staticParser) {
-        optionalAttrs.put(STATIC, new Boolean(staticParser));
-    }
-
-    public void setDebugparser(boolean debugParser) {
-        optionalAttrs.put(DEBUG_PARSER, new Boolean(debugParser));
-    }
-
-    public void setDebuglookahead(boolean debugLookahead) {
-        optionalAttrs.put(DEBUG_LOOKAHEAD, new Boolean(debugLookahead));
-    }
-
-    public void setDebugtokenmanager(boolean debugTokenManager) {
-        optionalAttrs.put(DEBUG_TOKEN_MANAGER, new Boolean(debugTokenManager));
-    }
-
-    public void setOptimizetokenmanager(boolean optimizeTokenManager) {
-        optionalAttrs.put(OPTIMIZE_TOKEN_MANAGER, new Boolean(optimizeTokenManager));
-    }
-
-    public void setErrorreporting(boolean errorReporting) {
-        optionalAttrs.put(ERROR_REPORTING, new Boolean(errorReporting));
-    }
-
-    public void setJavaunicodeescape(boolean javaUnicodeEscape) {
-        optionalAttrs.put(JAVA_UNICODE_ESCAPE, new Boolean(javaUnicodeEscape));
-    }
-
-    public void setUnicodeinput(boolean unicodeInput) {
-        optionalAttrs.put(UNICODE_INPUT, new Boolean(unicodeInput));
-    }
-
-    public void setIgnorecase(boolean ignoreCase) {
-        optionalAttrs.put(IGNORE_CASE, new Boolean(ignoreCase));
-    }
-
-    public void setCommontokenaction(boolean commonTokenAction) {
-        optionalAttrs.put(COMMON_TOKEN_ACTION, new Boolean(commonTokenAction));
-    }
-
-    public void setUsertokenmanager(boolean userTokenManager) {
-        optionalAttrs.put(USER_TOKEN_MANAGER, new Boolean(userTokenManager));
-    }
-
-    public void setUsercharstream(boolean userCharStream) {
-        optionalAttrs.put(USER_CHAR_STREAM, new Boolean(userCharStream));
-    }
-
-    public void setBuildparser(boolean buildParser) {
-        optionalAttrs.put(BUILD_PARSER, new Boolean(buildParser));
-    }
-
-    public void setBuildtokenmanager(boolean buildTokenManager) {
-        optionalAttrs.put(BUILD_TOKEN_MANAGER, new Boolean(buildTokenManager));
-    }
-
-    public void setSanitycheck(boolean sanityCheck) {
-        optionalAttrs.put(SANITY_CHECK, new Boolean(sanityCheck));
-    }
-
-    public void setForcelacheck(boolean forceLACheck) {
-        optionalAttrs.put(FORCE_LA_CHECK, new Boolean(forceLACheck));
-    }
-
-    public void setCachetokens(boolean cacheTokens) {
-        optionalAttrs.put(CACHE_TOKENS, new Boolean(cacheTokens));
-    }
-
-    public void setOutputdirectory(File outputDirectory) {
-        this.outputDirectory = outputDirectory;
-    }
-
-    public void setTarget(File target) {
-        this.target = target;
-    }
-
-    public void setJavacchome(File javaccHome) {
-        this.javaccHome = javaccHome;
-    }
-
-    public JavaCC() {
-        cmdl.setVm("java");
-        cmdl.setClassname("COM.sun.labs.javacc.Main");
-    }
-
-    public void execute() throws BuildException {
-
-        // load command line with optional attributes
-        Enumeration iter = optionalAttrs.keys();
-        while (iter.hasMoreElements()) {
-            String name  = (String)iter.nextElement();
-            Object value = optionalAttrs.get(name);
-            cmdl.createArgument().setValue("-"+name+":"+value.toString());
-        }
-
-        // check the target is a file
-        if (target == null || !target.isFile()) {
-            throw new BuildException("Invalid target: " + target);
-        }
-
-        // use the directory containing the target as the output directory
-        if (outputDirectory == null) {
-            outputDirectory = new File(target.getParent());
-        }
-        else if (!outputDirectory.isDirectory()) {
-            throw new BuildException("Outputdir not a directory.");
-        }
-        cmdl.createArgument().setValue(
-            "-OUTPUT_DIRECTORY:"+outputDirectory.getAbsolutePath());
-
-        // determine if the generated java file is up-to-date
-        final File javaFile = getOutputJavaFile(outputDirectory, target);
-        if (javaFile.exists() && target.lastModified() < javaFile.lastModified()) {
-            log("Target is already built - skipping (" + target + ")", Project.MSG_VERBOSE);
-            return;
-        }
-        cmdl.createArgument().setValue(target.getAbsolutePath());
-
-        if (javaccHome == null || !javaccHome.isDirectory()) {
-            throw new BuildException("Javacchome not set.");
-        }
-        final Path classpath = cmdl.createClasspath(project);
-        classpath.createPathElement().setPath(javaccHome.getAbsolutePath() +
-                                                  "/JavaCC.zip");
-
-        final Commandline.Argument arg = cmdl.createVmArgument();
-        arg.setValue("-mx140M");
-        arg.setValue("-Dinstall.root="+javaccHome.getAbsolutePath());
-
-        Execute.runCommand(this, cmdl.getCommandline());
-    }
-
-    /**
-     * Determines the output Java file to be generated by the given grammar
-     * file.
-     * 
-     */
-    private File getOutputJavaFile(File outputdir, File srcfile)
-    {
-        String path = srcfile.getPath();
-
-        // Extract file's base-name
-        int startBasename = path.lastIndexOf(File.separator);
-        if ( startBasename != -1 ) {
-            path = path.substring(startBasename+1);
-        }
-
-        // Replace the file's extension with '.java'
-        int startExtn = path.lastIndexOf('.');
-        if (startExtn != -1) {
-            path = path.substring(0, startExtn) + ".java";
-        }
-        else {
-            path += ".java";
-        }
-
-        // Change the directory
-        if (outputdir != null) {
-            path = outputdir + File.separator + path;
-        }
-
-        return new File(path);
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java
deleted file mode 100644
index 4b8c7d0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.jlink;
-
-import java.io .*;
-
-/**
- * Reads just enough of a class file to determine the class' full name.
- *
- * <p>Extremely minimal constant pool implementation, mainly to support extracting
- * strings from a class file.
- * @author <a href="mailto:beard@netscape.com">Patrick C. Beard</a>.
- */
-class ConstantPool extends Object{
-
-    static final 
-        byte UTF8 = 1, UNUSED = 2, INTEGER = 3, FLOAT = 4, LONG = 5, DOUBLE = 6,
-        CLASS = 7, STRING = 8, FIELDREF = 9, METHODREF = 10,
-        INTERFACEMETHODREF = 11, NAMEANDTYPE = 12;
-
-    byte[] types;
-
-    Object[] values;
-
-    ConstantPool( DataInput data ) throws IOException {
-        super();
-
-        int count = data .readUnsignedShort();
-        types = new byte [ count ];
-        values = new Object [ count ];
-        // read in all constant pool entries.
-        for ( int i = 1; i < count; i++ ) {
-            byte type = data .readByte();
-            types[i] = type;
-            switch (type)
-            {
-            case UTF8 :
-                values[i] = data .readUTF();
-                break;
-                                
-            case UNUSED :
-                break;
-                                
-            case INTEGER :
-                values[i] = new Integer( data .readInt() );
-                break;
-                                
-            case FLOAT :
-                values[i] = new Float( data .readFloat() );
-                break;
-                                
-            case LONG :
-                values[i] = new Long( data .readLong() );
-                ++i;
-                break;
-                                
-            case DOUBLE :
-                values[i] = new Double( data .readDouble() );
-                ++i;
-                break;
-                                
-            case CLASS :
-            case STRING :
-                values[i] = new Integer( data .readUnsignedShort() );
-                break;
-                                
-            case FIELDREF :
-            case METHODREF :
-            case INTERFACEMETHODREF :
-            case NAMEANDTYPE :
-                values[i] = new Integer( data .readInt() );
-                break;
-            }
-        }
-    }
-
-
-}
-/**
- * Provides a quick and dirty way to determine the true name of a class
- * given just an InputStream. Reads in just enough to perform this
- * minimal task only.
- */
-public class ClassNameReader extends Object{
-
-    public static 
-        String getClassName( InputStream input ) throws IOException {
-        DataInputStream data = new DataInputStream( input );
-        // verify this is a valid class file.
-        int cookie = data .readInt();
-        if ( cookie != 0xCAFEBABE ) {
-            return null;
-        }
-        int version = data .readInt();
-        // read the constant pool.
-        ConstantPool constants = new ConstantPool( data );
-        Object[] values = constants .values;
-        // read access flags and class index.
-        int accessFlags = data .readUnsignedShort();
-        int classIndex = data .readUnsignedShort();
-        Integer stringIndex = (Integer) values[classIndex];
-        String className = (String) values[stringIndex .intValue()];
-        return className;
-    }
-
-
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/JlinkTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/JlinkTask.java
deleted file mode 100644
index a217232..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/JlinkTask.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.jlink;
-
-import org.apache.tools.ant .*;
-import org.apache.tools.ant.taskdefs.MatchingTask;
-import org.apache.tools.ant.types .*;
-import java.io.File;
-
-/**
- * This class defines objects that can link together various jar and
- * zip files. 
- *
- * <p>It is basically a wrapper for the jlink code written originally
- * by <a href="mailto:beard@netscape.com">Patrick Beard</a>.  The
- * classes org.apache.tools.ant.taskdefs.optional.jlink.Jlink and
- * org.apache.tools.ant.taskdefs.optional.jlink.ClassNameReader
- * support this class.</p>
- *
- * <p>For example:
- * <code>
- * <pre>
- * &lt;jlink compress=&quot;false&quot; outfile=&quot;out.jar&quot;/&gt;
- *   &lt;mergefiles&gt;
- *     &lt;pathelement path=&quot;${build.dir}/mergefoo.jar&quot;/&gt;
- *     &lt;pathelement path=&quot;${build.dir}/mergebar.jar&quot;/&gt;
- *   &lt;/mergefiles&gt;
- *   &lt;addfiles&gt;
- *     &lt;pathelement path=&quot;${build.dir}/mac.jar&quot;/&gt;
- *     &lt;pathelement path=&quot;${build.dir}/pc.zip&quot;/&gt;
- *   &lt;/addfiles&gt;
- * &lt;/jlink&gt;
- * </pre>
- * </code>
- *
- * @author <a href="mailto:matthew.k.heun@gaerospace.com">Matthew Kuperus Heun</a> */
-public class JlinkTask extends MatchingTask {
-
-    /**
-     * The output file for this run of jlink. Usually a jar or zip file.
-     */
-    public  void setOutfile( File outfile ) {
-        this.outfile = outfile;
-    }
-
-    /**
-     * Establishes the object that contains the files to
-     * be merged into the output.
-     */
-    public  Path createMergefiles() {
-        if ( this .mergefiles == null ) {
-            this .mergefiles = new Path(getProject());
-        }
-        return this .mergefiles.createPath();
-    }
-
-    /**
-     * Sets the files to be merged into the output.
-     */
-    public  void setMergefiles( Path mergefiles ) {
-        if ( this .mergefiles == null ) {
-            this .mergefiles = mergefiles;
-        }
-        else {
-            this .mergefiles .append( mergefiles );
-        }
-    }
-
-    /**
-     * Establishes the object that contains the files to
-     * be added to the output.
-     */
-    public  Path createAddfiles() {
-        if ( this .addfiles == null ) {
-            this .addfiles = new Path(getProject());
-        }
-        return this .addfiles .createPath();
-    }
-
-    /**
-     * Sets the files to be added into the output.
-     */
-    public  void setAddfiles( Path addfiles ) {
-        if ( this .addfiles == null ) {
-            this .addfiles = addfiles;
-        }
-        else {
-            this .addfiles .append( addfiles );
-        }
-    }
-
-    /**
-     * Defines whether or not the output should be compacted.
-     */
-    public  void setCompress( boolean compress ) {
-        this .compress = compress;
-    }
-
-    /**
-     * Does the adding and merging.
-     */
-    public  void execute() throws BuildException {
-        //Be sure everything has been set.
-        if ( outfile == null ) {
-            throw new BuildException( "outfile attribute is required! Please set." );
-        }
-        if (!haveAddFiles() && !haveMergeFiles()) {
-            throw new BuildException( "addfiles or mergefiles required! Please set." );
-        }
-        log( "linking:     " + outfile.getPath() );
-        log( "compression: " + compress, Project.MSG_VERBOSE );
-        jlink linker = new jlink();
-        linker .setOutfile( outfile.getPath() );
-        linker .setCompression( compress );
-        if (haveMergeFiles()){
-            log( "merge files: " + mergefiles .toString(), Project .MSG_VERBOSE );
-            linker .addMergeFiles( mergefiles .list() );
-        }
-        if (haveAddFiles()){
-            log( "add files: " + addfiles .toString(), Project .MSG_VERBOSE );
-            linker .addAddFiles( addfiles .list() );
-        }
-        try  {
-            linker .link();
-        } catch( Exception ex ) {
-            throw new BuildException( ex, location );
-        }
-    }
-
-    private boolean haveAddFiles(){
-        return haveEntries(addfiles);
-    }
-
-    private boolean haveMergeFiles(){
-        return haveEntries(mergefiles);
-    }
-
-    private boolean haveEntries(Path p){
-        if (p == null){
-            return false;
-        }
-        if (p.size() > 0){
-            return true;
-        }
-        return false;
-    }
-
-    private  File outfile = null;
-
-    private  Path mergefiles = null;
-
-    private  Path addfiles = null;
-
-    private  boolean compress = false;
-
-    private  String ps = System .getProperty( "path.separator" );
-
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java
deleted file mode 100644
index dac3679..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-/**
- * jlink.java
- * links together multiple .jar files
- * 
- * Original code by Patrick Beard. Modifications to work
- * with ANT by Matthew Kuperus Heun.
- *
- * @author <a href="mailto:beard@netscape.com>Patrick C. Beard</a>.
- * @author <a href="mailto:matthew.k.heun@gaerospace.com>Matthew Kuperus Heun</a>
- */
-package org.apache.tools.ant.taskdefs.optional.jlink;
-
-import java.io .*;
-import java.util .Enumeration;
-import java.util .Vector;
-import java.util.zip .*;
-
-public class jlink extends Object{
-
-    /**
-     * The file that will be created by this instance of jlink.
-     */
-    public  void setOutfile( String outfile ) {
-        if ( outfile == null ) {
-            return ;
-        }
-        this .outfile = outfile;
-    }
-
-    /**
-     * Adds a file to be merged into the output.
-     */
-    public  void addMergeFile( String mergefile ) {
-        if ( mergefile == null ) {
-            return ;
-        }
-        mergefiles .addElement( mergefile );
-    }
-
-    /**
-     * Adds a file to be added into the output.
-     */
-    public  void addAddFile( String addfile ) {
-        if ( addfile == null ) {
-            return ;
-        }
-        addfiles .addElement( addfile );
-    }
-
-    /**
-     * Adds several files to be merged into the output.
-     */
-    public  void addMergeFiles( String[] mergefiles ) {
-        if ( mergefiles == null ) {
-            return ;
-        }
-        for ( int i = 0; i < mergefiles .length; i++ ) {
-            addMergeFile( mergefiles[i] );
-        }
-    }
-
-    /**
-     * Adds several file to be added into the output.
-     */
-    public  void addAddFiles( String[] addfiles ) {
-        if ( addfiles == null ) {
-            return ;
-        }
-        for ( int i = 0; i < addfiles .length; i++ ) {
-            addAddFile( addfiles[i] );
-        }
-    }
-
-    /**
-     * Determines whether output will be compressed.
-     */
-    public  void setCompression( boolean compress ) {
-        this .compression = compress;
-    }
-
-    /**
-     * Performs the linking of files.
-     * Addfiles are added to the output as-is. For example, a 
-     * jar file is added to the output as a jar file.
-     * However, mergefiles are first examined for their type.
-     * If it is a jar or zip file, the contents will be extracted
-     * from the mergefile and entered into the output.
-     * If a zip or jar file is encountered in a subdirectory
-     * it will be added, not merged.
-     * If a directory is encountered, it becomes the root
-     * entry of all the files below it.  Thus, you can
-     * provide multiple, disjoint directories, as
-     * addfiles: they will all be added in a rational 
-     * manner to outfile.
-     */
-    public  void link() throws Exception {
-        ZipOutputStream output = new ZipOutputStream( new FileOutputStream( outfile ) );
-        if ( compression ) {
-            output .setMethod( ZipOutputStream .DEFLATED );
-            output .setLevel( Deflater .DEFAULT_COMPRESSION );
-        } else {
-            output .setMethod( ZipOutputStream .STORED );
-        }
-        Enumeration merges = mergefiles .elements();
-        while ( merges .hasMoreElements() ) {
-            String path = (String) merges .nextElement();
-            File f = new File( path );
-            if ( f.getName().endsWith( ".jar" ) || f.getName().endsWith( ".zip" ) ) {
-                                //Do the merge
-                mergeZipJarContents( output, f );
-            }
-            else {
-                //Add this file to the addfiles Vector and add it 
-                //later at the top level of the output file.
-                addAddFile( path );
-            }
-        }
-        Enumeration adds = addfiles .elements();
-        while ( adds .hasMoreElements() ) {
-            String name = (String) adds .nextElement();
-            File f = new File( name );
-            if ( f .isDirectory() ) {
-                //System.out.println("in jlink: adding directory contents of " + f.getPath());
-                addDirContents( output, f, f.getName() + '/', compression );
-            }
-            else {
-                addFile( output, f, "", compression );
-            }
-        }
-        if ( output != null ) {
-            try  {
-                output .close();
-            } catch( IOException ioe ) {}
-        }
-    }
-
-    public static  void main( String[] args ) {
-        // jlink output input1 ... inputN
-        if ( args .length < 2 ) {
-            System .out .println( "usage: jlink output input1 ... inputN" );
-            System .exit( 1 );
-        }
-        jlink linker = new jlink();
-        linker .setOutfile( args[0] );
-        //To maintain compatibility with the command-line version, we will only add files to be merged.
-        for ( int i = 1; i < args .length; i++ ) {
-            linker .addMergeFile( args[i] );
-        }
-        try  {
-            linker .link();
-        } catch( Exception ex ) {
-            System .err .print( ex .getMessage() );
-        }
-    }
-
-    /*
-     * Actually performs the merging of f into the output.
-     * f should be a zip or jar file.
-     */
-    private void mergeZipJarContents( ZipOutputStream output, File f ) throws IOException {
-        //Check to see that the file with name "name" exists.
-        if ( ! f .exists() ) {
-            return ;
-        }
-        ZipFile zipf = new ZipFile( f );
-        Enumeration entries = zipf.entries();
-        while (entries.hasMoreElements()){
-            ZipEntry inputEntry = (ZipEntry) entries.nextElement();
-            //Ignore manifest entries.  They're bound to cause conflicts between
-            //files that are being merged.  User should supply their own
-            //manifest file when doing the merge.
-            String inputEntryName = inputEntry.getName();
-            int index = inputEntryName.indexOf("META-INF");
-            if (index < 0){
-                //META-INF not found in the name of the entry. Go ahead and process it.
-                try {
-                    output.putNextEntry(processEntry(zipf, inputEntry));
-                } catch (ZipException ex){
-                    //If we get here, it could be because we are trying to put a
-                    //directory entry that already exists.
-                    //For example, we're trying to write "com", but a previous
-                    //entry from another mergefile was called "com".
-                    //In that case, just ignore the error and go on to the
-                    //next entry.
-                    String mess = ex.getMessage();
-                    if (mess.indexOf("duplicate") >= 0){
-                                //It was the duplicate entry.
-                        continue;
-                    } else {
-                                //I hate to admit it, but we don't know what happened here.  Throw the Exception.
-                        throw ex;
-                    }
-                }
-                InputStream in = zipf.getInputStream(inputEntry);
-                int len = buffer.length;
-                int count = -1;
-                while ((count = in.read(buffer, 0, len)) > 0){
-                    output.write(buffer, 0, count);
-                }
-                in.close();
-                output.closeEntry();
-            }
-        }
-        zipf .close();
-    }
-
-    /*
-     * Adds contents of a directory to the output.
-     */
-    private void addDirContents( ZipOutputStream output, File dir, String prefix, boolean compress ) throws IOException {
-        String[] contents = dir .list();
-        for ( int i = 0; i < contents .length; ++i ) {
-            String name = contents[i];
-            File file = new File( dir, name );
-            if ( file .isDirectory() ) {
-                addDirContents( output, file, prefix + name + '/', compress );
-            }
-            else {
-                addFile( output, file, prefix, compress );
-            }
-        }
-    }
-
-    /*
-     * Gets the name of an entry in the file.  This is the real name
-     * which for a class is the name of the package with the class
-     * name appended.
-     */
-    private String getEntryName( File file, String prefix ) {
-        String name = file .getName();
-        if ( ! name .endsWith( ".class" ) ) {
-            // see if the file is in fact a .class file, and determine its actual name.
-            try  {
-                InputStream input = new FileInputStream( file );
-                String className = ClassNameReader .getClassName( input );
-                input .close();
-                if ( className != null ) {
-                    return className .replace( '.', '/' ) + ".class";
-                }
-            } catch( IOException ioe ) {}
-        }
-        System.out.println("From " + file.getPath() + " and prefix " + prefix + ", creating entry " + prefix+name);
-        return (prefix + name);
-    }
-
-    /*
-     * Adds a file to the output stream.
-     */
-    private void addFile( ZipOutputStream output, File file, String prefix, boolean compress) throws IOException {
-        //Make sure file exists
-        long checksum = 0;
-        if ( ! file .exists() ) {
-            return ;
-        }
-        ZipEntry entry = new ZipEntry( getEntryName( file, prefix ) );
-        entry .setTime( file .lastModified() );
-        entry .setSize( file .length() );
-        if (! compress){
-            entry.setCrc(calcChecksum(file));
-        }
-        FileInputStream input = new FileInputStream( file );
-        addToOutputStream(output, input, entry);
-    }
-        
-    /*
-     * A convenience method that several other methods might call.
-     */
-    private void addToOutputStream(ZipOutputStream output, InputStream input, ZipEntry ze) throws IOException{
-        try {
-            output.putNextEntry(ze);            
-        } catch (ZipException zipEx) {
-            //This entry already exists. So, go with the first one.
-            input.close();
-            return;
-        }
-        int numBytes = -1;
-        while((numBytes = input.read(buffer)) > 0){
-            output.write(buffer, 0, numBytes);
-        }
-        output.closeEntry();
-        input.close();
-    }
-
-    /*
-     * A method that does the work on a given entry in a mergefile.
-     * The big deal is to set the right parameters in the ZipEntry 
-     * on the output stream.
-     */
-    private ZipEntry processEntry( ZipFile zip, ZipEntry inputEntry ) throws IOException{
-        /*
-          First, some notes.
-          On MRJ 2.2.2, getting the size, compressed size, and CRC32 from the
-          ZipInputStream does not work for compressed (deflated) files.  Those calls return -1.
-          For uncompressed (stored) files, those calls do work.
-          However, using ZipFile.getEntries() works for both compressed and 
-          uncompressed files.
-            
-          Now, from some simple testing I did, it seems that the value of CRC-32 is
-          independent of the compression setting. So, it should be easy to pass this 
-          information on to the output entry.
-        */
-        String name = inputEntry .getName();
-        if ( ! (inputEntry .isDirectory() || name .endsWith( ".class" )) ) {
-            try  {
-                InputStream input = zip.getInputStream( zip .getEntry( name ) );
-                String className = ClassNameReader .getClassName( input );
-                input .close();
-                if ( className != null ) {
-                    name = className .replace( '.', '/' ) + ".class";
-                }
-            } catch( IOException ioe ) {}
-        }
-        ZipEntry outputEntry = new ZipEntry( name );
-        outputEntry.setTime(inputEntry .getTime() );
-        outputEntry.setExtra(inputEntry.getExtra());
-        outputEntry.setComment(inputEntry.getComment());
-        outputEntry.setTime(inputEntry.getTime());
-        if (compression){
-            outputEntry.setMethod(ZipEntry.DEFLATED);
-            //Note, don't need to specify size or crc for compressed files.
-        } else {
-            outputEntry.setMethod(ZipEntry.STORED);
-            outputEntry.setCrc(inputEntry.getCrc());
-            outputEntry.setSize(inputEntry.getSize());
-        }
-        return outputEntry;
-    }
-        
-    /*
-     * Necessary in the case where you add a entry that
-     * is not compressed.
-     */
-    private long calcChecksum(File f) throws IOException {
-        BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
-        return calcChecksum(in, f.length());
-    }
-
-    /*
-     * Necessary in the case where you add a entry that
-     * is not compressed.
-     */
-    private long calcChecksum(InputStream in, long size) throws IOException{
-        CRC32 crc = new CRC32();
-        int len = buffer.length;
-        int count = -1;
-        int haveRead = 0; 
-        while((count=in.read(buffer, 0, len)) > 0){
-            haveRead += count;
-            crc.update(buffer, 0, count);
-        }
-        in.close();
-        return crc.getValue();
-    }
-
-    private  String outfile = null;
-
-    private  Vector mergefiles = new Vector( 10 );
-
-    private  Vector addfiles = new Vector( 10 );
-
-    private  boolean compression = false;
-        
-    byte[] buffer = new byte[8192];
-
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/WLJspc.java b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/WLJspc.java
deleted file mode 100644
index 51d45b4..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/WLJspc.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.jsp;
-
-//apache/ant imports
-import org.apache.tools.ant.taskdefs.MatchingTask;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.taskdefs.Java;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.Project;
-
-
-//java imports
-import java.io.File;
-import java.util.Vector;
-import java.util.Date;
-import java.util.StringTokenizer;
-
-/**
- * Class to precompile JSP's using weblogic's jsp compiler (weblogic.jspc)
- * 
- * @author <a href="mailto:avik@aviksengupta.com">Avik Sengupta</a> http://www.webteksoftware.com
- * 
- * Tested only on Weblogic 4.5.1 - NT4.0 and Solaris 5.7
- * 
- * required attributes
- *      src : root of source tree for JSP, ie, the document root for your weblogic server
- *      dest : root of destination directory, what you have set as WorkingDir in the weblogic properties
- *      package : start package name under which your JSP's would be compiled
- * 
- * other attributes
- *     classpath
- * 
- * A classpath should be set which contains the weblogic classes as well as all application classes
- * referenced by the JSP. The system classpath is also appended when the jspc is called, so you may 
- * choose to put everything in the classpath while calling Ant. However, since presumably the JSP's will reference
- * classes being build by Ant, it would be better to explicitly add the classpath in the task
- * 
- * The task checks timestamps on the JSP's and the generated classes, and compiles
- * only those files that have changed. 
- * 
- * It follows the weblogic naming convention of putting classes in 
- *  <b> _dirName/_fileName.class for dirname/fileName.jsp   </b>
- * 
- * Limitation: It compiles the files thru the Classic compiler only. 
- * Limitation: Since it is my experience that weblogic jspc throws out of memory error on being given too
- *             many files at one go, it is called multiple times with one jsp file each. 
- * 
- * <pre>
- * example
- * <target name="jspcompile" depends="compile">
- *   <wljspc src="c:\\weblogic\\myserver\\public_html" dest="c:\\weblogic\\myserver\\serverclasses" package="myapp.jsp" >
- *   <classpath>
- *          <pathelement location="${weblogic.classpath}" />
- *           <pathelement path="${compile.dest}" />
- *      </classpath>
- * 
- *   </wljspc>
- * </target>
- * </pre>
- * 
- */
-
-public class WLJspc extends MatchingTask
-{
-    //TODO Test on other versions of weblogic
-    //TODO add more attributes to the task, to take care of all jspc options
-    //TODO Test on Unix
-    
-    private File destinationDirectory; //root of compiled files tree
-    private File sourceDirectory; // root of source files tree
-    private String destinationPackage; //package under which resultant classes will reside
-    private Path compileClasspath; //classpath used to compile the jsp files. 
-    //private String compilerPath; //fully qualified name for the compiler executable
-    
-    private String pathToPackage = "";
-    private Vector filesToDo = new Vector();
-    
-    public void execute() throws BuildException {
-        if (!destinationDirectory.isDirectory()) {
-            throw new BuildException("destination directory " + destinationDirectory.getPath() + 
-                                     " is not valid");
-        }
-                               
-        if (!sourceDirectory.isDirectory()) {
-            throw new BuildException("src directory " + sourceDirectory.getPath() + 
-                                     " is not valid");
-        }
-
-        if (destinationPackage == null) {
-            throw new BuildException("package attribute must be present.", location);
-        }
-        
-        
-        String systemClassPath = System.getProperty("java.class.path");
-        
-        pathToPackage = this.destinationPackage.replace('.',File.separatorChar);
-        // get all the files in the sourceDirectory
-        DirectoryScanner ds = super.getDirectoryScanner(sourceDirectory);
-
-        //use the systemclasspath as well, to include the ant jar
-        if (compileClasspath == null) {
-            compileClasspath = new Path(project);
-        }
-        
-        compileClasspath.append(Path.systemClasspath);
-        String[] files = ds.getIncludedFiles();
-        
-        //Weblogic.jspc calls System.exit() ... have to fork
-        // Therefore, takes loads of time 
-        // Can pass directories at a time (*.jsp) but easily runs out of memory on hefty dirs 
-        // (even on  a Sun)
-        Java helperTask = (Java)project.createTask("java");
-        helperTask.setFork(true);
-        helperTask.setClassname("weblogic.jspc");
-        helperTask.setTaskName(getTaskName());
-        String[] args = new String[12];
-        
-        File jspFile = null;
-        String parents = "";
-        String arg = "";
-        int j=0;
-        //XXX  this array stuff is a remnant of prev trials.. gotta remove. 
-        args[j++] = "-d";
-        args[j++] = destinationDirectory.getAbsolutePath().trim(); 
-        args[j++] = "-docroot";
-        args[j++] = sourceDirectory.getAbsolutePath().trim();
-        args[j++] = "-keepgenerated";  //TODO: Parameterise ??
-        //Call compiler as class... dont want to fork again 
-        //Use classic compiler -- can be parameterised?
-        args[j++] =  "-compilerclass";
-        args[j++] = "sun.tools.javac.Main";
-        //Weblogic jspc does not seem to work unless u explicitly set this...
-        // Does not take the classpath from the env....
-        // Am i missing something about the Java task??
-        args[j++] = "-classpath";
-        args[j++] = compileClasspath.toString();
-            
-        this.scanDir(files);
-        log("Compiling "+filesToDo.size() + " JSP files");
-            
-        for (int i=0;i<filesToDo.size();i++) {
-            //XXX
-            // All this to get package according to weblogic standards
-            // Can be written better... this is too hacky! 
-            // Careful.. similar code in scanDir , but slightly different!!
-            jspFile = new File((String) filesToDo.elementAt(i));
-            args[j] = "-package";
-            parents = jspFile.getParent();
-            if ((parents != null)  && (!("").equals(parents))) {
-                parents =  this.replaceString(parents,File.separator,"_.");
-                args[j+1] = destinationPackage +"."+ "_"+parents;   
-            }else {
-                args[j+1] = destinationPackage;
-            }
-            
-            
-            args[j+2] =  sourceDirectory+File.separator+(String) filesToDo.elementAt(i);
-            arg="";
-            
-            for (int x=0;x<12;x++) {
-                arg += " "+ args[x];
-            }
-            
-            System.out.println("arg = " + arg);
-            
-            helperTask.clearArgs();
-            helperTask.setArgs(arg);
-            helperTask.setClasspath(compileClasspath);
-            if (helperTask.executeJava() != 0) {                         
-                log(files[i] + " failed to compile",Project.MSG_WARN) ;
-            }
-        }
-    }
-
-    
-    
-    /**
-     * Set the classpath to be used for this compilation.
-     * 
-     */
-    public void setClasspath(Path classpath) {
-        if (compileClasspath == null) {
-            compileClasspath = classpath;
-        } else {
-            compileClasspath.append(classpath);
-        }
-    }
-
-    /**
-     * Maybe creates a nested classpath element.
-     */
-    public Path createClasspath() {
-        if (compileClasspath == null) {
-            compileClasspath = new Path(project);
-        }
-        return compileClasspath;
-    }
-
-    /**
-     * Set the directory containing the source jsp's
-     * 
-     *
-     * @param dirName the directory containg the source jsp's
-     */
-    public void setSrc(File dirName) {
-        
-        sourceDirectory = dirName;
-    }
-    
-     /**
-     * Set the directory containing the source jsp's
-     * 
-     *
-     * @param dirName the directory containg the source jsp's
-     */
-    public void setDest(File dirName) {
-        
-        destinationDirectory = dirName;
-    }
-    
-    /**
-     * Set the package under which the compiled classes go
-     * 
-     * @param packageName the package name for the clases
-     */
-    public void setPackage(String packageName) {
-        
-        destinationPackage=packageName; 
-    }
-    
-    
-    
-    protected void scanDir(String files[]) {
-
-        long now = (new Date()).getTime();
-        File jspFile = null;
-        String parents = null;
-        String pack = "";
-        for (int i = 0; i < files.length; i++) {
-            File srcFile = new File(this.sourceDirectory, files[i]);
-            //XXX
-            // All this to convert source to destination directory according to weblogic standards
-            // Can be written better... this is too hacky!
-            jspFile = new File(files[i]);
-            parents = jspFile.getParent();
-            int loc=0;
-            
-            if ((parents != null)  && (!("").equals(parents))) {
-                parents =  this.replaceString(parents,File.separator,"_/");
-                pack = pathToPackage +File.separator+ "_"+parents;  
-            }else {
-                pack = pathToPackage;
-            }
-            
-            String filePath = pack + File.separator + "_";
-            int startingIndex 
-                = files[i].lastIndexOf(File.separator) != -1 ? files[i].lastIndexOf(File.separator) + 1 : 0;
-            int endingIndex = files[i].indexOf(".jsp");
-            if (endingIndex == -1) {
-                break;
-            }
-            
-            filePath += files[i].substring(startingIndex, endingIndex);
-            filePath += ".class";
-            File classFile = new File(this.destinationDirectory, filePath);
-
-            if (srcFile.lastModified() > now) {
-                log("Warning: file modified in the future: " +
-                    files[i], Project.MSG_WARN);
-            }
-            if (srcFile.lastModified() > classFile.lastModified()) {
-               //log("Files are" + srcFile.getAbsolutePath()+" " +classFile.getAbsolutePath());
-                filesToDo.addElement(files[i]);
-                log("Recompiling File "+files[i],Project.MSG_VERBOSE);
-            }
-        }
-    }
-    
-    
-    protected String replaceString(String inpString,String escapeChars,String replaceChars) {
-        String localString="";
-        int numTokens=0;
-        StringTokenizer st=new StringTokenizer(inpString,escapeChars,true);
-        numTokens=st.countTokens();
-        for(int i=0;i<numTokens;i++)
-        {
-            String test=st.nextToken();
-            test=(test.equals(escapeChars)?replaceChars:test);
-            localString+=test;
-        }
-        return localString;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
deleted file mode 100644
index b605cc0..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
+++ /dev/null
@@ -1,528 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildException;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.NamedNodeMap;
-
-import org.xml.sax.SAXException;
-
-/**
- * Transform a JUnit xml report.
- * The default transformation generates an html report in either framed or non-framed
- * style. The non-framed style is convenient to have a concise report via mail, the
- * framed report is much more convenient if you want to browse into different
- * packages or testcases since it is a Javadoc like report.
- * In the framed report, there are 3 frames:
- * <ul>
- *  <li>packageListFrame - list of all packages.
- *  <li>classListFrame - summary of all testsuites belonging to a package or tests list.
- *  <li>classFrame - details of all tests made for a package or for a testsuite.
- * </ul>
- * As a default, the transformer will use its default stylesheets, they may not be
- * be appropriate for users who wants to customize their reports, so you can indicates
- * your own stylesheets by using <tt>setStyleDir()</tt>.
- * Stylesheets must be as follows:
- * <ul>
- *   <li><b>all-packages.xsl</b> create the package list. It creates
- *   all-packages.html file in the html folder and it is load in the packageListFrame</li>
- *   <li><b>all-classes.xsl</b> creates the class list. It creates the all-classes.html
- * file in the html folder is loaded by the 'classListFrame' frame</li>
- *   <li><b>overview-packages.xsl</b> allows to get summary on all tests made
- *   for each packages and each class that not include in a package. The filename
- *   is overview-packages.html</li>
- *   <li><b>class-detail.xsl</b> is the style for the detail of the tests made on a class.
- *   the Html resulting page in write in the directory of the package and the name
- *   of this page is the name of the class with "-detail" element. For instance,
- *   the style is applied on the MyClass testsuite, the resulting filename is
- *   <u>MyClass-detail.html</u>. This file is load in the "classFrame" frame.</li>
- *   <li><b>package-summary.xsl</b> allows to create a summary on the package.
- *   The resulting html file is write in the package directory. The name of this
- *   file is <u>package-summary.html</u> This file is load in the "classFrame" frame.</li>
- *   <li><b>classes-list.xsl</b> create the list of the class in this package.
- *   The resulting html file is write in the package directory and it is load in
- *   the 'classListFrame' frame. The name of the resulting file is <u>class-list.html</u></li>
- * <li>
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- * @author <a href="mailto:ndelahaye@imediation.com">Nicolas Delahaye</a>
- */
-public class AggregateTransformer {     
-        
-    public final static String ALLPACKAGES = "all-packages";
-        
-    public final static String ALLCLASSES = "all-classes";
-        
-    public final static String OVERVIEW_PACKAGES = "overview-packages";
-        
-    public final static String CLASS_DETAILS = "class-details";
-        
-    public final static String CLASSES_LIST = "classes-list";
-        
-    public final static String PACKAGE_SUMMARY = "package-summary";
-        
-    public final static String OVERVIEW_SUMMARY = "overview-summary";
-
-    public final static String FRAMES = "frames";
-
-    public final static String NOFRAMES = "noframes";
-
-    /** Task */
-    protected Task task;
-
-    /** the xml document to process */
-    protected Document document;
-
-    /** the style directory. XSLs should be read from here if necessary */
-    protected File styleDir;
-
-    /** the destination directory, this is the root from where html should be generated */
-    protected File toDir;
-
-    /** the format to use for the report. Must be <tt>FRAMES</tt> or <tt>NOFRAMES</tt> */
-    protected String format;
-
-    /** the file extension of the generated files. As a default it will be <tt>.html</tt> */
-    protected String extension;
-
-    /** XML Parser factory */
-    protected static final DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
-
-    /** XSL Parser factory */
-    protected static final TransformerFactory tfactory = TransformerFactory.newInstance();
-
-    public AggregateTransformer(Task task){
-        this.task = task;
-    }
-
-    public void setFormat(String format){
-        this.format = format;
-    }
-
-    public void setXmlDocument(Document doc){
-        this.document = doc;
-    }
-
-    /**
-     * Set the xml file to be processed. This is a helper if you want
-     * to set the file directly. Much more for testing purposes.
-     * @param xmlfile xml file to be processed
-     */
-    void setXmlfile(File xmlfile) throws BuildException {
-        try {
-            setXmlDocument(readDocument(xmlfile));
-        } catch (Exception e){
-            throw new BuildException("Error while parsing document: " + xmlfile, e);
-        }
-    }
-
-    /**
-     * set the style directory. It is optional and will override the
-     * default xsl used.
-     * @param styledir  the directory containing the xsl files if the user
-     * would like to override with its own style.
-     */
-    public void setStyledir(File styledir){
-        this.styleDir = styledir;
-    }
-
-    /** set the destination directory */
-    public void setTodir(File todir){
-        this.toDir = todir;
-    }
-
-    /** set the extension of the output files */
-    public void setExtension(String ext){
-        this.extension = ext;
-    }
-
-    /** get the extension, if it is null, it will use .html as the default */
-    protected String getExtension(){
-        if (extension == null) {
-            extension = ".html";
-        }
-        return extension;
-    }
-
-    public void transform() throws BuildException {
-        checkOptions();
-        try {
-            Element root = document.getDocumentElement();
-                        
-            if (NOFRAMES.equals(format)) {
-                //createCascadingStyleSheet();
-                createSinglePageSummary(root);
-            } else {
-                createFrameStructure();
-                createCascadingStyleSheet();
-                createPackageList(root);
-                createClassList(root);
-                createPackageOverview(root);
-                createAllTestSuiteDetails(root);
-                createAllPackageDetails(root);
-            }
-        } catch (Exception e){
-            e.printStackTrace();
-            throw new BuildException("Errors while applying transformations", e);
-        }
-    }
-
-    /** check for invalid options */
-    protected void checkOptions() throws BuildException {
-        if ( !FRAMES.equals(format) && !NOFRAMES.equals(format)) {
-            throw new BuildException("Invalid format. Must be 'frames' or 'noframes' but was: '" + format + "'");
-        }
-        // set the destination directory relative from the project if needed.
-        if (toDir == null) {
-            toDir = task.getProject().resolveFile(".");
-        } else if ( !toDir.isAbsolute() ) {
-            toDir = task.getProject().resolveFile(toDir.getPath());
-        }
-        // create the directories if needed
-        if (!toDir.exists()) {
-            if (!toDir.mkdirs()){
-                throw new BuildException("Could not create directory " + toDir);
-            }
-        }
-    }
-
-    /** create a single page summary */
-    protected void createSinglePageSummary(Element root) throws IOException, TransformerException {
-        transform(root, OVERVIEW_SUMMARY + ".xsl", OVERVIEW_SUMMARY + getExtension());
-    }
-
-    /**
-     * read the xml file that should be the resuiting file of the testcase.
-     * @param filename name of the xml resulting file of the testcase.
-     */
-    protected Document readDocument(File file) throws IOException, SAXException, ParserConfigurationException {
-        DocumentBuilder builder = dbfactory.newDocumentBuilder();
-        InputStream in = new FileInputStream(file);
-        try {
-            return builder.parse(in);
-        } finally {
-            in.close();
-        }
-    }
-
-    protected void createCascadingStyleSheet() throws IOException, TransformerException {
-        if (styleDir == null) {
-            InputStream in = getResourceAsStream("html/stylesheet.css");
-            OutputStream out = new FileOutputStream( new File(toDir, "stylesheet.css"));
-            copy(in, out);              
-        }
-    }
-
-    protected void createFrameStructure() throws IOException, TransformerException{
-        if (styleDir == null) {
-            InputStream in = getResourceAsStream("html/index.html");
-            OutputStream out = new FileOutputStream( new File(toDir, "index.html") );
-            copy(in, out);
-        }
-    }
-        
-    /**
-     * Create the list of all packages.
-     * @param root root of the xml document.
-     */
-    protected void createPackageList(Node root) throws TransformerException {
-        transform(root, ALLPACKAGES + ".xsl", ALLPACKAGES + getExtension());
-    }
-
-    /**
-     * Create the list of all classes.
-     * @param root root of the xml document.
-     */
-    protected void createClassList(Node root) throws TransformerException {
-        transform(root, ALLCLASSES + ".xsl", ALLCLASSES + getExtension());
-    }
-
-    /**
-     * Create the summary used in the overview.
-     * @param root root of the xml document.
-     */
-    protected void createPackageOverview(Node root) throws TransformerException {
-        transform(root,  OVERVIEW_PACKAGES + ".xsl", OVERVIEW_PACKAGES + getExtension());
-    }
-
-    /**
-     *  @return the list of all packages that exists defined in testsuite nodes
-     */
-    protected Enumeration getPackages(Element root){
-        Hashtable map = new Hashtable();
-        NodeList testsuites = root.getElementsByTagName(XMLConstants.TESTSUITE);
-        final int size = testsuites.getLength();
-        for (int i = 0; i < size; i++){
-            Element testsuite = (Element) testsuites.item(i);
-            String packageName = testsuite.getAttribute(XMLConstants.ATTR_PACKAGE);
-            if (packageName == null){
-                //@todo replace the exception by something else
-                throw new IllegalStateException("Invalid 'testsuite' node: should contains 'package' attribute");
-            }
-            map.put(packageName, packageName);
-        }
-        return map.keys();
-    }
-
-    /**
-     * create all resulting html pages for all testsuites.
-     * @param root should be 'testsuites' node.
-     */
-    protected void createAllTestSuiteDetails(Element root) throws TransformerException {
-        NodeList testsuites = root.getElementsByTagName(XMLConstants.TESTSUITE);
-        final int size = testsuites.getLength();
-        for (int i = 0; i < size; i++){
-            Element testsuite = (Element) testsuites.item(i);
-            createTestSuiteDetails(testsuite);
-        }
-    }
-
-    /**
-     * create the html resulting page of one testsuite.
-     * @param root should be 'testsuite' node.
-     */
-    protected void createTestSuiteDetails(Element testsuite) throws TransformerException {
-                
-        String packageName = testsuite.getAttribute(XMLConstants.ATTR_PACKAGE);         
-        String pkgPath = packageToPath(packageName);
-        
-        // get the class name
-        String name = testsuite.getAttribute(XMLConstants.ATTR_NAME);
-
-        // get the name of the testsuite and create the filename of the ouput html page
-        String filename = name + "-details" + getExtension();
-        String fullpathname = pkgPath + filename; // there's already end path separator to pkgPath
-
-        // apply the style on the document.
-        transform(testsuite, CLASS_DETAILS + ".xsl", fullpathname);
-    }
-
-    /**
-     * create the html resulting page of the summary of each package of the root element.
-     * @param root should be 'testsuites' node.
-     */
-    protected void createAllPackageDetails(Element root) throws TransformerException, ParserConfigurationException {
-        Enumeration packages = getPackages(root);
-        while ( packages.hasMoreElements() ){
-            String pkgname = (String)packages.nextElement();
-            // for each package get the list of its testsuite.
-            DOMUtil.NodeFilter pkgFilter = new PackageFilter(pkgname);
-            NodeList testsuites = DOMUtil.listChildNodes(root, pkgFilter, false);
-            Element doc = buildDocument(testsuites);
-            // skip package details if the package does not exist (root package)
-            if( !pkgname.equals("") ){
-                createPackageDetails(doc, pkgname);
-            }
-        }
-    }
-
-    protected String packageToPath(String pkgname){
-        if (!pkgname.equals("")) {
-            return pkgname.replace('.', File.separatorChar) + File.separatorChar;
-        }
-        return "." + File.separatorChar;
-    }
-
-    /**
-     * create the html resulting page of the summary of a package .
-     * @param root should be 'testsuites' node.
-     * @param pkgname Name of the package that we want a summary.
-     */
-    protected void createPackageDetails(Node root, String pkgname) throws TransformerException {
-        String path = packageToPath(pkgname);
-
-        // apply style to get the list of the classes of this package and
-        // display it in the classListFrame.
-        transform(root, CLASSES_LIST + ".xsl", path + CLASSES_LIST + getExtension());
-
-        // apply style to get a summary on this package.
-        transform(root, PACKAGE_SUMMARY + ".xsl", path + PACKAGE_SUMMARY + getExtension());
-    }
-
-    /**
-     * Create an element root ("testsuites")
-     * and import all nodes as children of this element.
-     *
-     */
-    protected Element buildDocument(NodeList list) throws ParserConfigurationException {
-        DocumentBuilder builder = dbfactory.newDocumentBuilder();
-        Document doc = builder.newDocument();
-        Element elem = doc.createElement(XMLConstants.TESTSUITES);
-        final int len = list.getLength();
-        for(int i=0 ; i < len ; i++) {
-            DOMUtil.importNode(elem, list.item(i));
-        }
-        return elem;
-    }
-
-    /**
-     * Apply a template on a part of the xml document.
-     *
-     * @param root root of the document fragment
-     * @param xslfile style file
-     * @param outfilename filename of the result of the style applied on the Node
-     *
-     * @throws TransformerException SAX Parsing Error on the style Sheet.
-     */
-    protected void transform(Node root, String xslname, String htmlname) throws TransformerException {
-        try{
-            final long t0 = System.currentTimeMillis();
-            StreamSource xsl_source = getXSLStreamSource(xslname);
-            Transformer transformer = tfactory.newTransformer(xsl_source);
-            File htmlfile = new File(toDir, htmlname);
-            // create the directory if it does not exist
-            File dir = new File(htmlfile.getParent()); // getParentFile is in JDK1.2+
-            if (!dir.exists()) {
-                dir.mkdirs();
-            }
-            task.log("Applying '" + xslname + "'. Generating '" + htmlfile + "'", Project.MSG_VERBOSE);
-            transformer.transform( new DOMSource(root), new StreamResult(htmlfile));
-            final long dt = System.currentTimeMillis() - t0;
-            task.log("Transform time: " + dt + "ms");
-        } catch (IOException e){
-            task.log(e.getMessage(), Project.MSG_ERR);
-            e.printStackTrace(); //@todo bad, change this
-            throw new TransformerException(e.getMessage());
-        }
-    }
-
-    /**
-     * default xsls are embedded in the distribution jar. As a default we will use
-     * them, otherwise we will get the one supplied by the client in a given
-     * directory. It must have the same name.
-     */
-    protected StreamSource getXSLStreamSource(String name) throws IOException {
-        InputStream in;
-        String systemId; //we need this because there are references in xsls
-        if (styleDir == null){
-            in = getResourceAsStream("xsl/" + name);
-            systemId = getClass().getResource("xsl/" + name).toString();
-        } else {
-            File f = new File(styleDir, name);
-            in= new FileInputStream(f);
-            systemId = f.getAbsolutePath();
-        }
-        StreamSource ss =  new StreamSource(in);
-        ss.setSystemId(systemId);
-        return ss;
-    }
-
-    private InputStream getResourceAsStream(String name) throws FileNotFoundException {
-        InputStream in = getClass().getResourceAsStream(name);
-        if (in == null) {
-            throw new FileNotFoundException("Could not find resource '" + name + "'");
-        }
-        return in;
-    }
-
-    /** Do some raw stream copying */
-    private static void copy(InputStream in, OutputStream out) throws IOException {
-        int size = -1;
-        byte[] buffer =  new byte[1024];
-        // Make the copy
-        while( (size = in.read(buffer)) != -1){
-            out.write(buffer,0,size);
-        }
-    }
-
-
-    /**
-     * allow us to check if the node is a object of a specific package.
-     */
-    protected static class PackageFilter implements DOMUtil.NodeFilter {
-        private final String pkgName;
-
-        PackageFilter(String pkgname) {
-            this.pkgName = pkgname;
-        }
-        /**
-         * if the node receive is not a element then return false
-         * check if the node is a class of this package.
-         */
-        public boolean accept(Node node) {
-            String pkgname = DOMUtil.getNodeAttribute(node, XMLConstants.ATTR_PACKAGE);
-            return pkgName.equals(pkgname);
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/BaseTest.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/BaseTest.java
deleted file mode 100644
index 82bbf7f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/BaseTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import java.io.File;
-import java.util.Vector;
-
-/**
- * Baseclass for BatchTest and JUnitTest.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public abstract class BaseTest {
-    protected boolean haltOnError = false;
-    protected boolean haltOnFail = false;
-    protected boolean fork = false;
-    protected String ifProperty = null;
-    protected String unlessProperty = null;
-    protected Vector formatters = new Vector();
-    /** destination directory */
-    protected File destDir = null;
-
-    public void setFork(boolean value) {
-        fork = value;
-    }
-
-    public boolean getFork() {
-        return fork;
-    }
-
-    public void setHaltonerror(boolean value) {
-        haltOnError = value;
-    }
-
-    public void setHaltonfailure(boolean value) {
-        haltOnFail = value;
-    }
-
-    public boolean getHaltonerror() {
-        return haltOnError;
-    }
-
-    public boolean getHaltonfailure() {
-        return haltOnFail;
-    }
-
-    public void setIf(String propertyName) {
-        ifProperty = propertyName;
-    }
-
-    public void setUnless(String propertyName) {
-        unlessProperty = propertyName;
-    }
-
-    public void addFormatter(FormatterElement elem) {
-        formatters.addElement(elem);
-    }
-
-    /**
-     * Sets the destination directory.
-     */
-    public void setTodir(File destDir) {
-        this.destDir = destDir; 
-    }
-
-    /**
-     * @return the destination directory as an absolute path if it exists
-     *			otherwise return <tt>null</tt>
-     */
-    public String getTodir(){
-        if (destDir != null){
-            return destDir.getAbsolutePath();
-        }
-        return null;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/BatchTest.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/BatchTest.java
deleted file mode 100644
index f25e5ce..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/BatchTest.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.Reference;
-
-import java.util.*;
-import java.io.File;
-
-/**
- * Create JUnitTests from a list of files.
- *
- * @author <a href="mailto:jeff.martin@synamic.co.uk">Jeff Martin</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- *
- * @see JUnitTest
- */
-public final class BatchTest extends BaseTest {
-
-    /** the reference to the project */
-    private Project project;
-
-    /** the list of filesets containing the testcase filename rules */
-    private Vector filesets = new Vector();
-
-    /**
-     * create a new batchtest instance
-     * @param project     the project it depends on.
-     */
-    public BatchTest(Project project){
-        this.project = project;
-    }
-
-    /**
-     * Add a new fileset instance to this batchtest. Whatever the fileset is,
-     * only filename that are <tt>.java</tt> or <tt>.class</tt> will be
-     * considered as 'candidates'.
-     * @param     fs the new fileset containing the rules to get the testcases.
-     */
-    public void addFileSet(FileSet fs) {
-        filesets.addElement(fs);
-    }
-
-    /**
-     * return all <tt>JUnitTest</tt> instances obtain by applying the fileset rules.
-     * @return  an enumeration of all elements of this batchtest that are
-     * a <tt>JUnitTest</tt> instance.
-     * @see addTestsTo(Vector)
-     */
-    public final Enumeration elements(){
-        JUnitTest[] tests = createAllJUnitTest();
-        return Enumerations.fromArray(tests);
-    }
-
-    /**
-     * Convenient method to merge the <tt>JUnitTest</tt>s of this batchtest
-     * to a <tt>Vector</tt>.
-     * @param v the vector to which should be added all individual tests of this
-     * batch test.
-     */
-    final void addTestsTo(Vector v){
-        JUnitTest[] tests = createAllJUnitTest();
-        v.ensureCapacity( v.size() + tests.length);
-        for (int i = 0; i < tests.length; i++) {
-            v.addElement(tests[i]);
-        }
-    }
-
-    /**
-     * Create all <tt>JUnitTest</tt>s based on the filesets. Each instance
-     * is configured to match this instance properties.
-     * @return the array of all <tt>JUnitTest</tt>s that belongs to this batch.
-     */
-    private JUnitTest[] createAllJUnitTest(){
-        String[] filenames = getFilenames();
-        JUnitTest[] tests = new JUnitTest[filenames.length];
-        for (int i = 0; i < tests.length; i++) {
-            String classname = javaToClass(filenames[i]);
-            tests[i] = createJUnitTest(classname);
-        }
-        return tests;
-    }
-
-    /**
-     * Iterate over all filesets and return the filename of all files
-     * that end with <tt>.java</tt> or <tt>.class</tt>. This is to avoid
-     * wrapping a <tt>JUnitTest</tt> over an xml file for example. A Testcase
-     * is obviouslly a java file (compiled or not).
-     * @return an array of filenames without their extension. As they should
-     * normally be taken from their root, filenames should match their fully
-     * qualified class name (If it is not the case it will fail when running the test).
-     * For the class <tt>org/apache/Whatever.class</tt> it will return <tt>org/apache/Whatever</tt>.
-     */
-    private String[] getFilenames(){
-        Vector v = new Vector();
-        final int size = this.filesets.size();
-        for (int j=0; j<size; j++) {
-            FileSet fs = (FileSet) filesets.elementAt(j);
-            DirectoryScanner ds = fs.getDirectoryScanner(project);
-            ds.scan();
-            String[] f = ds.getIncludedFiles();
-            for (int k = 0; k < f.length; k++) {
-                String pathname = f[k];
-                if (pathname.endsWith(".java")) {
-                    v.addElement(pathname.substring(0, pathname.length()-".java".length()));
-                } else if (pathname.endsWith(".class")) {
-                    v.addElement(pathname.substring(0, pathname.length()-".class".length()));
-                }
-            }
-        }
-
-        String[] files = new String[v.size()];
-        v.copyInto(files);
-        return files;
-    }
-
-    /**
-     * convenient method to convert a pathname without extension to a
-     * fully qualified classname. For example <tt>org/apache/Whatever</tt> will
-     * be converted to <tt>org.apache.Whatever</tt>
-     * @param filename the filename to "convert" to a classname.
-     * @return the classname matching the filename.
-     */
-    public final static String javaToClass(String filename){
-        return filename.replace(File.separatorChar, '.');
-    }
-
-    /**
-     * Create a <tt>JUnitTest</tt> that has the same property as this
-     * <tt>BatchTest</tt> instance.
-     * @param classname the name of the class that should be run as a
-     * <tt>JUnitTest</tt>. It must be a fully qualified name.
-     * @return the <tt>JUnitTest</tt> over the given classname.
-     */
-    private JUnitTest createJUnitTest(String classname){
-        JUnitTest test = new JUnitTest();
-        test.setName(classname);
-        test.setHaltonerror(this.haltOnError);
-        test.setHaltonfailure(this.haltOnFail);
-        test.setFork(this.fork);
-        test.setIf(this.ifProperty);
-        test.setUnless(this.unlessProperty);
-        test.setTodir(this.destDir);
-        Enumeration list = this.formatters.elements();
-        while (list.hasMoreElements()) {
-            test.addFormatter((FormatterElement)list.nextElement());
-        }
-        return test;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/DOMUtil.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/DOMUtil.java
deleted file mode 100644
index 9977b36..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/DOMUtil.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import org.w3c.dom.Node;
-import org.w3c.dom.Document;
-import org.w3c.dom.CDATASection;
-import org.w3c.dom.Comment;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Attr;
-import org.w3c.dom.EntityReference;
-import org.w3c.dom.ProcessingInstruction;
-import org.w3c.dom.Text;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.DOMException;
-
-import java.util.Vector;
-
-/**
- * Some utilities that might be useful when manipulating DOM trees.
- *
- * @author <a href="bailliez@noos.fr">Stephane Bailliez</a>
- */
-public final class DOMUtil {
-
-    /** unused constructor */
-    private DOMUtil(){
-    }
-
-    /**
-     * Filter interface to be applied when iterating over a DOM tree.
-     * Just think of it like a <tt>FileFilter</tt> clone.
-     */
-    public interface NodeFilter {
-        /**
-         * @param       node    the node to check for acceptance.
-         * @return      <tt>true</tt> if the node is accepted by this filter,
-         *                      otherwise <tt>false</tt>
-         */
-        public boolean accept(Node node);
-    }
-
-    /**
-     * list a set of node that match a specific filter. The list can be made
-     * recursively or not.
-     * @param   parent  the parent node to search from
-     * @param   filter  the filter that children should match.
-     * @param   recurse <tt>true</tt> if you want the list to be made recursively
-     *                  otherwise <tt>false</tt>.
-     */
-    public static NodeList listChildNodes(Node parent, NodeFilter filter, boolean recurse){
-        NodeListImpl matches = new NodeListImpl();
-        NodeList children = parent.getChildNodes();
-        if (children != null) {
-            final int len = children.getLength();
-            for (int i = 0; i < len; i++) {
-                Node child = children.item(i);
-                if (filter.accept(child)) {
-                    matches.addElement(child);
-                }
-                if (recurse) {
-                    NodeList recmatches = listChildNodes(child, filter, recurse);
-                    final int reclength = matches.getLength();
-                    for (int j = 0; j < reclength; j++) {
-                        matches.addElement( recmatches.item(i) );
-                    }
-                }
-            }
-        }
-        return matches;
-    }
-
-    /** custom implementation of a nodelist */
-    public static class NodeListImpl extends Vector implements NodeList {
-        public int getLength(){
-            return size();
-        }
-        public Node item(int i){
-            try {
-                return (Node)elementAt(i);
-            } catch (ArrayIndexOutOfBoundsException e){
-                return null; // conforming to NodeList interface
-            }
-        }
-    }
-
-    /**
-     * return the attribute value of an element.
-     * @param node the node to get the attribute from.
-     * @param name the name of the attribute we are looking for the value.
-     * @return the value of the requested attribute or <tt>null</tt> if the
-     *         attribute was not found or if <tt>node</tt> is not an <tt>Element</tt>.
-     */
-    public static String getNodeAttribute(Node node, String name) {
-        if (node instanceof Element) {
-            Element element = (Element)node;
-            return element.getAttribute(name);
-        }
-        return null;
-    }
-
-
-    /**
-     * Iterate over the children of a given node and return the first node
-     * that has a specific name.
-     * @param   parent  the node to search child from. Can be <tt>null</tt>.
-     * @param   tagname the child name we are looking for. Cannot be <tt>null</tt>.
-     * @return  the first child that matches the given name or <tt>null</tt> if
-     *                  the parent is <tt>null</tt> or if a child does not match the
-     *                  given name.
-     */
-    public static Element getChildByTagName (Node parent, String tagname) {
-        if (parent == null){
-            return null;
-        }
-        NodeList childList = parent.getChildNodes();
-        final int len = childList.getLength();
-        for (int i = 0; i < len; i++) {
-            Node child = childList.item(i);
-            if ( child != null && child.getNodeType() == Node.ELEMENT_NODE &&
-                 child.getNodeName().equals(tagname)) {
-                return (Element)child;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Simple tree walker that will clone recursively a node. This is to
-     * avoid using parser-specific API such as Sun's <tt>changeNodeOwner</tt>
-     * when we are dealing with DOM L1 implementations since <tt>cloneNode(boolean)</tt>
-     * will not change the owner document.
-     * <tt>changeNodeOwner</tt> is much faster and avoid the costly cloning process.
-     * <tt>importNode</tt> is in the DOM L2 interface.
-     * @param   parent  the node parent to which we should do the import to.
-     * @param   child   the node to clone recursively. Its clone will be
-     *              appended to <tt>parent</tt>.
-     * @return  the cloned node that is appended to <tt>parent</tt>
-     */
-    public static final Node importNode(Node parent, Node child){
-        Node copy = null;
-        final Document doc = parent.getOwnerDocument();
-
-        switch (child.getNodeType()) {
-        case Node.CDATA_SECTION_NODE:
-            copy = doc.createCDATASection(((CDATASection) child).getData());
-            break;
-        case Node.COMMENT_NODE:
-            copy = doc.createComment(((Comment) child).getData());
-            break;
-        case Node.DOCUMENT_FRAGMENT_NODE:
-            copy = doc.createDocumentFragment();
-            break;
-        case Node.ELEMENT_NODE:
-            final Element elem = doc.createElement(((Element)child).getTagName());
-            copy = elem;
-            final NamedNodeMap attributes = child.getAttributes();
-            if ( attributes != null) {
-                final int size = attributes.getLength();
-                for (int i = 0; i < size; i++) {
-                    final Attr attr = (Attr) attributes.item(i);
-                    elem.setAttribute(attr.getName(), attr.getValue());
-                }
-            }
-            break;
-        case Node.ENTITY_REFERENCE_NODE:
-            copy = doc.createEntityReference(child.getNodeName());
-            break;
-        case Node.PROCESSING_INSTRUCTION_NODE:
-            final ProcessingInstruction pi = (ProcessingInstruction)child;
-            copy = doc.createProcessingInstruction(pi.getTarget(), pi.getData());
-            break;
-        case Node.TEXT_NODE:
-            copy = doc.createTextNode(((Text) child).getData());
-            break;
-        default:
-            // this should never happen
-            throw new IllegalStateException("Invalid node type: " + child.getNodeType());
-        }
-
-        // okay we have a copy of the child, now the child becomes the parent
-        // and we are iterating recursively over its children.
-        try {
-            final NodeList children = child.getChildNodes();
-            if (children != null) {
-                final int size = children.getLength();
-                for (int i = 0; i < size; i++) {
-                    final Node newChild = children.item(i);
-                    if (newChild != null) {
-                        importNode(copy, newChild);
-                    }
-                }
-            }
-        } catch (DOMException ignored) {
-        }
-
-        // bingo append it. (this should normally not be done here)
-        parent.appendChild(copy);
-        return copy;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/Enumerations.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/Enumerations.java
deleted file mode 100644
index 900d7ae..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/Enumerations.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import java.util.Enumeration;
-import java.util.NoSuchElementException;
-
-/**
- * A couple of methods related to enumerations that might be useful.
- * This class should probably disappear once the required JDK is set to 1.2
- * instead of 1.1.
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public final class Enumerations {
-        
-        private Enumerations(){
-        }
-
-        /**
-         * creates an enumeration from an array of objects.
-         * @param       array   the array of object to enumerate.
-         * @return the enumeration over the array of objects.
-         */
-        public static Enumeration fromArray(Object[] array){
-                return new ArrayEnumeration(array);
-        }
-
-        /**
-        * creates an enumeration from an array of enumeration. The created enumeration
-        * will sequentially enumerate over all elements of each enumeration and skip
-        * <tt>null</tt> enumeration elements in the array.
-        * @param        enums   the array of enumerations.
-        * @return the enumeration over the array of enumerations.
-         */
-        public static Enumeration fromCompound(Enumeration[] enums){
-                return new CompoundEnumeration(enums);
-        }
-
-}
-
-
-/**
- * Convenient enumeration over an array of objects.
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-class ArrayEnumeration implements Enumeration {
-        
-        /** object array */
-        private Object[] array;
-        
-        /** current index */
-        private int pos;
-        
-        /**
-         * Initialize a new enumeration that wraps an array.
-         * @param       array   the array of object to enumerate.
-         */
-        public ArrayEnumeration(Object[] array){
-                this.array = array;
-                this.pos = 0;
-        }
-        /**
-         * Tests if this enumeration contains more elements.
-         *
-         * @return  <code>true</code> if and only if this enumeration object
-         *           contains at least one more element to provide;
-         *          <code>false</code> otherwise.
-         */
-        public boolean hasMoreElements() {
-                return (pos < array.length);
-        }
-
-        /**
-         * Returns the next element of this enumeration if this enumeration
-         * object has at least one more element to provide.
-         *
-         * @return     the next element of this enumeration.
-         * @throws  NoSuchElementException  if no more elements exist.
-         */
-        public Object nextElement() throws NoSuchElementException {
-                if (hasMoreElements()) {
-                        Object o = array[pos];
-                        pos++;
-                        return o;
-                }
-                throw new NoSuchElementException();
-        }
-}
-/**
- * Convenient enumeration over an array of enumeration. For example:
- * <pre>
- * Enumeration e1 = v1.elements();
- * while (e1.hasMoreElements()){
- *    // do something
- * }
- * Enumeration e2 = v2.elements();
- * while (e2.hasMoreElements()){
- *    // do the same thing
- * }
- * </pre>
- * can be written as:
- * <pre>
- * Enumeration[] enums = { v1.elements(), v2.elements() };
- * Enumeration e = Enumerations.fromCompound(enums);
- * while (e.hasMoreElements()){
- *    // do something
- * }
- * </pre>
- * Note that the enumeration will skip null elements in the array. The following is
- * thus possible:
- * <pre>
- * Enumeration[] enums = { v1.elements(), null, v2.elements() }; // a null enumeration in the array
- * Enumeration e = Enumerations.fromCompound(enums);
- * while (e.hasMoreElements()){
- *    // do something
- * }
- * </pre>
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
- class CompoundEnumeration implements Enumeration {
-        
-        /** enumeration array */
-        private Enumeration[] enumArray;
-        
-        /** index in the enums array */
-        private int index = 0;
-
-    public CompoundEnumeration(Enumeration[] enumarray) {
-                this.enumArray = enumarray;
-    }
-
-        /**
-         * Tests if this enumeration contains more elements.
-         *
-         * @return  <code>true</code> if and only if this enumeration object
-         *           contains at least one more element to provide;
-         *          <code>false</code> otherwise.
-         */
-    public boolean hasMoreElements() {
-                while (index < enumArray.length) {
-                        if (enumArray[index] != null && enumArray[index].hasMoreElements()) {
-                                return true;
-                        }
-                        index++;
-                }
-                return false;
-    }
-
-        /**
-         * Returns the next element of this enumeration if this enumeration
-         * object has at least one more element to provide.
-         *
-         * @return     the next element of this enumeration.
-         * @throws  NoSuchElementException  if no more elements exist.
-         */
-    public Object nextElement() throws NoSuchElementException {
-                if ( hasMoreElements() ) {
-                        return enumArray[index].nextElement();
-                }
-                throw new NoSuchElementException();
-    }
-}
-
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
deleted file mode 100644
index 0120bf9..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.types.EnumeratedAttribute;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-
-/**
- * Serves as a wrapper the implementations of JUnitResultFormatter,
- * for example as a nested <formatter> element in <junit>.
- *
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> 
- */
-public class FormatterElement {
-
-    private String classname;
-    private String extension;
-    private OutputStream out = System.out;
-    private File outFile;
-    private boolean useFile = true;
-
-    public void setType(TypeAttribute type) {
-        if ("xml".equals(type.getValue())) {
-            setClassname("org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter");
-            setExtension(".xml");
-        } else { // must be plain, ensured by TypeAttribute
-            setClassname("org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter");
-            setExtension(".txt");
-        }
-    }
-
-    public void setClassname(String classname) {
-        this.classname = classname;
-    }
-
-    public String getClassname() {
-        return classname;
-    }
-
-    public void setExtension(String ext) {
-        this.extension = ext;
-    }
-
-    public String getExtension() {
-        return extension;
-    }
-
-    void setOutfile(File out) {
-        this.outFile = out;
-    }
-
-    public void setOutput(OutputStream out) {
-        this.out = out;
-    }
-
-    public void setUseFile(boolean useFile) {
-        this.useFile = useFile;
-    }
-
-    boolean getUseFile() {
-        return useFile;
-    }
-
-    JUnitResultFormatter createFormatter() throws BuildException {
-        if (classname == null) {
-            throw new BuildException("you must specify type or classname");
-        }
-        
-        Class f = null;
-        try {
-            f = Class.forName(classname);
-        } catch (ClassNotFoundException e) {
-            throw new BuildException(e);
-        }
-
-        Object o = null;
-        try {
-            o = f.newInstance();
-        } catch (InstantiationException e) {
-            throw new BuildException(e);
-        } catch (IllegalAccessException e) {
-            throw new BuildException(e);
-        }
-
-        if (!(o instanceof JUnitResultFormatter)) {
-            throw new BuildException(classname+" is not a JUnitResultFormatter");
-        }
-
-        JUnitResultFormatter r = (JUnitResultFormatter) o;
-
-        if (useFile && outFile != null) {
-            try {
-                out = new FileOutputStream(outFile);
-            } catch (java.io.IOException e) {
-                throw new BuildException(e);
-            }
-        }
-        r.setOutput(out);
-        return r;
-    }
-
-    /**
-     * Enumerated attribute with the values "plain" and "xml".
-     */
-    public static class TypeAttribute extends EnumeratedAttribute {
-        public String[] getValues() {
-            return new String[] {"plain", "xml"};
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter.java
deleted file mode 100644
index c4917f7..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitResultFormatter.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import org.apache.tools.ant.BuildException;
-import junit.framework.TestListener;
-
-/**
- * This Interface describes classes that format the results of a JUnit
- * testrun.
- * 
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a>
- */
-public interface JUnitResultFormatter extends TestListener {
-    /**
-     * The whole testsuite started.
-     */
-    public void startTestSuite(JUnitTest suite) throws BuildException;
-
-    /**
-     * The whole testsuite ended.
-     */
-    public void endTestSuite(JUnitTest suite) throws BuildException;
-
-    /**
-     * Sets the stream the formatter is supposed to write its results to.
-     */
-    public void setOutput(java.io.OutputStream out);
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
deleted file mode 100644
index 0200911..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
+++ /dev/null
@@ -1,474 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import org.apache.tools.ant.AntClassLoader;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.LogStreamHandler;
-import org.apache.tools.ant.taskdefs.ExecuteWatchdog;
-import org.apache.tools.ant.taskdefs.LogOutputStream;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Environment;
-import org.apache.tools.ant.types.CommandlineJava;
-import org.apache.tools.ant.types.Path;
-
-
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-
-import java.util.Enumeration;
-import java.util.Vector;
-
-/**
- * Ant task to run JUnit tests.
- *
- * <p>JUnit is a framework to create unit test. It has been initially
- * created by Erich Gamma and Kent Beck.  JUnit can be found at <a
- * href="http://www.junit.org">http://www.junit.org</a>.
- *
- * <p> To spawn a new Java VM to prevent interferences between
- * different testcases, you need to enable <code>fork</code>.
- *
- * @author Thomas Haas
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class JUnitTask extends Task {
-
-    private CommandlineJava commandline = new CommandlineJava();
-    private Vector tests = new Vector();
-    private Vector batchTests = new Vector();
-    private Vector formatters = new Vector();
-    private File dir = null;
-
-    private Integer timeout = null;
-    private boolean summary = false;
-
-    /**
-     * Tells this task to halt when there is an error in a test.
-     * this property is applied on all BatchTest (batchtest) and JUnitTest (test)
-     * however it can possibly be overridden by their own properties.
-     * @param   value   <tt>true</tt> if it should halt, otherwise <tt>false<tt>
-     */
-    public void setHaltonerror(boolean value) {
-        Enumeration enum = allTests();
-        while (enum.hasMoreElements()) {
-            BaseTest test = (BaseTest) enum.nextElement();
-            test.setHaltonerror(value);
-        }
-    }
-
-    /**
-     * Tells this task to halt when there is a failure in a test.
-     * this property is applied on all BatchTest (batchtest) and JUnitTest (test)
-     * however it can possibly be overridden by their own properties.
-     * @param   value   <tt>true</tt> if it should halt, otherwise <tt>false<tt>
-     */
-    public void setHaltonfailure(boolean value) {
-        Enumeration enum = allTests();
-        while (enum.hasMoreElements()) {
-            BaseTest test = (BaseTest) enum.nextElement();
-            test.setHaltonfailure(value);
-        }
-    }
-
-    /**
-     * Tells whether a JVM should be forked for each testcase. It avoids interference
-     * between testcases and possibly avoids hanging the build.
-     * this property is applied on all BatchTest (batchtest) and JUnitTest (test)
-     * however it can possibly be overridden by their own properties.
-     * @param   value   <tt>true</tt> if a JVM should be forked, otherwise <tt>false<tt>
-     * @see #setTimeout(Integer)
-     * @see #haltOntimeout(boolean)
-     */
-    public void setFork(boolean value) {
-        Enumeration enum = allTests();
-        while (enum.hasMoreElements()) {
-            BaseTest test = (BaseTest) enum.nextElement();
-            test.setFork(value);
-        }
-    }
-
-    /**
-     * Tells whether the task should print a short summary of the task.
-     * @param   value   <tt>true</tt> to print a summary, <tt>false</tt> otherwise.
-     * @see SummaryJUnitResultFormatter
-     */
-    public void setPrintsummary(boolean value) {
-        summary = value;
-    }
-
-    /**
-     * Set the timeout value (in milliseconds). If the test is running for more than this
-     * value, the test will be canceled. (works only when in 'fork' mode).
-     * @param   value   the maximum time (in milliseconds) allowed before declaring the test
-     *                  as 'timed-out'
-     * @see #setFork(boolean)
-     * @see #haltOnTimeout(boolean)
-     */
-    public void setTimeout(Integer value) {
-        timeout = value;
-    }
-
-    /**
-     * Set the maximum memory to be used by all forked JVMs.
-     * @param   max     the value as defined by <tt>-mx</tt> or <tt>-Xmx</tt>
-     *                  in the java command line options.
-     */
-    public void setMaxmemory(String max) {
-        if (Project.getJavaVersion().startsWith("1.1")) {
-            createJvmarg().setValue("-mx"+max);
-        } else {
-            createJvmarg().setValue("-Xmx"+max);
-        }
-    }
-
-    /**
-     * Set a new VM to execute the testcase. Default is <tt>java</tt>. Ignored if no JVM is forked.
-     * @param   value   the new VM to use instead of <tt>java</tt>
-     * @see #setFork(boolean)
-     */
-    public void setJvm(String value) {
-        commandline.setVm(value);
-    }
-
-    /**
-     * Create a new JVM argument. Ignored if no JVM is forked.
-     * @return  create a new JVM argument so that any argument can be passed to the JVM.
-     * @see #setFork(boolean)
-     */
-    public Commandline.Argument createJvmarg() {
-        return commandline.createVmArgument();
-    }
-
-    /**
-     * The directory to invoke the VM in. Ignored if no JVM is forked.
-     * @param   dir     the directory to invoke the JVM from.
-     * @see #setFork(boolean)
-     */
-    public void setDir(File dir) {
-        this.dir = dir;
-    }
-
-    /**
-     * Add a nested sysproperty element. This might be useful to tranfer
-     * Ant properties to the testcases when JVM forking is not enabled.
-     */
-    public void addSysproperty(Environment.Variable sysp) {
-        commandline.addSysproperty(sysp);
-    }
-    
-    public Path createClasspath() {
-        return commandline.createClasspath(project).createPath();
-    }
-
-    /**
-     * Add a new single testcase.
-     * @param   test    a new single testcase
-     * @see JUnitTest
-     */
-    public void addTest(JUnitTest test) {
-        tests.addElement(test);
-    }
-
-    /**
-     * Create a new set of testcases (also called ..batchtest) and add it to the list.
-     * @return  a new instance of a batch test.
-     * @see BatchTest
-     */
-    public BatchTest createBatchTest() {
-        BatchTest test = new BatchTest(project);
-        batchTests.addElement(test);
-        return test;
-    }
-
-    /**
-     * Add a new formatter to all tests of this task.
-     */
-    public void addFormatter(FormatterElement fe) {
-        formatters.addElement(fe);
-    }
-
-    /**
-     * Creates a new JUnitRunner and enables fork of a new Java VM.
-     */
-    public JUnitTask() throws Exception {
-        commandline.setClassname("org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner");
-    }
-
-    /**
-     * Runs the testcase.
-     */
-    public void execute() throws BuildException {
-        Enumeration list = getIndividualTests();
-        while (list.hasMoreElements()) {
-            JUnitTest test = (JUnitTest)list.nextElement();
-            if ( test.shouldRun(project)) {
-                execute(test);
-            }
-        }
-    }
-
-    protected void execute(JUnitTest test) throws BuildException {
-        // set the default values if not specified
-        //@todo should be moved to the test class instead.
-        if (test.getTodir() == null) {
-            test.setTodir(project.resolveFile("."));
-        }
-
-        if (test.getOutfile() == null) {
-            test.setOutfile( "TEST-" + test.getName() );
-        }
-
-        // execute the test and get the return code
-        int exitValue = JUnitTestRunner.ERRORS;
-        boolean wasKilled = false;
-        if (!test.getFork()) {
-            exitValue = executeInVM(test);
-        } else {
-            ExecuteWatchdog watchdog = createWatchdog();
-            exitValue = executeAsForked(test, watchdog);
-            // null watchdog means no timeout, you'd better not check with null
-            if (watchdog != null) {
-                //info will be used in later version do nothing for now
-                //wasKilled = watchdog.killedProcess();
-            }
-        }
-
-        // if there is an error/failure and that it should halt, stop everything otherwise
-        // just log a statement
-        boolean errorOccurredHere = exitValue == JUnitTestRunner.ERRORS;
-        boolean failureOccurredHere = exitValue != JUnitTestRunner.SUCCESS;
-        if (errorOccurredHere && test.getHaltonerror()
-            || failureOccurredHere && test.getHaltonfailure()) {
-            throw new BuildException("Test "+test.getName()+" failed",
-                                     location);
-        } else if (errorOccurredHere || failureOccurredHere) {
-            log("TEST "+test.getName()+" FAILED", Project.MSG_ERR);
-        }
-    }
-
-    /**
-     * Execute a testcase by forking a new JVM. The command will block until
-     * it finishes. To know if the process was destroyed or not, use the
-     * <tt>killedProcess()</tt> method of the watchdog class.
-     * @param  test       the testcase to execute.
-     * @param  watchdog   the watchdog in charge of cancelling the test if it
-     * exceeds a certain amount of time. Can be <tt>null</tt>, in this case
-     * the test could probably hang forever.
-     */
-    private int executeAsForked(JUnitTest test, ExecuteWatchdog watchdog) throws BuildException {
-        CommandlineJava cmd = (CommandlineJava) commandline.clone();
-
-        cmd.setClassname("org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner");
-        cmd.createArgument().setValue(test.getName());
-        cmd.createArgument().setValue("haltOnError=" + test.getHaltonerror());
-        cmd.createArgument().setValue("haltOnFailure=" + test.getHaltonfailure());
-        if (summary) {
-            log("Running " + test.getName(), Project.MSG_INFO);
-            cmd.createArgument().setValue("formatter=org.apache.tools.ant.taskdefs.optional.junit.SummaryJUnitResultFormatter");
-        }
-
-        StringBuffer formatterArg = new StringBuffer(128);
-        final FormatterElement[] feArray = mergeFormatters(test);
-        for (int i = 0; i < feArray.length; i++) {
-            FormatterElement fe = feArray[i];
-            formatterArg.append("formatter=");
-            formatterArg.append(fe.getClassname());
-            File outFile = getOutput(fe,test);
-            if (outFile != null) {
-                formatterArg.append(",");
-                formatterArg.append( outFile );
-            }
-            cmd.createArgument().setValue(formatterArg.toString());
-            formatterArg.setLength(0);
-        }
-
-        Execute execute = new Execute(new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_WARN), watchdog);
-        execute.setCommandline(cmd.getCommandline());
-        if (dir != null) {
-            execute.setWorkingDirectory(dir);
-            execute.setAntRun(project);
-        }
-
-        log("Executing: "+cmd.toString(), Project.MSG_VERBOSE);
-        try {
-            return execute.execute();
-        } catch (IOException e) {
-            throw new BuildException("Process fork failed.", e, location);
-        }
-    }
-
-    // in VM is not very nice since it could probably hang the
-    // whole build. IMHO this method should be avoided and it would be best
-    // to remove it in future versions. TBD. (SBa)
-        
-    /**
-     * Execute inside VM.
-     */
-    private int executeInVM(JUnitTest test) throws BuildException {
-        if (dir != null) {
-            log("dir attribute ignored if running in the same VM", Project.MSG_WARN);
-        }
-
-        CommandlineJava.SysProperties sysProperties = commandline.getSystemProperties();
-        if (sysProperties != null) {
-            sysProperties.setSystem();
-        }
-        try {
-            log("Using System properties " + System.getProperties(), Project.MSG_VERBOSE);
-            AntClassLoader cl = null;
-            Path classpath = commandline.getClasspath();
-            if (classpath != null) {
-                log("Using CLASSPATH " + classpath, Project.MSG_VERBOSE);
-
-                cl = new AntClassLoader(project, classpath, false);
-                // make sure the test will be accepted as a TestCase
-                cl.addSystemPackageRoot("junit");
-                // will cause trouble in JDK 1.1 if omitted
-                cl.addSystemPackageRoot("org.apache.tools.ant");
-            }
-            JUnitTestRunner runner = new JUnitTestRunner(test, test.getHaltonerror(), test.getHaltonfailure(), cl);
-
-            if (summary) {
-                log("Running " + test.getName(), Project.MSG_INFO);
-
-                SummaryJUnitResultFormatter f = new SummaryJUnitResultFormatter();
-                f.setOutput( getDefaultOutput() );
-                runner.addFormatter(f);
-            }
-
-            final FormatterElement[] feArray = mergeFormatters(test);
-            for (int i = 0; i < feArray.length; i++) {
-                FormatterElement fe = feArray[i];
-                File outFile = getOutput(fe,test);
-                if (outFile != null) {
-                    fe.setOutfile(outFile);
-                } else {
-                    fe.setOutput( getDefaultOutput() );
-                }
-                runner.addFormatter(fe.createFormatter());
-            }
-
-            runner.run();
-            return runner.getRetCode();
-        } finally{
-            if (sysProperties != null) {
-                sysProperties.restoreSystem();
-            }
-        }
-    }
-
-    /**
-     * @return <tt>null</tt> if there is a timeout value, otherwise the
-     * watchdog instance.
-     */
-    protected ExecuteWatchdog createWatchdog() throws BuildException {
-        if (timeout == null){
-            return null;
-        }
-        return new ExecuteWatchdog(timeout.intValue());
-    }
-
-    /**
-     * get the default output for a formatter.
-     */
-    protected OutputStream getDefaultOutput(){
-        return new LogOutputStream(this, Project.MSG_INFO);
-    }
-
-    /**
-     * Merge all individual tests from the batchtest with all individual tests
-     * and return an enumeration over all <tt>JUnitTest</tt>.
-     */
-    protected Enumeration getIndividualTests(){
-        Enumeration[] enums = new Enumeration[ batchTests.size() + 1];
-        for (int i = 0; i < batchTests.size(); i++) {
-            BatchTest batchtest = (BatchTest)batchTests.elementAt(i);
-            enums[i] = batchtest.elements();
-        }
-        enums[enums.length - 1] = tests.elements();
-        return Enumerations.fromCompound(enums);
-    }
-
-    protected Enumeration allTests() {
-        Enumeration[] enums = { tests.elements(), batchTests.elements() };
-        return Enumerations.fromCompound(enums);
-    }
-
-    private FormatterElement[] mergeFormatters(JUnitTest test){
-        Vector feVector = (Vector)formatters.clone();
-        test.addFormattersTo(feVector);
-        FormatterElement[] feArray = new FormatterElement[feVector.size()];
-        feVector.copyInto(feArray);
-        return feArray;
-    }
-
-    /** return the file or null if does not use a file */
-    protected File getOutput(FormatterElement fe, JUnitTest test){
-        if (fe.getUseFile()) {
-            String filename = test.getOutfile() + fe.getExtension();
-            File destFile = new File( test.getTodir(), filename );
-            String absFilename = destFile.getAbsolutePath();
-            return project.resolveFile(absFilename);
-        }
-        return null;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.java
deleted file mode 100644
index e568f8e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.types.Commandline;
-
-import java.io.File;
-import java.util.Vector;
-
-/**
- *
- * @author Thomas Haas
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>,
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class JUnitTest extends BaseTest {
-    
-    /** the name of the test case */
-    private String name = null;
-    
-    /** the name of the result file */
-    private String outfile = null;
-
-    // @todo this is duplicating TestResult information. Only the time is not
-    // part of the result. So we'd better derive a new class from TestResult
-    // and deal with it. (SB)
-    private long runs, failures, errors;
-    private long runTime;
-
-    public JUnitTest() {
-    }
-
-    public JUnitTest(String name) {
-        this.name  = name;
-    }
-
-    public JUnitTest(String name, boolean haltOnError, boolean haltOnFailure) {
-        this.name  = name;
-        this.haltOnError = haltOnError;
-        this.haltOnFail = haltOnFail;
-    }
-
-    public void setName(String value) {
-        name = value;
-    }
-
-    public void setOutfile(String value) {
-        outfile = value;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * @return the name of the output file.
-     */
-    public String getOutfile() {
-        return outfile;
-    }
-
-    public void setCounts(long runs, long failures, long errors) {
-        this.runs = runs;
-        this.failures = failures;
-        this.errors = errors;
-    }
-
-    public void setRunTime(long runTime) {
-        this.runTime = runTime;
-    }
-
-    public long runCount() {return runs;}
-    public long failureCount() {return failures;}
-    public long errorCount() {return errors;}
-    public long getRunTime() {return runTime;}
-
-    public boolean shouldRun(Project p) {
-        if (ifProperty != null && p.getProperty(ifProperty) == null) {
-            return false;
-        } else if (unlessProperty != null && 
-                   p.getProperty(unlessProperty) != null) {
-            return false;
-        }
-        return true;
-    }
-
-    public FormatterElement[] getFormatters() {
-        FormatterElement[] fes = new FormatterElement[formatters.size()];
-        formatters.copyInto(fes);
-        return fes;
-    }
-
-    /**
-     * Convenient method to add formatters to a vector
-     */
-    void addFormattersTo(Vector v){
-        final int count = formatters.size();
-        for (int i = 0; i < count; i++){
-            v.addElement( formatters.elementAt(i) );
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
deleted file mode 100644
index 102322a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-
-import junit.framework.*;
-import java.lang.reflect.*;
-import java.io.*;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-/**
- * Simple Testrunner for JUnit that runs all tests of a testsuite.
- *
- * <p>This TestRunner expects a name of a TestCase class as its
- * argument. If this class provides a static suite() method it will be
- * called and the resulting Test will be run.
- *
- * <p>Otherwise all public methods starting with "test" and taking no
- * argument will be run.
- *
- * <p>Summary output is generated at the end.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-
-public class JUnitTestRunner implements TestListener {
-
-    /**
-     * No problems with this test.
-     */
-    public static final int SUCCESS = 0;
-
-    /**
-     * Some tests failed.
-     */
-    public static final int FAILURES = 1;
-
-    /**
-     * An error occured.
-     */
-    public static final int ERRORS = 2;
-
-    /**
-     * Holds the registered formatters.
-     */
-    private Vector formatters = new Vector();
-
-    /**
-     * Collects TestResults.
-     */
-    private TestResult res;
-
-    /**
-     * Do we stop on errors.
-     */
-    private boolean haltOnError = false;
-
-    /**
-     * Do we stop on test failures.
-     */
-    private boolean haltOnFailure = false;
-
-    /**
-     * The corresponding testsuite.
-     */
-    private Test suite = null;
-
-    /**
-     * Exception caught in constructor.
-     */
-    private Exception exception;
-
-    /**
-     * Returncode
-     */
-    private int retCode = SUCCESS;
-
-    /**
-     * The TestSuite we are currently running.
-     */
-    private JUnitTest junitTest;
-
-    /**
-     * Constructor for fork=true or when the user hasn't specified a
-     * classpath.  
-     */
-    public JUnitTestRunner(JUnitTest test, boolean haltOnError,
-                           boolean haltOnFailure) {
-        this(test, haltOnError, haltOnFailure, null);
-    }
-
-    /**
-     * Constructor to use when the user has specified a classpath.
-     */
-    public JUnitTestRunner(JUnitTest test, boolean haltOnError,
-                           boolean haltOnFailure, ClassLoader loader) {
-        this.junitTest = test;
-        this.haltOnError = haltOnError;
-        this.haltOnFailure = haltOnFailure;
-
-        try {
-            Class testClass = null;
-            if (loader == null) {
-                testClass = Class.forName(test.getName());
-            } else {
-                testClass = loader.loadClass(test.getName());
-            }
-            
-            try {
-                Method suiteMethod= testClass.getMethod("suite", new Class[0]);
-                suite = (Test)suiteMethod.invoke(null, new Class[0]);
-            } catch(NoSuchMethodException e) {
-            } catch(InvocationTargetException e) {
-            } catch(IllegalAccessException e) {
-            }
-            
-            if (suite == null) {
-                // try to extract a test suite automatically
-                // this will generate warnings if the class is no suitable Test
-                suite= new TestSuite(testClass);
-            }
-            
-        } catch(Exception e) {
-            retCode = ERRORS;
-            exception = e;
-        }
-    }
-
-    public void run() {
-        res = new TestResult();
-        res.addListener(this);
-        for (int i=0; i < formatters.size(); i++) {
-            res.addListener((TestListener)formatters.elementAt(i));
-        }
-
-        long start = System.currentTimeMillis();
-
-        fireStartTestSuite();
-        if (exception != null) { // had an exception in the constructor
-            for (int i=0; i < formatters.size(); i++) {
-                ((TestListener)formatters.elementAt(i)).addError(null, 
-                                                                 exception);
-            }
-            junitTest.setCounts(1, 0, 1);
-            junitTest.setRunTime(0);
-        } else {
-            suite.run(res);
-            junitTest.setCounts(res.runCount(), res.failureCount(), 
-                                res.errorCount());
-            junitTest.setRunTime(System.currentTimeMillis() - start);
-        }
-        fireEndTestSuite();
-
-        if (retCode != SUCCESS || res.errorCount() != 0) {
-            retCode = ERRORS;
-        } else if (res.failureCount() != 0) {
-            retCode = FAILURES;
-        }
-    }
-
-    /**
-     * Returns what System.exit() would return in the standalone version.
-     *
-     * @return 2 if errors occurred, 1 if tests failed else 0.
-     */
-    public int getRetCode() {
-        return retCode;
-    }
-
-    /**
-     * Interface TestListener.
-     *
-     * <p>A new Test is started.
-     */
-    public void startTest(Test t) {}
-
-    /**
-     * Interface TestListener.
-     *
-     * <p>A Test is finished.
-     */
-    public void endTest(Test test) {}
-
-    /**
-     * Interface TestListener for JUnit &lt;= 3.4.
-     *
-     * <p>A Test failed.
-     */
-    public void addFailure(Test test, Throwable t) {
-        if (haltOnFailure) {
-            res.stop();
-        }
-    }
-
-    /**
-     * Interface TestListener for JUnit &gt; 3.4.
-     *
-     * <p>A Test failed.
-     */
-    public void addFailure(Test test, AssertionFailedError t) {
-        addFailure(test, (Throwable) t);
-    }
-
-    /**
-     * Interface TestListener.
-     *
-     * <p>An error occured while running the test.
-     */
-    public void addError(Test test, Throwable t) {
-        if (haltOnError) {
-            res.stop();
-        }
-    }
-
-    private void fireStartTestSuite() {
-        for (int i=0; i<formatters.size(); i++) {
-            ((JUnitResultFormatter)formatters.elementAt(i)).startTestSuite(junitTest);
-        }
-    }
-
-    private void fireEndTestSuite() {
-        for (int i=0; i<formatters.size(); i++) {
-            ((JUnitResultFormatter)formatters.elementAt(i)).endTestSuite(junitTest);
-        }
-    }
-
-    public void addFormatter(JUnitResultFormatter f) {
-        formatters.addElement(f);
-    }
-
-    /**
-     * Entry point for standalone (forked) mode.
-     *
-     * Parameters: testcaseclassname plus parameters in the format
-     * key=value, none of which is required.
-     *
-     * <table cols="4" border="1">
-     * <tr><th>key</th><th>description</th><th>default value</th></tr>
-     *
-     * <tr><td>haltOnError</td><td>halt test on
-     * errors?</td><td>false</td></tr>
-     *
-     * <tr><td>haltOnFailure</td><td>halt test on
-     * failures?</td><td>false</td></tr>
-     *
-     * <tr><td>formatter</td><td>A JUnitResultFormatter given as
-     * classname,filename. If filename is ommitted, System.out is
-     * assumed.</td><td>none</td></tr>
-     *
-     * </table> 
-     */
-    public static void main(String[] args) throws IOException {
-        boolean exitAtEnd = true;
-        boolean haltError = false;
-        boolean haltFail = false;
-
-        if (args.length == 0) {
-            System.err.println("required argument TestClassName missing");
-            System.exit(ERRORS);
-        }
-
-        for (int i=1; i<args.length; i++) {
-            if (args[i].startsWith("haltOnError=")) {
-                haltError = Project.toBoolean(args[i].substring(12));
-            } else if (args[i].startsWith("haltOnFailure=")) {
-                haltFail = Project.toBoolean(args[i].substring(14));
-            } else if (args[i].startsWith("formatter=")) {
-                try {
-                    createAndStoreFormatter(args[i].substring(10));
-                } catch (BuildException be) {
-                    System.err.println(be.getMessage());
-                    System.exit(ERRORS);
-                }
-            }
-        }
-        
-        JUnitTest t = new JUnitTest(args[0]);
-        JUnitTestRunner runner = new JUnitTestRunner(t, haltError, haltFail);
-        transferFormatters(runner);
-        runner.run();
-        System.exit(runner.getRetCode());
-    }
-
-    private static Vector fromCmdLine = new Vector();
-
-    private static void transferFormatters(JUnitTestRunner runner) {
-        for (int i=0; i<fromCmdLine.size(); i++) {
-            runner.addFormatter((JUnitResultFormatter) fromCmdLine.elementAt(i));
-        }
-    }
-
-    /**
-     * Line format is: formatter=<classname>(,<pathname>)?
-     */
-    private static void createAndStoreFormatter(String line)
-        throws BuildException {
-        FormatterElement fe = new FormatterElement();
-        int pos = line.indexOf(',');
-        if (pos == -1) {
-            fe.setClassname(line);
-        } else {
-            fe.setClassname(line.substring(0, pos));
-            fe.setOutfile( new File(line.substring(pos + 1)) );
-        }
-        fromCmdLine.addElement(fe.createFormatter());
-    }
-
-} // JUnitTestRunner
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
deleted file mode 100644
index 722369c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import org.apache.tools.ant.BuildException;
-
-import java.io.*;
-import java.text.NumberFormat;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestCase;
-
-/**
- * Prints plain text output of the test to a specified Writer.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-
-public class PlainJUnitResultFormatter implements JUnitResultFormatter {
-
-    /**
-     * Formatter for timings.
-     */
-    private NumberFormat nf = NumberFormat.getInstance();
-    /**
-     * Timing helper.
-     */
-    private long lastTestStart = 0;
-    /**
-     * Where to write the log to.
-     */
-    private OutputStream out;
-    /**
-     * Helper to store intermediate output.
-     */
-    private StringWriter inner;
-    /**
-     * Convenience layer on top of {@link #inner inner}.
-     */
-    private PrintWriter wri;
-    /**
-     * Suppress endTest if testcase failed.
-     */
-    private boolean failed = true;
-
-    public PlainJUnitResultFormatter() {
-        inner = new StringWriter();
-        wri = new PrintWriter(inner);
-    }
-
-    public void setOutput(OutputStream out) {
-        this.out = out;
-    }
-
-    /**
-     * Empty.
-     */
-    public void startTestSuite(JUnitTest suite) {
-    }
-
-    /**
-     * The whole testsuite ended.
-     */
-    public void endTestSuite(JUnitTest suite) throws BuildException {
-        StringBuffer sb = new StringBuffer("Testsuite: ");
-        sb.append(suite.getName());
-        sb.append(System.getProperty("line.separator"));
-        sb.append("Tests run: ");
-        sb.append(suite.runCount());
-        sb.append(", Failures: ");
-        sb.append(suite.failureCount());
-        sb.append(", Errors: ");
-        sb.append(suite.errorCount());
-        sb.append(", Time elapsed: ");
-        sb.append(nf.format(suite.getRunTime()/1000.0));
-        sb.append(" sec");
-        sb.append(System.getProperty("line.separator"));
-        sb.append(System.getProperty("line.separator"));
-
-        if (out != null) {
-            try {
-                out.write(sb.toString().getBytes());
-                wri.close();
-                out.write(inner.toString().getBytes());
-                out.flush();
-            } catch (IOException ioex) {
-                throw new BuildException("Unable to write output", ioex);
-            } finally {
-                if (out != System.out && out != System.err) {
-                    try {
-                        out.close();
-                    } catch (IOException e) {}
-                }
-            }
-        }
-    }
-
-    /**
-     * Interface TestListener.
-     *
-     * <p>A new Test is started.
-     */
-    public void startTest(Test t) {
-        lastTestStart = System.currentTimeMillis();
-        wri.print("Testcase: " + ((TestCase) t).name());
-        failed = false;
-    }
-
-    /**
-     * Interface TestListener.
-     *
-     * <p>A Test is finished.
-     */
-    public void endTest(Test test) {
-        if (failed) return;
-        wri.println(" took " 
-                    + nf.format((System.currentTimeMillis()-lastTestStart)
-                                / 1000.0)
-                    + " sec");
-    }
-
-    /**
-     * Interface TestListener for JUnit &lt;= 3.4.
-     *
-     * <p>A Test failed.
-     */
-    public void addFailure(Test test, Throwable t) {
-        formatError("\tFAILED", test, t);
-    }
-
-    /**
-     * Interface TestListener for JUnit &gt; 3.4.
-     *
-     * <p>A Test failed.
-     */
-    public void addFailure(Test test, AssertionFailedError t) {
-        addFailure(test, (Throwable) t);
-    }
-
-    /**
-     * Interface TestListener.
-     *
-     * <p>An error occured while running the test.
-     */
-    public void addError(Test test, Throwable t) {
-        formatError("\tCaused an ERROR", test, t);
-    }
-
-    private void formatError(String type, Test test, Throwable t) {
-        if (test != null) {
-            endTest(test);
-        }
-        failed = true;
-
-        wri.println(type);
-        wri.println(t.getMessage());
-        t.printStackTrace(wri);
-        wri.println("");
-    }
-} // PlainJUnitResultFormatter
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatter.java
deleted file mode 100644
index e01f281..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/SummaryJUnitResultFormatter.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import java.text.NumberFormat;
-import java.io.IOException;
-import java.io.OutputStream;
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * Prints short summary output of the test to Ant's logging system.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
- 
-public class SummaryJUnitResultFormatter implements JUnitResultFormatter {
-
-    /**
-     * Formatter for timings.
-     */
-    private NumberFormat nf = NumberFormat.getInstance();
-    /**
-     * OutputStream to write to.
-     */
-    private OutputStream out;
-
-    /**
-     * Empty
-     */
-    public SummaryJUnitResultFormatter() {}
-    /**
-     * Empty
-     */
-    public void startTestSuite(JUnitTest suite) {}
-    /**
-     * Empty
-     */
-    public void startTest(Test t) {}
-    /**
-     * Empty
-     */
-    public void endTest(Test test) {}
-    /**
-     * Empty
-     */
-    public void addFailure(Test test, Throwable t) {}
-    /**
-     * Interface TestListener for JUnit &gt; 3.4.
-     *
-     * <p>A Test failed.
-     */
-    public void addFailure(Test test, AssertionFailedError t) {
-        addFailure(test, (Throwable) t);
-    }
-    /**
-     * Empty
-     */
-    public void addError(Test test, Throwable t) {}
-    
-    public void setOutput(OutputStream out) {
-        this.out = out;
-    }
-
-    /**
-     * The whole testsuite ended.
-     */
-    public void endTestSuite(JUnitTest suite) throws BuildException {
-        StringBuffer sb = new StringBuffer("Tests run: ");
-        sb.append(suite.runCount());
-        sb.append(", Failures: ");
-        sb.append(suite.failureCount());
-        sb.append(", Errors: ");
-        sb.append(suite.errorCount());
-        sb.append(", Time elapsed: ");
-        sb.append(nf.format(suite.getRunTime()/1000.0));
-        sb.append(" sec");
-        sb.append(System.getProperty("line.separator"));
-        try {
-            out.write(sb.toString().getBytes());
-            out.flush();
-        } catch (IOException ioex) {
-            throw new BuildException("Unable to write summary output", ioex);
-        } finally {
-            if (out != System.out && out != System.err) {
-                try {
-                    out.close();
-                } catch (IOException e) {}
-            }
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLConstants.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLConstants.java
deleted file mode 100644
index 2c626cc..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLConstants.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-/**
- * Interface that groups all constants used throughout the <tt>XML<tt>
- * documents that are generated by the <tt>XMLJUnitResultFormatter</tt>
- * As of now the DTD is:
- *
- * <----------------- @todo describe DTDs ---------------------->
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- * @see XMLJUnitResultFormatter
- * @see XMLResultAggregator
- */
-public interface XMLConstants {
-    /** the testsuites element for the aggregate document */
-    public final static String TESTSUITES = "testsuites";
-
-    /** the testsuite element */
-    public final static String TESTSUITE = "testsuite";
-
-    /** the testcase element */
-    public final static String TESTCASE = "testcase";
-
-    /** the error element */
-    public final static String ERROR = "error";
-
-    /** the failure element */
-    public final static String FAILURE = "failure";
-
-    /** package attribute for the aggregate document */
-    public final static String ATTR_PACKAGE = "package";
-
-    /** name attribute for testcase and testsuite elements */
-    public final static String ATTR_NAME = "name";
-
-    /** time attribute for testcase and testsuite elements */
-    public final static String ATTR_TIME = "time";
-
-    /** errors attribute for testsuite elements */
-    public final static String ATTR_ERRORS = "errors";
-
-    /** failures attribute for testsuite elements */
-    public final static String ATTR_FAILURES = "failures";
-
-    /** tests attribute for testsuite elements */
-    public final static String ATTR_TESTS = "tests";
-
-    /** type attribute for failure and error elements */
-    public final static String ATTR_TYPE = "type";
-
-    /** message attribute for failure elements */
-    public final static String ATTR_MESSAGE = "message";
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormatter.java
deleted file mode 100644
index dbdfeff..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLJUnitResultFormatter.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import java.io.*;
-import java.text.NumberFormat;
-import java.text.CharacterIterator;
-import java.text.StringCharacterIterator;
-import java.util.*;
-import javax.xml.parsers.*;
-import org.w3c.dom.*;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.util.DOMElementWriter;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestCase;
-
-/**
- * Prints XML output of the test to a specified Writer.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-
-public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstants {
-
-    private static DocumentBuilder getDocumentBuilder() {
-        try {
-            return DocumentBuilderFactory.newInstance().newDocumentBuilder();
-        }
-        catch(Exception exc) {
-            throw new ExceptionInInitializerError(exc);
-        }
-    }
-
-    /**
-     * Formatter for timings.
-     */
-    private NumberFormat nf = NumberFormat.getInstance(Locale.US);
-
-    /**
-     * The XML document.
-     */
-    private Document doc;
-    /**
-     * The wrapper for the whole testsuite.
-     */
-    private Element rootElement;
-    /**
-     * Element for the current test.
-     */
-    private Element currentTest;
-    /**
-     * Timing helper.
-     */
-    private long lastTestStart = 0;
-    /**
-     * Where to write the log to.
-     */
-    private OutputStream out;
-
-    public XMLJUnitResultFormatter() {}
-
-    public void setOutput(OutputStream out) {
-        this.out = out;
-    }
-
-    /**
-     * The whole testsuite started.
-     */
-    public void startTestSuite(JUnitTest suite) {
-        doc = getDocumentBuilder().newDocument();
-        rootElement = doc.createElement(TESTSUITE);
-        rootElement.setAttribute(ATTR_NAME, suite.getName());
-    }
-
-    /**
-     * The whole testsuite ended.
-     */
-    public void endTestSuite(JUnitTest suite) throws BuildException {
-        rootElement.setAttribute(ATTR_TESTS, ""+suite.runCount());
-        rootElement.setAttribute(ATTR_FAILURES, ""+suite.failureCount());
-        rootElement.setAttribute(ATTR_ERRORS, ""+suite.errorCount());
-        rootElement.setAttribute(ATTR_TIME,
-                                 nf.format(suite.getRunTime()/1000.0));
-        if (out != null) {
-            Writer wri = null;
-            try {
-                wri = new OutputStreamWriter(out);
-                wri.write("<?xml version=\"1.0\"?>\n");
-                (new DOMElementWriter()).write(rootElement, wri, 0, "  ");
-                wri.flush();
-            } catch(IOException exc) {
-                throw new BuildException("Unable to write log file", exc);
-            } finally {
-                if (out != System.out && out != System.err) {
-                    if (wri != null) {
-                        try {
-                            wri.close();
-                        } catch (IOException e) {}
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Interface TestListener.
-     *
-     * <p>A new Test is started.
-     */
-    public void startTest(Test t) {
-        lastTestStart = System.currentTimeMillis();
-        currentTest = doc.createElement(TESTCASE);
-        currentTest.setAttribute(ATTR_NAME, ((TestCase) t).name());
-        rootElement.appendChild(currentTest);
-    }
-
-    /**
-     * Interface TestListener.
-     *
-     * <p>A Test is finished.
-     */
-    public void endTest(Test test) {
-        currentTest.setAttribute(ATTR_TIME,
-                                 nf.format((System.currentTimeMillis()-lastTestStart)
-                                           / 1000.0));
-    }
-
-    /**
-     * Interface TestListener for JUnit &lt;= 3.4.
-     *
-     * <p>A Test failed.
-     */
-    public void addFailure(Test test, Throwable t) {
-        formatError(FAILURE, test, t);
-    }
-
-    /**
-     * Interface TestListener for JUnit &gt; 3.4.
-     *
-     * <p>A Test failed.
-     */
-    public void addFailure(Test test, AssertionFailedError t) {
-        addFailure(test, (Throwable) t);
-    }
-
-    /**
-     * Interface TestListener.
-     *
-     * <p>An error occured while running the test.
-     */
-    public void addError(Test test, Throwable t) {
-        formatError(ERROR, test, t);
-    }
-
-    private void formatError(String type, Test test, Throwable t) {
-        if (test != null) {
-            endTest(test);
-        }
-
-        Element nested = doc.createElement(type);
-        if (test != null) {
-            currentTest.appendChild(nested);
-        } else {
-            rootElement.appendChild(nested);
-        }
-
-        String message = t.getMessage();
-        if (message != null && message.length() > 0) {
-            nested.setAttribute(ATTR_MESSAGE, t.getMessage());
-        }
-        nested.setAttribute(ATTR_TYPE, t.getClass().getName());
-
-        StringWriter swr = new StringWriter();
-        t.printStackTrace(new PrintWriter(swr, true));
-        Text trace = doc.createTextNode(swr.toString());
-        nested.appendChild(trace);
-    }
-
-} // XMLJUnitResultFormatter
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java
deleted file mode 100644
index fdf5186..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.taskdefs.optional.junit;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.io.FileOutputStream;
-import java.util.Enumeration;
-import java.util.Vector;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.*;
-import org.xml.sax.SAXException;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.util.DOMElementWriter;
-
-
-/**
- * This is an helper class that will aggregate all testsuites under a specific
- * directory and create a new single document. It is not particulary clean but
- * should be helpful while I am thinking about another technique.
- *
- * The main problem is due to the fact that a JVM can be forked for a testcase
- * thus making it impossible to aggregate all testcases since the listener is
- * (obviously) in the forked JVM. A solution could be to write a
- * TestListener that will receive events from the TestRunner via sockets. This
- * is IMHO the simplest way to do it to avoid this file hacking thing.
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class XMLResultAggregator extends Task implements XMLConstants {
-    
-    /** the list of all filesets, that should contains the xml to aggregate */
-    protected Vector filesets = new Vector();
-    
-    /** the name of the result file */
-    protected String toFile;
-    
-    /** the directory to write the file to */
-    protected File toDir;
-    
-    protected Vector transformers = new Vector();
-    
-    /** the default directory: <tt>.</tt>. It is resolved from the project directory */
-    public final static String DEFAULT_DIR = ".";
-    
-    /** the default file name: <tt>TESTS-TestSuites.xml</tt> */
-    public final static String DEFAULT_FILENAME = "TESTS-TestSuites.xml";
-    
-    
-    public AggregateTransformer createReport(){
-        AggregateTransformer transformer = new AggregateTransformer(this);
-        transformers.add(transformer);
-        return transformer;
-    }
-    
-    /**
-     * Set the name of the file aggregating the results. It must be relative
-     * from the <tt>todir</tt> attribute. If not set it will use {@link DEFAULT_FILENAME}
-     * @param  value   the name of the file.
-     * @see #setTodir(File)
-     */
-    public void setTofile(String value){
-        toFile = value;
-    }
-    
-    /**
-     * Set the destination directory where the results should be written. If not
-     * set if will use {@link DEFAULT_DIR}. When given a relative directory
-     * it will resolve it from the project directory.
-     * @param value    the directory where to write the results, absolute or
-     * relative.
-     */
-    public void setTodir(File value){
-        toDir = value;
-    }
-    
-    /**
-     * Add a new fileset containing the xml results to aggregate
-     * @param    fs      the new fileset of xml results.
-     */
-    public void addFileSet(FileSet fs) {
-        filesets.addElement(fs);
-    }
-    
-    /**
-     * Aggregate all testsuites into a single document and write it to the
-     * specified directory and file.
-     * @throws	BuildException	thrown if there is a serious error while writing
-     *			the document.
-     */
-    public void execute() throws BuildException {
-        Element rootElement = createDocument();
-        File destFile = getDestinationFile();
-        // write the document
-        try {
-            writeDOMTree(rootElement.getOwnerDocument(),  destFile );
-        } catch (IOException e){
-            throw new BuildException("Unable to write test aggregate to '" + destFile + "'", e);
-        }
-        // apply transformation
-        Enumeration enum = transformers.elements();
-        while (enum.hasMoreElements()) {
-            AggregateTransformer transformer =
-                (AggregateTransformer) enum.nextElement();
-            transformer.setXmlDocument(rootElement.getOwnerDocument());
-            transformer.transform();
-        }
-    }
-    
-    /**
-     * get the full destination file where to write the result. It is made of
-     * the <tt>todir</tt> and <tt>tofile</tt> attributes.
-     * @return the destination file where should be written the result file.
-     */
-    protected File getDestinationFile(){
-        if (toFile == null){
-            toFile = DEFAULT_FILENAME;
-        }
-        if (toDir == null){
-            toDir = project.resolveFile(DEFAULT_DIR);
-        }
-        return new File(toDir, toFile);
-    }
-    
-    /**
-     * @return all files in the fileset that end with a '.xml'.
-     */
-    protected File[] getFiles() {
-        Vector v = new Vector();
-        final int size = filesets.size();
-        for (int i = 0; i < size; i++) {
-            FileSet fs = (FileSet) filesets.elementAt(i);
-            DirectoryScanner ds = fs.getDirectoryScanner(project);
-            ds.scan();
-            String[] f = ds.getIncludedFiles();
-            for (int j = 0; j < f.length; j++) {
-                String pathname = f[j];
-                if ( pathname.endsWith(".xml") ) {
-                    File file = new File(ds.getBasedir(), pathname);
-                    file = project.resolveFile(file.getPath());
-                    v.addElement( file );
-                }
-            }
-        }
-        
-        File[] files = new File[v.size()];
-        v.copyInto(files);
-        return files;
-    }
-    
-    //----- from now, the methods are all related to DOM tree manipulation
-    
-    /**
-     * Write the DOM tree to a file.
-     * @param doc the XML document to dump to disk.
-     * @param file the filename to write the document to. Should obviouslly be a .xml file.
-     * @throws IOException thrown if there is an error while writing the content.
-     */
-    protected void writeDOMTree(Document doc, File file) throws IOException {
-        OutputStream out = new FileOutputStream( file );
-        PrintWriter wri = new PrintWriter(out);
-        wri.write("<?xml version=\"1.0\"?>\n");
-        (new DOMElementWriter()).write(doc.getDocumentElement(), wri, 0, "  ");
-        wri.flush();
-        wri.close();
-        // writers do not throw exceptions, so check for them.
-        if (wri.checkError()){
-            throw new IOException("Error while writing DOM content");
-        }
-    }
-    
-    /**
-     * Create a DOM tree with firstchild as 'testsuites' and aggregates all
-     * testsuite results that exists in the base directory.
-     * @return	the root element of DOM tree that aggregates all testsuites.
-     */
-    protected Element createDocument() {
-        // create the dom tree
-        DocumentBuilder builder = getDocumentBuilder();
-        Document doc = builder.newDocument();
-        Element rootElement = doc.createElement(TESTSUITES);
-        doc.appendChild(rootElement);
-        
-        // get all files and add them to the document
-        File[] files = getFiles();
-        for (int i = 0; i < files.length; i++) {
-            try {
-                log("Parsing file: '" + files[i] + "'", Project.MSG_VERBOSE);
-                Document testsuiteDoc = builder.parse( files[i] );
-                Element elem = testsuiteDoc.getDocumentElement();
-                // make sure that this is REALLY a testsuite.
-                if ( TESTSUITE.equals(elem.getNodeName()) ) {
-                    addTestSuite(rootElement, elem);
-                } else {
-                    // issue a warning.
-                    log("the file " + files[i] + " is not a valid testsuite XML document", Project.MSG_WARN);
-                }
-            } catch (SAXException e){
-                // a testcase might have failed and write a zero-length document,
-                // It has already failed, but hey.... mm. just put a warning
-                log("The file " + files[i] + " is not a valid XML document. It is possibly corrupted.", Project.MSG_WARN);
-            } catch (IOException e){
-                log("Error while accessing file " + files[i] + ": " + e.getMessage(), Project.MSG_ERR);
-            }
-        }
-        return rootElement;
-    }
-    
-    /**
-     * Add a new testsuite node to the document, the main difference is that it
-     * split the previous fully qualified name into a package and a name.
-     * For example: <tt>org.apache.Whatever</tt> will be splitted in
-     * <tt>org.apache</tt> and <tt>Whatever</tt>.
-     * @param root the root element to which the <tt>testsuite</tt> node should
-     *        be appended.
-     * @param testsuite the element to append to the given root. It will slightly
-     *        modify the original node to change the name attribute and add
-     *        a package one.
-     */
-    protected void addTestSuite(Element root, Element testsuite){
-        String fullclassname = testsuite.getAttribute(ATTR_NAME);
-        int pos = fullclassname.lastIndexOf('.');
-        
-        // a missing . might imply no package at all. Don't get fooled.
-        String pkgName = (pos == -1) ? "" : fullclassname.substring(0, pos);
-        String classname = (pos == -1) ? fullclassname : fullclassname.substring(pos + 1);
-        Element copy = (Element)DOMUtil.importNode(root, testsuite);
-        
-        // modify the name attribute and set the package
-        copy.setAttribute(ATTR_NAME, classname);
-        copy.setAttribute(ATTR_PACKAGE, pkgName);
-    }
-    
-    /**
-     * Create a new document builder. Will issue an <tt>ExceptionInitializerError</tt>
-     * if something is going wrong. It is fatal anyway.
-     * @return a new document builder to create a DOM
-     * @todo factorize this somewhere else. It is duplicated code.
-     */
-    private static DocumentBuilder getDocumentBuilder() {
-        try {
-            return DocumentBuilderFactory.newInstance().newDocumentBuilder();
-        } catch(Exception exc) {
-            throw new ExceptionInInitializerError(exc);
-        }
-    }
-    
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/html/index.html b/src/main/org/apache/tools/ant/taskdefs/optional/junit/html/index.html
deleted file mode 100644
index c069aec..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/html/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd>
-
-<HTML>
-	<HEAD>
-	<TITLE>
-		Unit Tests Results.
-	</TITLE>
-	</HEAD>
-	<FRAMESET cols="20%,80%">
-		<FRAMESET rows="30%,70%">
-			<FRAME src="all-packages.html" name="packageListFrame">
-			<FRAME src="all-classes.html" name="classListFrame">
-		</FRAMESET>
-		<FRAME src="overview-packages.html" name="classFrame">
-	</FRAMESET>
-	<NOFRAMES>
-	<H2>Frame Alert</H2>
-	<P>
-		This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
-	</P>
-</HTML>
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/html/stylesheet.css b/src/main/org/apache/tools/ant/taskdefs/optional/junit/html/stylesheet.css
deleted file mode 100644
index 6a55ff8..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/html/stylesheet.css
+++ /dev/null
@@ -1,35 +0,0 @@
-BODY {
-	font:normal 68% verdana,arial,helvetica;
-	color:#000000;
-}
-TD {
-	FONT-SIZE: 68%
-}
-P {
-	line-height:1.5em;
-	margin-top:0.5em; margin-bottom:1.0em;
-}
-H1 {
-	MARGIN: 0px 0px 5px; FONT: 165% verdana,arial,helvetica
-}
-H2 {
-	MARGIN-TOP: 1em; MARGIN-BOTTOM: 0.5em; FONT: bold 125% verdana,arial,helvetica
-}
-H3 {
-	MARGIN-BOTTOM: 0.5em; FONT: bold 115% verdana,arial,helvetica
-}
-H4 {
-	MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
-}
-H5 {
-	MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
-}
-H6 {
-	MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
-}
-.Error {
-	font-weight:bold; color:red;
-}
-.Failure {
-	font-weight:bold; color:purple;
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/all-classes.xsl b/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/all-classes.xsl
deleted file mode 100644
index 25c03dc..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/all-classes.xsl
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!-- This style sheet should contain just a named templates that used in the other specific templates -->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<xsl:include href="toolkit.xsl"/>
-
-<xsl:template match="testsuites">
-	<HTML>
-		<HEAD>
-			<LINK REL ="stylesheet" TYPE="text/css" HREF="./stylesheet.css" TITLE="Style"/>
-		</HEAD>
-		<BODY onload="open('overview-packages.html','classFrame')">
-			<H2>Classes</H2>
-			<p>
-			<TABLE WIDTH="100%">
-					<xsl:apply-templates select="testsuite">
-						<xsl:sort select="@name"/>
-					</xsl:apply-templates>
-			</TABLE>
-			</p>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-<xsl:template match="testsuite">
-	<tr>
-		<td nowrap="nowrap">
-			<a target="classFrame">
-				<xsl:attribute name="href">
-					<xsl:if test="not(@package='')">
-						<xsl:value-of select="translate(@package,'.','/')"/><xsl:text>/</xsl:text>
-					</xsl:if><xsl:value-of select="@name"/><xsl:text>-details.html</xsl:text>
-				</xsl:attribute>
-				<xsl:value-of select="@name"/></a>
-		</td>
-	</tr>
-</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/all-packages.xsl b/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/all-packages.xsl
deleted file mode 100644
index 983d53a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/all-packages.xsl
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!-- This style sheet should contain just a named templates that used in the other specific templates -->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<!-- import the commun templates -->
-<xsl:include href="toolkit.xsl"/>
-
-<xsl:template match="testsuites">
-	<HTML>
-		<HEAD>
-			<LINK REL ="stylesheet" TYPE="text/css" HREF="./stylesheet.css" TITLE="Style"/>
-		</HEAD>
-		<BODY>
-	
-			<H2><a href="all-classes.html" target="classListFrame">Home</a></H2>
-			<!-- create a summary on this testcase-->
-			<!--xsl:call-template name="SummaryTableHeadRootPackage"/-->
-			<H2>Packages</H2>
-
-			<!-- Get the list of the subpackage -->
-			<p>
-				<table width="100%">
-					<!-- For each packages node apply the style describe in the below template-->
-					<xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-						<xsl:sort select="@package"/>
-					</xsl:apply-templates>
-				</table>
-			</p>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-<xsl:template match="testsuite">
-	<tr>
-		<td nowrap="nowrap">
-			<a href="{translate(@package,'.','/')}/package-summary.html" target="classFrame"><xsl:value-of select="@package"/></a>
-		</td>
-	</tr>
-</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/class-details.xsl b/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/class-details.xsl
deleted file mode 100644
index 520ddae..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/class-details.xsl
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!-- This style sheet should contain just a named templates that used in the other specific templates -->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<!-- import the commun templates -->
-<xsl:include href="toolkit.xsl"/>
-
-<xsl:template match="testsuite">
-	<HTML>
-		<HEAD>
-			<LINK REL ="stylesheet" TYPE="text/css" TITLE="Style">
-				<xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="@package"/></xsl:call-template>stylesheet.css</xsl:attribute>
-			</LINK>
-		</HEAD>
-		<BODY>
-			<xsl:call-template name="header">
-				<xsl:with-param name="useFrame">yes</xsl:with-param>
-				<xsl:with-param name="path" select="@package"/>
-			</xsl:call-template>
-	
-			<H2>Class <xsl:if test="not(@package = '')"><xsl:value-of select="@package"/>.</xsl:if><xsl:value-of select="@name"/></H2>
-			<p>
-			<h3>TestCase <xsl:value-of select="@name"/></h3>
-			
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<!-- Header -->
-				<xsl:call-template name="classesSummaryHeader"/>
-				<!-- match the testcases of this package -->
-				<xsl:apply-templates select="testcase"/>
-			</table>
-			</p>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/classes-list.xsl b/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/classes-list.xsl
deleted file mode 100644
index 49b0280..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/classes-list.xsl
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!-- This style sheet should contain just a named templates that used in the other specific templates -->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<!-- import the commun templates -->
-<xsl:include href="toolkit.xsl"/>
-
-<xsl:template match="testsuites">
-	<HTML>
-		<HEAD>
-			<LINK REL ="stylesheet" TYPE="text/css" TITLE="Style">
-				<xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="testsuite[position() = 1]/@package"/></xsl:call-template>stylesheet.css</xsl:attribute>
-			</LINK>
-		</HEAD>
-		<BODY>
-			
-			<table width="100%">
-				<tr>
-					<td nowrap="nowrap">
-						<H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="testsuite/@package"/></a></H2>
-					</td>
-				</tr>
-			</table>
-	
-			<H2>Classes</H2>
-			<p>
-			<TABLE WIDTH="100%">
-					<xsl:apply-templates select="testsuite">
-						<xsl:sort select="@name"/>
-					</xsl:apply-templates>
-			</TABLE>
-			</p>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-<xsl:template match="testsuite">
-	<tr>
-		<td nowrap="nowrap">
-			<a href="{@name}-details.html" target="classFrame"><xsl:value-of select="@name"/></a>
-		</td>
-	</tr>
-</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/overview-packages.xsl b/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/overview-packages.xsl
deleted file mode 100644
index 6b08620..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/overview-packages.xsl
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!-- This style sheet should contain just a named templates that used in the other specific templates -->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<xsl:include href="toolkit.xsl"/>
-
-<!-- Calculate all summary values -->
-<xsl:variable name="testCount" select="sum(//testsuite/@tests)"/>
-<xsl:variable name="errorCount" select="sum(//testsuite/@errors)"/>
-<xsl:variable name="failureCount" select="sum(//testsuite/@failures)"/>
-<xsl:variable name="timeCount" select="sum(//testsuite/@time)"/>
-<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
-
-<xsl:template match="testsuites">
-	<HTML>
-		<HEAD>
-			<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"/>
-		</HEAD>
-		<BODY>
-			<xsl:call-template name="header">
-				<xsl:with-param name="useFrame">yes</xsl:with-param>	
-			</xsl:call-template>
-
-			<xsl:call-template name="summary"/>
-
-
-		<xsl:if test="count(testsuite[not(./@package = preceding-sibling::testsuite/@package)])&gt;0">	
-		<h2>Packages</h2>
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-			<!--Header-->
-			<xsl:call-template name="packageSummaryHeader"/>
-			
-			<!-- write a summary for the package -->
-			<xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package) and not(./@package = '') ]" mode="package">
-				<xsl:sort select="@package"/>
-			</xsl:apply-templates>
-		</table>
-		<br/>
-		</xsl:if>
-
-
-		<xsl:if test="count(testsuite[./@package = ''])&gt;0">	
-		<h2>Classes</h2>
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-			<!--Header-->
-			<xsl:call-template name="packageSummaryHeader"/>
-				
-			<!-- write a summary for the package -->
-			<xsl:apply-templates select="testsuite[./@package = '']" mode="class">
-				<xsl:sort select="@name"/>
-			</xsl:apply-templates>
-		</table>
-		</xsl:if>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="package">
-	<xsl:variable name="isError" select="(sum(//testsuite[@package = current()/@package]/@errors) + sum(//testsuite[@package = current()/@package]/@failures))&gt;0"/>
-	<!-- write a summary for the package -->
-	<tr bgcolor="#EEEEE" valign="top">
-		<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><a href="{translate(@package,'.','/')}/package-summary.html"><xsl:value-of select="@package"/></a></td>
-		<xsl:call-template name="statistics">
-			<xsl:with-param name="isError" select="$isError"/>
-		</xsl:call-template>
-	</tr>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="class">
-	<xsl:variable name="isError" select="(@errors + @failures)&gt;0"/>
-	<!-- write a summary for the package -->
-	<tr bgcolor="#EEEEE" valign="top">
-		<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><a href="{translate(@package,'.','/')}/summary.html"><xsl:value-of select="@name"/></a></td>
-		<xsl:call-template name="statistics">
-			<xsl:with-param name="isError" select="$isError"/>
-		</xsl:call-template>
-	</tr>
-</xsl:template>
-
-
-<xsl:template name="statistics">
-	<xsl:variable name="isError"/>
-		<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><xsl:value-of select="sum(//testsuite[@package = current()/@package]/@tests)"/></td>
-		<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><xsl:value-of select="sum(//testsuite[@package = current()/@package]/@errors)"/></td>
-		<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><xsl:value-of select="sum(//testsuite[@package = current()/@package]/@failures)"/></td>
-		<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><xsl:value-of select="format-number(sum(//testsuite[@package = current()/@package]/@time),'#,###0.000')"/></td>
-</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/overview-summary.xsl b/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/overview-summary.xsl
deleted file mode 100644
index c9e80a3..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/overview-summary.xsl
+++ /dev/null
@@ -1,184 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:html="http://www.w3.org/Profiles/XHTML-transitional">
-
-<xsl:include href="toolkit.xsl"/>
-
-<!--
-	====================================================
-		Create the page structure
-    ====================================================
--->
-<xsl:template match="testsuites">
-	<HTML>
-		<HEAD>
-			<!--LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"/-->
-		<!-- put the style in the html so that we can mail it w/o problem -->
-		<style type="text/css">
-			BODY {
-			font:normal 68% verdana,arial,helvetica;
-			color:#000000;
-			}
-			TD {
-			FONT-SIZE: 68%
-			}
-			P {
-			line-height:1.5em;
-			margin-top:0.5em; margin-bottom:1.0em;
-			}
-			H1 {
-			MARGIN: 0px 0px 5px; FONT: 165% verdana,arial,helvetica
-			}
-			H2 {
-			MARGIN-TOP: 1em; MARGIN-BOTTOM: 0.5em; FONT: bold 125% verdana,arial,helvetica
-			}
-			H3 {
-			MARGIN-BOTTOM: 0.5em; FONT: bold 115% verdana,arial,helvetica
-			}
-			H4 {
-			MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
-			}
-			H5 {
-			MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
-			}
-			H6 {
-			MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
-			}
-			.Error {
-			font-weight:bold; color:red;
-			}
-			.Failure {
-			font-weight:bold; color:purple;
-			}
-			</style>			
-		</HEAD>
-		<body text="#000000" bgColor="#ffffff">
-			<a name="#top"></a>
-			<xsl:call-template name="header"/>
-			
-			<!-- Summary part -->
-			<xsl:call-template name="summary"/>
-			<hr size="1" width="95%" align="left"/>
-			
-			<!-- Package List part -->
-			<xsl:call-template name="packagelist"/>
-			<hr size="1" width="95%" align="left"/>
-			
-			<!-- For each package create its part -->
-			<xsl:call-template name="packages"/>
-			<hr size="1" width="95%" align="left"/>
-			
-			<!-- For each class create the  part -->
-			<xsl:call-template name="classes"/>
-			
-		</body>
-	</HTML>
-</xsl:template>
-	
-	
-	
-	<!-- ================================================================== -->
-	<!-- Write a list of all packages with an hyperlink to the anchor of    -->
-	<!-- of the package name.                                               -->
-	<!-- ================================================================== -->
-	<xsl:template name="packagelist">	
-		<h2>Packages</h2>
-		Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-			<xsl:call-template name="packageSummaryHeader"/>
-			<!-- list all packages recursively -->
-			<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-				<xsl:sort select="@package"/>
-				<xsl:variable name="testCount" select="sum(../testsuite[./@package = current()/@package]/@tests)"/>
-				<xsl:variable name="errorCount" select="sum(../testsuite[./@package = current()/@package]/@errors)"/>
-				<xsl:variable name="failureCount" select="sum(../testsuite[./@package = current()/@package]/@failures)"/>
-				<xsl:variable name="timeCount" select="sum(../testsuite[./@package = current()/@package]/@time)"/>
-				
-				<!-- write a summary for the package -->
-				<tr bgcolor="#EEEEE" valign="top">
-					<!-- set a nice color depending if there is an error/failure -->
-					<xsl:attribute name="class">
-						<xsl:choose>
-							<xsl:when test="$errorCount &gt; 0">Error</xsl:when>
-							<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
-						</xsl:choose>
-					</xsl:attribute>				
-					<td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
-					<td><xsl:value-of select="$testCount"/></td>
-					<td><xsl:value-of select="$errorCount"/></td>
-					<td><xsl:value-of select="$failureCount"/></td>
-					<td><xsl:value-of select="format-number($timeCount,'#,###0.000')"/></td>					
-				</tr>
-			</xsl:for-each>
-		</table>		
-	</xsl:template>
-	
-	
-	<!-- ================================================================== -->
-	<!-- Write a package level report                                       -->
-	<!-- It creates a table with values from the document:                  -->
-	<!-- Name | Tests | Errors | Failures | Time                            -->
-	<!-- ================================================================== -->
-	<xsl:template name="packages">
-		<!-- create an anchor to this package name -->
-		<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-			<xsl:sort select="@package"/>
-				<a name="#{@package}"></a>
-				<h3>Package <xsl:value-of select="@package"/></h3>
-				
-				<table border="0" cellpadding="5" cellspacing="2" width="95%">
-					<xsl:call-template name="packageSummaryHeader"/>
-			
-					<!-- match the testsuites of this package -->
-					<xsl:apply-templates select="../testsuite[./@package = current()/@package]"/>					
-				</table>
-				<a href="#top">Back to top</a>
-				<p/>
-				<p/>
-		</xsl:for-each>
-	</xsl:template>
-
-	<!-- ================================================================== -->
-	<!-- Process a testsuite node                                           -->
-	<!-- It creates a table with values from the document:                  -->
-	<!-- Name | Tests | Errors | Failures | Time                            -->
-	<!-- It must match the table definition at the package level            -->
-	<!-- ================================================================== -->	
-	<xsl:template match="testsuite">
-		<tr bgcolor="#EEEEE" valign="top">
-			<!-- set a nice color depending if there is an error/failure -->
-			<xsl:attribute name="class">
-				<xsl:choose>
-					<xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
-					<xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
-				</xsl:choose>
-			</xsl:attribute>
-		
-			<!-- print testsuite information -->
-			<td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
-			<td><xsl:value-of select="@tests"/></td>
-			<td><xsl:value-of select="@errors"/></td>
-			<td><xsl:value-of select="@failures"/></td>
-			<td><xsl:value-of select="format-number(@time,'#,###0.000')"/></td>
-		</tr>
-	</xsl:template>
-	
-	<xsl:template name="classes">
-		<xsl:for-each select="./testsuite">
-			<xsl:sort select="@name"/>
-			<!-- create an anchor to this class name -->
-			<a name="#{@name}"></a>
-			<h3>TestCase <xsl:value-of select="@name"/></h3>
-			
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<!-- Header -->
-				<xsl:call-template name="classesSummaryHeader"/>
-
-				<!-- match the testcases of this package -->
-				<xsl:apply-templates select="testcase"/>
-			</table>
-			<a href="#top">Back to top</a>
-		</xsl:for-each>
-	</xsl:template>
-	
-</xsl:stylesheet>
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/package-summary.xsl b/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/package-summary.xsl
deleted file mode 100644
index 9cef8f6..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/package-summary.xsl
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!-- This style sheet should contain just a named templates that used in the other specific templates -->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<!-- import the commun templates -->
-<xsl:include href="toolkit.xsl"/>
-
-<xsl:template match="testsuites">
-	<HTML>
-		<HEAD>
-			<LINK REL ="stylesheet" TYPE="text/css" TITLE="Style">
-				<xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="testsuite[position() = 1]/@package"/></xsl:call-template>stylesheet.css</xsl:attribute>
-			</LINK>
-		</HEAD>
-		<BODY><xsl:attribute name="onload">open('classes-list.html','classListFrame')</xsl:attribute>
-			<xsl:call-template name="header">
-				<xsl:with-param name="useFrame">yes</xsl:with-param>	
-				<xsl:with-param name="path" select="testsuite/@package"/>
-			</xsl:call-template>
-			<!-- create an anchor to this package name -->
-			<h3>Package <xsl:value-of select="testsuite/@package"/></h3>
-			
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<!--Header-->
-				<xsl:call-template name="packageSummaryHeader"/>				
-				
-				<!-- write a summary for the package -->
-				<tr bgcolor="#EEEEE" valign="top">
-					<td><xsl:value-of select="testsuite/@package"/></td>
-					<td><xsl:value-of select="sum(testsuite/@tests)"/></td>
-					<td><xsl:value-of select="sum(testsuite/@errors)"/></td>
-					<td><xsl:value-of select="sum(testsuite/@failures)"/></td>
-					<td><xsl:value-of select="format-number(sum(testsuite/@time),'#,###0.000')"/></td>
-				</tr>
-			</table>
-	
-			<H2>Classes</H2>
-			<p>
-			<table border="0" cellpadding="5" cellspacing="2" width="95%">
-				<!--Header-->
-				<xsl:call-template name="packageSummaryHeader"/>
-				
-				<!--Value-->
-				<xsl:apply-templates select="testsuite">
-					<xsl:sort select="@name"/>
-				</xsl:apply-templates>
-			</table>
-			</p>
-		</BODY>
-	</HTML>
-</xsl:template>
-
-<xsl:template match="testsuite">
-		<tr bgcolor="#EEEEE" valign="top">
-			<!-- set a nice color depending if there is an error/failure -->
-			<xsl:attribute name="class">
-				<xsl:choose>
-					<xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
-					<xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
-				</xsl:choose>
-			</xsl:attribute>
-		
-			<!-- print testsuite information -->
-			<td><a href="{@name}-details.html" target="classFrame"><xsl:value-of select="@name"/></a></td>
-			<td><xsl:value-of select="@tests"/></td>
-			<td><xsl:value-of select="@errors"/></td>
-			<td><xsl:value-of select="@failures"/></td>
-			<td><xsl:value-of select="format-number(@time,'#,###0.000')"/></td>
-		</tr>
-</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/toolkit.xsl b/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/toolkit.xsl
deleted file mode 100644
index a52103a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/toolkit.xsl
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!-- This style sheet should contain just a named templates that used in the other specific templates -->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<!-- transform string like a.b.c to ../../../  -->
-<xsl:template name="path">
-	<xsl:param name="path"/>
-	<xsl:if test="contains($path,'.')">
-		<xsl:text>../</xsl:text>	
-		<xsl:call-template name="path">
-			<xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
-		</xsl:call-template>	
-	</xsl:if>
-	<xsl:if test="not(contains($path,'.')) and not($path = '')">
-		<xsl:text>../</xsl:text>	
-	</xsl:if>	
-</xsl:template>
-
-<!--
-	template that will convert a carriage return into a br tag
-	@param word the text from which to convert CR to BR tag
--->
-<xsl:template name="br-replace">
-	<xsl:param name="word"/>
-	<xsl:choose>
-		<xsl:when test="contains($word,'&#xA;')">
-			<xsl:value-of select="substring-before($word,'&#xA;')"/>
-			<br/>
-			<xsl:call-template name="br-replace">
-				<xsl:with-param name="word" select="substring-after($word,'&#xA;')"/>
-			</xsl:call-template>
-		</xsl:when>
-		<xsl:otherwise>
-			<xsl:value-of select="$word"/>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-<!-- 
-		=====================================================================
-		classes summary header
-		=====================================================================
--->
-<xsl:template name="header">
-	<xsl:param name="useFrame">no</xsl:param>
-	<xsl:param name="path"/>
-	<h1>Unit Tests Results</h1>
-	<table width="100%">
-	<tr>
-		<td align="left">
-			<!--xsl:choose>
-				<xsl:when test="$useFrame='yes'">Frames&#160;
-				<a target="_top">
-					<xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="$path"/></xsl:call-template>noframes.html</xsl:attribute>No frames</a></xsl:when>
-				<xsl:when test="$useFrame='no'"><a target="_top"><xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="$path"/></xsl:call-template>index.html</xsl:attribute>Frames</a>&#160;No frames</xsl:when>
-				<xsl:otherwise><code>ERROR : useFrame must have 'no' or 'yes' as value.</code></xsl:otherwise>
-			</xsl:choose-->
-		</td>
-		<td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
-	</tr>
-	</table>
-	<hr size="1"/>
-</xsl:template>
-
-<xsl:template name="summaryHeader">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<td><b>Tests</b></td>
-		<td><b>Failures</b></td>
-		<td><b>Errors</b></td>
-		<td><b>Success Rate</b></td>
-		<td nowrap="nowrap"><b>Time(s)</b></td>
-	</tr>
-</xsl:template>
-
-<!-- 
-		=====================================================================
-		package summary header
-		=====================================================================
--->
-<xsl:template name="packageSummaryHeader">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<td width="75%"><b>Name</b></td>
-		<td width="5%"><b>Tests</b></td>
-		<td width="5%"><b>Errors</b></td>
-		<td width="5%"><b>Failures</b></td>
-		<td width="10%" nowrap="nowrap"><b>Time(s)</b></td>
-	</tr>
-</xsl:template>
-
-<!-- 
-		=====================================================================
-		classes summary header
-		=====================================================================
--->
-<xsl:template name="classesSummaryHeader">
-	<tr bgcolor="#A6CAF0" valign="top">
-		<td width="18%"><b>Name</b></td>
-		<td width="7%"><b>Status</b></td>
-		<td width="70%"><b>Type</b></td>
-		<td width="5%" nowrap="nowrap"><b>Time(s)</b></td>
-	</tr>
-</xsl:template>
-
-<!-- 
-		=====================================================================
-		Write the summary report
-		It creates a table with computed values from the document:
-		User | Date | Environment | Tests | Failures | Errors | Rate | Time
-		Note : this template must call at the testsuites level
-		=====================================================================
--->
-	<xsl:template name="summary">
-		<h2>Summary</h2>
-		<xsl:variable name="testCount" select="sum(./testsuite/@tests)"/>
-		<xsl:variable name="errorCount" select="sum(./testsuite/@errors)"/>
-		<xsl:variable name="failureCount" select="sum(./testsuite/@failures)"/>
-		<xsl:variable name="timeCount" select="sum(./testsuite/@time)"/>
-		<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
-		<table border="0" cellpadding="5" cellspacing="2" width="95%">
-		<xsl:call-template name="summaryHeader"/>
-		<tr bgcolor="#EEEEE" valign="top">
-			<xsl:attribute name="class">
-				<xsl:choose>
-					<xsl:when test="./failure | ./error">Error</xsl:when>
-					<xsl:otherwise>TableRowColor</xsl:otherwise>
-				</xsl:choose>
-			</xsl:attribute>		
-			<td><xsl:value-of select="$testCount"/></td>
-			<td><xsl:value-of select="$failureCount"/></td>
-			<td><xsl:value-of select="$errorCount"/></td>
-			<td><xsl:value-of select="format-number($successRate,'#,##0.00%')"/></td>
-			<td><xsl:value-of select="format-number($timeCount,'#,###0.000')"/></td>
-		</tr>
-		</table>
-		Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
-	</xsl:template>
-
-<!-- 
-		=====================================================================
-		testcase report
-		=====================================================================
--->
-<xsl:template match="testcase">
-	<TR bgcolor="#EEEEE" valign="top"><xsl:attribute name="class">
-			<xsl:choose>
-				<xsl:when test="./failure | ./error">Error</xsl:when>
-				<xsl:otherwise>TableRowColor</xsl:otherwise>
-			</xsl:choose>
-		</xsl:attribute>
-		<TD><xsl:value-of select="./@name"/></TD>
-		<xsl:choose>
-			<xsl:when test="./failure">
-				<td>Failure</td>
-				<td><xsl:apply-templates select="./failure"/></td>
-			</xsl:when>
-			<xsl:when test="./error">
-				<TD>Error</TD>
-				<td><xsl:apply-templates select="./error"/></td>
-			</xsl:when>
-			<xsl:otherwise>
-				<TD>Success</TD>
-				<TD></TD>
-			</xsl:otherwise>
-		</xsl:choose>
-		<td><xsl:value-of select="format-number(@time,'#,###0.000')"/></td>
-	</TR>
-</xsl:template>
-
-<!-- Note : the below template error and failure are the same style
-            so just call the same style store in the toolkit template -->
-<xsl:template match="failure">
-	<xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<xsl:template match="error">
-	<xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<!-- Style for the error and failure in the tescase template -->
-<xsl:template name="display-failures">
-	<xsl:choose>
-		<xsl:when test="not(@message)">N/A</xsl:when>
-		<xsl:otherwise>
-			<xsl:value-of select="@message"/>
-		</xsl:otherwise>
-	</xsl:choose>
-	<!-- display the stacktrace -->
-	<code>
-		<p/>
-		<xsl:call-template name="br-replace">
-			<xsl:with-param name="word" select="."/>
-		</xsl:call-template>
-	</code>
-	<!-- the later is better but might be problematic for non-21" monitors... -->
-	<!--pre><xsl:value-of select="."/></pre-->
-</xsl:template>
-
-<!-- I am sure that all nodes are called -->
-<xsl:template match="*">
-	<xsl:apply-templates/>
-</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java
deleted file mode 100644
index 94bab75..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.metamata;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.CommandlineJava;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-import java.io.IOException;
-
-/*
- *
- * @author thomas.haas@softwired-inc.com
- */
-public class MParse extends Task {
-
-    private Path userclasspath = null;
-    private File metahome = null;
-    private File metaworkingdir = null;
-    private File target = null;
-    private boolean cleanupHack = false;
-    private CommandlineJava cmdl = new CommandlineJava();
-
-
-    public void setMetamatahome(File metamatahome) {
-        this.metahome = metamatahome;
-    }
-
-    public void setWorkingdir(File workingdir) {
-        this.metaworkingdir = workingdir;
-    }
-
-    public void setTarget(File target) {
-        this.target = target;
-    }
-
-    public Path createUserclasspath() {
-        if (userclasspath == null) {
-            userclasspath = new Path(project);
-        }
-        
-        return userclasspath;
-    }
-
-
-    public void setCleanupHack(boolean value) {
-        cleanupHack = value;
-    }
-
-    public MParse() {
-        cmdl.setVm("java");
-        cmdl.setClassname("com.metamata.jj.MParse");
-    }
-
-
-    public void execute() throws BuildException {
-
-        if (target == null || !target.isFile()) {
-            throw new BuildException("Invalid target: " + target);
-        }
-        final File javaFile = new File(target.toString().substring(0,
-                                                                   target.toString().indexOf(".jj")) + ".java");
-        if (javaFile.exists() && target.lastModified() < javaFile.lastModified()) {
-            project.log("Target is already build - skipping (" + target + ")");
-            return;
-        }
-        cmdl.createArgument().setValue(target.getAbsolutePath());
-
-        if (metahome == null || !metahome.isDirectory()) {
-            throw new BuildException("Metamatahome not valid.");
-        }
-        if (metaworkingdir == null || !metaworkingdir.isDirectory()) {
-            throw new BuildException("Workingdir not set.");
-        }
-        if (userclasspath == null) {
-            throw new BuildException("Userclasspath not set.");
-        }
-
-        final Path classpath = cmdl.createClasspath(project);
-        classpath.createPathElement().setLocation(new File(metahome.getAbsolutePath() + "/lib/metamatadebug.jar"));
-        classpath.createPathElement().setLocation(new File(metahome.getAbsolutePath() + "/lib/metamata.jar"));
-        classpath.createPathElement().setLocation(new File(metahome.getAbsolutePath() + "/lib/JavaCC.zip"));
-
-        final Commandline.Argument arg = cmdl.createVmArgument();
-        arg.setValue("-mx140M");
-        arg.setValue("-Dmwp=" + metaworkingdir.getAbsolutePath());
-        arg.setValue("-Dmetamata.home=" + metahome.getAbsolutePath());
-        arg.setValue("-Dmetamata.java=java");
-        arg.setValue("-Dmetamata.java.options=-mx140M");
-        arg.setValue("-Dmetamata.java.options.classpath=-classpath");
-        arg.setValue("-Dmetamata.java.compiler=javac");
-        arg.setValue("-Dmetamata.java.compiler.options.0=-J-mx64M");
-        arg.setValue("-Dmetamata.java.compiler.options.classpath=-classpath");
-        arg.setValue("-Dmetamata.language=en");
-        arg.setValue("-Dmetamata.country=US");
-        arg.setValue("-Dmetamata.classpath=" + userclasspath);
-
-        final Execute process = new Execute(new LogStreamHandler(this,
-                                                                 Project.MSG_INFO,
-                                                                 Project.MSG_INFO), null);
-        log(cmdl.toString(), Project.MSG_VERBOSE);
-        process.setCommandline(cmdl.getCommandline());
-
-        try {
-            try {
-                if (process.execute() != 0) {
-                    throw new BuildException("MParse failed.");
-                }
-            } finally {
-                if (cleanupHack) {
-                    final File oo393 = new File(javaFile.getParent(),
-                                                "OO393.class");
-                    if (oo393.exists()) {
-                        project.log("Removing stale file: " + oo393.getName());
-                        oo393.delete();
-                    }
-                    final File sunjj = new File(javaFile.getParent(),
-                                                "__jj" + javaFile.getName().substring(0,
-                                                                                      javaFile.getName().indexOf(".java")) + ".sunjj");
-                    if (sunjj.exists()) {
-                        project.log("Removing stale file: " + sunjj.getName());
-                        sunjj.delete();
-                    }
-                }
-            }
-        }
-        catch (IOException e) {
-            throw new BuildException("Failed to launch MParse: " + e);
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
deleted file mode 100644
index bce41f3..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
+++ /dev/null
@@ -1,814 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.net;
-
-import com.oroinc.net.ftp.*;
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.*;
-
-/**
- * Basic FTP client that performs the following actions:
- * <ul>
- *   <li><strong>send</strong> - send files to a remote server.  This is the
- *              default action.</li>
- *   <li><strong>get</strong> - retrive files from a remote server.</li>
- *   <li><strong>del</strong> - delete files from a remote server.</li>
- *   <li><strong>list</strong> - create a file listing.</li>
- * </ul>
- *
- * @author Roger Vaughn <a href="mailto:rvaughn@seaconinc.com">rvaughn@seaconinc.com</a>
- * @author Glenn McAllister <a href="mailto:glennm@ca.ibm.com">glennm@ca.ibm.com</a>
- */
-public class FTP
-    extends Task
-{
-    protected final static int SEND_FILES   = 0;
-    protected final static int GET_FILES    = 1;
-    protected final static int DEL_FILES    = 2;        
-    protected final static int LIST_FILES   = 3;
-    
-    private String remotedir;
-    private String server;
-    private String userid;
-    private String password;
-    private File listing;
-    private boolean binary = true;
-    private boolean passive = false;
-    private boolean verbose = false;
-    private boolean newerOnly = false;
-    private int action = SEND_FILES;
-    private Vector filesets = new Vector();
-    private Vector dirCache = new Vector();
-    private int transferred = 0;
-    private String remoteFileSep = "/";
-    private int port = 21;
-
-    protected final static String[] ACTION_STRS = {
-        "sending",
-        "getting",
-        "deleting",
-        "listing"
-    };
-
-    protected final static String[] COMPLETED_ACTION_STRS = {
-        "sent",
-        "retrieved",
-        "deleted",
-        "listed"
-    };                
-        
-    protected class FTPDirectoryScanner extends DirectoryScanner {
-        protected FTPClient ftp = null;
-        
-        public FTPDirectoryScanner(FTPClient ftp) {
-            super();
-            this.ftp = ftp;
-        }
-
-        public void scan() {
-            if (includes == null) {
-                // No includes supplied, so set it to 'matches all'
-                includes = new String[1];
-                includes[0] = "**";
-            }
-            if (excludes == null) {
-                excludes = new String[0];
-            }
-
-            filesIncluded = new Vector();
-            filesNotIncluded = new Vector();
-            filesExcluded = new Vector();
-            dirsIncluded = new Vector();
-            dirsNotIncluded = new Vector();
-            dirsExcluded = new Vector();
-
-            try {
-                String cwd = ftp.printWorkingDirectory();
-                scandir(".", "", true); // always start from the current ftp working dir
-                ftp.changeWorkingDirectory(cwd);
-            } catch (IOException e) {
-                throw new BuildException("Unable to scan FTP server: ", e);
-            }
-        }
-
-        protected void scandir(String dir, String vpath, boolean fast) {
-            try {
-                if (!ftp.changeWorkingDirectory(dir)) {
-                    return;
-                }
-
-                FTPFile[] newfiles = ftp.listFiles();
-                if (newfiles == null) {
-                    return;    // no files in directory.
-                }
-
-                for (int i = 0; i < newfiles.length; i++) {
-                    FTPFile file = newfiles[i];
-                    String name = vpath + file.getName();
-                    if (file.isDirectory()) {
-                        if (isIncluded(name)) {
-                            if (!isExcluded(name)) {
-                                dirsIncluded.addElement(name);
-                                if (fast) {
-                                    scandir(name, name + File.separator, fast);
-                                }
-                            } else {
-                                dirsExcluded.addElement(name);
-                            }
-                        } else {
-                            dirsNotIncluded.addElement(name);
-                            if (fast && couldHoldIncluded(name)) {
-                                scandir(name, name + File.separator, fast);
-                            }
-                        }
-                        if (!fast) {
-                            scandir(name, name + File.separator, fast);
-                        }
-                    } else {
-                        if (file.isFile()) {
-                            if (isIncluded(name)) {
-                                if (!isExcluded(name)) {
-                                    filesIncluded.addElement(name);
-                                } else {
-                                    filesExcluded.addElement(name);
-                                }
-                            } else {
-                                filesNotIncluded.addElement(name);
-                            }
-                        }
-                    }
-                }
-            } catch (IOException e) {
-                throw new BuildException("Error while communicating with FTP server: ", e);
-            }
-        }
-    }        
-
-    /**
-     * Sets the remote directory where files will be placed.  This may
-     * be a relative or absolute path, and must be in the path syntax
-     * expected by the remote server.  No correction of path syntax will
-     * be performed.
-     */
-    public void setRemotedir(String dir)
-    {
-        this.remotedir = dir;
-    }
-
-    /**
-     * Sets the FTP server to send files to.
-     */
-    public void setServer(String server)
-    {
-        this.server = server;
-    }
-
-    /**
-     * Sets the FTP port used by the remote server.
-     */
-    public void setPort(int port)
-    {
-        this.port = port;
-    }
-
-    /**
-     * Sets the login user id to use on the specified server.
-     */
-    public void setUserid(String userid)
-    {
-        this.userid = userid;
-    }
-
-    /**
-     * Sets the login password for the given user id.
-     */
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    /**
-     * Specifies whether to use binary-mode or text-mode transfers.  Set
-     * to true to send binary mode.  Binary mode is enabled by default.
-     */
-    public void setBinary(boolean binary)
-    {
-        this.binary = binary;
-    }
-
-    /**
-     * Specifies whether to use passive mode.  Set to true if you
-     * are behind a firewall and cannot connect without it.  Passive mode
-     * is disabled by default.
-     */
-    public void setPassive(boolean passive)
-    {
-        this.passive = passive;
-    }
-
-    /**
-     * Set to true to receive notification about each file as it is
-     * transferred.
-     */
-    public void setVerbose(boolean verbose)
-    {
-        this.verbose = verbose;
-    }
-
-    /**
-     * Set to true to transmit only files that are new or changed from their
-     * remote counterparts.  The default is to transmit all files.
-     */
-    public void setNewer(boolean newer)
-    {
-        this.newerOnly = newer;
-    }
-
-    /**
-     * A synonym for setNewer.  Set to true to transmit only new or changed
-     * files.
-     */
-    public void setDepends(boolean depends)
-    {
-        this.newerOnly = depends;
-    }
-
-    /**
-     * Sets the remote file separator character.  This normally defaults to
-     * the Unix standard forward slash, but can be manually overridden using
-     * this call if the remote server requires some other separator.  Only
-     * the first character of the string is used.
-     */
-    public void setSeparator(String separator)
-    {
-        remoteFileSep = separator;
-    }
-
-    /**
-     * Adds a set of files (nested fileset attribute).
-     */
-    public void addFileset(FileSet set) {
-        filesets.addElement(set);
-    }
-
-    /**
-     * Sets the FTP action to be taken.  Currently accepts "put", "get",
-     * "del", and "list".
-     */
-    public void setAction(String action) throws BuildException
-    {
-        if (action.toLowerCase().equals("send") ||
-            action.toLowerCase().equals("put"))
-        {
-            this.action = SEND_FILES;
-        }
-        else if (action.toLowerCase().equals("recv") ||
-                 action.toLowerCase().equals("get"))
-        {
-            this.action = GET_FILES;
-        }
-        else if (action.toLowerCase().equals("del") ||
-                 action.toLowerCase().equals("delete" ))
-        {
-            this.action = DEL_FILES;
-        }
-        else if (action.toLowerCase().equals("list"))
-        {
-            this.action = LIST_FILES;
-        }
-        else
-        {
-            throw new BuildException("action " + action + " is not supported");
-        }
-    }
-    
-    /**
-     * The output file for the "list" action.  This attribute is ignored for
-     * any other actions.
-     */
-    public void setListing(File listing) throws BuildException {
-        this.listing = listing;
-    }        
-    
-
-    /**
-     * Checks to see that all required parameters are set.
-     */
-    protected void checkConfiguration() throws BuildException
-    {
-        if (server == null)
-        {
-            throw new BuildException("server attribute must be set!");
-        }
-        if (userid == null)
-        {
-            throw new BuildException("userid attribute must be set!");
-        }
-        if (password == null)
-        {
-            throw new BuildException("password attribute must be set!");
-        }
-        
-        if ((action == LIST_FILES) && (listing == null))
-        {
-            throw new BuildException("listing attribute must be set for list action!");
-        }
-    }
-
-    /**
-     * For each file in the fileset, do the appropriate action: send, get, delete,
-     * or list.
-     */
-    protected int transferFiles(FTPClient ftp, FileSet fs)
-        throws IOException, BuildException
-    {
-        FileScanner ds;
-
-        if (action == SEND_FILES) {
-            ds = fs.getDirectoryScanner(project);
-        } else {
-            ds = new FTPDirectoryScanner(ftp);
-            fs.setupDirectoryScanner(ds, project);
-            ds.scan();
-        }                        
-                                
-        String[] dsfiles = ds.getIncludedFiles();
-        String dir = null;
-        if ((ds.getBasedir() == null) && ((action == SEND_FILES) || (action == GET_FILES))) {
-            throw new BuildException( "the dir attribute must be set for send and get actions" );
-        } else {
-            if ((action == SEND_FILES) || (action == GET_FILES)) {
-                dir = ds.getBasedir().getAbsolutePath();
-            }
-        }
-
-        // If we are doing a listing, we need the output stream created now.
-        BufferedWriter bw = null;
-        if (action == LIST_FILES) {
-            File pd = new File(listing.getParent());
-            if (!pd.exists()) {
-                pd.mkdirs();
-            }
-            bw = new BufferedWriter(new FileWriter(listing));
-        }
-
-        for (int i = 0; i < dsfiles.length; i++)
-        {
-            switch (action) {
-            case SEND_FILES: {
-                sendFile(ftp, dir, dsfiles[i]);
-                break;
-            }
-
-            case GET_FILES: {
-                getFile(ftp, dir, dsfiles[i]);
-                break;
-            }
-
-            case DEL_FILES: {
-                delFile(ftp, dsfiles[i]);
-                break;
-            }
-
-            case LIST_FILES: {
-                listFile(ftp, bw, dsfiles[i]);
-                break;
-            }
-
-            default: {
-                throw new BuildException("unknown ftp action " + action );
-            }
-            }
-        }
-
-        if (action == LIST_FILES) {
-            bw.close();
-        }
-
-        return dsfiles.length;
-    }
-
-    /**
-     * Sends all files specified by the configured filesets to the remote
-     * server.
-     */
-    protected void transferFiles(FTPClient ftp)
-        throws IOException, BuildException
-    {
-        transferred = 0;
-        
-        if (filesets.size() == 0)
-        {
-            throw new BuildException("at least one fileset must be specified.");
-        }
-        else
-        {
-            // get files from filesets
-            for (int i = 0; i < filesets.size(); i++)
-            {
-                FileSet fs = (FileSet) filesets.elementAt(i);
-                if (fs != null)
-                {
-                    transferFiles(ftp, fs);
-                }
-            }
-        }
-
-        log(transferred + " files " + COMPLETED_ACTION_STRS[action]);
-    }
-
-    /**
-     * Correct a file path to correspond to the remote host requirements.
-     * This implementation currently assumes that the remote end can
-     * handle Unix-style paths with forward-slash separators.  This can
-     * be overridden with the <code>separator</code> task parameter.  No
-     * attempt is made to determine what syntax is appropriate for the
-     * remote host.
-     */
-    protected String resolveFile(String file)
-    {
-        return file.replace(System.getProperty("file.separator").charAt(0),
-                            remoteFileSep.charAt(0));
-    }
-
-    /**
-     * Creates all parent directories specified in a complete relative
-     * pathname.  Attempts to create existing directories will not cause
-     * errors.
-     */
-    protected void createParents(FTPClient ftp, String filename)
-        throws IOException, BuildException
-    {
-        Vector parents = new Vector();
-        File dir = new File(filename);
-        String dirname;
-
-        while ((dirname = dir.getParent()) != null)
-        {
-            dir = new File(dirname);
-            parents.addElement(dir);
-        }
-
-        for (int i = parents.size() - 1; i >= 0; i--)
-        {
-            dir = (File)parents.elementAt(i);
-            if (!dirCache.contains(dir))
-            {
-                log("creating remote directory " + resolveFile(dir.getPath()),
-                    Project.MSG_VERBOSE);
-                ftp.makeDirectory(resolveFile(dir.getPath()));
-                // Both codes 550 and 553 can be produced by FTP Servers
-                //  to indicate that an attempt to create a directory has
-                //  failed because the directory already exists.
-                if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()) &&
-                    (ftp.getReplyCode() != 550) && (ftp.getReplyCode() != 553))
-                {
-                    throw new BuildException(
-                                             "could not create directory: " +
-                                             ftp.getReplyString());
-                }
-                dirCache.addElement(dir);
-            }
-        }
-    }
-
-    /**
-     * Checks to see if the remote file is current as compared with the
-     * local file.  Returns true if the remote file is up to date.
-     */
-    protected boolean isUpToDate(FTPClient ftp, File localFile, String remoteFile)
-        throws IOException, BuildException
-    {
-        log("checking date for " + remoteFile, Project.MSG_VERBOSE);
-        
-        FTPFile[] files = ftp.listFiles(remoteFile);
-        if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
-        {
-            throw new BuildException(
-                                     "could not date test remote file: " +
-                                     ftp.getReplyString());
-        }
-
-        if (files == null)
-        {
-            return false;
-        }
-
-        long remoteTimestamp = files[0].getTimestamp().getTime().getTime();
-        long localTimestamp = localFile.lastModified();
-        if (this.action == SEND_FILES) {
-            return remoteTimestamp > localTimestamp;
-        } else {
-            return localTimestamp > remoteTimestamp;
-        }
-    }
-
-    /**
-     * Sends a single file to the remote host.
-     * <code>filename</code> may contain a relative path specification.
-     * When this is the case, <code>sendFile</code> will attempt to create
-     * any necessary parent directories before sending the file.  The file
-     * will then be sent using the entire relative path spec - no attempt
-     * is made to change directories.  It is anticipated that this may
-     * eventually cause problems with some FTP servers, but it simplifies
-     * the coding.
-     */
-    protected void sendFile(FTPClient ftp, String dir, String filename)
-        throws IOException, BuildException
-    {
-        InputStream instream = null;
-        try
-        {
-            File file = project.resolveFile(new File(dir, filename).getPath());
-
-            if (newerOnly && isUpToDate(ftp, file, resolveFile(filename)))
-                return;
-
-            if (verbose)
-            {
-                log("transferring " + file.getAbsolutePath());
-            }
-            
-            instream = new BufferedInputStream(new FileInputStream(file));
-            
-            createParents(ftp, filename);
-            
-            ftp.storeFile(resolveFile(filename), instream);
-            
-            if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
-            {
-                throw new BuildException(
-                                         "could not transfer file: " +
-                                         ftp.getReplyString());
-            }
-            
-            log("File " + file.getAbsolutePath() + " copied to " + server,
-                Project.MSG_VERBOSE);
-
-            transferred++;
-        }
-        finally
-        {            
-            if (instream != null)
-            {
-                try
-                {
-                    instream.close();
-                }
-                catch(IOException ex)
-                {
-                    // ignore it
-                }
-            }
-        }
-    }
-
-    /**
-     * Delete a file from the remote host.
-     */
-    protected void delFile(FTPClient ftp, String filename)
-        throws IOException, BuildException {
-        if (verbose) {
-            log("deleting " + filename);
-        }
-
-        if (!ftp.deleteFile(resolveFile(filename))) {
-            throw new BuildException("could not delete file: " + ftp.getReplyString());
-        }
-
-        log("File " + filename + " deleted from " + server, Project.MSG_VERBOSE); 
-
-        transferred++;
-    }
-
-    /**
-     * Retrieve a single file to the remote host.
-     * <code>filename</code> may contain a relative path specification.
-     * The file will then be retreived using the entire relative path spec - 
-     * no attempt is made to change directories.  It is anticipated that this may
-     * eventually cause problems with some FTP servers, but it simplifies
-     * the coding.
-     */
-    protected void getFile(FTPClient ftp, String dir, String filename)
-        throws IOException, BuildException
-    {
-        OutputStream outstream = null;
-        try
-        {
-            File file = project.resolveFile(new File(dir, filename).getPath());
-
-            if (newerOnly && isUpToDate(ftp, file, resolveFile(filename)))
-                return;
-
-            if (verbose)
-            {
-                log("transferring " + filename + " to " + file.getAbsolutePath());
-            }
-
-                        
-            File pdir = new File(file.getParent());        // stay 1.1 compatible
-            if (!pdir.exists()) {
-                pdir.mkdirs();
-            }                
-            outstream = new BufferedOutputStream(new FileOutputStream(file));
-            ftp.retrieveFile(resolveFile(filename), outstream);
-                        
-            if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
-            {
-                throw new BuildException(
-                                         "could not transfer file: " +
-                                         ftp.getReplyString());
-            }
-                        
-            log("File " + file.getAbsolutePath() + " copied from " + server,
-                Project.MSG_VERBOSE);
-
-            transferred++;
-        }
-        finally
-        {            
-            if (outstream != null)
-            {
-                try
-                {
-                    outstream.close();
-                }
-                catch(IOException ex)
-                {
-                    // ignore it
-                }
-            }
-        }
-    }
-
-    /**
-     * List information about a single file from the remote host.
-     * <code>filename</code> may contain a relative path specification.
-     * The file listing will then be retrieved using the entire relative path spec 
-     * - no attempt is made to change directories.  It is anticipated that this may
-     * eventually cause problems with some FTP servers, but it simplifies
-     * the coding.
-     */
-    protected void listFile(FTPClient ftp, BufferedWriter bw, String filename)
-        throws IOException, BuildException 
-    {
-        if (verbose) {
-            log("listing " + filename);
-        }
-
-        FTPFile ftpfile = ftp.listFiles(resolveFile(filename))[0];
-        bw.write(ftpfile.toString());
-        bw.newLine();
-
-        transferred++;
-    }
-
-    /**
-     * Runs the task.
-     */
-    public void execute()
-        throws BuildException
-    {
-        checkConfiguration();
-        
-        FTPClient ftp = null;
-
-        try
-        {
-            log("Opening FTP connection to " + server, Project.MSG_VERBOSE);
-
-            ftp = new FTPClient();
-            
-            ftp.connect(server, port);
-            if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
-            {
-                throw new BuildException("FTP connection failed: " + ftp.getReplyString());
-            }
-
-            log("connected", Project.MSG_VERBOSE);
-            log("logging in to FTP server", Project.MSG_VERBOSE);
-
-            if (!ftp.login(userid, password))
-            {
-                throw new BuildException("Could not login to FTP server");
-            }
-
-            log("login succeeded", Project.MSG_VERBOSE);
-            
-            if (binary)
-            {
-                ftp.setFileType(com.oroinc.net.ftp.FTP.IMAGE_FILE_TYPE);
-                if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
-                {
-                    throw new BuildException(
-                                             "could not set transfer type: " +
-                                             ftp.getReplyString());
-                }
-            }
-            
-            if (passive)
-            {
-                log("entering passive mode", Project.MSG_VERBOSE);
-                ftp.enterLocalPassiveMode();
-                if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
-                {
-                    throw new BuildException(
-                                             "could not enter into passive mode: " +
-                                             ftp.getReplyString());
-                }
-            }
-
-            if (remotedir != null)
-            {
-                log("changing the remote directory", Project.MSG_VERBOSE);
-                ftp.changeWorkingDirectory(remotedir);
-                if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
-                {
-                    throw new BuildException(
-                                             "could not change remote directory: " +
-                                             ftp.getReplyString());
-                }
-            }
-
-            log(ACTION_STRS[action] + " files");
-            transferFiles(ftp);
-
-        }
-        catch(IOException ex)
-        {
-            throw new BuildException("error during FTP transfer: " + ex);
-        }
-        finally
-        {
-            /*
-              if (ftp != null && ftp.isConnected())
-              {
-              try
-              {
-              // this hangs - I don't know why.
-              ftp.disconnect();
-              }
-              catch(IOException ex)
-              {
-              // ignore it
-              }
-              }
-            */
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
deleted file mode 100644
index 3388d0e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.net;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.taskdefs.MatchingTask;
-import com.oroinc.net.telnet.*;
-import org.apache.tools.ant.BuildException;
-import java.io.*;
-import java.lang.*;
-import java.util.*;
-
-/**
- * Class to provide automated telnet protocol support for the Ant build tool
- *
- * @author Scott Carlson<a href="mailto:ScottCarlson@email.com">ScottCarlson@email.com</a>
- * @version $Revision$
- */
-
-public class TelnetTask extends Task {
-    /**
-     *  The userid to login with, if automated login is used
-     */
-    private String userid  = null;
-
-    /**
-     *  The password to login with, if automated login is used
-     */
-    private String password= null;
-
-    /**
-     *  The server to connect to. 
-     */
-    private String server  = null;
-
-    /**
-     *  The tcp port to connect to. 
-     */
-    private int port = 23;
-
-    /**
-     *  The Object which handles the telnet session.
-     */
-    private AntTelnetClient telnet = null;
-
-    /**
-     *  The list of read/write commands for this session
-     */
-    private Vector telnetTasks = new Vector();
-
-    /** 
-     *  If true, adds a CR to beginning of login script
-     */
-    private boolean addCarriageReturn = false;
-
-    /**
-     *  Default time allowed for waiting for a valid response
-     *  for all child reads.  A value of 0 means no limit.
-     */
-    private Integer defaultTimeout = null;
-
-    /** 
-     *  Verify that all parameters are included. 
-     *  Connect and possibly login
-     *  Iterate through the list of Reads and writes 
-     */
-    public void execute() throws BuildException 
-    {
-       /**  A server name is required to continue */
-       if (server== null)
-           throw new BuildException("No Server Specified");
-       /**  A userid and password must appear together 
-        *   if they appear.  They are not required.
-        */
-       if (userid == null && password != null)
-           throw new BuildException("No Userid Specified");
-       if (password == null && userid != null)
-           throw new BuildException("No Password Specified");
-
-       /**  Create the telnet client object */
-       telnet = new AntTelnetClient();
-       try {
-           telnet.connect(server, port);
-       } catch(IOException e) {
-           throw new BuildException("Can't connect to "+server);
-       }
-       /**  Login if userid and password were specified */
-       if (userid != null && password != null)
-          login();
-       /**  Process each sub command */
-       Enumeration tasksToRun = telnetTasks.elements();
-       while (tasksToRun!=null && tasksToRun.hasMoreElements())
-       {
-           TelnetSubTask task = (TelnetSubTask) tasksToRun.nextElement();
-           if (task instanceof TelnetRead && defaultTimeout != null)
-               ((TelnetRead)task).setDefaultTimeout(defaultTimeout);
-           task.execute(telnet);
-       }
-    }
-
-    /**  
-     *  Process a 'typical' login.  If it differs, use the read 
-     *  and write tasks explicitely
-     */
-    private void login()
-    {
-       if (addCarriageReturn)
-          telnet.sendString("\n", true);
-       telnet.waitForString("ogin:");
-       telnet.sendString(userid, true);
-       telnet.waitForString("assword:");
-       telnet.sendString(password, false);
-    }
-
-    /**
-     *  Set the userid attribute 
-     */
-    public void setUserid(String u) { this.userid = u; }
-
-    /**
-     *  Set the password attribute 
-     */
-    public void setPassword(String p) { this.password = p; }
-
-    /**
-     *  Set the server address attribute 
-     */
-    public void setServer(String m) { this.server = m; }
-
-    /**
-     *  Set the tcp port to connect to attribute 
-     */
-    public void setPort(int p) { this.port = p; }
-
-    /**
-     *  Set the tcp port to connect to attribute 
-     */
-    public void setInitialCR(boolean b)
-    {
-       this.addCarriageReturn = b;
-    }
-
-    /**
-     *  Change the default timeout to wait for 
-     *  valid responses
-     */
-    public void setTimeout(Integer i)
-    {
-       this.defaultTimeout = i;
-    }
-
-    /**
-     *  A subTask <read> tag was found.  Create the object, 
-     *  Save it in our list, and return it.
-     */
-   
-    public TelnetSubTask createRead()
-    {
-        TelnetSubTask task = (TelnetSubTask)new TelnetRead();
-        telnetTasks.addElement(task);
-        return task;
-    }
-
-    /**
-     *  A subTask <write> tag was found.  Create the object, 
-     *  Save it in our list, and return it.
-     */
-    public TelnetSubTask createWrite()
-    {
-        TelnetSubTask task = (TelnetSubTask)new TelnetWrite();
-        telnetTasks.addElement(task);
-        return task;
-    }
-
-    /**  
-     *  This class is the parent of the Read and Write tasks.
-     *  It handles the common attributes for both.
-     */
-    public class TelnetSubTask
-    {
-        protected String taskString= "";
-        public void execute(AntTelnetClient telnet) 
-                throws BuildException
-        {
-            throw new BuildException("Shouldn't be able instantiate a SubTask directly");
-        }
-        public void addText(String s) { setString(s);}
-        public void setString(String s)
-        {
-           taskString += s; 
-        }
-    }
-    /**
-     *  This class sends text to the connected server 
-     */
-    public class TelnetWrite extends TelnetSubTask
-    {
-        private boolean echoString = true;
-        public void execute(AntTelnetClient telnet) 
-               throws BuildException
-        {
-           telnet.sendString(taskString, echoString);
-        }
-        
-        public void setEcho(boolean b)
-        {
-           echoString = b;
-        }
-    }
-    /**
-     *  This class reads the output from the connected server
-     *  until the required string is found. 
-     */
-    public class TelnetRead extends TelnetSubTask
-    {
-        private Integer timeout = null;
-        public void execute(AntTelnetClient telnet) 
-               throws BuildException
-        {
-            telnet.waitForString(taskString, timeout);
-        }
-        /**
-         *  Override any default timeouts
-         */
-        public void setTimeout(Integer i)
-        {
-           this.timeout = i;
-        }
-        /**
-         *  Sets the default timeout if none has been set already
-         */
-        public void setDefaultTimeout(Integer defaultTimeout)
-        {
-           if (timeout == null)
-              timeout = defaultTimeout;
-    }
-    }
-    /**
-     *  This class handles the abstraction of the telnet protocol.
-     *  Currently it is a wrapper around <a href="www.oroinc.com">ORO</a>'s 
-     *  NetComponents
-     */
-    public class AntTelnetClient extends TelnetClient
-    {
-      /**
-       * Read from the telnet session until the string we are 
-       * waiting for is found 
-       * @parm s The string to wait on 
-       */
-      public void waitForString(String s)
-      {
-           waitForString(s, null);
-      }
-
-      /**
-       * Read from the telnet session until the string we are 
-       * waiting for is found or the timeout has been reached
-       * @parm s The string to wait on 
-       * @parm timeout The maximum number of seconds to wait
-       */
-      public void waitForString(String s, Integer timeout)
-      {
-        InputStream is =this.getInputStream();
-        try {
-          StringBuffer sb = new StringBuffer();
-          if (timeout == null || timeout.intValue() == 0)
-          {
-              while (sb.toString().indexOf(s) == -1)
-                  {
-                      sb.append((char) is.read());
-                  }
-          }
-          else
-          {
-              Calendar endTime = Calendar.getInstance(); 
-              endTime.add(Calendar.SECOND,timeout.intValue());
-              while ( sb.toString().indexOf(s) == -1)
-              {
-                  while (Calendar.getInstance().before(endTime) &&
-                         is.available() == 0) {
-                      Thread.sleep(250);
-                  }
-                  if (is.available() == 0)
-                      throw new BuildException("Response Timed-Out", getLocation());
-                  sb.append((char) is.read());
-              }
-          }
-          log(sb.toString(), Project.MSG_INFO);
-        } catch (BuildException be)
-        { 
-            throw be;
-        } catch (Exception e)
-        { 
-            throw new BuildException(e, getLocation());
-        }
-      }
-
-    
-      /**
-       * Write this string to the telnet session.
-       * @parm echoString  Logs string sent
-       */
-      public void sendString(String s, boolean echoString)
-      {
-        OutputStream os =this.getOutputStream();
-        try {
-          os.write((s + "\n").getBytes());
-          if (echoString)
-              log(s, Project.MSG_INFO);
-          os.flush();
-        } catch (Exception e)
-        { 
-          throw new BuildException(e, getLocation());
-        }
-      }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Base.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Base.java
deleted file mode 100644
index 4c8cf9f..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Base.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * Portions of this software are based upon public domain software
- * originally written at the National Center for Supercomputing Applications,
- * University of Illinois, Urbana-Champaign.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import java.io.*;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.*;
-import org.apache.tools.ant.types.*;
-import org.apache.oro.text.perl.*;
-
-
-/** Base class for Perforce (P4) ANT tasks. See individual task for example usage.
- *
- * @see P4Sync
- * @see P4Have
- * @see P4Change
- * @see P4Edit
- * @see P4Submit
- * @see P4Label
- * @see org.apache.tools.ant.taskdefs.Exec
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- */
-public abstract class P4Base extends org.apache.tools.ant.Task {
-
-    /**Perl5 regexp in Java - cool eh? */
-    protected Perl5Util util = null;
-    /** The OS shell to use (cmd.exe or /bin/sh) */
-    protected String shell;
-
-    //P4 runtime directives
-    /** Perforce Server Port (eg KM01:1666) */
-    protected String P4Port     = "";
-    /** Perforce Client (eg myclientspec) */
-    protected String P4Client   = "";
-    /** Perforce User (eg fbloggs) */
-    protected String P4User     = "";
-    /** Perforce view for commands (eg //projects/foobar/main/source/... )*/
-    protected String P4View     = "";
-
-    //P4 g-opts and cmd opts (rtfm)
-    /** Perforce 'global' opts.
-      * Forms half of low level API */
-    protected String P4Opts     = "";
-    /** Perforce command opts.
-      * Forms half of low level API */
-    protected String P4CmdOpts  = "";
-
-    //Setters called by Ant
-    public void setPort(String P4Port)        { this.P4Port       =   "-p"+P4Port;    }
-    public void setClient(String P4Client)    { this.P4Client     =   "-c"+P4Client;  }
-    public void setUser(String P4User)        { this.P4User       =   "-u"+P4User;    }
-    public void setView(String P4View)        { this.P4View       =   P4View;         }
-    public void setCmdopts(String P4CmdOpts)  { this.P4CmdOpts    =   P4CmdOpts;      }
-
-    public void init() {
-
-        util = new Perl5Util();
-
-    	//Get default P4 settings from environment - Mark would have done something cool with
-	    //introspection here.....:-)
-	    String tmpprop;
-        if((tmpprop = project.getProperty("p4.port")) != null) setPort(tmpprop);
-        if((tmpprop = project.getProperty("p4.client")) != null) setClient(tmpprop);
-        if((tmpprop = project.getProperty("p4.user")) != null) setUser(tmpprop);	
-    }
-
-    protected void execP4Command(String command) throws BuildException {
-        execP4Command(command, null);
-    }
-    
-    /** Execute P4 command assembled by subclasses.
-	@param command The command to run
-	@param p4input Input to be fed to command on stdin
-	@param handler A P4Handler to process any input and output
-    */
-    protected void execP4Command(String command, P4Handler handler) throws BuildException {
-        try{
-
-            Commandline commandline = new Commandline();
-            commandline.setExecutable("p4");
-
-            //Check API for these - it's how CVS does it...
-            commandline.createArgument().setValue(P4Port);
-            commandline.createArgument().setValue(P4User);
-            commandline.createArgument().setValue(P4Client);
-            commandline.createArgument().setLine(command);
-
-	        log("Execing "+commandline.getCommandline(), Project.MSG_VERBOSE);
-
-            if(handler == null ) handler = new SimpleP4OutputHandler(this);
-
-            Execute exe = new Execute(handler, null);
-
-            exe.setAntRun(project);
-            
-            exe.setCommandline(commandline.getCommandline());
-
-            try{
-             exe.execute();
-            }catch(IOException e) {
-                throw new BuildException(e);
-            } finally {
-                try{
-                    handler.stop();
-                }catch(Exception e) {}
-            }
-
-            
-    		
-	    }catch(Exception e) {
-	        throw new BuildException("Problem exec'ing P4 command: "+e.getMessage());
-	    }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Change.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Change.java
deleted file mode 100644
index f946b72..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Change.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * Portions of this software are based upon public domain software
- * originally written at the National Center for Supercomputing Applications,
- * University of Illinois, Urbana-Champaign.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import java.io.*;
-
-import org.apache.tools.ant.*;
-
-/** P4Change - grab a new changelist from Perforce.
- *
- * P4Change creates a new changelist in perforce. P4Change sets the property
- * ${p4.change} with the new changelist number. This should then be passed into
- * p4edit and p4submit.
- *
- * @see P4Edit
- * @see P4Submit
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- *
- */
-public class P4Change extends P4Base {
-
-	protected String emptyChangeList = null;
-
-    public void execute() throws BuildException {
-
-        if(emptyChangeList == null) emptyChangeList = getEmptyChangeList();
-        final Project myProj = project;
-
-        P4Handler handler = new P4HandlerAdapter() {
-            public void process(String line) {
-                if (util.match("/Change/", line)) {
-                    
-                    //Remove any non-numerical chars - should leave the change number
-   	        		line = util.substitute("s/[^0-9]//g", line);
-   	        		
-   			       	int changenumber = Integer.parseInt(line);
-   			        log("Change Number is "+changenumber, Project.MSG_INFO);
-				    myProj.setProperty("p4.change", ""+changenumber);
-
-       			} else if(util.match("/error/", line)) {
-   	    		    throw new BuildException("Perforce Error, check client settings and/or server");
-       			}
-   			        
-   	        }};
-
-        handler.setOutput(emptyChangeList);
-
-        execP4Command("change -i", handler);
-    }
-
-
-    public String getEmptyChangeList() throws BuildException {
-        final StringBuffer stringbuf = new StringBuffer();
-        
-        execP4Command("change -o", new P4HandlerAdapter() {
-            public void process(String line) {
-        	    if(!util.match("/^#/",line)){
-                    if(util.match("/error/", line)) {
-	        		
-   			            log("Client Error", Project.MSG_VERBOSE);
-   			            throw new BuildException("Perforce Error, check client settings and/or server");
-   			            
-           			} else if(util.match("/<enter description here>/",line)) {
-
-                        line = util.substitute("s/<enter description here>/AutoSubmit By Ant/", line);
-			    		
-			        } else if(util.match("/\\/\\//", line)) {
-			            //Match "//" for begining of depot filespec
-			    	    return;
-				    }
-				    
-    				stringbuf.append(line);
-	    			stringbuf.append("\n");
-	    			
-		    	}
-    		}});
-		
-    	   	return stringbuf.toString();
-    }
-
-
-} //EoF
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Edit.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Edit.java
deleted file mode 100644
index 4cb6439..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Edit.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * Portions of this software are based upon public domain software
- * originally written at the National Center for Supercomputing Applications,
- * University of Illinois, Urbana-Champaign.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import org.apache.tools.ant.*;
-
-/** P4Edit - checkout file(s) for edit.
- *
- * Example Usage:<br>
- * &lt;p4edit change="${p4.change}" view="//depot/project/foo.txt" /&gt;
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- *
- * ToDo: Should call reopen if file is already open in one of our changelists perhaps?
- */
- 
- public class P4Edit extends P4Base {
- 
-     public String change = null;
-     
-     public void setChange(String change) {
-             this.change = change;
-	 }
-	 
-     public void execute() throws BuildException {
-         if(change != null ) P4CmdOpts = "-c "+change;
-	     if(P4View == null) throw new BuildException("No view specified to edit");
-         execP4Command("-s edit "+P4CmdOpts+" "+P4View, new SimpleP4OutputHandler(this));
-	 }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Handler.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Handler.java
deleted file mode 100644
index bef5f98..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Handler.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
-
-/** Interface for p4 job output stream handler. Classes implementing this interface
- * can be called back by P4Base.execP4Command();
- *
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- */
-public interface P4Handler extends ExecuteStreamHandler {
-
-    public void process(String line) throws BuildException;
-    public void setOutput(String line) throws BuildException;
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4HandlerAdapter.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4HandlerAdapter.java
deleted file mode 100644
index a170098..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4HandlerAdapter.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import java.io.*;
-import org.apache.tools.ant.*;
-
-public abstract class P4HandlerAdapter implements P4Handler {
-
-    public abstract void process(String line);
-
-
-    String p4input = "";
-
-    //set any data to be written to P4's stdin - messy, needs work
-    public void setOutput(String p4Input) {
-        this.p4input = p4Input;
-    }
-
-
-    public void start() throws BuildException {
-
-    try{
-        //First write any output to P4 
-        if(p4input != null && p4input.length() >0 && os != null) {
-                    os.write(p4input.getBytes());
-                    os.flush();
-                    os.close();
-            }
-
-        //Now read any input and process
-      
-        BufferedReader input = new BufferedReader(
-                                     new InputStreamReader(
-                                       new SequenceInputStream(is,es)));
-
-            String line;
-	    	while((line = input.readLine()) != null) {
-	    	   process(line);
-	    	}
-	    	
-	    	input.close();
-
-
-        }catch(Exception e) {
-            throw new BuildException(e);
-        }
-    }
-
-    OutputStream os;    //OUtput
-    InputStream is;     //Input
-    InputStream es;     //Error
-
-    public void setProcessInputStream(OutputStream os) throws IOException {
-        this.os = os;
-    }
-
-    public void setProcessErrorStream(InputStream is) throws IOException {
-        this.es = is;
-    }
-
-    public void setProcessOutputStream(InputStream is) throws IOException {
-        this.is = is;
-    }
-
-    public void stop(){}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Have.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Have.java
deleted file mode 100644
index b771f01..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Have.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * Portions of this software are based upon public domain software
- * originally written at the National Center for Supercomputing Applications,
- * University of Illinois, Urbana-Champaign.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import org.apache.tools.ant.*;
-
-
-/** P4Have - lists files currently on client.
- * 
- * P4Have simply dumps the current file version info into
- * the Ant log (or stdout).
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- */
-public class P4Have extends P4Base {
-
-    public void execute() throws BuildException {
-        execP4Command("have "+P4CmdOpts+" "+P4View, new SimpleP4OutputHandler(this));
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java
deleted file mode 100644
index e97229b..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * Portions of this software are based upon public domain software
- * originally written at the National Center for Supercomputing Applications,
- * University of Illinois, Urbana-Champaign.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import org.apache.tools.ant.*;
-
-import java.util.Date;
-import java.text.SimpleDateFormat;
-
-
-/** P4Label - create a Perforce Label.
- *
- *  P4Label inserts a label into perforce reflecting the
- *  current client contents.
- *
- *  Label name defaults to AntLabel if none set.
- *
- * Example Usage: <P4Label name="MyLabel-${TSTAMP}-${DSTAMP}" desc="Auto Build Label" />
- *
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- */
-public class P4Label extends P4Base {
-
-    protected String name;
-    protected String desc;
-    
-    public void setName(String name) {
-        this.name = name;
-    }
-    
-    public void setDesc(String desc) {
-        this.desc = desc;
-    }
-    
-    public void execute() throws BuildException {
-        log("P4Label exec:",Project.MSG_INFO);
-        
-        if(P4View == null || P4View.length() < 1) {
-            log("View not set, assuming //depot/...", Project.MSG_WARN);
-            P4View = "//depot/...";
-        }
-        
-        if(desc == null || desc.length() < 1) {
-            log("Label Description not set, assuming 'AntLabel'", Project.MSG_WARN);
-            desc = "AntLabel";
-        }
-        
-
-        if(name == null || name.length() < 1) {
-            SimpleDateFormat formatter = new SimpleDateFormat ("yyyy.MM.dd-hh:mm");
-            Date now = new Date();
-            name = "AntLabel-"+formatter.format(now);
-            log("name not set, assuming '"+name+"'", Project.MSG_WARN);
-        }
-        
-        
-        String newLabel = 
-            "Label: "+name+"\n"+
-            "Description: "+desc+"\n"+
-            "Options: unlocked\n"+
-            "View: "+P4View+"\n";
-
-        P4Handler handler = new P4HandlerAdapter() {
-            public void process(String line) {
-                log(line, Project.MSG_VERBOSE);
-            }
-        };
-
-        handler.setOutput(newLabel);
-
-        execP4Command("label -i", handler);
-        
-        execP4Command("labelsync -l "+name, new P4HandlerAdapter() {
-            public void process(String line) {
-                log(line, Project.MSG_VERBOSE);
-            }
-        });
-        
-        
-        log("Created Label "+name+" ("+desc+")", Project.MSG_INFO);
-        
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4OutputHandler.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4OutputHandler.java
deleted file mode 100644
index f748f42..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4OutputHandler.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import org.apache.tools.ant.BuildException;
-
-/** Interface for p4 job output stream handler. Classes implementing this interface
- * can be called back by P4Base.execP4Command();
- *
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- */
-public interface P4OutputHandler {
-
-    public void process(String line) throws BuildException;
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java
deleted file mode 100644
index 09444b7..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * Portions of this software are based upon public domain software
- * originally written at the National Center for Supercomputing Applications,
- * University of Illinois, Urbana-Champaign.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import org.apache.tools.ant.*;
-
-/** P4Submit - submit a numbered changelist to Perforce.
- *
- * <B>Note:</B> P4Submit cannot (yet) submit the default changelist. 
- * This shouldn't be a problem with the ANT API as the usual flow is 
- * P4Change to create a new numbered change followed by P4Edit then P4Submit.
- *
- * Example Usage:-<br>
- * &lt;p4submit change="${p4.change}" /&gt;
- *
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- *
- */
-public class P4Submit extends P4Base {
-
-    //ToDo: If dealing with default cl need to parse out <enter description here>    
-    public String change;
-
-    public void setChange(String change) {
-        this.change = change;
-	}
-    public void execute() throws BuildException {
-        if(change != null) {
-	        execP4Command("submit -c "+change, new P4HandlerAdapter(){
-		            public void process(String line) {
-			            log(line, Project.MSG_VERBOSE);
-				    }
-		    });
-	
-	    } else {
-	    //here we'd parse the output from change -o into submit -i 
-	    //in order to support default change.
-	    throw new BuildException("No change specified (no support for default change yet....");
-    	}
-	}
-	
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Sync.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Sync.java
deleted file mode 100644
index 4a1563c..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Sync.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * Portions of this software are based upon public domain software
- * originally written at the National Center for Supercomputing Applications,
- * University of Illinois, Urbana-Champaign.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import org.apache.tools.ant.*;
-
-/** P4Sync  - synchronise client space to a perforce depot view.
- *  The API allows additional functionality of the "p4 sync" command 
- * (such as "p4 sync -f //...#have" or other exotic invocations).</P>
- *
- * <b>Example Usage:</b>
- * <table border="1">
- * <th>Function</th><th>Command</th>
- * <tr><td>Sync to head using P4USER, P4PORT and P4CLIENT settings specified</td><td>&lt;P4Sync <br>P4view="//projects/foo/main/source/..." <br>P4User="fbloggs" <br>P4Port="km01:1666" <br>P4Client="fbloggsclient" /&gt;</td></tr>
- * <tr><td>Sync to head using P4USER, P4PORT and P4CLIENT settings defined in environment</td><td>&lt;P4Sync P4view="//projects/foo/main/source/..." /&gt;</td></tr>
- * <tr><td>Force a re-sync to head, refreshing all files</td><td>&lt;P4Sync force="yes" P4view="//projects/foo/main/source/..." /&gt;</td></tr>
- * <tr><td>Sync to a label</td><td>&lt;P4Sync label="myPerforceLabel" /&gt;</td></tr>
- * </table>
- *
- * ToDo:  Add decent label error handling for non-exsitant labels
- *
- * @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
- */
-public class P4Sync extends P4Base {
-
-    String label;
-    private String syncCmd = "";
-
-    public void setLabel(String label) throws BuildException { 
-        if(label == null && !label.equals(""))
-                throw new BuildException("P4Sync: Labels cannot be Null or Empty");
-
-        this.label = label;
-
-    }
-
-
-    public void setForce(String force) throws BuildException {
-        if(force == null && !label.equals(""))
-                throw new BuildException("P4Sync: If you want to force, set force to non-null string!");
-            P4CmdOpts = "-f";
-        }
-        
-    public void execute() throws BuildException {
-
-
-        if (P4View != null) {
-                syncCmd = P4View;
-        }
-
-        
-        if(label != null && !label.equals("")) {
-                syncCmd = syncCmd + "@" + label;
-        } 
-
-        
-        log("Execing sync "+P4CmdOpts+" "+syncCmd, Project.MSG_VERBOSE);
-
-        execP4Command("-s sync "+P4CmdOpts+" "+syncCmd, new SimpleP4OutputHandler(this));
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java
deleted file mode 100644
index c4b57a3..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * Portions of this software are based upon public domain software
- * originally written at the National Center for Supercomputing Applications,
- * University of Illinois, Urbana-Champaign.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import org.apache.tools.ant.*;
-
-public class SimpleP4OutputHandler extends P4HandlerAdapter {
-
-	P4Base parent;
-	public SimpleP4OutputHandler(P4Base parent) {
-		this.parent = parent;
-	}
-	
-	public void process(String line) throws BuildException {
-		if(parent.util.match("/^exit/",line)) return;
-
-		//Throw exception on errors (except up-to-date)
-		//p4 -s is unpredicatable. For example a server down
-		//does not return error: markup
-		//
-		//Some forms producing commands (p4 -s change -o) do tag the output
-		//others don't.....
-		//Others mark errors as info, for example edit a file
-		//which is already open for edit.....
-		//Just look for error: - catches most things....
-
-		if(parent.util.match("/error:/", line) && !parent.util.match("/up-to-date/", line)) {
-			throw new BuildException(line);
-	
-		} 
-
-		parent.log(parent.util.substitute("s/^.*: //",line), Project.MSG_INFO);
-		
-	}
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/package.html b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/package.html
deleted file mode 100644
index 99e3183..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<body>
-ANT Tasks for Perforce integration.
-
-These tasks provide basic P4 capabilities to automated ANT-based build systems. <b>Note:</b> 
-the tasks in this package are linked against the Jakarta ORO 2.0 library which
-brings the power of Perl 5 regular expressions to Java.
-
-These tasks also require you to have the p4 (or p4.exe) client in your path.
-
-@see <A HREF="http://jakarta.apache.org/">Jakarta Project</A>
-@see <A HREF="http://www.perforce.com/">Perforce</A>
-
-@see org.apache.tools.ant.taskdefs.optional.perforce.P4Sync
-@see org.apache.tools.ant.taskdefs.optional.perforce.P4Label
-@see org.apache.tools.ant.taskdefs.optional.perforce.P4Have
-@see org.apache.tools.ant.taskdefs.optional.perforce.P4Change
-@see org.apache.tools.ant.taskdefs.optional.perforce.P4Edit
-@see org.apache.tools.ant.taskdefs.optional.perforce.P4Submit
-
-
-
-@author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
-
-
-</body>
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/scm/AntStarTeamCheckOut.java b/src/main/org/apache/tools/ant/taskdefs/optional/scm/AntStarTeamCheckOut.java
deleted file mode 100644
index 5111b25..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/scm/AntStarTeamCheckOut.java
+++ /dev/null
@@ -1,1420 +0,0 @@
-/* 
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-package org.apache.tools.ant.taskdefs.optional.scm; 
- 
-import com.starbase.starteam.*;
-import com.starbase.util.Platform;
-import java.io.*;
-import java.util.*;
-import org.apache.tools.ant.*;
-
-/**
- * Checks out files from a specific StarTeam server, project, view, and
- * folder.
- * <BR><BR>
- * This program logs in to a StarTeam server and opens up the specified
- * project and view.  Then, it searches through that view for the given
- * folder (or, if you prefer, it uses the root folder).  Beginning with
- * that folder and optionally continuing recursivesly, AntStarTeamCheckOut
- * compares each file with your include and exclude filters and checks it
- * out only if appropriate.
- * <BR><BR>
- * Checked out files go to a directory you specify under the subfolder
- * named for the default StarTeam path to the view.  That is, if you
- * entered /home/cpovirk/work as the target folder, your project was named
- * "OurProject," the given view was named "TestView," and that view is
- * stored by default at "C:\projects\Test," your files would be checked
- * out to /home/cpovirk/work/Test."  I avoided using the project name in
- * the path because you may want to keep several versions of the same
- * project on your computer, and I didn't want to use the view name, as
- * there may be many "Test" or "Version 1.0" views, for example.  This
- * system's success, of course, depends on what you set the default path
- * to in StarTeam.
- * <BR><BR>
- * You can set AntStarTeamCheckOut to verbose or quiet mode.  Also, it has
- * a safeguard against overwriting the files on your computer:  If the
- * target directory you specify already exists, the program will throw a
- * BuildException.  To override the exception, set <CODE>force</CODE> to
- * true.
- * <BR><BR>
- * <B>This program makes use of functions from the StarTeam API.  As a result
- * AntStarTeamCheckOut is available only to licensed users of StarTeam and
- * requires the StarTeam SDK to function.  You must have
- * <CODE>starteam-sdk.jar</CODE> in your classpath to run this program.
- * For more information about the StarTeam API and how to license it, see
- * the link below.</B>
- *
- * @author <A HREF="mailto:chris.povirk@paytec.com">Chris Povirk</A>
- * @author <A HREF="mailto:jc.mann@paytec.com">JC Mann</A>
- * @author <A HREF="mailto:jeff.gettle@paytec.com">Jeff Gettle</A>
- * @version 1.0
- * @see <A HREF="http://www.starbase.com/">StarBase Web Site</A>
- */
-public class AntStarTeamCheckOut extends org.apache.tools.ant.Task 
-{
-    /**
-     * By default, <CODE>force</CODE> is set to "false" through this field.
-     * If you set <CODE>force</CODE> to "true," AntStarTeamCheckOut will
-     * overwrite files in the target directory. If the target directory does
-     * not exist, the <CODE>force</CODE> setting does nothing. Note that
-     * <CODE>DEFAULT_FORCESETTING</CODE> and <CODE>force</CODE> are strings,
-     * not boolean values. See the links below for more information.
-     * 
-     * @see #getForce()
-     * @see #getForceAsBoolean()
-     * @see #setForce(String force)
-     */
-    static public final String DEFAULT_FORCESETTING = "false";
-
-    /**
-     * This field is used in setting <CODE>verbose</CODE> to "false", the
-     * default. If <CODE>verbose</CODE> is true, AntStarTeamCheckOut will
-     * display file and directory names as it checks files out. The default
-     * setting displays only a total. Note that
-     * <CODE>DEFAULT_VERBOSESETTING</CODE> and <CODE>verbose</CODE> are
-     * strings, not boolean values. See the links below for more
-     * information.
-     * 
-     * @see #getVerbose()
-     * @see #getVerboseAsBoolean()
-     * @see #setVerbose(String verbose)
-     */
-    static public final String DEFAULT_VERBOSESETTING = "false";
-
-    /**
-     * <CODE>DEFAULT_RECURSIONSETTING</CODE> contains the normal setting --
-     * true -- for recursion.  Thus, if you do not
-     * <CODE>setRecursion("false")</CODE> somewhere in your program,
-     * AntStarTeamCheckOut will check files out from all subfolders as well
-     * as from the given folder.
-     * 
-     * @see #getRecursion()
-     * @see #setRecursion(String recursion)
-     */
-    static public final String DEFAULT_RECURSIONSETTING = "true";
-
-    /**
-     * This constant sets the filter to include all files. This default has
-     * the same result as <CODE>setIncludes("*")</CODE>.
-     * 
-     * @see #getIncludes()
-     * @see #setIncludes(String includes)
-     */
-    static public final String DEFAULT_INCLUDESETTING = "*";
-
-    /**
-     * This disables the exclude filter by default. In other words, no files
-     * are excluded. This setting is equivalent to
-     * <CODE>setExcludes(null)</CODE>.
-     * 
-     * @see #getExcludes()
-     * @see #setExcludes(String excludes)
-     */
-    static public final String DEFAULT_EXCLUDESETTING = null;
-
-    /**
-     * The default folder to search; the root folder.  Since
-     * AntStarTeamCheckOut searches subfolders, by default it processes an
-     * entire view.
-     * 
-     * @see #getFolderName()
-     * @see #setFolderName(String folderName)
-     */
-    static public final String DEFAULT_FOLDERSETTING = null;
-
-    /**
-     * This is used when formatting the output. The directory name is
-     * displayed only when it changes.
-     */
-    private Folder prevFolder = null;
-
-    /**
-     * This field keeps count of the number of files checked out.
-     */
-    private int checkedOut;
-
-    // Change these through their GET and SET methods.
-    
-    /**
-     * The name of the server you wish to connect to.
-     */
-    private String serverName = null;
-
-    /**
-     * The port on the server used for StarTeam.
-     */
-    private String serverPort = null;
-
-    /**
-     * The name of your project.
-     */
-    private String projectName = null;
-
-    /**
-     * The name of the folder you want to check out files from. All
-     * subfolders will be searched, as well.
-     */
-    private String folderName = DEFAULT_FOLDERSETTING;
-
-    /**
-     * The view that the files you want are in.
-     */
-    private String viewName = null;
-
-    /**
-     * Your username on the StarTeam server.
-     */
-    private String username = null;
-
-    /**
-     * Your StarTeam password.
-     */
-    private String password = null;
-
-    /**
-     * The path to the root folder you want to check out to. This is a local
-     * directory.
-     */
-    private String targetFolder = null;
-
-    /**
-     * If force set to true, AntStarTeamCheckOut will overwrite files in the
-     * target directory.
-     */
-    private String force = DEFAULT_FORCESETTING;
-
-    /**
-     * When verbose is true, the program will display all files and
-     * directories as they are checked out.
-     */
-    private String verbose = DEFAULT_VERBOSESETTING;
-
-    /**
-     * Set recursion to false to check out files in only the given folder
-     * and not in its subfolders.
-     */
-    private String recursion = DEFAULT_RECURSIONSETTING;
-
-    // These fields deal with includes and excludes
-
-    /**
-     * All files that fit this pattern are checked out.
-     */
-    private String includes = DEFAULT_INCLUDESETTING;
-
-    /**
-     * All files fitting this pattern are ignored.
-     */
-    private String excludes = DEFAULT_EXCLUDESETTING;
-    
-    /**
-     * The file delimitor on the user's system.
-     */
-    private String delim = Platform.getFilePathDelim();
-    
-    /**
-     * Do the execution.
-     * 
-     * @exception BuildException
-     */
-    public void execute() throws BuildException
-    {
-        // Check all of the properties that are required.
-        if ( getServerName() == null )
-        {
-            project.log("ServerName must not be null.");
-            return;
-        }
-        if ( getServerPort() == null )
-        {
-            project.log("ServerPort must not be null.");
-            return;
-        }
-        if ( getProjectName() == null )
-        {
-            project.log("ProjectName must not be null.");
-            return;
-        }
-        if ( getViewName() == null )
-        {
-            project.log("ViewName must not be null.");
-            return;
-        }
-        if ( getUsername() == null )
-        {
-            project.log("Username must not be null.");
-            return;
-        }
-        if ( getPassword() == null )
-        {
-            project.log("Password must not be null.");
-            return;
-        }
-        if ( getTargetFolder() == null )
-        {
-            project.log("TargetFolder must not be null.");
-            return;
-        }
-
-        // Because of the way I create the full target path, there
-        // must be NO slash at the end of targetFolder and folderName
-        // However, if the slash or backslash is the only character, leave it alone
-        if (null != getTargetFolder())
-        {
-            if ((getTargetFolder().endsWith("/") || 
-                 getTargetFolder().endsWith("\\")) && getTargetFolder().length() > 1)
-            {
-                setTargetFolder(getTargetFolder().substring(0, getTargetFolder().length() - 1));
-            }
-        }
-
-        if ( null != getFolderName() )
-        {
-            if ((getFolderName().endsWith("/") || 
-                 getFolderName().endsWith("\\")) && getFolderName().length() > 1)
-            {
-                setFolderName(getFolderName().substring(0, getFolderName().length() - 1));
-            }
-        }
-
-        // Check to see if the target directory exists.
-        java.io.File dirExist = new java.io.File(getTargetFolder());
-        if (dirExist.isDirectory() && !getForceAsBoolean())
-        {
-            project.log( "Target directory exists. Set \"force\" to \"true\" " +
-                         "to continue anyway." );
-            return;
-        }
-
-        try
-        {
-            // Connect to the StarTeam server, and log on.
-            Server s = getServer();
-
-            // Search the items on this server.
-            runServer(s);
-
-            // Disconnect from the server.
-            s.disconnect();
-
-            // after you are all of the properties are ok, do your thing
-            // with StarTeam.  If there are any kind of exceptions then
-            // send the message to the project log.
-
-            // Tell how many files were checked out.
-            project.log(checkedOut + " files checked out.");
-        }
-        catch (Throwable e)
-        {
-            project.log("    " + e.getMessage());
-        }
-    }
-
-    /**
-     * Creates and logs in to a StarTeam server.
-     * 
-     * @return A StarTeam server.
-     */
-    protected Server getServer()
-    {
-        // Simplest constructor, uses default encryption algorithm and compression level.
-        Server s = new Server(getServerName(), getServerPortAsInt());
-
-        // Optional; logOn() connects if necessary.
-        s.connect();
-
-        // Logon using specified user name and password.
-        s.logOn(getUsername(), getPassword());
-
-        return s;
-    }
-
-    /**
-     * Searches for the specified project on the server.
-     * 
-     * @param s      A StarTeam server.
-     */
-    protected void runServer(Server s)
-    {
-        com.starbase.starteam.Project[] projects = s.getProjects();
-        for (int i = 0; i < projects.length; i++)
-        {
-            com.starbase.starteam.Project p = projects[i];
-            
-            if (p.getName().equals(getProjectName()))
-            {
-                if (getVerboseAsBoolean())
-                {
-                    project.log("Found " + getProjectName() + delim);
-                }
-                runProject(s, p);
-                break;
-            }
-        }
-    }
-
-    /**
-     * Searches for the given view in the project.
-     * 
-     * @param s      A StarTeam server.
-     * @param p      A valid project on the given server.
-     */
-    protected void runProject(Server s, com.starbase.starteam.Project p)
-    {
-        View[] views = p.getViews();
-        for (int i = 0; i < views.length; i++)
-        {
-            View v = views[i];
-            if (v.getName().equals(getViewName()))
-            {
-                if (getVerboseAsBoolean())
-                {
-                    project.log("Found " + getProjectName() + delim + getViewName() + delim);
-                }
-                runType(s, p, v, s.typeForName((String)s.getTypeNames().FILE));
-                break;
-            }
-        }
-    }
-
-    /**
-     * Searches for folders in the given view.
-     * 
-     * @param s      A StarTeam server.
-     * @param p      A valid project on the server.
-     * @param v      A view name from the specified project.
-     * @param t      An item type which is currently always "file".
-     */
-    protected void runType(Server s, com.starbase.starteam.Project p, View v, Type t)
-    {
-        // This is ugly; checking for the root folder.
-        Folder f = v.getRootFolder();
-        if (!(getFolderName()==null))
-        {
-            if (getFolderName().equals("\\") || getFolderName().equals("/"))
-            {
-                setFolderName(null);
-            }
-            else
-            {
-                f = StarTeamFinder.findFolder(v.getRootFolder(), getFolderName());
-            }
-        }
-
-        if (getVerboseAsBoolean() && !(getFolderName()==null))
-        {
-            project.log( "Found " + getProjectName() + delim + getViewName() + 
-                         delim + getFolderName() + delim + "\n" );
-        }
-
-        // For performance reasons, it is important to pre-fetch all the
-        // properties we'll need for all the items we'll be searching.
-
-        // We always display the ItemID (OBJECT_ID) and primary descriptor.
-        int nProperties = 2;
-
-        // We'll need this item type's primary descriptor.
-        Property p1 = getPrimaryDescriptor(t);
-
-        // Does this item type have a secondary descriptor?
-        // If so, we'll need it.
-        Property p2 = getSecondaryDescriptor(t);
-        if (p2 != null)
-        {
-            nProperties++;
-        }
-
-        // Now, build an array of the property names.
-        String[] strNames = new String[nProperties];
-        int iProperty = 0;
-        strNames[iProperty++] = s.getPropertyNames().OBJECT_ID;
-        strNames[iProperty++] = p1.getName();
-        if (p2 != null)
-        {
-            strNames[iProperty++] = p2.getName();
-        }
-
-        // Pre-fetch the item properties and cache them.
-        f.populateNow(t.getName(), strNames, -1);
-
-        // Now, search for items in the selected folder.
-        runFolder(s, p, v, t, f);
-
-        // Free up the memory used by the cached items.
-        f.discardItems(t.getName(), -1);
-    }
-
-    /**
-     * Searches for files in the given folder.  This method is recursive and
-     * thus searches all subfolders.
-     * 
-     * @param s      A StarTeam server.
-     * @param p      A valid project on the server.
-     * @param v      A view name from the specified project.
-     * @param t      An item type which is currently always "file".
-     * @param f      The folder to search.
-     */
-    protected void runFolder( Server s, 
-                              com.starbase.starteam.Project p, 
-                              View v, 
-                              Type t, 
-                              Folder f )
-    {
-        // Process all items in this folder.
-        Item[] items = f.getItems(t.getName());
-        for (int i = 0; i < items.length; i++)
-        {
-            runItem(s, p, v, t, f, items[i]);
-        }
-
-        // Process all subfolders recursively if recursion is on.
-        if (getRecursionAsBoolean())
-        {
-            Folder[] subfolders = f.getSubFolders();
-            for (int i = 0; i < subfolders.length; i++)
-            {
-                runFolder(s, p, v, t, subfolders[i]);
-            }
-        }
-    }
-
-    /**
-     * Check out one file if it matches the include filter but not the
-     * exclude filter.
-     * 
-     * @param s      A StarTeam server.
-     * @param p      A valid project on the server.
-     * @param v      A view name from the specified project.
-     * @param t      An item type which is currently always "file".
-     * @param f      The folder the file is localed in.
-     * @param item   The file to check out.
-     */
-    protected void runItem( Server s, 
-                            com.starbase.starteam.Project p, 
-                            View v, 
-                            Type t, 
-                            Folder f, 
-                            Item item )
-    {
-        // Get descriptors for this item type.
-        Property p1 = getPrimaryDescriptor(t);
-        Property p2 = getSecondaryDescriptor(t);
-
-        // Time to filter...
-        String pName = (String)item.get(p1.getName());
-        boolean includeIt = false;
-        boolean excludeIt = false;
-
-        // See if it fits any includes.
-        if (getIncludes()!=null)
-        {
-            StringTokenizer inStr = new StringTokenizer(getIncludes(), " ");
-            while (inStr.hasMoreTokens())
-            {
-                if (match(inStr.nextToken(), pName))
-                {
-                    includeIt = true;
-                }
-            }
-        }
-
-        // See if it fits any excludes.
-        if (getExcludes()!=null)
-        {
-            StringTokenizer exStr = new StringTokenizer(getExcludes(), " ");
-            while (exStr.hasMoreTokens())
-            {
-                if (match(exStr.nextToken(), pName))
-                {
-                    excludeIt = true;
-                }
-            }
-        }
-
-        // Don't check it out if
-        // (a) It fits no include filters
-        // (b) It fits an exclude filter
-        if (!includeIt | excludeIt)
-        {
-            return;
-        }
-
-        // VERBOSE MODE ONLY
-        if (getVerboseAsBoolean())
-        {
-            // Show folder only if changed.
-            boolean bShowHeader = true;
-            if (f != prevFolder)
-            {
-                // We want to display the folder the same way you would
-                // enter it on the command line ... so we remove the 
-                // View name (which is also the name of the root folder,
-                // and therefore shows up at the start of the path).
-                String strFolder = f.getFolderHierarchy();
-                int i = strFolder.indexOf(delim);
-                if (i >= 0)
-                {
-                    strFolder = strFolder.substring(i+1);
-                }
-                System.out.println("            Folder: \"" + strFolder + "\"");
-                prevFolder = f;
-            }
-            else
-                bShowHeader        = false;
-
-            // If we displayed the project, view, item type, or folder,
-            // then show the list of relevant item properties.
-            if (bShowHeader)
-            {
-                System.out.print("                Item");
-                System.out.print(",\t" + p1.getDisplayName());
-                if (p2 != null)
-                {
-                    System.out.print(",\t" + p2.getDisplayName());
-                }
-                System.out.println("");
-            }
-
-            // Finally, show the Item properties ...
-
-            // Always show the ItemID.
-            System.out.print("                " + item.getItemID());
-
-            // Show the primary descriptor.
-            // There should always be one.
-            System.out.print(",\t" + formatForDisplay(p1, item.get(p1.getName())));
-
-            // Show the secondary descriptor, if there is one.
-            // Some item types have one, some don't.
-            if (p2 != null)
-            {
-                System.out.print(",\t" + formatForDisplay(p2, item.get(p2.getName())));
-            }
-
-            // Show if the file is locked.
-            int locker = item.getLocker();
-            if (locker>-1)
-            {
-                System.out.println(",\tLocked by " + locker);
-            }
-            else
-            {
-                System.out.println(",\tNot locked");
-            }
-        }
-        // END VERBOSE ONLY
-
-        // Check it out; also ugly.
-
-        // Change the item to be checked out to a StarTeam File.
-        com.starbase.starteam.File remote = (com.starbase.starteam.File)item;
-
-        // Create a variable dirName that contains the name of 
-        //the StarTeam folder that is the root folder in this view.
-        // Get the default path to the current view.
-        String dirName = v.getDefaultPath();
-        // Settle on "/" as the default path separator for this purpose only.
-        dirName = dirName.replace('\\', '/');
-        // Take the StarTeam folder name furthest down in the hierarchy.
-        int endDirIndex = dirName.length();
-        // If it ends with separator then strip it off
-        if (dirName.endsWith("/"))
-        {
-            // This should be the SunOS and Linux case
-            endDirIndex--;
-        }
-        dirName = 
-            dirName.substring(dirName.lastIndexOf("/", dirName.length() - 2) + 1, endDirIndex);
-                
-        // Replace the projectName in the file's absolute path to the viewName.
-        // This eventually makes the target of a checkout operation equal to:
-        // targetFolder + dirName + [subfolders] + itemName
-        StringTokenizer pathTokenizer = 
-            new StringTokenizer(item.getParentFolder().getFolderHierarchy(), delim);
-        String localName = delim;
-        String currentToken = null;
-        while (pathTokenizer.hasMoreTokens())
-        {
-            currentToken = pathTokenizer.nextToken();
-            if (currentToken.equals(getProjectName()))
-            {
-                currentToken = dirName;
-            }
-            localName += currentToken + delim;
-        }
-        // Create a reference to the local target file using the format listed above.
-        java.io.File local = new java.io.File( getTargetFolder() + localName + 
-                                               item.get(p1.getName()) );
-        try
-        {
-            remote.checkoutTo(local, Item.LockType.UNCHANGED, false, true, true);
-        }
-        catch (Throwable e)
-        {
-            project.log("    " + e.getMessage());
-        }
-        checkedOut++;
-    }
-
-    /**
-     * Get the primary descriptor of the given item type.
-     *  Returns null if there isn't one.
-     *  In practice, all item types have a primary descriptor.
-     * 
-     * @param t      An item type. At this point it will always be "file".
-     * @return The specified item's primary descriptor.
-     */
-    protected Property getPrimaryDescriptor(Type t)
-    {
-        Property[] properties = t.getProperties();
-        for (int i = 0; i < properties.length; i++)
-        {
-            Property p = properties[i];
-            if (p.isPrimaryDescriptor())
-            {
-                return p;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Get the secondary descriptor of the given item type.
-     * Returns null if there isn't one.
-     * 
-     * @param t      An item type. At this point it will always be "file".
-     * @return The specified item's secondary descriptor. There may not be
-     *         one for every file.
-     */
-    protected Property getSecondaryDescriptor(Type t)
-    {
-        Property[] properties = t.getProperties();
-        for (int i = 0; i < properties.length; i++)
-        {
-            Property p = properties[i];
-            if (p.isDescriptor() && !p.isPrimaryDescriptor())
-            {
-                return p;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Formats a property value for display to the user.
-     * 
-     * @param p      An item property to format.
-     * @param value
-     * @return A string containing the property, which is truncated to 35
-     *         characters for display.
-     */
-    protected String formatForDisplay(Property p, Object value)
-    {
-        if (p.getTypeCode() == Property.Types.TEXT)
-        {
-            String str = value.toString();
-            if (str.length() > 35)
-            {
-                str = str.substring(0, 32) + "...";
-            }
-            return "\"" + str + "\"";
-        }
-        else
-        {
-            if (p.getTypeCode() == Property.Types.ENUMERATED)
-            {
-                return "\"" + p.getEnumDisplayName(((Integer)value).intValue()) + "\"";
-            }
-            else
-            {
-                return value.toString();
-            }
-        }
-    }
-
-    // TORN STRAIGHT FROM ANT.DIRECTORYSCANNER
-
-    /**
-     * <B>TORN STRAIGHT FROM ANT.DIRECTORYSCANNER</B>
-     * 
-     * Matches a string against a pattern. The pattern contains two special
-     * characters:<BR>
-     * '*' which means zero or more characters,<BR>
-     * '?' which means one and only one character.
-     * 
-     * @param pattern the (non-null) pattern to match against
-     * @param str     the (non-null) string that must be matched against the
-     *                pattern
-     * @return <code>true</code> when the string matches against the
-     *         pattern, <code>false</code> otherwise.
-     */
-    private static boolean match(String pattern, String str)
-    {
-        char[] patArr = pattern.toCharArray();
-        char[] strArr = str.toCharArray();
-        int patIdxStart = 0;
-        int patIdxEnd   = patArr.length-1;
-        int strIdxStart = 0;
-        int strIdxEnd   = strArr.length-1;
-        char ch;
-
-        boolean containsStar = false;
-        for (int i = 0; i < patArr.length; i++)
-        {
-            if (patArr[i] == '*')
-            {
-                containsStar = true;
-                break;
-            }
-        }
-
-        if (!containsStar)
-        {
-            // No '*'s, so we make a shortcut
-            if (patIdxEnd != strIdxEnd)
-            {
-                return false;        // Pattern and string do not have the same size
-            }
-            for (int i = 0; i <= patIdxEnd; i++)
-            {
-                ch = patArr[i];
-                if (ch != '?' && ch != strArr[i])
-                {
-                    return false;        // Character mismatch
-                }
-            }
-            return true; // String matches against pattern
-        }
-
-        if (patIdxEnd == 0)
-        {
-            return true; // Pattern contains only '*', which matches anything
-        }
-
-        // Process characters before first star
-        while ((ch = patArr[patIdxStart]) != '*' && strIdxStart <= strIdxEnd)
-        {
-            if (ch != '?' && ch != strArr[strIdxStart])
-            {
-                return false;
-            }
-            patIdxStart++;
-            strIdxStart++;
-        }
-        if (strIdxStart > strIdxEnd)
-        {
-            // All characters in the string are used. Check if only '*'s are
-            // left in the pattern. If so, we succeeded. Otherwise failure.
-            for (int i = patIdxStart; i <= patIdxEnd; i++)
-            {
-                if (patArr[i] != '*')
-                {
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        // Process characters after last star
-        while ((ch = patArr[patIdxEnd]) != '*' && strIdxStart <= strIdxEnd)
-        {
-            if (ch != '?' && ch != strArr[strIdxEnd])
-            {
-                return false;
-            }
-            patIdxEnd--;
-            strIdxEnd--;
-        }
-        if (strIdxStart > strIdxEnd)
-        {
-            // All characters in the string are used. Check if only '*'s are
-            // left in the pattern. If so, we succeeded. Otherwise failure.
-            for (int i = patIdxStart; i <= patIdxEnd; i++)
-            {
-                if (patArr[i] != '*')
-                {
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        // process pattern between stars. padIdxStart and patIdxEnd point
-        // always to a '*'.
-        while (patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd)
-        {
-            int patIdxTmp = -1;
-            for (int i = patIdxStart+1; i <= patIdxEnd; i++)
-            {
-                if (patArr[i] == '*')
-                {
-                    patIdxTmp = i;
-                    break;
-                }
-            }
-            if (patIdxTmp == patIdxStart+1)
-            {
-                                // Two stars next to each other, skip the first one.
-                patIdxStart++;
-                continue;
-            }
-            // Find the pattern between padIdxStart & padIdxTmp in str between
-            // strIdxStart & strIdxEnd
-            int patLength = (patIdxTmp-patIdxStart-1);
-            int strLength = (strIdxEnd-strIdxStart+1);
-            int foundIdx  = -1;
-        strLoop:
-            for (int i = 0; i <= strLength - patLength; i++)
-            {
-                for (int j = 0; j < patLength; j++)
-                {
-                    ch = patArr[patIdxStart+j+1];
-                    if (ch != '?' && ch != strArr[strIdxStart+i+j])
-                    {
-                        continue strLoop;
-                    }
-                }
-
-                foundIdx = strIdxStart+i;
-                break;
-            }
-
-            if (foundIdx == -1)
-            {
-                return false;
-            }
-
-            patIdxStart = patIdxTmp;
-            strIdxStart = foundIdx+patLength;
-        }
-
-        // All characters in the string are used. Check if only '*'s are left
-        // in the pattern. If so, we succeeded. Otherwise failure.
-        for (int i = patIdxStart; i <= patIdxEnd; i++)
-        {
-            if (patArr[i] != '*')
-            {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    // Begin SET and GET methods        
-
-    /**
-     * Sets the <CODE>serverName</CODE> attribute to the given value.
-     * 
-     * @param serverName The name of the server you wish to connect to.
-     * @see #getServerName()
-     */
-    public void setServerName(String serverName)
-    {
-        this.serverName = serverName;
-    }
-
-    /**
-     * Gets the <CODE>serverName</CODE> attribute.
-     * 
-     * @return The StarTeam server to log in to.
-     * @see #setServerName(String serverName)
-     */
-    public String getServerName()
-    {
-        return serverName;
-    }
-
-    /**
-     * Sets the <CODE>serverPort</CODE> attribute to the given value. The
-     * given value must be a valid integer, but it must be a string object.
-     * 
-     * @param serverPort A string containing the port on the StarTeam server
-     *                   to use.
-     * @see #getServerPort()
-     */
-    public void setServerPort(String serverPort)
-    {
-        this.serverPort = serverPort;
-    }
-
-    /**
-     * Gets the <CODE>serverPort</CODE> attribute.
-     * 
-     * @return A string containing the port on the StarTeam server to use.
-     * @see #getServerPortAsInt()
-     * @see #setServerPort(String serverPort)
-     */
-    public String getServerPort()
-    {
-        return serverPort;
-    }
-
-    /**
-     * Gets the <CODE>serverPort</CODE> attribute as an integer.
-     * 
-     * @return An integer value for the port on the StarTeam server to use.
-     * @see #getServerPort()
-     * @see #setServerPort(String serverPort)
-     */
-    public int getServerPortAsInt()
-    {
-        return Integer.parseInt(serverPort);
-    }
-
-    /**
-     * Sets the <CODE>projectName</CODE> attribute to the given value.
-     * 
-     * @param projectName
-     *               The StarTeam project to search.
-     * @see #getProjectName()
-     */
-    public void setProjectName(String projectName)
-    {
-        this.projectName = projectName;
-    }
-
-    /**
-     * Gets the <CODE>projectName</CODE> attribute.
-     * 
-     * @return The StarTeam project to search.
-     * @see #setProjectName(String projectName)
-     */
-    public String getProjectName()
-    {
-        return projectName;
-    }
-
-    /**
-     * Sets the <CODE>viewName</CODE> attribute to the given value.
-     * 
-     * @param viewName The view to find the specified folder in.
-     * @see #getViewName()
-     */
-    public void setViewName(String viewName)
-    {
-        this.viewName = viewName;
-    }
-
-    /**
-     * Gets the <CODE>viewName</CODE> attribute.
-     * 
-     * @return The view to find the specified folder in.
-     * @see #setViewName(String viewName)
-     */
-    public String getViewName()
-    {
-        return viewName;
-    }
-
-    /**
-     * Sets the <CODE>folderName</CODE> attribute to the given value. To
-     * search the root folder, use a slash or backslash, or simply don't set
-     * a folder at all.
-     * 
-     * @param folderName The subfolder from which to check out files.
-     * @see #getFolderName()
-     */
-    public void setFolderName(String folderName)
-    {
-        this.folderName = folderName;
-    }
-
-    /**
-     * Gets the <CODE>folderName</CODE> attribute.
-     *
-     * @return The subfolder from which to check out files. All subfolders
-     * will be searched, as well.
-     * @see #setFolderName(String folderName)
-     */
-    public String getFolderName()
-    {
-        return folderName;
-    }
-
-    /**
-     * Sets the <CODE>username</CODE> attribute to the given value.
-     * 
-     * @param username Your username for the specified StarTeam server.
-     * @see #getUsername()
-     */
-    public void setUsername(String username)
-    {
-        this.username = username;
-    }
-
-    /**
-     * Gets the <CODE>username</CODE> attribute.
-     * 
-     * @return The username given by the user.
-     * @see #setUsername(String username)
-     */
-    public String getUsername()
-    {
-        return username;
-    }
-
-    /**
-     * Sets the <CODE>password</CODE> attribute to the given value.
-     * 
-     * @param password Your password for the specified StarTeam server.
-     * @see #getPassword()
-     */
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    /**
-     * Gets the <CODE>password</CODE> attribute.
-     * 
-     * @return The password given by the user.
-     * @see #setPassword(String password)
-     */
-    public String getPassword()
-    {
-        return password;
-    }
-
-    /**
-     * Sets the <CODE>targetFolder</CODE> attribute to the given value.
-     * 
-     * @param target The target path on the local machine to check out to.
-     * @see #getTargetFolder()
-     */
-    public void setTargetFolder(String targetFolder)
-    {
-        this.targetFolder = targetFolder;
-    }
-
-    /**
-     * Gets the <CODE>targetFolder</CODE> attribute.
-     * 
-     * @return The target path on the local machine to check out to.
-     *
-     * @see #setTargetFolder(String targetFolder)
-     */
-    public String getTargetFolder()
-    {
-        return targetFolder;
-    }
-
-    /**
-     * Sets the <CODE>force</CODE> attribute to the given value.
-     * 
-     * @param force  A string containing "true" or "false" that tells the
-     *               application whether to continue if the target directory
-     *               exists.  If <CODE>force</CODE> is true,
-     *               AntStarTeamCheckOut will overwrite files in the target
-     *               directory.  By default it set to false as a safeguard.
-     *               Note that if the target directory does not exist, this
-     *               setting has no effect.
-     * @see #DEFAULT_FORCESETTING
-     * @see #getForce()
-     * @see #getForceAsBoolean()
-     */
-    public void setForce(String force)
-    {
-        this.force = force;
-    }
-
-    /**
-     * Gets the <CODE>force</CODE> attribute.
-     * 
-     * @return A string containing "true" or "false" telling the application
-     *         whether to continue if the target directory exists.  If
-     *         <CODE>force</CODE> is true, AntStarTeamCheckOut will
-     *         overwrite files in the target directory. If it is false and
-     *         the target directory exists, AntStarTeamCheckOut will exit
-     *         with a warning.  If the target directory does not exist, this
-     *         setting has no effect. The default setting is false.
-     * @see #DEFAULT_FORCESETTING
-     * @see #getForceAsBoolean()
-     * @see #setForce(String force)
-     */
-    public String getForce()
-    {
-        return force;
-    }
-
-    /**
-     * Gets the <CODE>force</CODE> attribute as a boolean value.
-     * 
-     * @return A boolean value telling whether to continue if the target
-     *         directory exists.
-     * @see #DEFAULT_FORCESETTING
-     * @see #getForce()
-     * @see #setForce(String force)
-     */
-    public boolean getForceAsBoolean()
-    {
-        return project.toBoolean(force);
-    }
-
-    /**
-     * Turns recursion on or off.
-     *
-     * @param verbose A string containing "true" or "false."  If it is true,
-     *                the default, subfolders are searched recursively for
-     *                files to check out.  Otherwise, only files specified
-     *                by <CODE>folderName</CODE> are scanned.
-     * @see #DEFAULT_RECURSIONSETTING
-     * @see #getRecursion()
-     * @see #getRecursionAsBoolean()
-     */
-    public void setRecursion(String recursion)
-    {
-        this.recursion = recursion;
-    }
-
-    /**
-     * Gets the <CODE>recursion</CODE> attribute, which tells
-     * AntStarTeamCheckOut whether to search subfolders when checking out
-     * files.
-     *
-     * @return A string telling whether <CODE>recursion</CODE> is "true" or
-     * "false."
-     *
-     * @see #DEFAULT_RECURSIONSETTING
-     * @see #getRecursionAsBoolean()
-     * @see #setRecursion(String recursion)
-     */
-    public String getRecursion()
-    {
-        return recursion;
-    }
-
-    /**
-     * Gets the <CODE>recursion</CODE> attribute as a boolean value.
-     *
-     * @return A boolean value telling whether subfolders of
-     * <CODE>folderName</CODE> will be scanned for files to check out.
-     *
-     * @see #DEFAULT_RECURSIONSETTING
-     * @see #getRecursion()
-     * @see #setRecursion(String recursion)
-     */
-    public boolean getRecursionAsBoolean()
-    {
-        return project.toBoolean(recursion);
-    }
-
-    /**
-     * Sets the <CODE>verbose</CODE> attribute to the given value.
-     * 
-     * @param verbose A string containing "true" or "false" to tell
-     *                AntStarTeamCheckOut whether to display files as they
-     *                are checked out.  By default it is false, so the
-     *                program only displays the total number of files unless
-     *                you override this default.
-     * @see #DEFAULT_FORCESETTING
-     * @see #getForce()
-     * @see #getForceAsBoolean()
-     */
-    public void setVerbose(String verbose)
-    {
-        this.verbose = verbose;
-    }
-    
-    /**
-     * Gets the <CODE>verbose</CODE> attribute.
-     * 
-     * @return A string containing "true" or "false" telling the application
-     *         to display all files as it checks them out.  By default it is
-     *         false, so the program only displays the total number of
-     *         files.
-     * @see #DEFAULT_VERBOSESETTING
-     * @see #getVerboseAsBoolean()
-     * @see #setVerbose(String verbose)
-     */
-    public String getVerbose()
-    {
-        return verbose;
-    }
-
-    /**
-     * Gets the <CODE>verbose</CODE> attribute as a boolean value.
-     * 
-     * @return A boolean value telling whether to display all files as they
-     *         are checked out.
-     * @see #DEFAULT_VERBOSESETTING
-     * @see #getVerbose()
-     * @see #setVerbose(String verbose)
-     */
-    public boolean getVerboseAsBoolean()
-    {
-        return project.toBoolean(verbose);
-    }
-
-    // Begin filter getters and setters
-
-    /**
-     * Sets the include filter. When filtering files, AntStarTeamCheckOut
-     * uses an unmodified version of <CODE>DirectoryScanner</CODE>'s
-     * <CODE>match</CODE> method, so here are the patterns straight from the
-     * Ant source code:
-     * <BR><BR>
-     * Matches a string against a pattern. The pattern contains two special
-     * characters:
-     * <BR>'*' which means zero or more characters,
-     * <BR>'?' which means one and only one character.
-     * <BR><BR>
-     * I would have used the Ant method directly from its class, but
-     * <CODE>match</CODE> is a private member, so I cannot access it from
-     * this program.
-     * <BR><BR>
-     * Separate multiple inlcude filters by <I>spaces</I>, not commas as Ant
-     * uses. For example, if you want to check out all .java and .class\
-     * files, you would put the following line in your program:
-     * <CODE>setIncludes("*.java *.class");</CODE>
-     * Finally, note that filters have no effect on the <B>directories</B>
-     * that are scanned; you could not check out files from directories with
-     * names beginning only with "build," for instance. Of course, you
-     * could limit AntStarTeamCheckOut to a particular folder and its
-     * subfolders with the <CODE>setFolderName(String folderName)</CODE>
-     * command.
-     * <BR><BR>
-     * Treatment of overlapping inlcudes and excludes: To give a simplistic
-     * example suppose that you set your include filter to "*.htm *.html"
-     * and your exclude filter to "index.*". What happens to index.html?
-     * AntStarTeamCheckOut will not check out index.html, as it matches an
-     * exclude filter ("index.*"), even though it matches the include
-     * filter, as well.
-     * <BR><BR>
-     * Please also read the following sections before using filters:
-     * 
-     * @param includes A string of filter patterns to include. Separate the
-     *                 patterns by spaces.
-     * @see #getIncludes()
-     * @see #setExcludes(String excludes)
-     * @see #getExcludes()
-     */
-    public void setIncludes(String includes)
-    {
-        this.includes = includes;
-    }
-
-    /**
-     * Gets the patterns from the include filter. Rather that duplicate the
-     * details of AntStarTeanCheckOut's filtering here, refer to these
-     * links:
-     * 
-     * @return A string of filter patterns separated by spaces.
-     * @see #setIncludes(String includes)
-     * @see #setExcludes(String excludes)
-     * @see #getExcludes()
-     */
-    public String getIncludes()
-    {
-        return includes;
-    }
-
-    /**
-     * Sets the exclude filter. When filtering files, AntStarTeamCheckOut
-     * uses an unmodified version of <CODE>DirectoryScanner</CODE>'s
-     * <CODE>match</CODE> method, so here are the patterns straight from the
-     * Ant source code:
-     * <BR><BR>
-     * Matches a string against a pattern. The pattern contains two special
-     * characters:
-     * <BR>'*' which means zero or more characters,
-     * <BR>'?' which means one and only one character.
-     * <BR><BR>
-     * I would have used the Ant method directly from its class, but
-     * <CODE>match</CODE> is a private member, so I cannot access it from
-     * this program.
-     * <BR><BR>
-     * Separate multiple exlcude filters by <I>spaces</I>, not commas as Ant
-     * uses. For example, if you want to check out all files except .XML and
-     * .HTML files, you would put the following line in your program:
-     * <CODE>setExcludes("*.XML *.HTML");</CODE>
-     * Finally, note that filters have no effect on the <B>directories</B>
-     * that are scanned; you could not skip over all files in directories
-     * whose names begin with "project," for instance.
-     * <BR><BR>
-     * Treatment of overlapping inlcudes and excludes: To give a simplistic
-     * example suppose that you set your include filter to "*.htm *.html"
-     * and your exclude filter to "index.*". What happens to index.html?
-     * AntStarTeamCheckOut will not check out index.html, as it matches an
-     * exclude filter ("index.*"), even though it matches the include
-     * filter, as well.
-     * <BR><BR>
-     * Please also read the following sections before using filters:
-     * 
-     * @param excludes A string of filter patterns to exclude. Separate the
-     *                 patterns by spaces.
-     * @see #setIncludes(String includes)
-     * @see #getIncludes()
-     * @see #getExcludes()
-     */
-    public void setExcludes(String excludes)
-    {
-        this.excludes = excludes;
-    }
-
-    /**
-     * Gets the patterns from the exclude filter. Rather that duplicate the
-     * details of AntStarTeanCheckOut's filtering here, refer to these
-     * links:
-     * 
-     * @return A string of filter patterns separated by spaces.
-     * @see #setExcludes(String excludes)
-     * @see #setIncludes(String includes)
-     * @see #getIncludes()
-     */
-    public String getExcludes()
-    {
-        return excludes;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java b/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java
deleted file mode 100644
index b6327b1..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.sound;
-
-// ant includes
-import org.apache.tools.ant.*;
-
-// imports for all the sound classes required
-// note: comes with jmf or jdk1.3 +
-// these can be obtained from http://java.sun.com/products/java-media/sound/
-import javax.sound.sampled.*;
-
-import java.io.*;
-import java.util.*;
-
-
-/**
- * This class is designed to be used by any AntTask that requires audio output.
- *
- * It implements the BuildListener interface to listen for BuildEvents and could
- * be easily extended to provide audio output upon any specific build events occuring.
- *
- * I have only tested this with .WAV and .AIFF sound file formats. Both seem to work fine.
- *
- * @author Nick Pellow
- * @version $Revision$, $Date$
- */
-
-public class AntSoundPlayer implements LineListener, BuildListener {
-
-    private File fileSuccess = null;
-    private int loopsSuccess = 0;
-    private Long durationSuccess = null;
-
-    private File fileFail = null;
-    private int loopsFail = 0;
-    private Long durationFail = null;
-
-    public AntSoundPlayer() {
-
-    }
-
-    /**
-     * @param source the location of the audio file to be played when the build is successful
-     * @param loops the number of times the file should be played when the build is successful
-     * @param duration the number of milliseconds the file should be played when the build is successful
-     */
-    public void addBuildSuccessfulSound(File file, int loops, Long duration) {
-        this.fileSuccess = file;
-        this.loopsSuccess = loops;
-        this.durationSuccess = duration;
-    }
-
-
-    /**
-     * @param fileName the location of the audio file to be played when the build fails
-     * @param loops the number of times the file should be played when the build is fails
-     * @param duration the number of milliseconds the file should be played when the build fails
-     */
-    public void addBuildFailedSound(File fileFail, int loopsFail, Long durationFail) {
-        this.fileFail = fileFail;
-        this.loopsFail = loopsFail;
-        this.durationFail = durationFail;
-    }
-
-    /**
-     * Plays the file for duration milliseconds or loops.
-     */
-    private void play(Project project, File file, int loops, Long duration) {
-
-        Clip audioClip = null;
-
-        AudioInputStream audioInputStream = null;
-
-
-		try {
-			audioInputStream = AudioSystem.getAudioInputStream(file);
-		}
-		catch (UnsupportedAudioFileException uafe) {
-			project.log("Audio format is not yet supported: "+uafe.getMessage());
-		}
-        catch (IOException ioe) {
-            ioe.printStackTrace();
-        }
-
-		if (audioInputStream != null) {
-			AudioFormat	format = audioInputStream.getFormat();
-			DataLine.Info	info = new DataLine.Info(Clip.class, format,
-                                             AudioSystem.NOT_SPECIFIED);
-			try {
-				audioClip = (Clip) AudioSystem.getLine(info);
-				audioClip.addLineListener(this);
-                audioClip.open(audioInputStream);
-			}
-			catch (LineUnavailableException e) {
-                project.log("The sound device is currently unavailable");
-                return;
-			}
-			catch (IOException e) {
-				e.printStackTrace();
-			}
-
-            if (duration != null) {
-                playClip(audioClip, duration.longValue());
-            } else {
-                playClip(audioClip, loops);
-            }
-            audioClip.drain();
-            audioClip.close();
-		}
-		else {
-			project.log("Can't get data from file " + file.getName());
-		}
-    }
-
-    private void playClip(Clip clip, int loops) {
-
-        clip.loop(loops);
-        while (clip.isRunning()) {
-        }
-    }
-
-    private void playClip(Clip clip, long duration) {
-
-        long currentTime = System.currentTimeMillis();
-        clip.loop(Clip.LOOP_CONTINUOUSLY);
-        try {
-            Thread.sleep(duration);
-        }
-        catch (InterruptedException e) {
-        }
-    }
-
-    /**
-     * This is implemented to listen for any line events and closes the
-     * clip if required.
-     */
-    public void update(LineEvent event) {
-        if (event.getType().equals(LineEvent.Type.STOP)) {
-            Line line = event.getLine();
-            line.close();
-		}
-		else if (event.getType().equals(LineEvent.Type.CLOSE)) {
-			/*
-			 *	There is a bug in JavaSound 0.90 (jdk1.3beta).
-			 *	It prevents correct termination of the VM.
-			 *	So we have to exit ourselves.
-			 */
-			//System.exit(0);
-		}
-	}
-
-
-    /**
-     *  Fired before any targets are started.
-     */
-    public void buildStarted(BuildEvent event){
-    }
-    
-    /**
-     *  Fired after the last target has finished. This event
-     *  will still be thrown if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void buildFinished(BuildEvent event){
-        if (event.getException() == null && fileSuccess != null) {
-            // build successfull!
-            play(event.getProject(), fileSuccess, loopsSuccess, durationSuccess);
-        } else if ( event.getException() != null && fileFail != null) {
-            play(event.getProject(), fileFail, loopsFail, durationFail);
-        }
-    }
-
-    /**
-     *  Fired when a target is started.
-     *
-     *  @see BuildEvent#getTarget()
-     */
-    public void targetStarted(BuildEvent event){
-    }
-
-    /**
-     *  Fired when a target has finished. This event will
-     *  still be thrown if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void targetFinished(BuildEvent event){
-    }
-
-    /**
-     *  Fired when a task is started.
-     *
-     *  @see BuildEvent#getTask()
-     */
-    public void taskStarted(BuildEvent event){
-    }
-
-    /**
-     *  Fired when a task has finished. This event will still
-     *  be throw if an error occured during the build.
-     *
-     *  @see BuildEvent#getException()
-     */
-    public void taskFinished(BuildEvent event){
-    }
-
-    /**
-     *  Fired whenever a message is logged.
-     *
-     *  @see BuildEvent#getMessage()
-     *  @see BuildEvent#getPriority()
-     */
-    public void messageLogged(BuildEvent event){
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sound/SoundTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/sound/SoundTask.java
deleted file mode 100644
index b185240..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sound/SoundTask.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.sound;
-
-import org.apache.tools.ant.*;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * This is an example of an AntTask that makes of use of the AntSoundPlayer.
- *
- * There are three attributes to be set:
- *
- * <code>source</code>: the location of the audio file to be played
- * <code>duration</code>: play the sound file continuously until "duration" milliseconds has expired
- * <code>loops</code>: the number of times the sound file should be played until stopped
- *
- * I have only tested this with .WAV and .AIFF sound file formats. Both seem
- * to work fine.
- *
- * plans for the future:
- * - use the midi api to define sounds (or drum beat etc) in xml and have
- *   Ant play them back
- *
- * @author Nick Pellow
- * @version $Revision$, $Date$
- */
-
-public class SoundTask extends Task {
-
-    private BuildAlert success = null;
-    private BuildAlert fail = null;
-
-    public BuildAlert createSuccess() {
-        success = new BuildAlert();
-        return success;
-    }
-
-    public BuildAlert createFail() {
-        fail = new BuildAlert();
-        return fail;
-     }
-
-    public SoundTask() {
-    }
-
-    public void init(){
-    }
-
-    public void execute() {
-
-        AntSoundPlayer soundPlayer = new AntSoundPlayer();
-
-        if ( success == null ) {
-            log("No nested success element found.", Project.MSG_WARN);
-        } else {
-            soundPlayer.addBuildSuccessfulSound(success.getSource(),
-              success.getLoops(), success.getDuration());
-        }
-
-        if (fail == null) {
-            log("No nested failure element found.", Project.MSG_WARN);
-        } else {
-            soundPlayer.addBuildFailedSound(fail.getSource(),
-              fail.getLoops(), fail.getDuration());
-        }
-
-        getProject().addBuildListener(soundPlayer);
-
-    }
-
-    /**
-     * A class to be extended by any BuildAlert's that require the output
-     * of sound.
-     */
-    public class BuildAlert {
-        private File source = null;
-        private int loops = 0;
-        private Long duration = null;
-
-        /**
-         * Sets the duration in milliseconds the file should be played.
-         */
-        public void setDuration(Long duration) {
-            this.duration = duration;
-        }
-
-        /**
-         * Sets the location of the file to get the audio.
-         *
-         * @param source the name a sound-file directory or of the audio file
-         */
-        public void setSource(File source) {
-            this.source = source;
-        }
-
-        /**
-         * Sets the number of times the source file should be played.
-         *
-         * @param loops the number of loops to play the source file
-         */
-        public void setLoops(int loops) {
-            this.loops = loops;
-        }
-
-        /**
-         * Gets the location of the file to get the audio.
-         */
-        public File getSource() {
-            File nofile = null ;
-            // Check if source is a directory
-            if( source.exists() ) {
-                if( source.isDirectory() ) {
-                    // get the list of files in the dir
-                    File[] files = source.listFiles() ; 
-                    int numfiles = files.length ;
-                    // get a random number between 0 and the number of files
-                    Random rn = new Random() ;
-                    int i = rn.nextInt(numfiles) ;
-                    // set the source to the file at that location
-                    this.source = files[i] ;
-                }
-            } else {
-                log(source + ": invalid path.", Project.MSG_WARN) ;
-                this.source = nofile ;
-            }
-            return this.source ;
-        }
-
-        /**
-         * Sets the number of times the source file should be played.
-         *
-         * @return the number of loops to play the source file
-         */
-        public int getLoops() {
-            return this.loops;
-        }
-
-        /**
-         * Gets the duration in milliseconds the file should be played.
-         */
-        public Long getDuration() {
-            return this.duration;
-        }
-    }
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java
deleted file mode 100644
index 69567fd..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.vss;
-
-
-import java.io.File;
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.LogStreamHandler;
-import org.apache.tools.ant.types.Commandline;
-
-/**
- * A base class for creating tasks for executing commands on Visual SourceSafe.
- * <p>
- * The class extends the 'exec' task as it operates by executing the ss.exe program
- * supplied with SourceSafe. By default the task expects ss.exe to be in the path,
- * you can override this be specifying the ssdir attribute.
- * </p>
- * <p>
- * This class provides set and get methods for 'login' and 'vsspath' attributes. It
- * also contains constants for the flags that can be passed to SS.
- * </p>
- *
- * @author Craig Cottingham
- * @author Andrew Everitt
- */
-public abstract class MSVSS extends Task {
-
-    private String m_SSDir = "";
-    private String m_vssLogin = null;
-    private String m_vssPath = null;
-
-    /**
-     * Set the directory where ss.exe is located
-     *
-     * @param dir the directory containing ss.exe
-     */
-    public final void setSsdir(String dir) {
-        m_SSDir = project.translatePath(dir);
-    }
-    
-    /**
-     * Builds and returns the command string to execute ss.exe
-     */
-    public final String getSSCommand() {
-        String toReturn = m_SSDir;
-        if ( !toReturn.equals("") && !toReturn.endsWith("\\") ) {
-            toReturn += "\\";
-        }
-        toReturn += SS_EXE;
-        
-        return toReturn;
-    }
-
-    /**
-     * Set the login to use when accessing vss.
-     * <p>
-     * Should be formatted as username,password
-     *
-     * @param login the login string to use
-     */
-    public final void setLogin(String login) {
-        m_vssLogin = login;
-    }
-
-    /**
-     * @return the appropriate login command if the 'login' attribute was specified, otherwise an empty string
-     */
-    public void getLoginCommand(Commandline cmd) {
-        if ( m_vssLogin == null ) {
-            return;
-        } else {
-            cmd.createArgument().setValue(FLAG_LOGIN + m_vssLogin);
-        }
-    }
-
-    /**
-     * Set the path to the item in vss to operate on
-     * <p>
-     * Ant can't cope with a '$' sign in an attribute so we have to add it here.
-     * Also we strip off any 'vss://' prefix which is an XMS special and should probably be removed!
-     *
-     * @param vssPath
-     */
-    public final void setVsspath(String vssPath) {
-        if ( vssPath.startsWith("vss://") ) {
-            m_vssPath= PROJECT_PREFIX + vssPath.substring(5);
-        } else {
-            m_vssPath = PROJECT_PREFIX + vssPath;
-        }
-    }
-
-    /**
-     * @return m_vssPath
-     */
-    public String getVsspath() {
-        return m_vssPath;
-    }
-
-    protected int run(Commandline cmd) {
-        try {
-            Execute exe = new Execute(new LogStreamHandler(this, 
-                                                           Project.MSG_INFO,
-                                                           Project.MSG_WARN));
-            exe.setAntRun(project);
-            exe.setWorkingDirectory(project.getBaseDir());
-            exe.setCommandline(cmd.getCommandline());
-            return exe.execute();
-        } catch (java.io.IOException e) {
-            throw new BuildException(e, location);
-        }
-    }
-
-    /**
-     * Constant for the thing to execute
-     */
-    private static final String SS_EXE = "ss";
-    /** */
-    public static final String PROJECT_PREFIX = "$";
-
-    /**
-     * The 'Get' command
-     */
-    public static final String COMMAND_GET = "Get";
-    /**
-     * The 'Checkout' command
-     */
-    public static final String COMMAND_CHECKOUT = "Checkout";
-    /**
-     * The 'Label' command
-     */
-    public static final String COMMAND_LABEL = "Label";
-    /**
-     * The 'History' command
-     */
-    public static final String COMMAND_HISTORY = "History";
-
-    /** */
-    public static final String FLAG_LOGIN = "-Y";
-    /** */
-    public static final String FLAG_OVERRIDE_WORKING_DIR = "-GL";
-    /** */
-    public static final String FLAG_AUTORESPONSE_DEF = "-I-";
-    /** */
-    public static final String FLAG_AUTORESPONSE_YES = "-I-Y";
-    /** */
-    public static final String FLAG_AUTORESPONSE_NO = "-I-N";
-    /** */
-    public static final String FLAG_RECURSION = "-R";
-    /** */
-    public static final String FLAG_VERSION = "-V";
-    /** */
-    public static final String FLAG_VERSION_DATE = "-Vd";
-    /** */
-    public static final String FLAG_VERSION_LABEL = "-VL";
-    /** */
-    public static final String FLAG_WRITABLE = "-W";
-    /** */
-    public static final String VALUE_NO = "-N";
-    /** */
-    public static final String VALUE_YES = "-Y";
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSGET.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSGET.java
deleted file mode 100644
index fba717a..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSGET.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.vss;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-
-/**
- * Task to perform GET commands to Microsoft Visual Source Safe.
- * <p>
- * The following attributes are interpretted:
- * <table border="1">
- *   <tr>
- *     <th>Attribute</th>
- *     <th>Values</th>
- *     <th>Required</th>
- *   </tr>
- *   <tr>
- *      <td>login</td>
- *      <td>username,password</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>vsspath</td>
- *      <td>SourceSafe path</td>
- *      <td>Yes</td>
- *   <tr>
- *   <tr>
- *      <td>localpath</td>
- *      <td>Override the working directory and get to the specified path</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>writable</td>
- *      <td>true or false</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>recursive</td>
- *      <td>true or false</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>version</td>
- *      <td>a version number to get</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>date</td>
- *      <td>a date stamp to get at</td>
- *      <td>No</td>
- *   <tr>
- *   <tr>
- *      <td>label</td>
- *      <td>a label to get for</td>
- *      <td>No</td>
- *   <tr>
- * </table>
- * <p>Note that only one of version, date or label should be specified</p>
- *
- * @author Craig Cottingham
- * @author Andrew Everitt
- */
-public class MSVSSGET extends MSVSS {
-
-    private String m_LocalPath = null;
-    private boolean m_Recursive = false;
-    private boolean m_Writable = false;
-    private String m_Version = null;
-    private String m_Date = null;
-    private String m_Label = null;
-    private String m_AutoResponse = null;
-
-    /**
-     * Executes the task.
-     * <p>
-     * Builds a command line to execute ss and then calls Exec's run method
-     * to execute the command line.
-     */
-    public void execute() throws BuildException {
-        Commandline commandLine = new Commandline();
-        int result = 0;
-
-        // first off, make sure that we've got a command and a vssdir ...
-        if (getVsspath() == null) {
-            String msg = "vsspath attribute must be set!";
-            throw new BuildException(msg, location);
-        }
-
-        // now look for illegal combinations of things ...
-
-        // build the command line from what we got the format is
-        // ss Get VSS items [-G] [-H] [-I-] [-N] [-O] [-R] [-V] [-W] [-Y] [-?]
-        // as specified in the SS.EXE help
-        commandLine.setExecutable(getSSCommand());
-        commandLine.createArgument().setValue(COMMAND_GET);
-
-        // VSS items
-        commandLine.createArgument().setValue(getVsspath());
-        // -GL
-        getLocalpathCommand(commandLine);
-        // -I- or -I-Y or -I-N
-        getAutoresponse(commandLine);
-        // -R
-        getRecursiveCommand(commandLine);
-        // -V
-        getVersionCommand(commandLine);
-        // -W
-        getWritableCommand(commandLine);
-        // -Y
-        getLoginCommand(commandLine);
-
-        result = run(commandLine);
-        if ( result != 0 ) {
-            String msg = "Failed executing: " + commandLine.toString();
-            throw new BuildException(msg, location);
-        }
-    }
-
-    /**
-     * Set the local path.
-     */
-    public void setLocalpath(Path localPath) {
-        m_LocalPath = localPath.toString();
-    }
-
-    /**
-     * Builds and returns the -GL flag command if required
-     * <p>
-     * The localpath is created if it didn't exist
-     */
-    public void getLocalpathCommand(Commandline cmd) {
-        if (m_LocalPath == null) {
-            return;
-        } else {
-            // make sure m_LocalDir exists, create it if it doesn't
-            File dir = project.resolveFile(m_LocalPath);
-            if (!dir.exists()) {
-                boolean done = dir.mkdirs();
-                if (done == false) {
-                    String msg = "Directory " + m_LocalPath + " creation was not " +
-                        "succesful for an unknown reason";
-                    throw new BuildException(msg, location);
-                }
-                project.log("Created dir: " + dir.getAbsolutePath());
-            }
-
-            cmd.createArgument().setValue(FLAG_OVERRIDE_WORKING_DIR + m_LocalPath);
-        }
-    }
-
-    /**
-     * Set behaviour recursive or non-recursive
-     */
-    public void setRecursive(boolean recursive) {
-        m_Recursive = recursive;
-    }
-
-    /**
-     * @return the 'recursive' command if the attribute was 'true', otherwise an empty string
-     */
-    public void getRecursiveCommand(Commandline cmd) {
-        if ( !m_Recursive ) {
-            return;
-        } else {
-            cmd.createArgument().setValue(FLAG_RECURSION);
-        }
-    }
-
-    /**
-     * Set behaviour, used in get command to make files that are 'got' writable
-     */
-    public final void setWritable(boolean argWritable) {
-        m_Writable = argWritable;
-    }
-
-    /**
-     * @return the 'make writable' command if the attribute was 'true', otherwise an empty string
-     */
-    public void getWritableCommand(Commandline cmd) {
-        if ( !m_Writable ) {
-            return;
-        } else {
-            cmd.createArgument().setValue(FLAG_WRITABLE);
-        }
-    }
-
-    /**
-     * Set the stored version string
-     * <p>
-     * Note we assume that if the supplied string has the value "null" that something
-     * went wrong and that the string value got populated from a null object. This
-     * happens if a ant variable is used e.g. version="${ver_server}" when ver_server
-     * has not been defined to ant!
-     */
-    public void setVersion(String version) {
-        if (version.equals("") || version.equals("null") ) {
-            m_Version = null;
-        } else {
-            m_Version = version;
-        }
-    }
-
-    /**
-     * Set the stored date string
-     * <p>
-     * Note we assume that if the supplied string has the value "null" that something
-     * went wrong and that the string value got populated from a null object. This
-     * happens if a ant variable is used e.g. date="${date}" when date
-     * has not been defined to ant!
-     */
-    public void setDate(String date) {
-        if (date.equals("") || date.equals("null") ) {
-            m_Date = null;
-        } else {
-            m_Date = date;
-        }
-    }
-
-    /**
-     * Set the labeled version to operate on in SourceSafe
-     * <p>
-     * Note we assume that if the supplied string has the value "null" that something
-     * went wrong and that the string value got populated from a null object. This
-     * happens if a ant variable is used e.g. label="${label_server}" when label_server
-     * has not been defined to ant!
-     */
-    public void setLabel(String label) {
-        if ( label.equals("") || label.equals("null") ) {
-            m_Label = null;
-        } else {
-            m_Label = label;
-        }
-    }
-
-    /**
-     * Simple order of priority. Returns the first specified of version, date, label
-     * If none of these was specified returns ""
-     */
-    public void getVersionCommand(Commandline cmd) {
-
-        if ( m_Version != null) {
-            cmd.createArgument().setValue(FLAG_VERSION + m_Version);
-        } else if ( m_Date != null) {
-            cmd.createArgument().setValue(FLAG_VERSION_DATE + m_Date);
-        } else if (m_Label != null) {
-            cmd.createArgument().setValue(FLAG_VERSION_LABEL + m_Label);
-        }
-    }
-
-    public void setAutoresponse(String response){
-        if ( response.equals("") || response.equals("null") ) {
-            m_AutoResponse = null;
-        } else {
-            m_AutoResponse = response;
-        }
-    }
-    
-    /**
-     * Checks the value set for the autoResponse.
-     * if it equals "Y" then we return -I-Y
-     * if it equals "N" then we return -I-N
-     * otherwise we return -I
-     */
-    public void getAutoresponse(Commandline cmd) {
-        
-        if ( m_AutoResponse == null) {
-            cmd.createArgument().setValue(FLAG_AUTORESPONSE_DEF);
-        } else if ( m_AutoResponse.equalsIgnoreCase("Y")) {
-            cmd.createArgument().setValue(FLAG_AUTORESPONSE_YES);
-            
-        } else if ( m_AutoResponse.equalsIgnoreCase("N")) {
-            cmd.createArgument().setValue(FLAG_AUTORESPONSE_NO);
-        }else {
-            cmd.createArgument().setValue(FLAG_AUTORESPONSE_DEF);
-        } // end of else
-
-    }
-
-}
-
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSLABEL.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSLABEL.java
deleted file mode 100644
index a7420cb..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSLABEL.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.vss;
-
-import org.apache.tools.ant.*;
-import org.apache.tools.ant.types.Commandline;
-
-/**
- * Task to perform LABEL commands to Microsoft Visual Source Safe.
- * <p>
- * The following attributes are interpreted:
- * <table border="1">
- *   <tr>
- *     <th>Attribute</th>
- *     <th>Values</th>
- *     <th>Required</th>
- *   </tr>
- *   <tr>
- *      <td>login</td>
- *      <td>username,password</td>
- *      <td>No</td>
- *   </tr>
- *   <tr>
- *      <td>vsspath</td>
- *      <td>SourceSafe path</td>
- *      <td>Yes</td>
- *   </tr>
- *   <tr>
- *      <td>ssdir</td>
- *      <td>directory where <code>ss.exe</code> resides. By default the task
- *      expects it to be in the PATH.</td>
- *      <td>No</td>
- *   </tr>
- *   <tr>
- *      <td>label</td>
- *      <td>A label to apply to the hierarchy</td>
- *      <td>Yes</td>
- *   </tr>
- *   <tr>
- *      <td>version</td>
- *      <td>An existing file or project version to label</td>
- *      <td>No</td>
- *   </tr>
- * </table>
- *
- * @author Phillip Wells
- */
-public class MSVSSLABEL extends MSVSS
-{
-
-    private String m_Label = null;
-    private String m_Version = null;
-
-    public static final String FLAG_LABEL = "-L";
-
-    /**
-     * Executes the task.
-     * <p>
-     * Builds a command line to execute ss and then calls Exec's run method
-     * to execute the command line.
-     */
-    public void execute() throws BuildException {
-        Commandline commandLine = new Commandline();
-        int result = 0;
-
-        // first off, make sure that we've got a command and a vssdir and a label ...
-        if (getVsspath() == null) {
-            String msg = "vsspath attribute must be set!";
-            throw new BuildException(msg, location);
-        }
-        if (getLabel() == null) {
-            String msg = "label attribute must be set!";
-            throw new BuildException(msg, location);
-        }
-
-        // now look for illegal combinations of things ...
-
-        // build the command line from what we got the format is
-        // ss Label VSS items [-C]      [-H] [-I-] [-Llabel] [-N] [-O]      [-V]      [-Y] [-?]
-        // as specified in the SS.EXE help
-        commandLine.setExecutable(getSSCommand());
-        commandLine.createArgument().setValue(COMMAND_LABEL);
-
-        // VSS items
-        commandLine.createArgument().setValue(getVsspath());
-
-        // -C
-        // Use the same comment for all labels
-        // Not required
-
-        // -I-
-        commandLine.createArgument().setValue("-I-");  // ignore all errors
-
-        // -L
-        // Specify the new label on the command line (instead of being prompted)
-        getLabelCommand(commandLine);
-
-        // -V
-        // Label an existing file or project version
-        getVersionCommand(commandLine);
-
-        // -Y
-        getLoginCommand(commandLine);
-
-        result = run(commandLine);
-        if ( result != 0 ) {
-            String msg = "Failed executing: " + commandLine.toString();
-            throw new BuildException(msg, location);
-        }
-
-    }
-
-    /**
-     * Set the label to apply in SourceSafe
-     * <p>
-     * Note we assume that if the supplied string has the value "null" that something
-     * went wrong and that the string value got populated from a null object. This
-     * happens if a ant variable is used e.g. label="${label_server}" when label_server
-     * has not been defined to ant!
-     */
-    public void setLabel(String label) {
-        if ( label.equals("") || label.equals("null") ) {
-            m_Label = null;
-        } else {
-            m_Label = label;
-        }
-    }
-
-    /**
-     * Builds the version command.
-     * @param cmd the commandline the command is to be added to
-     */
-    public void getVersionCommand(Commandline cmd) {
-        if ( m_Version != null) {
-            cmd.createArgument().setValue(FLAG_VERSION + m_Version);
-        }
-    }
-
-    /**
-     * Builds the label command.
-     * @param cmd the commandline the command is to be added to
-     */
-    public void getLabelCommand(Commandline cmd) {
-        if ( m_Label != null) {
-            cmd.createArgument().setValue(FLAG_LABEL + m_Label);
-        }
-    }
-
-    /**
-     * Set the stored version string
-     * <p>
-     * Note we assume that if the supplied string has the value "null" that something
-     * went wrong and that the string value got populated from a null object. This
-     * happens if a ant variable is used e.g. version="${ver_server}" when ver_server
-     * has not been defined to ant!
-     */
-    public void setVersion(String version) {
-        if (version.equals("") || version.equals("null") ) {
-            m_Version = null;
-        } else {
-            m_Version = version;
-        }
-    }
-
-    /**
-     * Gets the label to be applied.
-     * @return the label to be applied.
-     */
-    public String getLabel() {
-        return m_Label;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/types/Commandline.java b/src/main/org/apache/tools/ant/types/Commandline.java
deleted file mode 100644
index 6ff65bc..0000000
--- a/src/main/org/apache/tools/ant/types/Commandline.java
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-import java.io.File;
-import java.util.Vector;
-import java.util.StringTokenizer;
-
-
-/**
- * Commandline objects help handling command lines specifying processes to
- * execute.
- *
- * The class can be used to define a command line as nested elements or as a
- * helper to define a command line by an application.
- * <p>
- * <code>
- * &lt;someelement&gt;<br>
- * &nbsp;&nbsp;&lt;acommandline executable="/executable/to/run"&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;argument value="argument 1" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;argument line="argument_1 argument_2 argument_3" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;argument value="argument 4" /&gt;<br>
- * &nbsp;&nbsp;&lt;/acommandline&gt;<br>
- * &lt;/someelement&gt;<br>
- * </code>
- * The element <code>someelement</code> must provide a method
- * <code>createAcommandline</code> which returns an instance of this class.
- *
- * @author thomas.haas@softwired-inc.com
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class Commandline implements Cloneable {
-
-    private Vector arguments = new Vector();
-    private String executable = null;
-
-    public Commandline(String to_process) {
-        super();
-        String[] tmp = translateCommandline(to_process);
-        if (tmp != null && tmp.length > 0) {
-            setExecutable(tmp[0]);
-            for (int i=1; i<tmp.length; i++) {
-                createArgument().setValue(tmp[i]);
-            }
-        }
-    }
-
-    public Commandline() {
-        super();
-    }
-
-    /**
-     * Used for nested xml command line definitions.
-     */
-    public class Argument {
-
-        private String[] parts;
-
-        /**
-         * Sets a single commandline argument.
-         *
-         * @param value a single commandline argument.
-         */
-        public void setValue(String value) {
-            parts = new String[] {value};
-        }
-
-        /**
-         * Line to split into several commandline arguments.
-         *
-         * @param line line to split into several commandline arguments
-         */
-        public void setLine(String line) {
-            parts = translateCommandline(line);
-        }
-
-        /**
-         * Sets a single commandline argument and treats it like a
-         * PATH - ensures the right separator for the local platform
-         * is used.
-         *
-         * @param value a single commandline argument.  
-         */
-        public void setPath(Path value) {
-            parts = new String[] {value.toString()};
-        }
-
-        /**
-         * Sets a single commandline argument to the absolute filename
-         * of the given file.  
-         *
-         * @param value a single commandline argument.  
-         */
-        public void setFile(File value) {
-            parts = new String[] {value.getAbsolutePath()};
-        }
-
-        /**
-         * Returns the parts this Argument consists of.
-         */
-        public String[] getParts() {
-            return parts;
-        }
-    }
-
-    /**
-     * Class to keep track of the position of an Argument.
-     */
-    // <p>This class is there to support the srcfile and targetfile
-    // elements of &lt;execon&gt; and &lt;transform&gt; - don't know
-    // whether there might be additional use cases.</p> --SB
-    public class Marker {
-
-        private int position;
-        private int realPos = -1;
-
-        Marker(int position) {
-            this.position = position;
-        }
-
-        /**
-         * Return the number of arguments that preceeded this marker.
-         *
-         * <p>The name of the executable - if set - is counted as the
-         * very first argument.</p>
-         */
-        public int getPosition() {
-            if (realPos == -1) {
-                realPos = (executable == null ? 0 : 1);
-                for (int i=0; i<position; i++) {
-                    Argument arg = (Argument) arguments.elementAt(i);
-                    realPos += arg.getParts().length;
-                }
-            }
-            return realPos;
-        }
-    }
-
-    /**
-     * Creates an argument object.
-     * Each commandline object has at most one instance of the argument class.
-     * @return the argument object.
-     */
-    public Argument createArgument() {
-        Argument argument = new Argument();
-        arguments.addElement(argument);
-        return argument;
-    }
-
-
-    /**
-     * Sets the executable to run.
-     */
-    public void setExecutable(String executable) {
-        if (executable == null || executable.length() == 0) return;
-        this.executable = executable.replace('/', File.separatorChar)
-            .replace('\\', File.separatorChar);
-    }
-
-
-    public String getExecutable() {
-        return executable;
-    }
-
-
-    public void addArguments(String[] line) {
-        for (int i=0; i < line.length; i++) {
-            createArgument().setValue(line[i]);
-        }
-    }
-
-    /**
-     * Returns the executable and all defined arguments.
-     */
-    public String[] getCommandline() {
-        final String[] args = getArguments();
-        if (executable == null) return args;
-        final String[] result = new String[args.length+1];
-        result[0] = executable;
-        System.arraycopy(args, 0, result, 1, args.length);
-        return result;
-    }
-
-
-    /**
-     * Returns all arguments defined by <code>addLine</code>,
-     * <code>addValue</code> or the argument object.
-     */
-    public String[] getArguments() {
-        Vector result = new Vector(arguments.size()*2);
-        for (int i=0; i<arguments.size(); i++) {
-            Argument arg = (Argument) arguments.elementAt(i);
-            String[] s = arg.getParts();
-            for (int j=0; j<s.length; j++) {
-                result.addElement(s[j]);
-            }
-        }
-        
-        String [] res = new String[result.size()];
-        result.copyInto(res);
-        return res;
-    }
-
-
-    public String toString() {
-        return toString(getCommandline());
-    }
-
-    /**
-     * Put quotes around the given String if necessary.
-     *
-     * <p>If the argument doesn't include spaces or quotes, return it
-     * as is. If it contains double quotes, use single quotes - else
-     * surround the argument by double quotes.</p>
-     *
-     * @exception BuildException if the argument contains both, single
-     *                           and double quotes.  
-     */
-    public static String quoteArgument(String argument) {
-        if (argument.indexOf("\"") > -1) {
-            if (argument.indexOf("\'") > -1) {
-                throw new BuildException("Can\'t handle single and double quotes in same argument");
-            } else {
-                return '\''+argument+'\'';
-            }
-        } else if (argument.indexOf("\'") > -1 || argument.indexOf(" ") > -1) {
-            return '\"'+argument+'\"';
-        } else {
-            return argument;
-        }
-    }
-
-    public static String toString(String [] line) {
-        // empty path return empty string
-        if (line == null || line.length == 0) return "";
-
-        // path containing one or more elements
-        final StringBuffer result = new StringBuffer();
-        for (int i=0; i < line.length; i++) {
-            if (i > 0) {
-                result.append(' ');
-            }
-            result.append(quoteArgument(line[i]));
-        }
-        return result.toString();
-    }
-
-    public static String[] translateCommandline(String to_process) {
-        if (to_process == null || to_process.length() == 0) {
-            return new String[0];
-        }
-
-        // parse with a simple finite state machine
-        
-        final int normal = 0;
-        final int inQuote = 1;
-        final int inDoubleQuote = 2;
-        int state = normal;
-        StringTokenizer tok = new StringTokenizer(to_process, "\"\' ", true);
-        Vector v = new Vector();
-        StringBuffer current = new StringBuffer();
-
-        while (tok.hasMoreTokens()) {
-            String nextTok = tok.nextToken();
-            switch (state) {
-            case inQuote:
-                if ("\'".equals(nextTok)) {
-                    state = normal;
-                } else {
-                    current.append(nextTok);
-                }
-                break;
-            case inDoubleQuote:
-                if ("\"".equals(nextTok)) {
-                    state = normal;
-                } else {
-                    current.append(nextTok);
-                }
-                break;
-            default:
-                if ("\'".equals(nextTok)) {
-                    state = inQuote;
-                } else if ("\"".equals(nextTok)) {
-                    state = inDoubleQuote;
-                } else if (" ".equals(nextTok)) {
-                    if (current.length() != 0) {
-                        v.addElement(current.toString());
-                        current.setLength(0);
-                    }
-                } else {
-                    current.append(nextTok);
-                }
-                break;
-            }
-        }
-
-        if (current.length() != 0) {
-            v.addElement(current.toString());
-        }
-
-        if (state == inQuote || state == inDoubleQuote) {
-            throw new BuildException("unbalanced quotes in " + to_process);
-        }
-
-        String[] args = new String[v.size()];
-        v.copyInto(args);
-        return args;
-    }
-
-    public int size() {
-        return getCommandline().length;
-    }
-
-    public Object clone() {
-        Commandline c = new Commandline();
-        c.setExecutable(executable);
-        c.addArguments(getArguments());
-        return c;
-    }
-
-    /**
-     * Clear out the whole command line.  */
-    public void clear() {
-        executable = null;
-        arguments.removeAllElements();
-    }
-
-    /**
-     * Clear out the arguments but leave the executable in place for another operation.
-     */
-    public void clearArgs() {
-        arguments.removeAllElements();
-    }
-        
-    /**
-     * Return a marker.
-     *
-     * <p>This marker can be used to locate a position on the
-     * commandline - to insert something for example - when all
-     * parameters have been set.</p>
-     */
-    public Marker createMarker() {
-        return new Marker(arguments.size());
-    }
-}
diff --git a/src/main/org/apache/tools/ant/types/CommandlineJava.java b/src/main/org/apache/tools/ant/types/CommandlineJava.java
deleted file mode 100644
index a273706..0000000
--- a/src/main/org/apache/tools/ant/types/CommandlineJava.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import java.util.*;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildException;
-
-/*
- *
- * @author thomas.haas@softwired-inc.com
- */
-public class CommandlineJava implements Cloneable {
-
-    private Commandline vmCommand = new Commandline();
-    private Commandline javaCommand = new Commandline();
-    private SysProperties sysProperties = new SysProperties();
-    private Path classpath = null;
-    private String vmVersion;
-
-    /**
-     * Specialized Environment class for System properties
-     */
-    public static class SysProperties extends Environment implements Cloneable {
-        Properties sys = null;
-
-        public String[] getVariables() throws BuildException {
-            String props[] = super.getVariables();
-      
-            if (props == null) return null;
-
-            for (int i = 0; i < props.length; i++) {
-                props[i] = "-D" + props[i];
-            }
-            return props;
-        }
-
-        public int size() {
-            return variables.size();
-        }
-
-        public void setSystem() throws BuildException {
-            try {
-                Properties p = new Properties(sys = System.getProperties());
-        
-                for (Enumeration e = variables.elements(); e.hasMoreElements(); ) {
-                    Environment.Variable v = (Environment.Variable) e.nextElement();
-                    p.put(v.getKey(), v.getValue());
-                }
-                System.setProperties(p);
-            } catch (SecurityException e) {
-                throw new BuildException("Cannot modify system properties", e);
-            }
-        }
-
-        public void restoreSystem() throws BuildException {
-            if (sys == null)
-                throw new BuildException("Unbalanced nesting of SysProperties");
-
-            try {
-                System.setProperties(sys);
-                sys = null;
-            } catch (SecurityException e) {
-                throw new BuildException("Cannot modify system properties", e);
-            }
-        }
-
-        public Object clone() {
-            try {
-                SysProperties c = (SysProperties) super.clone();
-                c.variables = (Vector) variables.clone();
-                return c;
-            } catch(CloneNotSupportedException e){return null;}
-        }
-
-    }
-
-    public CommandlineJava() {
-        setVm("java");
-        setVmversion(org.apache.tools.ant.Project.getJavaVersion());
-    }
-
-    public Commandline.Argument createArgument() {
-        return javaCommand.createArgument();
-    }
-
-    public Commandline.Argument createVmArgument() {
-        return vmCommand.createArgument();
-    }
-
-    public void addSysproperty(Environment.Variable sysp) {
-        sysProperties.addVariable(sysp);
-    }
-
-    public void setVm(String vm) {
-        vmCommand.setExecutable(vm);
-    }
-
-    public void setVmversion(String value) {
-        vmVersion = value;
-    }
-
-    public void setClassname(String classname) {
-        javaCommand.setExecutable(classname);
-    }
-
-    public String getClassname() {
-        return javaCommand.getExecutable();
-    }
-
-    public Path createClasspath(Project p) {
-        if (classpath == null) {
-            classpath = new Path(p);
-        }
-        return classpath;
-    }
-
-    public String getVmversion() {
-        return vmVersion;
-    }
-
-    public String[] getCommandline() {
-        int size = 
-            vmCommand.size() + javaCommand.size() + sysProperties.size();
-        if (classpath != null && classpath.size() > 0) {
-            size += 2;
-        }
-        
-        String[] result = new String[size];
-        System.arraycopy(vmCommand.getCommandline(), 0, 
-                         result, 0, vmCommand.size());
-
-        int pos = vmCommand.size();
-        if (sysProperties.size() > 0) {
-            System.arraycopy(sysProperties.getVariables(), 0,
-                             result, pos, sysProperties.size());
-            pos += sysProperties.size();
-        }
-        if (classpath != null && classpath.size() > 0) {
-            result[pos++] = "-classpath";
-            result[pos++] = classpath.concatSystemClasspath("ignore").toString();
-        }
-        System.arraycopy(javaCommand.getCommandline(), 0, 
-                         result, pos, javaCommand.size());
-        return result;
-    }
-
-
-    public String toString() {
-        return Commandline.toString(getCommandline());
-    }
-
-    public int size() {
-        int size = vmCommand.size() + javaCommand.size();
-        if (classpath != null && classpath.size() > 0) {
-            size += 2;
-        }
-        return size;
-    }
-
-    public Commandline getJavaCommand() {
-        return javaCommand;
-    }
-
-    public Commandline getVmCommand() {
-        return vmCommand;
-    }
-
-    public Path getClasspath() {
-        return classpath;
-    }
-
-    public void setSystemProperties() throws BuildException {
-        sysProperties.setSystem();
-    }
-
-    public void restoreSystemProperties() throws BuildException {
-        sysProperties.restoreSystem();
-    }
-
-    public SysProperties getSystemProperties() {
-        return sysProperties;
-    }
-
-    public Object clone() {
-        CommandlineJava c = new CommandlineJava();
-        c.vmCommand = (Commandline) vmCommand.clone();
-        c.javaCommand = (Commandline) javaCommand.clone();
-        c.sysProperties = (SysProperties) sysProperties.clone();
-        c.classpath = (Path) classpath.clone();
-        c.vmVersion = vmVersion;
-        return c;
-    }
-
-    /**
-     * Clear out the java arguments.
-     */
-    public void clearJavaArgs() {
-        javaCommand.clearArgs();
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/types/DataType.java b/src/main/org/apache/tools/ant/types/DataType.java
deleted file mode 100644
index a9f83df..0000000
--- a/src/main/org/apache/tools/ant/types/DataType.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-
-import java.util.Stack;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-
-/**
- * Base class for those classes that can appear inside the build file
- * as stand alone data types.  
- *
- * <p>This class handles the common description attribute and provides
- * a default implementation for reference handling and checking for
- * circular references that is appropriate for types that can not be
- * nested inside elements of the same type (i.e. &lt;patternset&gt;
- * but not &lt;path&gt;).</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public abstract class DataType {
-    /**
-     * The descriptin the user has set.
-     */
-    protected String description = null;
-    /**
-     * Value to the refid attribute.
-     */
-    protected Reference ref = null;
-    /**
-     * Are we sure we don't hold circular references?
-     *
-     * <p>Subclasses are responsible for setting this value to false
-     * if we'd need to investigate this condition (usually because a
-     * child element has been added that is a subclass of
-     * DataType).</p> 
-     */
-    protected boolean checked = true;
-    
-    /** 
-     * Sets a description of the current data type. It will be useful
-     * in commenting what we are doing.  
-     */
-    public void setDescription( String desc ) {
-        description=desc;
-    }
-
-    /**
-     * Return the description for the current data type.
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * Has the refid attribute of this element been set?
-     */
-    public boolean isReference() {
-        return ref != null;
-    }
-
-    /**
-     * Set the value of the refid attribute.
-     *
-     * <p>Subclasses may need to check whether any other attributes
-     * have been set as well or child elements have been created and
-     * thus override this method. if they do the must call
-     * <code>super.setRefid</code>.</p> 
-     */
-    public void setRefid(Reference ref) {
-        this.ref = ref;
-        checked = false;
-    }
-
-    /**
-     * Check to see whether any DataType we hold references to is
-     * included in the Stack (which holds all DataType instances that
-     * directly or indirectly reference this instance, including this
-     * instance itself).
-     *
-     * <p>If one is included, throw a BuildException created by {@link
-     * #circularReference circularReference}.</p>
-     *
-     * <p>This implementation is appropriate only for a DataType that
-     * cannot hold other DataTypes as children.</p> 
-     *
-     * <p>The general contract of this method is that it shouldn't do
-     * anything if {@link #checked <code>checked</code>} is true and
-     * set it to true on exit.</p> 
-     */
-    protected void dieOnCircularReference(Stack stk, Project p) 
-        throws BuildException {
-
-        if (checked || !isReference()) {
-            return;
-        }
-        Object o = ref.getReferencedObject(p);
-        
-        if (o instanceof DataType) {
-            if (stk.contains(o)) {
-                throw circularReference();
-            } else {
-                stk.push(o);
-                ((DataType) o).dieOnCircularReference(stk, p);
-                stk.pop();
-            }
-        }
-        checked = true;
-    }
-
-    /**
-     * Creates an exception that indicates that refid has to be the
-     * only attribute if it is set.  
-     */
-    protected BuildException tooManyAttributes() {
-        return new BuildException( "You must not specify more than one attribute" +
-                                   " when using refid" );
-    }
-
-    /**
-     * Creates an exception that indicates that this XML element must
-     * not have child elements if the refid attribute is set.  
-     */
-    protected BuildException noChildrenAllowed() {
-        return new BuildException("You must not specify nested elements when using refid");
-    }
-
-    /**
-     * Creates an exception that indicates the user has generated a
-     * loop of data types referencing each other.  
-     */
-    protected BuildException circularReference() {
-        return new BuildException("This data type contains a circular reference.");
-    }
-}
diff --git a/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java b/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java
deleted file mode 100644
index 48ca029..0000000
--- a/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * Helper class for attributes that can only take one of a fixed list
- * of values.
- *
- * <p>See {@link org.apache.tools.ant.taskdefs.FixCRLF FixCRLF} for an
- * example.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public abstract class EnumeratedAttribute {
-
-    protected String value;
-
-    /**
-     * This is the only method a subclass needs to implement.
-     *
-     * @return an array holding all possible values of the enumeration.
-     */
-    public abstract String[] getValues();
-
-    public EnumeratedAttribute() {}
-
-    /**
-     * Invoked by {@link org.apache.tools.ant.IntrospectionHelper IntrospectionHelper}.
-     */
-    public final void setValue(String value) throws BuildException {
-        if (!containsValue(value)) {
-            throw new BuildException(value+" is not a legal value for this attribute");
-        }
-        this.value = value;
-    }
-
-    /**
-     * Is this value included in the enumeration?
-     */
-    public final boolean containsValue(String value) {
-        String[] values = getValues();
-        if (values == null || value == null) {
-            return false;
-        }
-        
-        for (int i=0; i<values.length; i++) {
-            if (value.equals(values[i])) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Retrieves the value.
-     */
-    public final String getValue() {
-        return value;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/types/Environment.java b/src/main/org/apache/tools/ant/types/Environment.java
deleted file mode 100644
index 49f2c34..0000000
--- a/src/main/org/apache/tools/ant/types/Environment.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-import java.util.Vector;
-
-/**
- * Wrapper for environment variables.
- *
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a>
- */
-public class Environment {
-
-    protected Vector variables;
-
-    public static class Variable {
-        private String key, value;
-
-        public Variable() {
-            super();
-        }
-
-        public void setKey(String key) {
-            this.key = key;
-        }
-        
-        public void setValue(String value) {
-            this.value = value;
-        }
-        
-        public String getKey() {
-            return this.key;
-        }
-        
-        public String getValue() {
-            return this.value;
-        }
-        
-        public void setPath(Path path) {
-            this.value = path.toString();
-        }
-
-        public void setFile(java.io.File file) {
-            this.value = file.getAbsolutePath();
-        }
-
-        public String getContent() throws BuildException {
-            if (key == null || value == null) {
-                throw new BuildException("key and value must be specified for environment variables.");
-            }
-            StringBuffer sb = new StringBuffer(key.trim());
-            sb.append("=").append(value.trim());
-            return sb.toString();
-        }
-    }
-
-    public Environment() {
-        variables = new Vector();
-    }
-
-    public void addVariable(Variable var) {
-        variables.addElement(var);
-    }
-
-    public String[] getVariables() throws BuildException {
-        if (variables.size() == 0) {
-            return null;
-        }
-        String[] result = new String[variables.size()];
-        for (int i=0; i<result.length; i++) {
-            result[i] = ((Variable) variables.elementAt(i)).getContent();
-        }
-        return result;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/types/FileSet.java b/src/main/org/apache/tools/ant/types/FileSet.java
deleted file mode 100644
index da2f232..0000000
--- a/src/main/org/apache/tools/ant/types/FileSet.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.FileScanner;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-
-import java.io.File;
-import java.util.Stack;
-import java.util.Vector;
-
-/**
- * Moved out of MatchingTask to make it a standalone object that could
- * be referenced (by scripts for example).
- *
- * @author Arnout J. Kuiper <a href="mailto:ajkuiper@wxs.nl">ajkuiper@wxs.nl</a> 
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- * @author Sam Ruby <a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a>
- * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class FileSet extends DataType {
-    
-    private PatternSet defaultPatterns = new PatternSet();
-    private Vector additionalPatterns = new Vector();
-
-    private File dir;
-    private boolean useDefaultExcludes = true;
-
-    public FileSet() {
-        super();
-    }
-
-    protected FileSet(FileSet fileset) {
-        this.dir = fileset.dir;
-        this.defaultPatterns = fileset.defaultPatterns;
-        this.additionalPatterns = fileset.additionalPatterns;
-        this.useDefaultExcludes = fileset.useDefaultExcludes;
-    }
-    
-    
-
-    /**
-     * Makes this instance in effect a reference to another PatternSet
-     * instance.
-     *
-     * <p>You must not set another attribute or nest elements inside
-     * this element if you make it a reference.</p> 
-     */
-    public void setRefid(Reference r) throws BuildException {
-        if (dir != null || defaultPatterns.hasPatterns()) {
-            throw tooManyAttributes();
-        }
-        if (!additionalPatterns.isEmpty()) {
-            throw noChildrenAllowed();
-        }
-        super.setRefid(r);
-    }
-
-    public void setDir(File dir) throws BuildException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-
-        if (!dir.exists()) {
-            throw new BuildException(dir.getAbsolutePath()+" not found.");
-        }
-        if (!dir.isDirectory()) {
-            throw new BuildException(dir.getAbsolutePath()+" is not a directory.");
-        }
-        this.dir = dir;
-    }
-
-    public File getDir(Project p) {
-        if (isReference()) {
-            return getRef(p).getDir(p);
-        }
-        return dir;
-    }
-
-    public PatternSet createPatternSet() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        PatternSet patterns = new PatternSet();
-        additionalPatterns.addElement(patterns);
-        return patterns;
-    }
-
-    /**
-     * add a name entry on the include list
-     */
-    public PatternSet.NameEntry createInclude() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return defaultPatterns.createInclude();
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public PatternSet.NameEntry createExclude() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return defaultPatterns.createExclude();
-    }
-
-    /**
-     * Sets the set of include patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param includes the string containing the include patterns
-     */
-    public void setIncludes(String includes) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-
-        defaultPatterns.setIncludes(includes);
-    }
-
-    /**
-     * Sets the set of exclude patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param excludes the string containing the exclude patterns
-     */
-    public void setExcludes(String excludes) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-
-        defaultPatterns.setExcludes(excludes);
-    }
-
-    /**
-     * Sets the name of the file containing the includes patterns.
-     *
-     * @param incl The file to fetch the include patterns from.  
-     */
-     public void setIncludesfile(File incl) throws BuildException {
-         if (isReference()) {
-             throw tooManyAttributes();
-         }
-
-         defaultPatterns.setIncludesfile(incl);
-     }
-
-    /**
-     * Sets the name of the file containing the includes patterns.
-     *
-     * @param excl The file to fetch the exclude patterns from.  
-     */
-     public void setExcludesfile(File excl) throws BuildException {
-         if (isReference()) {
-             throw tooManyAttributes();
-         }
-
-         defaultPatterns.setExcludesfile(excl);
-     }
-
-    /**
-     * Sets whether default exclusions should be used or not.
-     *
-     * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions 
-     *                           should be used, "false"|"off"|"no" when they
-     *                           shouldn't be used.
-     */
-    public void setDefaultexcludes(boolean useDefaultExcludes) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-
-        this.useDefaultExcludes = useDefaultExcludes;
-    }
-
-    /**
-     * Returns the directory scanner needed to access the files to process.
-     */
-    public DirectoryScanner getDirectoryScanner(Project p) {
-        if (isReference()) {
-            return getRef(p).getDirectoryScanner(p);
-        }
-
-        if (dir == null) {
-            throw new BuildException("No directory specified for fileset.");
-        }
-
-        DirectoryScanner ds = new DirectoryScanner();
-        setupDirectoryScanner(ds, p);
-        ds.scan();
-        return ds;
-    }
-    
-    public void setupDirectoryScanner(FileScanner ds, Project p) {
-        if (ds == null) {
-            throw new IllegalArgumentException("ds cannot be null");
-        }
-        
-        ds.setBasedir(dir);
-
-        for (int i=0; i<additionalPatterns.size(); i++) {
-            Object o = additionalPatterns.elementAt(i);
-            defaultPatterns.append((PatternSet) o, p);
-        }
-        
-        ds.setIncludes(defaultPatterns.getIncludePatterns(p));
-        ds.setExcludes(defaultPatterns.getExcludePatterns(p));
-        if (useDefaultExcludes) ds.addDefaultExcludes();
-    }
-
-    /**
-     * Performs the check for circular references and returns the
-     * referenced FileSet.  
-     */
-    protected FileSet getRef(Project p) {
-        if (!checked) {
-            Stack stk = new Stack();
-            stk.push(this);
-            dieOnCircularReference(stk, p);
-        }
-        
-        Object o = ref.getReferencedObject(p);
-        if (!(o instanceof FileSet)) {
-            String msg = ref.getRefId()+" doesn\'t denote a fileset";
-            throw new BuildException(msg);
-        } else {
-            return (FileSet) o;
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/types/Mapper.java b/src/main/org/apache/tools/ant/types/Mapper.java
deleted file mode 100644
index 5b3716f..0000000
--- a/src/main/org/apache/tools/ant/types/Mapper.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.AntClassLoader;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.util.*;
-
-import java.util.Properties;
-import java.util.Stack;
-
-/**
- * Element to define a FileNameMapper.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class Mapper extends DataType {
-
-    protected Project p;
-
-    protected MapperType type = null;
-
-    public Mapper(Project p) {
-        this.p = p;
-    }
-
-    /**
-     * Set the type of FileNameMapper to use.
-     */
-    public void setType(MapperType type) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        this.type = type;
-    }
-
-    protected String classname = null;
-
-    /**
-     * Set the class name of the FileNameMapper to use.
-     */
-    public void setClassname(String classname) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        this.classname = classname;
-    }
-
-    protected Path classpath = null;
-
-    /**
-     * Set the classpath to load the FileNameMapper through (attribute).
-     */
-    public void setClasspath(Path classpath) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        if (this.classpath == null) {
-            this.classpath = classpath;
-        } else {
-            this.classpath.append(classpath);
-        }
-    }
-
-    /**
-     * Set the classpath to load the FileNameMapper through (nested element).
-     */
-    public Path createClasspath() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        if (this.classpath == null) {
-            this.classpath = new Path(p);
-        }
-        return this.classpath.createPath();
-    }
-
-    /**
-     * Set the classpath to load the FileNameMapper through via
-     * reference (attribute).
-     */
-    public void setClasspathRef(Reference r) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        createClasspath().setRefid(r);
-    }
-
-    protected String from = null;
-
-    /**
-     * Set the argument to FileNameMapper.setFrom
-     */
-    public void setFrom(String from) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        this.from = from;
-    }
-
-    protected String to = null;
-
-    /**
-     * Set the argument to FileNameMapper.setTo
-     */
-    public void setTo(String to) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        this.to = to;
-    }
-
-    /**
-     * Make this Mapper instance a reference to another Mapper.
-     *
-     * <p>You must not set any other attribute if you make it a
-     * reference.</p>
-     */
-    public void setRefid(Reference r) throws BuildException {
-        if (type != null || from != null || to != null) {
-            throw tooManyAttributes();
-        }
-        super.setRefid(r);
-    }
-
-    /**
-     * Returns a fully configured FileNameMapper implementation.
-     */
-    public FileNameMapper getImplementation() throws BuildException {
-        if (isReference()) {
-            return getRef().getImplementation();
-        }
-        
-        if (type == null && classname == null) {
-            throw new BuildException("one of the attributes type or classname is required");
-        }
-
-        if (type != null && classname != null) {
-            throw new BuildException("must not specify both type and classname attribute");
-        }
-
-        try {
-            if (type != null) {
-                classname = type.getImplementation();
-            }
-
-            Class c = null;
-            if (classpath == null) {
-                c = Class.forName(classname);
-            } else {
-                AntClassLoader al = new AntClassLoader(p, classpath);
-                c = al.loadClass(classname);
-            }
-            
-            FileNameMapper m = (FileNameMapper) c.newInstance();
-            m.setFrom(from);
-            m.setTo(to);
-            return m;
-        } catch (BuildException be) {
-            throw be;
-        } catch (Throwable t) {
-            throw new BuildException(t);
-        }
-    }
-        
-    /**
-     * Performs the check for circular references and returns the
-     * referenced Mapper.  
-     */
-    protected Mapper getRef() {
-        if (!checked) {
-            Stack stk = new Stack();
-            stk.push(this);
-            dieOnCircularReference(stk, p);
-        }
-        
-        Object o = ref.getReferencedObject(p);
-        if (!(o instanceof Mapper)) {
-            String msg = ref.getRefId()+" doesn\'t denote a mapper";
-            throw new BuildException(msg);
-        } else {
-            return (Mapper) o;
-        }
-    }
-
-    /**
-     * Class as Argument to FileNameMapper.setType.
-     */
-    public static class MapperType extends EnumeratedAttribute {
-        private Properties implementations;
-
-        public MapperType() {
-            implementations = new Properties();
-            implementations.put("identity", 
-                                "org.apache.tools.ant.util.IdentityMapper");
-            implementations.put("flatten", 
-                                "org.apache.tools.ant.util.FlatFileNameMapper");
-            implementations.put("glob", 
-                                "org.apache.tools.ant.util.GlobPatternMapper");
-            implementations.put("merge", 
-                                "org.apache.tools.ant.util.MergingMapper");
-            implementations.put("regexp", 
-                                "org.apache.tools.ant.util.RegexpPatternMapper");
-        }
-
-        public String[] getValues() {
-            return new String[] {"identity", "flatten", "glob", "merge", "regexp"};
-        }
-
-        public String getImplementation() {
-            return implementations.getProperty(getValue());
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/types/Path.java b/src/main/org/apache/tools/ant/types/Path.java
deleted file mode 100644
index 6241cf1..0000000
--- a/src/main/org/apache/tools/ant/types/Path.java
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.PathTokenizer;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.StringTokenizer;
-import java.util.Stack;
-import java.util.Vector;
-import java.text.CharacterIterator;
-import java.text.StringCharacterIterator;
-
-/**
- * This object represents a path as used by CLASSPATH or PATH
- * environment variable.
- * <p>
- * <code>
- * &lt;sometask&gt;<br>
- * &nbsp;&nbsp;&lt;somepath&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement location="/path/to/file.jar" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement path="/path/to/file2.jar:/path/to/class2;/path/to/class3" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement location="/path/to/file3.jar" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement location="/path/to/file4.jar" /&gt;<br>
- * &nbsp;&nbsp;&lt;/somepath&gt;<br>
- * &lt;/sometask&gt;<br>
- * </code>
- * <p>
- * The object implemention <code>sometask</code> must provide a method called
- * <code>createSomepath</code> which returns an instance of <code>Path</code>.
- * Nested path definitions are handled by the Path object and must be labeled
- * <code>pathelement</code>.<p>
- *
- * The path element takes a parameter <code>path</code> which will be parsed
- * and split into single elements. It will usually be used
- * to define a path from an environment variable.
- *
- * @author Thomas.Haas@softwired-inc.com
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> 
- */
-
-public class Path extends DataType implements Cloneable {
-
-    private Vector elements;
-    private Project project;
-
-    public static Path systemClasspath = 
-        new Path(null, System.getProperty("java.class.path"));
-
-
-    /**
-     * Helper class, holds the nested <pathelement> values.
-     */
-    public class PathElement {
-        private String[] parts;
-
-        public void setLocation(File loc) {
-            try {
-                parts = new String[] {translateFile(loc.getCanonicalPath())};
-            } catch(IOException e) {
-                // XXX I'd like to log something here but if I don't
-                //     have a Project I can't
-                if (project != null) {
-                    project.log(e.getMessage(), Project.MSG_WARN);
-                }
-                parts = new String[] {translateFile(loc.getAbsolutePath())};
-            }
-        }
-
-        public void setPath(String path) {
-            parts = Path.translatePath(project, path);
-        }
-
-        public String[] getParts() {
-            return parts;
-        }
-    }
-
-    /**
-     * Invoked by IntrospectionHelper for <code>setXXX(Path p)</code>
-     * attribute setters.  
-     */
-    public Path(Project p, String path) {
-        this(p);
-        createPathElement().setPath(path);
-    }
-
-    public Path(Project project) {
-        this.project = project;
-        elements = new Vector();
-    }
-
-    /**
-     * Adds a element definition to the path.
-     * @param location the location of the element to add (must not be
-     * <code>null</code> nor empty.
-     */
-    public void setLocation(File location) throws BuildException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        createPathElement().setLocation(location);
-    }
-
-
-    /**
-     * Parses a path definition and creates single PathElements.
-     * @param path the path definition.
-     */
-    public void setPath(String path) throws BuildException {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        createPathElement().setPath(path);
-    }
-
-    /**
-     * Makes this instance in effect a reference to another Path instance.
-     *
-     * <p>You must not set another attribute or nest elements inside
-     * this element if you make it a reference.</p>
-     */
-    public void setRefid(Reference r) throws BuildException {
-        if (!elements.isEmpty()) {
-            throw tooManyAttributes();
-        }
-        elements.addElement(r);
-        super.setRefid(r);
-    }
-
-    /**
-     * Creates the nested <pathelement> element.
-     */
-    public PathElement createPathElement() throws BuildException {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        PathElement pe = new PathElement();
-        elements.addElement(pe);
-        return pe;
-    }
-
-    /**
-     * Adds a nested <fileset> element.
-     */
-    public void addFileset(FileSet fs) throws BuildException {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        elements.addElement(fs);
-        checked = false;
-    }
-
-    /**
-     * Creates a nested <path> element.
-     */
-    public Path createPath() throws BuildException {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        Path p = new Path(project);
-        elements.addElement(p);
-        checked = false;
-        return p;
-    }
-
-    /**
-     * Append the contents of the other Path instance to this.
-     */
-    public void append(Path other) {
-        if (other == null) return;
-        String[] l = other.list();
-        for (int i=0; i<l.length; i++) {
-            if (elements.indexOf(l[i]) == -1) {
-                elements.addElement(l[i]);
-            }
-        }
-    }
-
-     /**
-     * Adds the components on the given path which exist to this
-     * Path. Components that don't exist, aren't added.
-     *
-     * @param source - source path whose components are examined for existence
-     */
-    public void addExisting(Path source) {
-        String[] list = source.list();
-        for (int i=0; i<list.length; i++) {
-            File f = null;
-            if (project != null) {
-                f = project.resolveFile(list[i]);
-            }
-            else {
-                f = new File(list[i]);
-            }
-
-            if (f.exists()) {
-                setLocation(f);
-            } 
-        }
-    }
-
-    /**
-     * Returns all path elements defined by this and nested path objects.
-     * @return list of path elements.
-     */
-    public String[] list() {
-        if (!checked) {
-            // make sure we don't have a circular reference here
-            Stack stk = new Stack();
-            stk.push(this);
-            dieOnCircularReference(stk, project);
-        }
-
-        Vector result = new Vector(2*elements.size());
-        for (int i=0; i<elements.size(); i++) {
-            Object o = elements.elementAt(i);
-            if (o instanceof Reference) {
-                Reference r = (Reference) o;
-                o = r.getReferencedObject(project);
-                // we only support references to paths right now
-                if (!(o instanceof Path)) {
-                    String msg = r.getRefId()+" doesn\'t denote a path";
-                    throw new BuildException(msg);
-                }
-            }
-            
-            if (o instanceof String) {
-                // obtained via append
-                addUnlessPresent(result, (String) o);
-            } else if (o instanceof PathElement) {
-                String[] parts = ((PathElement) o).getParts();
-                if (parts == null) {
-                    throw new BuildException("You must either set location or path on <pathelement>");
-                }
-                for (int j=0; j<parts.length; j++) {
-                    addUnlessPresent(result, parts[j]);
-                }
-            } else if (o instanceof Path) {
-                String[] parts = ((Path) o).list();
-                for (int j=0; j<parts.length; j++) {
-                    addUnlessPresent(result, parts[j]);
-                }
-            } else if (o instanceof FileSet) {
-                FileSet fs = (FileSet) o;
-                DirectoryScanner ds = fs.getDirectoryScanner(project);
-                String[] s = ds.getIncludedFiles();
-                File dir = fs.getDir(project);
-                for (int j=0; j<s.length; j++) {
-                    String canonicalPath;
-                    File f = new File(dir, s[j]);
-                    try {
-                        canonicalPath = f.getCanonicalPath();
-                    } catch(IOException e) {
-                        canonicalPath = f.getAbsolutePath();
-                    }
-                    addUnlessPresent(result, translateFile(canonicalPath));
-                } 
-            }
-        }
-        String[] res = new String[result.size()];
-        result.copyInto(res);
-        return res;
-    }
-
-
-    /**
-     * Returns a textual representation of the path, which can be used as
-     * CLASSPATH or PATH environment variable definition.
-     * @return a textual representation of the path.
-     */
-    public String toString() {
-        final String[] list = list();
-
-        // empty path return empty string
-        if (list.length == 0) return "";
-
-        // path containing one or more elements
-        final StringBuffer result = new StringBuffer(list[0].toString());
-        for (int i=1; i < list.length; i++) {
-            result.append(File.pathSeparatorChar);
-            result.append(list[i]);
-        }
-
-        return result.toString();
-    }
-
-    /**
-     * Splits a PATH (with : or ; as separators) into its parts.
-     */
-    public static String[] translatePath(Project project, String source) {
-        final Vector result = new Vector();
-        if (source == null) return new String[0];
-
-        PathTokenizer tok = new PathTokenizer(source);
-        StringBuffer element = new StringBuffer();
-        while (tok.hasMoreTokens()) {
-            element.setLength(0);
-            element.append(resolveFile(project, tok.nextToken()));
-            for (int i=0; i<element.length(); i++) {
-                translateFileSep(element, i);
-            }
-            result.addElement(element.toString());
-        }
-        String[] res = new String[result.size()];
-        result.copyInto(res);
-        return res;
-    }
-
-    /**
-     * Returns its argument with all file separator characters
-     * replaced so that they match the local OS conventions.  
-     */
-    public static String translateFile(String source) {
-        if (source == null) return "";
-
-        final StringBuffer result = new StringBuffer(source);
-        for (int i=0; i < result.length(); i++) {
-            translateFileSep(result, i);
-        }
-
-        return result.toString();
-    }
-
-    /**
-     * Translates all occurrences of / or \ to correct separator of the
-     * current platform and returns whether it had to do any
-     * replacements.  
-     */
-    protected static boolean translateFileSep(StringBuffer buffer, int pos) {
-        if (buffer.charAt(pos) == '/' || buffer.charAt(pos) == '\\') {
-            buffer.setCharAt(pos, File.separatorChar);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * How many parts does this Path instance consist of.
-     */
-    public int size() {
-        return list().length;
-    }
-
-    /**
-     * Return a Path that holds the same elements as this instance.
-     */
-    public Object clone() {
-        Path p = new Path(project);
-        p.append(this);
-        return p;
-    }
-
-    /**
-     * Overrides the version of DataType to recurse on all DataType
-     * child elements that may have been added.  
-     */
-    protected void dieOnCircularReference(Stack stk, Project p) 
-        throws BuildException {
-
-        if (checked) {
-            return;
-        }
-
-        Enumeration enum = elements.elements();
-        while (enum.hasMoreElements()) {
-            Object o = enum.nextElement();
-            if (o instanceof Reference) {
-                o = ((Reference) o).getReferencedObject(p);
-            }
-
-            if (o instanceof DataType) {
-                if (stk.contains(o)) {
-                    throw circularReference();
-                } else {
-                    stk.push(o);
-                    ((DataType) o).dieOnCircularReference(stk, p);
-                    stk.pop();
-                }
-            }
-        }
-        checked = true;
-    }
-
-    /**
-     * Resolve a filename with Project's help - if we know one that is.
-     *
-     * <p>Assume the filename is absolute if project is null.</p>
-     */
-    private static String resolveFile(Project project, String relativeName) {
-        if (project != null) {
-            File f = project.resolveFile(relativeName);
-            try {
-                return f.getCanonicalPath();
-            } catch(IOException e) {
-                project.log(e.getMessage(), Project.MSG_WARN);
-                return f.getAbsolutePath();
-            }
-        }
-        return relativeName;
-    }
-
-    /**
-     * Adds a String to the Vector if it isn't already included.
-     */
-    private static void addUnlessPresent(Vector v, String s) {
-        if (v.indexOf(s) == -1) {
-            v.addElement(s);
-        }
-    }
-
-    /**
-     * Concatenates the system class path in the order specified by
-     * the ${build.sysclasspath} property - using &quot;last&quot; as
-     * default value.
-     */
-    public Path concatSystemClasspath() {
-        return concatSystemClasspath("last");
-    }
-
-    /**
-     * Concatenates the system class path in the order specified by
-     * the ${build.sysclasspath} property - using the supplied value
-     * if ${build.sysclasspath} has not been set.
-     */
-    public Path concatSystemClasspath(String defValue) {
-
-        Path result = new Path(project);
-
-        String order = project.getProperty("build.sysclasspath");
-        if (order == null) order=defValue;
-
-        if (order.equals("only")) {
-            // only: the developer knows what (s)he is doing
-            result.addExisting(Path.systemClasspath);
-        
-        } else if (order.equals("first")) {
-            // first: developer could use a little help
-            result.addExisting(Path.systemClasspath);
-            result.addExisting(this);
-
-        } else if (order.equals("ignore")) {
-            // ignore: don't trust anyone
-            result.addExisting(this);
-
-        } else {
-            // last: don't trust the developer
-            if (!order.equals("last")) {
-                project.log("invalid value for build.sysclasspath: " + order, 
-                            Project.MSG_WARN);
-            }
-
-            result.addExisting(this);
-            result.addExisting(Path.systemClasspath);
-        }
-        
-
-        return result;
-
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/types/PatternSet.java b/src/main/org/apache/tools/ant/types/PatternSet.java
deleted file mode 100644
index bb47032..0000000
--- a/src/main/org/apache/tools/ant/types/PatternSet.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.ProjectHelper;
-import org.apache.tools.ant.BuildException;
-
-import java.io.*;
-import java.util.Enumeration;
-import java.util.Stack;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-/**
- * Named collection of include/exclude tags.
- *
- * <p>Moved out of MatchingTask to make it a standalone object that
- * could be referenced (by scripts for example).
- *
- * @author Arnout J. Kuiper <a href="mailto:ajkuiper@wxs.nl">ajkuiper@wxs.nl</a> 
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- * @author Sam Ruby <a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a>
- * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a>
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> 
- */
-public class PatternSet extends DataType {
-    private Vector includeList = new Vector();
-    private Vector excludeList = new Vector();
-    
-    private File incl = null;
-    private File excl = null;
-
-    /**
-     * inner class to hold a name on list.  "If" and "Unless" attributes
-     * may be used to invalidate the entry based on the existence of a 
-     * property (typically set thru the use of the Available task).
-     */
-    public class NameEntry {
-        private String name;
-        private String ifCond;
-        private String unlessCond;
-
-        public void setName(String name) { 
-            this.name = name; 
-        }
-
-        public void setIf(String cond) {
-            ifCond = cond;
-        }
-
-        public void setUnless(String cond) {
-            unlessCond = cond;
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public String evalName(Project p) { 
-            return valid(p) ? name : null; 
-        }
-
-        private boolean valid(Project p) {
-            if (ifCond != null && p.getProperty(ifCond) == null) {
-                return false;
-            } else if (unlessCond != null && p.getProperty(unlessCond) != null) {
-                return false;
-            }
-            return true;
-        }
-    }
-
-    public PatternSet() {
-        super();
-    }
-
-    /**
-     * Makes this instance in effect a reference to another PatternSet
-     * instance.
-     *
-     * <p>You must not set another attribute or nest elements inside
-     * this element if you make it a reference.</p> 
-     */
-    public void setRefid(Reference r) throws BuildException {
-        if (!includeList.isEmpty() || !excludeList.isEmpty()) {
-            throw tooManyAttributes();
-        }
-        super.setRefid(r);
-    }
-
-    /**
-     * add a name entry on the include list
-     */
-    public NameEntry createInclude() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return addPatternToList(includeList);
-    }
-    
-    /**
-     * add a name entry on the exclude list
-     */
-    public NameEntry createExclude() {
-        if (isReference()) {
-            throw noChildrenAllowed();
-        }
-        return addPatternToList(excludeList);
-    }
-
-    /**
-     * Sets the set of include patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param includes the string containing the include patterns
-     */
-    public void setIncludes(String includes) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        if (includes != null && includes.length() > 0) {
-            StringTokenizer tok = new StringTokenizer(includes, ", ", false);
-            while (tok.hasMoreTokens()) {
-                createInclude().setName(tok.nextToken());
-            }
-        }
-    }
-
-    /**
-     * Sets the set of exclude patterns. Patterns may be separated by a comma
-     * or a space.
-     *
-     * @param excludes the string containing the exclude patterns
-     */
-    public void setExcludes(String excludes) {
-        if (isReference()) {
-            throw tooManyAttributes();
-        }
-        if (excludes != null && excludes.length() > 0) {
-            StringTokenizer tok = new StringTokenizer(excludes, ", ", false);
-            while (tok.hasMoreTokens()) {
-                createExclude().setName(tok.nextToken());
-            }
-        }
-    }
-
-    /**
-     * add a name entry to the given list
-     */
-    private NameEntry addPatternToList(Vector list) {
-        NameEntry result = new NameEntry();
-        list.addElement(result);
-        return result;
-    }
-
-    /**
-     * Sets the name of the file containing the includes patterns.
-     *
-     * @param incl The file to fetch the include patterns from.  
-     */
-     public void setIncludesfile(File incl) throws BuildException {
-         if (isReference()) {
-             throw tooManyAttributes();
-         }
-         if (!incl.exists()) {
-             throw new BuildException("Includesfile "+incl.getAbsolutePath()
-                                      +" not found.");
-         }
-         this.incl = incl;
-     }
-
-    /**
-     * Sets the name of the file containing the excludes patterns.
-     *
-     * @param excl The file to fetch the exclude patterns from.  
-     */
-     public void setExcludesfile(File excl) throws BuildException {
-         if (isReference()) {
-             throw tooManyAttributes();
-         }
-         if (!excl.exists()) {
-             throw new BuildException("Excludesfile "+excl.getAbsolutePath()
-                                      +" not found.");
-         }
-         this.excl = excl;
-     }
-    
-    /**
-     *  Reads path matching patterns from a file and adds them to the
-     *  includes or excludes list (as appropriate).  
-     */
-    private void readPatterns(File patternfile, Vector patternlist, Project p)
-        throws BuildException {
-        
-        try {
-            // Get a FileReader
-            BufferedReader patternReader = 
-                new BufferedReader(new FileReader(patternfile)); 
-        
-            // Create one NameEntry in the appropriate pattern list for each 
-            // line in the file.
-            String line = patternReader.readLine();
-            while (line != null) {
-                if (line.length() > 0) {
-                    line = ProjectHelper.replaceProperties(p, line,
-                                                           p.getProperties());
-                    addPatternToList(patternlist).setName(line);
-                }
-                line = patternReader.readLine();
-            }
-        } catch(IOException ioe)  {
-            String msg = "An error occured while reading from pattern file: " 
-                + patternfile;
-            throw new BuildException(msg, ioe);
-        }
-    }
-
-    /**
-     * Adds the patterns of the other instance to this set.
-     */
-    public void append(PatternSet other, Project p) {
-        if (isReference()) {
-            throw new BuildException("Cannot append to a reference");
-        }
-
-        String[] incl = other.getIncludePatterns(p);
-        if (incl != null) {
-            for (int i=0; i<incl.length; i++) {
-                createInclude().setName(incl[i]);
-            }
-        }
-        
-        String[] excl = other.getExcludePatterns(p);
-        if (excl != null) {
-            for (int i=0; i<excl.length; i++) {
-                createExclude().setName(excl[i]);
-            }
-        }
-    }
-
-    /**
-     * Returns the filtered include patterns.
-     */
-    public String[] getIncludePatterns(Project p) {
-        if (isReference()) {
-            return getRef(p).getIncludePatterns(p);
-        } else {
-            readFiles(p);
-            return makeArray(includeList, p);
-        }
-    }
-
-    /**
-     * Returns the filtered include patterns.
-     */
-    public String[] getExcludePatterns(Project p) {
-        if (isReference()) {
-            return getRef(p).getExcludePatterns(p);
-        } else {
-            readFiles(p);
-            return makeArray(excludeList, p);
-        }
-    }
-
-    /**
-     * helper for FileSet.
-     */
-    boolean hasPatterns() {
-        return incl != null || excl != null
-            || includeList.size() > 0 || excludeList.size() > 0;
-    }
-
-    /**
-     * Performs the check for circular references and returns the
-     * referenced PatternSet.  
-     */
-    private PatternSet getRef(Project p) {
-        if (!checked) {
-            Stack stk = new Stack();
-            stk.push(this);
-            dieOnCircularReference(stk, p);
-        }
-        
-        Object o = ref.getReferencedObject(p);
-        if (!(o instanceof PatternSet)) {
-            String msg = ref.getRefId()+" doesn\'t denote a patternset";
-            throw new BuildException(msg);
-        } else {
-            return (PatternSet) o;
-        }
-    }
-
-    /**
-     * Convert a vector of NameEntry elements into an array of Strings.
-     */
-    private String[] makeArray(Vector list, Project p) {
-        if (list.size() == 0) return null;
-
-        Vector tmpNames = new Vector();
-        for (Enumeration e = list.elements() ; e.hasMoreElements() ;) {
-            NameEntry ne = (NameEntry)e.nextElement();
-            String pattern = ne.evalName(p);
-            if (pattern != null && pattern.length() > 0) {
-                tmpNames.addElement(pattern);
-            }
-        }
-
-        String result[] = new String[tmpNames.size()];
-        tmpNames.copyInto(result);
-        return result;
-    }
-        
-    /**
-     * Read includefile ot excludefile if not already done so.
-     */
-    private void readFiles(Project p) {
-        if (incl != null) {
-            readPatterns(incl, includeList, p);
-            incl = null;
-        }
-        if (excl != null) {
-            readPatterns(excl, excludeList, p);
-            excl = null;
-        }
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/types/Reference.java b/src/main/org/apache/tools/ant/types/Reference.java
deleted file mode 100644
index 0b3fae2..0000000
--- a/src/main/org/apache/tools/ant/types/Reference.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.BuildException;
-
-/**
- * Class to hold a reference to another object in the project.
- *
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> 
- */
-public class Reference {
-
-    private String refid;
-
-    public Reference() {
-        super();
-    }
-
-    public Reference(String id) {
-        this();
-        setRefId(id);
-    }
-
-    public void setRefId(String id) {
-        refid = id;
-    }
-
-    public String getRefId() {
-        return refid;
-    }
-
-    public Object getReferencedObject(Project project) throws BuildException {
-        if (refid == null) {
-            throw new BuildException("No reference specified");
-        }
-        
-        Object o = project.getReferences().get(refid);
-        if (o == null) {
-            throw new BuildException("Reference "+refid+" not found.");
-        }
-        return o;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/types/ZipFileSet.java b/src/main/org/apache/tools/ant/types/ZipFileSet.java
deleted file mode 100644
index 7f67932..0000000
--- a/src/main/org/apache/tools/ant/types/ZipFileSet.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-package org.apache.tools.ant.types;
-
-import java.io.File;
-import java.util.Stack;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-
-/**
- * A ZipFileSet is a FileSet with extra attributes useful in the context of 
- * Zip/Jar tasks.
- *
- * A ZipFileSet extends FileSets with the ability to extract a subset of the
- * entries of a Zip file for inclusion in another Zip file.  It also includes
- * a prefix attribute which is prepended to each entry in the output Zip file.
- *
- * At present, ZipFileSets are not surfaced in the public API.  FileSets
- * nested in a Zip task are instantiated as ZipFileSets, and their attributes
- * are only recognized in the context of the the Zip task.
- * It is not possible to define a ZipFileSet outside of the Zip task and
- * refer to it via a refid.  However a standard FileSet may be included by
- * reference in the Zip task, and attributes in the refering ZipFileSet
- * can augment FileSet definition.
- *
- * @author Don Ferguson <a href="mailto:don@bea.com">don@bea.com</a>
- */
-public class ZipFileSet extends FileSet {
-
-    private File srcFile          = null;
-    private String prefix         = "";
-    private String fullpath       = "";
-    private boolean hasDir        = false;
-
-    /**
-     * Set the directory for the fileset.  Prevents both "dir" and "src"
-     * from being specified.
-     */
-    public void setDir(File dir) throws BuildException {
-        if (srcFile != null) {
-            throw new BuildException("Cannot set both dir and src attributes");
-        } else {
-            super.setDir(dir);
-            hasDir = true;
-        }
-    }
-
-    /**
-     * Set the source Zip file for the zipfileset.  Prevents both
-     * "dir" and "src" from being specified.
-     *
-     * @param srcFile The zip file from which to extract entries.
-     */
-    public void setSrc(File srcFile) {
-        if (hasDir) {
-            throw new BuildException("Cannot set both dir and src attributes");
-        }
-        this.srcFile = srcFile;
-    }
-
-    /**
-     * Get the zip file from which entries will be extracted.
-     * References are not followed, since it is not possible
-     * to have a reference to a ZipFileSet, only to a FileSet.
-     */
-    public File getSrc() {
-        return srcFile;
-    }
-
-    /**
-     * Prepend this prefix to the path for each zip entry.
-     * Does not perform reference test; the referenced file set
-     * can be augmented with a prefix.
-     *
-     * @param prefix The prefix to prepend to entries in the zip file.
-     */
-    public void setPrefix(String prefix) {
-        this.prefix = prefix;
-    }
-
-    /**
-     * Return the prefix prepended to entries in the zip file.
-     */
-    public String getPrefix() {
-        return prefix;
-    }
-
-    /**
-     * Set the full pathname of the single entry in this fileset.
-     *
-     * @param prefix The prefix to prepend to entries in the zip file.
-     */
-    public void setFullpath(String fullpath) {
-        this.fullpath = fullpath;
-    }
-
-    /**
-     * Return the full pathname of the single entry in this fileset.
-     */
-    public String getFullpath() {
-        return fullpath;
-    }
-
-    /**
-     * Return the DirectoryScanner associated with this FileSet.
-     * If the ZipFileSet defines a source Zip file, then a ZipScanner
-     * is returned instead.
-     */
-    public DirectoryScanner getDirectoryScanner(Project p) {
-        if (isReference()) {
-            return getRef(p).getDirectoryScanner(p);
-        }
-        if (srcFile != null) {
-            ZipScanner zs = new ZipScanner();
-            zs.setSrc(srcFile);
-            super.setDir(new File("."));
-            setupDirectoryScanner(zs, p);
-            zs.init();
-            return zs;
-        } else {
-            return super.getDirectoryScanner(p);
-        }
-    }    
-  
-}
diff --git a/src/main/org/apache/tools/ant/types/ZipScanner.java b/src/main/org/apache/tools/ant/types/ZipScanner.java
deleted file mode 100644
index 85178f1..0000000
--- a/src/main/org/apache/tools/ant/types/ZipScanner.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.DirectoryScanner;
-import java.io.File;
-
-/**
- * ZipScanner accesses the pattern matching algorithm in DirectoryScanner,
- * which are protected methods that can only be accessed by subclassing.
- *
- * This implementation of FileScanner defines getIncludedFiles to return
- * only the Zip File which is being scanned, not the matching Zip entries.
- * Arguably, it should return the matching entries, however this would
- * complicate existing code which assumes that FileScanners return a
- * set of file system files that can be accessed directly.
- * 
- * @author Don Ferguson <a href="mailto:don@bea.com">don@bea.com</a>
- */
-public class ZipScanner extends DirectoryScanner {
-
-    /**
-     * The zip file which should be scanned.
-     */
-    protected File srcFile;
-
-    /**
-     * Sets the srcFile for scanning. This is the jar or zip file that is scanned
-     * for matching entries.
-     *
-     * @param srcFile the (non-null) zip file name for scanning
-     */
-    public void setSrc(File srcFile) {
-        this.srcFile = srcFile;
-    }
-
-    /**
-     * Returns the zip file itself, not the matching entries within the zip file.
-     * This keeps the uptodate test in the Zip task simple; otherwise we'd need
-     * to treat zip filesets specially.
-     *
-     * @return the source file from which entries will be extracted.
-     */
-    public String[] getIncludedFiles() {
-        String[] result = new String[1];
-        result[0] = srcFile.getAbsolutePath();
-        return result;
-    }
-
-    /**
-     * Returns an empty list of directories to create.
-     */
-    public String[] getIncludedDirectories() {
-        return new String[0];
-    }
-
-    /**
-     * Initialize DirectoryScanner data structures.
-     */
-    public void init() {
-        if (includes == null) {
-            // No includes supplied, so set it to 'matches all'
-            includes = new String[1];
-            includes[0] = "**";
-        }
-        if (excludes == null) {
-            excludes = new String[0];
-        }
-    }
-
-    /**
-     * Matches a jar entry against the includes/excludes list,
-     * normalizing the path separator.
-     *
-     * @param path the (non-null) path name to test for inclusion
-     *
-     * @return <code>true</code> if the path should be included
-     *         <code>false</code> otherwise.
-     */
-    public boolean match(String path) {
-        String vpath = path.replace('/', File.separatorChar).
-            replace('\\', File.separatorChar);
-        return isIncluded(vpath) && !isExcluded(vpath);
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/types/defaults.properties b/src/main/org/apache/tools/ant/types/defaults.properties
deleted file mode 100644
index fe10486..0000000
--- a/src/main/org/apache/tools/ant/types/defaults.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-path=org.apache.tools.ant.types.Path
-fileset=org.apache.tools.ant.types.FileSet
-patternset=org.apache.tools.ant.types.PatternSet
-mapper=org.apache.tools.ant.types.Mapper
diff --git a/src/main/org/apache/tools/ant/util/DOMElementWriter.java b/src/main/org/apache/tools/ant/util/DOMElementWriter.java
deleted file mode 100644
index cc44790..0000000
--- a/src/main/org/apache/tools/ant/util/DOMElementWriter.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util;
-
-import java.io.*;
-import org.w3c.dom.*;
-
-/**
- * Writes a DOM tree to a given Writer.
- *
- * <p>Utility class used by {@link org.apache.tools.ant.XmlLogger
- * XmlLogger} and
- * org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter
- * XMLJUnitResultFormatter}.</p>
- *
- * @author The original author of XmlLogger
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @author <a href="mailto:bailliez@noos.fr">Stephane Bailliez</tt>
- */
-public class DOMElementWriter {
-
-    private static String lSep = System.getProperty("line.separator");
-    private StringBuffer sb = new StringBuffer();
-
-    /**
-     * Don't try to be too smart but at least recognize the predefined
-     * entities.
-     */
-    protected String[] knownEntities = {"gt", "amp", "lt", "apos", "quot"};
-    
-    /**
-     * Writes a DOM tree to a stream.
-     *
-     * @param element the Root DOM element of the tree
-     * @param out where to send the output
-     * @param indent number of 
-     * @param indentWith strings, 
-     *       that should be used to indent the corresponding tag.
-     */
-    public void write(Element element, Writer out, int indent, 
-                      String indentWith)
-        throws IOException {
-
-        // Write indent characters
-        for (int i = 0; i < indent; i++) {
-            out.write(indentWith);
-        }
-
-        // Write element
-        out.write("<");
-        out.write(element.getTagName());
-
-        // Write attributes
-        NamedNodeMap attrs = element.getAttributes();
-        for (int i = 0; i < attrs.getLength(); i++) {
-            Attr attr = (Attr) attrs.item(i);
-            out.write(" ");
-            out.write(attr.getName());
-            out.write("=\"");
-            out.write(encode(attr.getValue()));
-            out.write("\"");
-        }
-        out.write(">");
-
-        // Write child elements and text
-        boolean hasChildren = false;
-        NodeList children = element.getChildNodes();
-        for (int i = 0; i < children.getLength(); i++) {
-            Node child = children.item(i);
-
-            switch (child.getNodeType()) {
-                
-            case Node.ELEMENT_NODE:
-                if (!hasChildren) {
-                    out.write(lSep);
-                    hasChildren = true;
-                }
-                write((Element)child, out, indent + 1, indentWith);
-                break;
-                
-            case Node.TEXT_NODE:
-            case Node.CDATA_SECTION_NODE:
-                out.write("<![CDATA[");
-                out.write(((Text)child).getData());
-                out.write("]]>");
-                break;
-
-            case Node.ENTITY_REFERENCE_NODE:
-                out.write('&');
-                out.write(child.getNodeName());
-                out.write(';');
-                break;
-
-            case Node.PROCESSING_INSTRUCTION_NODE:
-                out.write("<?");
-                out.write(child.getNodeName());
-                String data = child.getNodeValue();
-                if ( data != null && data.length() > 0 ) {
-                    out.write(' ');
-                    out.write(data);
-                }
-                out.write("?>");
-                break;
-            }
-        }
-
-        // If we had child elements, we need to indent before we close
-        // the element, otherwise we're on the same line and don't need
-        // to indent
-        if (hasChildren) {
-            for (int i = 0; i < indent; i++) {
-                out.write(indentWith);
-            }
-        }
-
-        // Write element close
-        out.write("</");
-        out.write(element.getTagName());
-        out.write(">");
-        out.write(lSep);
-    }
-
-    /**
-     * Escape &lt;, &amp; and &quot; as their entities.
-     */
-    public String encode(String value) {
-        sb.setLength(0);
-        for (int i=0; i<value.length(); i++) {
-            char c = value.charAt(i);
-            switch (c) {
-            case '<':
-                sb.append("&lt;");
-                break;
-            case '\"':
-                sb.append("&quot;");
-                break;
-            case '&':
-                int nextSemi = value.indexOf(";", i);
-                if (nextSemi < 0
-                    || !isReference(value.substring(i, nextSemi+1))) {
-                    sb.append("&amp;");
-                } else {
-                    sb.append('&');
-                }
-                break;
-            default:
-                sb.append(c);
-                break;
-            }
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Is the given argument a character or entity reference?
-     */
-    public boolean isReference(String ent) {
-        if (!(ent.charAt(0) == '&') || !ent.endsWith(";")) {
-            return false;
-        }
-
-        if (ent.charAt(1) == '#') {
-            if (ent.charAt(2) == 'x') {
-                try {
-                    Integer.parseInt(ent.substring(3, ent.length()-1), 16);
-                    return true;
-                } catch (NumberFormatException nfe) {
-                    return false;
-                }
-            } else {
-                try {
-                    Integer.parseInt(ent.substring(2, ent.length()-1));
-                    return true;
-                } catch (NumberFormatException nfe) {
-                    return false;
-                }
-            }
-        }
-
-        String name = ent.substring(1, ent.length() - 1);
-        for (int i=0; i<knownEntities.length; i++) {
-            if (name.equals(knownEntities[i])) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/util/FileNameMapper.java b/src/main/org/apache/tools/ant/util/FileNameMapper.java
deleted file mode 100644
index 5a732ac..0000000
--- a/src/main/org/apache/tools/ant/util/FileNameMapper.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util;
-
-/**
- * Interface to be used by SourceFileScanner.
- *
- * <p>Used to find the name of the target file(s) corresponding to a
- * source file.</p>
- *
- * <p>The rule by which the file names are transformed is specified
- * via the setFrom and setTo methods. The exact meaning of these is
- * implementation dependent.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public interface FileNameMapper {
-
-    /**
-     * Sets the from part of the transformation rule.
-     */
-    public void setFrom(String from);
-
-    /**
-     * Sets the to part of the transformation rule.
-     */
-    public void setTo(String to);
-
-    /**
-     * Returns an array containing the target filename(s) for the
-     * given source file.
-     *
-     * <p>if the given rule doesn't apply to the source file,
-     * implementation must return null. SourceFileScanner will then
-     * omit the source file in question.</p> 
-     *
-     * @param sourceFileName the name of the source file relative to
-     *                       some given basedirectory.
-     */
-    public String[] mapFileName(String sourceFileName);
-}
diff --git a/src/main/org/apache/tools/ant/util/FlatFileNameMapper.java b/src/main/org/apache/tools/ant/util/FlatFileNameMapper.java
deleted file mode 100644
index 4412d17..0000000
--- a/src/main/org/apache/tools/ant/util/FlatFileNameMapper.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util;
-
-/**
- * Implementation of FileNameMapper that always returns the source
- * file name without any leading directory information.
- *
- * <p>This is the default FileNameMapper for the copy and move
- * tasks if the flatten attribute has been set.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class FlatFileNameMapper implements FileNameMapper {
-
-    /**
-     * Ignored.
-     */
-    public void setFrom(String from) {}
-
-    /**
-     * Ignored.
-     */
-    public void setTo(String to) {}
-
-    /**
-     * Returns an one-element array containing the source file name
-     * without any leading directory information.
-     */
-    public String[] mapFileName(String sourceFileName) {
-        return new String[] {new java.io.File(sourceFileName).getName()};
-    }
-}
diff --git a/src/main/org/apache/tools/ant/util/GlobPatternMapper.java b/src/main/org/apache/tools/ant/util/GlobPatternMapper.java
deleted file mode 100644
index d2ca22a..0000000
--- a/src/main/org/apache/tools/ant/util/GlobPatternMapper.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util;
-
-/**
- * Implementation of FileNameMapper that does simple wildcard pattern
- * replacements.
- *
- * <p>This does simple translations like *.foo -> *.bar where the
- * prefix to .foo will be left unchanged. It only handles a single *
- * character, use regular expressions for more complicated
- * situations.</p>
- *
- * <p>This is one of the more useful Mappers, it is used by javac for
- * example.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class GlobPatternMapper implements FileNameMapper {
-    /**
-     * Part of &quot;from&quot; pattern before the *.
-     */
-    protected String fromPrefix = null;
-
-    /**
-     * Part of &quot;from&quot; pattern after the *.
-     */
-    protected String fromPostfix = null;
-    
-    /**
-     * Length of the prefix (&quot;from&quot; pattern).
-     */
-    protected int prefixLength;
-
-    /**
-     * Length of the postfix (&quot;from&quot; pattern).
-     */
-    protected int postfixLength;
-
-    /**
-     * Part of &quot;to&quot; pattern before the *.
-     */
-    protected String toPrefix = null;
-
-    /**
-     * Part of &quot;to&quot; pattern after the *.
-     */
-    protected String toPostfix = null;
-    
-    /**
-     * Sets the &quot;from&quot; pattern. Required.
-     */
-    public void setFrom(String from) {
-        int index = from.lastIndexOf("*");
-        if (index == -1) {
-            fromPrefix = from;
-            fromPostfix = "";
-        } else {
-            fromPrefix = from.substring(0, index);
-            fromPostfix = from.substring(index+1);
-        }
-        prefixLength = fromPrefix.length();
-        postfixLength = fromPostfix.length();
-    }
-
-    /**
-     * Sets the &quot;to&quot; pattern. Required.
-     */
-    public void setTo(String to) {
-        int index = to.lastIndexOf("*");
-        if (index == -1) {
-            toPrefix = to;
-            toPostfix = "";
-        } else {
-            toPrefix = to.substring(0, index);
-            toPostfix = to.substring(index+1);
-        }
-    }
-
-    /**
-     * Returns null if the source file name doesn't match the
-     * &quot;from&quot; pattern, an one-element array containing the
-     * translated file otherwise.
-     */
-    public String[] mapFileName(String sourceFileName) {
-        if (fromPrefix == null 
-            || !sourceFileName.startsWith(fromPrefix) 
-            || !sourceFileName.endsWith(fromPostfix)) {
-            return null;
-        }
-        return new String[] {toPrefix 
-                                 + extractVariablePart(sourceFileName)
-                                 + toPostfix};
-    }
-
-    /**
-     * Returns the part of the given string that matches the * in the
-     * &quot;from&quot; pattern.
-     */
-    protected String extractVariablePart(String name) {
-        return name.substring(prefixLength,
-                              name.length() - postfixLength);
-    }
-}
diff --git a/src/main/org/apache/tools/ant/util/IdentityMapper.java b/src/main/org/apache/tools/ant/util/IdentityMapper.java
deleted file mode 100644
index 587150a..0000000
--- a/src/main/org/apache/tools/ant/util/IdentityMapper.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util;
-
-/**
- * Implementation of FileNameMapper that always returns the source file name.
- *
- * <p>This is the default FileNameMapper for the copy and move
- * tasks.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class IdentityMapper implements FileNameMapper {
-
-    /**
-     * Ignored.
-     */
-    public void setFrom(String from) {}
-
-    /**
-     * Ignored.
-     */
-    public void setTo(String to) {}
-
-    /**
-     * Returns an one-element array containing the source file name.
-     */
-    public String[] mapFileName(String sourceFileName) {
-        return new String[] {sourceFileName};
-    }
-}
diff --git a/src/main/org/apache/tools/ant/util/MergingMapper.java b/src/main/org/apache/tools/ant/util/MergingMapper.java
deleted file mode 100644
index 524b7ad..0000000
--- a/src/main/org/apache/tools/ant/util/MergingMapper.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util;
-
-/**
- * Implementation of FileNameMapper that always returns the same
- * target file name.
- *
- * <p>This is the default FileNameMapper for the archiving tasks and
- * uptodate.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class MergingMapper implements FileNameMapper {
-    protected String[] mergedFile = null;
-
-    /**
-     * Ignored.
-     */
-    public void setFrom(String from) {}
-
-    /**
-     * Sets the name of the merged file.
-     */
-    public void setTo(String to) {
-        mergedFile = new String[] {to};
-    }
-
-    /**
-     * Returns an one-element array containing the file name set via setTo.
-     */
-    public String[] mapFileName(String sourceFileName) {
-        return mergedFile;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/util/RegexpPatternMapper.java b/src/main/org/apache/tools/ant/util/RegexpPatternMapper.java
deleted file mode 100644
index 8ec4f4d..0000000
--- a/src/main/org/apache/tools/ant/util/RegexpPatternMapper.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.util.regexp.RegexpMatcher;
-import org.apache.tools.ant.util.regexp.RegexpMatcherFactory;
-
-import java.util.Enumeration;
-import java.util.Vector;
-
-/**
- * Implementation of FileNameMapper that does regular expression
- * replacements.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class RegexpPatternMapper implements FileNameMapper {
-    protected RegexpMatcher reg = null;
-    protected char[] to = null;
-    protected StringBuffer result = new StringBuffer();
-
-    public RegexpPatternMapper() throws BuildException {
-        reg = (new RegexpMatcherFactory()).newRegexpMatcher();
-    }
-    
-    /**
-     * Sets the &quot;from&quot; pattern. Required.
-     */
-    public void setFrom(String from) throws BuildException {
-        try {
-            reg.setPattern(from);
-        } catch (NoClassDefFoundError e) {
-            // depending on the implementation the actual RE won't
-            // get instantiated in the constructor.
-            throw new BuildException("Cannot load regular expression matcher",
-                                     e);
-        }
-    }
-
-    /**
-     * Sets the &quot;to&quot; pattern. Required.
-     */
-    public void setTo(String to) {
-        this.to = to.toCharArray();
-    }
-
-    /**
-     * Returns null if the source file name doesn't match the
-     * &quot;from&quot; pattern, an one-element array containing the
-     * translated file otherwise.
-     */
-    public String[] mapFileName(String sourceFileName) {
-        if (reg == null  || to == null
-            || !reg.matches(sourceFileName)) {
-            return null;
-        }
-        return new String[] {replaceReferences(sourceFileName)};
-    }
-
-    /**
-     * Replace all backreferences in the to pattern with the matched
-     * groups of the source.
-     */
-    protected String replaceReferences(String source) {
-        Vector v = reg.getGroups(source);
-        
-        result.setLength(0);
-        for (int i=0; i<to.length; i++) {
-            if (to[i] == '\\') {
-                if (++i < to.length) {
-                    int value = Character.digit(to[i], 10);
-                    if (value > -1) {
-                        result.append((String) v.elementAt(value));
-                    } else {
-                        result.append(to[i]);
-                    }
-                } else {
-                    // XXX - should throw an exception instead?
-                    result.append('\\');
-                }
-            } else {
-                result.append(to[i]);
-            }
-        }
-        return result.toString();
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/util/SourceFileScanner.java b/src/main/org/apache/tools/ant/util/SourceFileScanner.java
deleted file mode 100644
index 57d7771..0000000
--- a/src/main/org/apache/tools/ant/util/SourceFileScanner.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-
-import java.io.File;
-import java.util.Vector;
-
-/**
- * Utility class that collects the functionality of the various
- * scanDir methods that have been scattered in several tasks before.
- *
- * <p>The only method returns an array of source files. The array is a
- * subset of the files given as a parameter and holds only those that
- * are newer than their corresponding target files.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class SourceFileScanner {
-
-    protected Task task;
-
-    /**
-     * @param task The task we should log messages through
-     */
-    public SourceFileScanner(Task task) {
-        this.task = task;
-    }
-
-    /**
-     * Restrict the given set of files to those that are newer than
-     * their corresponding target files.
-     *
-     * @param files   the original set of files
-     * @param srcDir  all files are relative to this directory
-     * @param destDir target files live here. if null file names
-     *                returned by the mapper are assumed to be absolute.
-     * @param mapper  knows how to construct a target file names from
-     *                source file names.
-     */
-    public String[] restrict(String[] files, File srcDir, File destDir,
-                             FileNameMapper mapper) {
-
-        long now = (new java.util.Date()).getTime();
-        StringBuffer targetList = new StringBuffer();
-
-        /*
-          If we're on Windows, we have to munge the time up to 2 secs to
-          be able to check file modification times.
-          (Windows has a max resolution of two secs for modification times)
-        */
-        String osname = System.getProperty("os.name").toLowerCase();
-        if ( osname.indexOf("windows") >= 0 ) {
-            now += 2000;
-        }
-
-        Vector v = new Vector();
-        for (int i=0; i< files.length; i++) {
-
-            String[] targets = mapper.mapFileName(files[i]);
-            if (targets == null || targets.length == 0) {
-                task.log(files[i]+" skipped - don\'t know how to handle it",
-                         Project.MSG_VERBOSE);
-                continue;
-            }
-
-            File src = new File(srcDir, files[i]);
-            if (src.lastModified() > now) {
-                task.log("Warning: "+files[i]+" modified in the future.", 
-                         Project.MSG_WARN);
-            }
-
-            boolean added = false;
-            targetList.setLength(0);
-            for (int j=0; !added && j<targets.length; j++) {
-                File dest = null;
-                if (destDir == null) {
-                    dest = new File(targets[j]);
-                } else {
-                    dest = new File(destDir, targets[j]);
-                }
-                
-                if (!dest.exists()) {
-                    task.log(files[i]+" added as "+dest.getAbsolutePath()+" doesn\'t exist.",
-                             Project.MSG_VERBOSE);
-                    v.addElement(files[i]);
-                    added = true;
-                } else if (src.lastModified() > dest.lastModified()) {
-                    task.log(files[i]+" added as "+dest.getAbsolutePath()+" is outdated.",
-                             Project.MSG_VERBOSE);
-                    v.addElement(files[i]);
-                    added = true;
-                } else {
-                    if (targetList.length() > 0) {
-                        targetList.append(", ");
-                    }
-                    targetList.append(dest.getAbsolutePath());
-                }
-            }
-
-            if (!added) {
-                task.log(files[i]+" omitted as "+targetList.toString()
-                         + (targets.length == 1 ? " is" : " are ")
-                         + " up to date.", Project.MSG_VERBOSE);
-            }
-            
-        }
-        String[] result = new String[v.size()];
-        v.copyInto(result);
-        return result;
-    }
-
-    /**
-     * Convinience layer on top of restrict that returns the source
-     * files as File objects (containing absolute paths if srcDir is
-     * absolute).
-     */
-    public File[] restrictAsFiles(String[] files, File srcDir, File destDir,
-                                  FileNameMapper mapper) {
-        String[] res = restrict(files, srcDir, destDir, mapper);
-        File[] result = new File[res.length];
-        for (int i=0; i<res.length; i++) {
-            result[i] = new File(srcDir, res[i]);
-        }
-        return result;
-    }
-}
diff --git a/src/main/org/apache/tools/ant/util/regexp/JakartaOroMatcher.java b/src/main/org/apache/tools/ant/util/regexp/JakartaOroMatcher.java
deleted file mode 100644
index c2baf24..0000000
--- a/src/main/org/apache/tools/ant/util/regexp/JakartaOroMatcher.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util.regexp;
-
-import org.apache.oro.text.regex.*;
-
-import org.apache.tools.ant.BuildException;
-import java.util.Vector;
-
-/**
- * Implementation of RegexpMatcher for Jakarta-ORO.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class JakartaOroMatcher implements RegexpMatcher {
-
-    protected Perl5Matcher reg = new Perl5Matcher();
-    protected Perl5Compiler comp = new Perl5Compiler();
-    private Pattern pattern;
-
-    /**
-     * Set the regexp pattern from the String description.
-     */
-    public void setPattern(String pattern) throws BuildException {
-        try {
-            this.pattern = comp.compile(pattern);
-        } catch (MalformedPatternException e) {
-            throw new BuildException(e);
-        }
-    }
-
-    /**
-     * Get a String representation of the regexp pattern
-     */
-    public String getPattern() {
-        return pattern.getPattern();
-    }
-
-    /**
-     * Does the given argument match the pattern?
-     */
-    public boolean matches(String argument) {
-        return reg.contains(argument, pattern);
-    }
-
-    /**
-     * Returns a Vector of matched groups found in the argument.
-     *
-     * <p>Group 0 will be the full match, the rest are the
-     * parenthesized subexpressions</p>.
-     */
-    public Vector getGroups(String argument) {
-        if (!matches(argument)) {
-            return null;
-        }
-        Vector v = new Vector();
-        MatchResult mr = reg.getMatch();
-        for (int i=0; i<mr.groups(); i++) {
-            v.addElement(mr.group(i));
-        }
-        return v;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/util/regexp/JakartaRegexpMatcher.java b/src/main/org/apache/tools/ant/util/regexp/JakartaRegexpMatcher.java
deleted file mode 100644
index 2207e0c..0000000
--- a/src/main/org/apache/tools/ant/util/regexp/JakartaRegexpMatcher.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util.regexp;
-
-import org.apache.regexp.*;
-
-import org.apache.tools.ant.BuildException;
-import java.util.Vector;
-
-/**
- * Implementation of RegexpMatcher for Jakarta-Regexp.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class JakartaRegexpMatcher implements RegexpMatcher {
-
-    protected RE reg = null;
-    private String pattern;
-
-    /**
-     * Set the regexp pattern from the String description.
-     */
-    public void setPattern(String pattern) throws BuildException {
-        try {
-            this.pattern = pattern;
-            reg = new RE(pattern);
-        } catch (RESyntaxException e) {
-            throw new BuildException(e);
-        }
-    }
-
-    /**
-     * Get a String representation of the regexp pattern
-     */
-    public String getPattern() {
-        return pattern;
-    }
-
-    /**
-     * Does the given argument match the pattern?
-     */
-    public boolean matches(String argument) {
-        return reg.match(argument);
-    }
-
-    /**
-     * Returns a Vector of matched groups found in the argument.
-     *
-     * <p>Group 0 will be the full match, the rest are the
-     * parenthesized subexpressions</p>.
-     */
-    public Vector getGroups(String argument) {
-        if (!matches(argument)) {
-            return null;
-        }
-        Vector v = new Vector();
-        for (int i=0; i<reg.getParenCount(); i++) {
-            v.addElement(reg.getParen(i));
-        }
-        return v;
-    }
-
-}
diff --git a/src/main/org/apache/tools/ant/util/regexp/RegexpMatcher.java b/src/main/org/apache/tools/ant/util/regexp/RegexpMatcher.java
deleted file mode 100644
index 8591f83..0000000
--- a/src/main/org/apache/tools/ant/util/regexp/RegexpMatcher.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util.regexp;
-
-import org.apache.tools.ant.BuildException;
-import java.util.Vector;
-
-/**
- * Interface describing a regular expression matcher.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public interface RegexpMatcher {
-
-    /**
-     * Set the regexp pattern from the String description.
-     */
-    public void setPattern(String pattern) throws BuildException;
-
-    /**
-     * Get a String representation of the regexp pattern
-     */
-    public String getPattern();
-
-    /**
-     * Does the given argument match the pattern?
-     */
-    public boolean matches(String argument);
-
-    /**
-     * Returns a Vector of matched groups found in the argument.
-     *
-     * <p>Group 0 will be the full match, the rest are the
-     * parenthesized subexpressions</p>.
-     */
-    public Vector getGroups(String argument);
-}
diff --git a/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java b/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java
deleted file mode 100644
index 76c5536..0000000
--- a/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util.regexp;
-
-import org.apache.tools.ant.BuildException;
-
-/**
- * Simple Factory Class that produces an implementation of
- * RegexpMatcher based on the system property
- * <code>ant.regexp.matcherimpl</code> and the classes
- * available.
- * 
- * <p>In a more general framework this class would be abstract and
- * have a static newInstance method.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class RegexpMatcherFactory {
-
-    public RegexpMatcherFactory() {}
-
-    public RegexpMatcher newRegexpMatcher() throws BuildException {
-        String systemDefault = System.getProperty("ant.regexp.matcherimpl");
-        if (systemDefault != null) {
-            return createInstance(systemDefault);
-            // XXX     should we silently possible exceptions and try to 
-            //         load a different implementation?
-        }
-
-        try {
-            return createInstance("org.apache.tools.ant.util.regexp.JakartaOroMatcher");
-        } catch (BuildException be) {}
-        
-        try {
-            return createInstance("org.apache.tools.ant.util.regexp.JakartaRegexpMatcher");
-        } catch (BuildException be) {}
-
-        throw new BuildException("No supported regular expression matcher found");
-   }
-
-    protected RegexpMatcher createInstance(String className) 
-        throws BuildException {
-        try {
-            Class implClass = Class.forName(className);
-            return (RegexpMatcher) implClass.newInstance();
-        } catch (Throwable t) {
-            throw new BuildException(t);
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/version.txt b/src/main/org/apache/tools/ant/version.txt
deleted file mode 100644
index b6b2f8d..0000000
--- a/src/main/org/apache/tools/ant/version.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-VERSION=@VERSION@
-DATE=@DATE@
diff --git a/src/main/org/apache/tools/mail/MailMessage.java b/src/main/org/apache/tools/mail/MailMessage.java
deleted file mode 100644
index 26585c1..0000000
--- a/src/main/org/apache/tools/mail/MailMessage.java
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- */
-
-/*
- * The original version of this class was donated by Jason Hunter,
- * who wrote the class as part of the com.oreilly.servlet
- * package for his book "Java Servlet Programming" (O'Reilly).
- * See http://www.servlets.com.
- * 
- */
-
-package org.apache.tools.mail;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-
-/** 
- * A class to help send SMTP email.
- * This class is an improvement on the sun.net.smtp.SmtpClient class 
- * found in the JDK.  This version has extra functionality, and can be used
- * with JVMs that did not extend from the JDK.  It's not as robust as
- * the JavaMail Standard Extension classes, but it's easier to use and 
- * easier to install, and has an Open Source license.
- * <p>
- * It can be used like this:
- * <blockquote><pre>
- * String mailhost = "localhost";  // or another mail host
- * String from = "Mail Message Servlet &lt;MailMessage@server.com&gt;";
- * String to = "to@you.com";
- * String cc1 = "cc1@you.com";
- * String cc2 = "cc2@you.com";
- * String bcc = "bcc@you.com";
- * &nbsp;
- * MailMessage msg = new MailMessage(mailhost);
- * msg.from(from);
- * msg.to(to);
- * msg.cc(cc1);
- * msg.cc(cc2);
- * msg.bcc(bcc);
- * msg.setSubject("Test subject");
- * PrintStream out = msg.getPrintStream();
- * &nbsp;
- * Enumeration enum = req.getParameterNames();
- * while (enum.hasMoreElements()) {
- *   String name = (String)enum.nextElement();
- *   String value = req.getParameter(name);
- *   out.println(name + " = " + value);
- * }
- * &nbsp;
- * msg.sendAndClose();
- * </pre></blockquote>
- * <p>
- * Be sure to set the from address, then set the recepient 
- * addresses, then set the subject and other headers, then get the 
- * PrintStream, then write the message, and finally send and close.
- * The class does minimal error checking internally; it counts on the mail
- * host to complain if there's any malformatted input or out of order 
- * execution.  
- * <p>
- * An attachment mechanism based on RFC 1521 could be implemented on top of
- * this class.  In the meanwhile, JavaMail is the best solution for sending
- * email with attachments.
- * <p>
- * Still to do:
- * <ul>
- * <li>Figure out how to close the connection in case of error
- * </ul>
- *
- * @author Jason Hunter
- * @version 1.1, 2000/03/19, added angle brackets to address, helps some servers
- * version 1.0, 1999/12/29
- */
-public class MailMessage {
-
-  String host;
-  String from;
-  Vector to, cc;
-  Hashtable headers;
-  MailPrintStream out;
-  SmtpResponseReader in;
-  Socket socket;
-
-  /**
-   * Constructs a new MailMessage to send an email.
-   * Use localhost as the mail server.
-   *
-   * @exception IOException if there's any problem contacting the mail server
-   */
-  public MailMessage() throws IOException {
-    this("localhost");
-  }
-
-  /**
-   * Constructs a new MailMessage to send an email.
-   * Use the given host as the mail server.
-   *
-   * @param host the mail server to use
-   * @exception IOException if there's any problem contacting the mail server
-   */
-  public MailMessage(String host) throws IOException {
-    this.host = host;
-    to = new Vector();
-    cc = new Vector();
-    headers = new Hashtable();
-    setHeader("X-Mailer", "org.apache.tools.mail.MailMessage (jakarta.apache.org)");
-    connect();
-    sendHelo();
-  }
-
-  /**
-   * Sets the from address.  Also sets the "From" header.  This method should
-   * be called only once.
-   *
-   * @exception IOException if there's any problem reported by the mail server
-   */
-  public void from(String from) throws IOException {
-    sendFrom(from);
-    this.from = from;
-  }
-
-  /**
-   * Sets the to address.  Also sets the "To" header.  This method may be
-   * called multiple times.
-   *
-   * @exception IOException if there's any problem reported by the mail server
-   */
-  public void to(String to) throws IOException {
-    sendRcpt(to);
-    this.to.addElement(to);
-  }
-
-  /**
-   * Sets the cc address.  Also sets the "Cc" header.  This method may be
-   * called multiple times.
-   *
-   * @exception IOException if there's any problem reported by the mail server
-   */
-  public void cc(String cc) throws IOException {
-    sendRcpt(cc);
-    this.cc.addElement(cc);
-  }
-
-  /**
-   * Sets the bcc address.  Does NOT set any header since it's a *blind* copy.
-   * This method may be called multiple times.
-   *
-   * @exception IOException if there's any problem reported by the mail server
-   */
-  public void bcc(String bcc) throws IOException {
-    sendRcpt(bcc);
-    // No need to keep track of Bcc'd addresses
-  }
-
-  /**
-   * Sets the subject of the mail message.  Actually sets the "Subject" 
-   * header.
-   */
-  public void setSubject(String subj) {
-    headers.put("Subject", subj);
-  }
-
-  /**
-   * Sets the named header to the given value.  RFC 822 provides the rules for
-   * what text may constitute a header name and value.
-   */
-  public void setHeader(String name, String value) {
-    // Blindly trust the user doesn't set any invalid headers
-    headers.put(name, value);
-  }
-
-  /**
-   * Returns a PrintStream that can be used to write the body of the message.
-   * A stream is used since email bodies are byte-oriented.  A writer could 
-   * be wrapped on top if necessary for internationalization.
-   *
-   * @exception IOException if there's any problem reported by the mail server
-   */
-  public PrintStream getPrintStream() throws IOException {
-    setFromHeader();
-    setToHeader();
-    setCcHeader();
-    sendData();
-    flushHeaders();
-    return out;
-  }
-
-  void setFromHeader() {
-    setHeader("From", from);
-  }
-
-  void setToHeader() {
-    setHeader("To", vectorToList(to));
-  }
-
-  void setCcHeader() {
-    setHeader("Cc", vectorToList(cc));
-  }
-
-  String vectorToList(Vector v) {
-    StringBuffer buf = new StringBuffer();
-    Enumeration e = v.elements();
-    while (e.hasMoreElements()) {
-      buf.append(e.nextElement());
-      if (e.hasMoreElements()) {
-        buf.append(", ");
-      }
-    }
-    return buf.toString();
-  }
-
-  void flushHeaders() throws IOException {
-    // XXX Should I care about order here?
-    Enumeration e = headers.keys();
-    while (e.hasMoreElements()) {
-      String name = (String) e.nextElement();
-      String value = (String) headers.get(name);
-      out.println(name + ": " + value);
-    }
-    out.println();
-    out.flush();
-  }
-
-  /**
-   * Sends the message and closes the connection to the server.
-   * The MailMessage object cannot be reused.
-   *
-   * @exception IOException if there's any problem reported by the mail server
-   */
-  public void sendAndClose() throws IOException {
-    sendDot();
-    sendQuit();
-    disconnect();
-  }
-
-  // Make a limited attempt to extract a sanitized email address
-  // Prefer text in <brackets>, ignore anything in (parentheses)
-  static String sanitizeAddress(String s) {
-    int paramDepth = 0;
-    int start = 0;
-    int end = 0;
-    int len = s.length();
-
-    for (int i = 0; i < len; i++) {
-      char c = s.charAt(i);
-      if (c == '(') {
-        paramDepth++;
-        if (start == 0) {
-          end = i;  // support "address (name)"
-        }
-      }
-      else if (c == ')') {
-        paramDepth--;
-        if (end == 0) {
-          start = i + 1;  // support "(name) address"
-        }
-      }
-      else if (paramDepth == 0 && c == '<') {
-        start = i + 1;
-      }
-      else if (paramDepth == 0 && c == '>') {
-        end = i;
-      }
-    }
-
-    if (end == 0) {
-      end = len;
-    }
-
-    return s.substring(start, end);
-  }
-
-  // * * * * * Raw protocol methods below here * * * * *
-
-  void connect() throws IOException {
-    socket = new Socket(host, 25);
-    out = new MailPrintStream(
-          new BufferedOutputStream(
-          socket.getOutputStream())); 
-    in = new SmtpResponseReader(socket.getInputStream());
-    getReady();
-  }
-
-  void getReady() throws IOException {
-    String response = in.getResponse();
-    int[] ok = { 220 };
-    if (!isResponseOK(response, ok)) {
-      throw new IOException(
-        "Didn't get introduction from server: " + response);
-    }
-  }
-
-  void sendHelo() throws IOException {
-    String local = InetAddress.getLocalHost().getHostName();
-    int[] ok = { 250 };
-    send("HELO " + local, ok);
-  }
-
-  void sendFrom(String from) throws IOException {
-    int[] ok = { 250 };
-    send("MAIL FROM: " + "<" + sanitizeAddress(from) + ">", ok);
-  }
-
-  void sendRcpt(String rcpt) throws IOException {
-    int[] ok = { 250, 251 };
-    send("RCPT TO: " + "<" + sanitizeAddress(rcpt) + ">", ok);
-  }
-
-  void sendData() throws IOException {
-    int[] ok = { 354 };
-    send("DATA", ok);
-  }
-
-  void sendDot() throws IOException {
-    int[] ok = { 250 };
-    send("\r\n.", ok);  // make sure dot is on new line
-  }
-
-  void sendQuit() throws IOException {
-    int[] ok = { 221 };
-    send("QUIT", ok);
-  }
-
-  void send(String msg, int[] ok) throws IOException {
-    out.rawPrint(msg + "\r\n");  // raw supports <CRLF>.<CRLF>
-    //System.out.println("S: " + msg);
-    String response = in.getResponse();
-    //System.out.println("R: " + response);
-    if (!isResponseOK(response, ok)) {
-      throw new IOException(
-        "Unexpected reply to command: " + msg + ": " + response);
-    }
-  }
-
-  boolean isResponseOK(String response, int[] ok) {
-    // Check that the response is one of the valid codes
-    for (int i = 0; i < ok.length; i++) {
-      if (response.startsWith("" + ok[i])) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  void disconnect() throws IOException {
-    if (out != null) out.close(); 
-    if (in != null) in.close(); 
-    if (socket != null) socket.close();
-  }
-}
-
-// This PrintStream subclass makes sure that <CRLF>. becomes <CRLF>..
-// per RFC 821.  It also ensures that new lines are always \r\n.
-//
-class MailPrintStream extends PrintStream {
-
-  int lastChar;
-
-  public MailPrintStream(OutputStream out) {
-    super(out, true);  // deprecated, but email is byte-oriented
-  }
-
-  // Mac does \n\r, but that's tough to distinguish from Windows \r\n\r\n.
-  // Don't tackle that problem right now.
-  public void write(int b) {
-    if (b == '\n' && lastChar != '\r') {
-      rawWrite('\r');  // ensure always \r\n
-      rawWrite(b);
-    }
-    else if (b == '.' && lastChar == '\n') {
-      rawWrite('.');  // add extra dot
-      rawWrite(b);
-    }
-    else {
-      rawWrite(b);
-    }
-    lastChar = b;
-  }
-
-  public void write(byte buf[], int off, int len) {
-    for (int i = 0; i < len; i++) {
-      write(buf[off + i]);
-    }
-  }
-
-  void rawWrite(int b) {
-    super.write(b);
-  }
-
-  void rawPrint(String s) {
-    int len = s.length();
-    for (int i = 0; i < len; i++) {
-      rawWrite(s.charAt(i));
-    }
-  }
-}
-
diff --git a/src/main/org/apache/tools/mail/SmtpResponseReader.java b/src/main/org/apache/tools/mail/SmtpResponseReader.java
deleted file mode 100644
index 1d90767..0000000
--- a/src/main/org/apache/tools/mail/SmtpResponseReader.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- */
-
-package org.apache.tools.mail;
-
-import java.io.*;
-
-/**
- * A wrapper around the raw input from the SMTP server that assembles
- * multi line responses into a single String.
- *
- * <p>The same rules used here would apply to FTP and other Telnet
- * based protocols as well.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class SmtpResponseReader {
-
-    protected BufferedReader reader = null;
-    private StringBuffer result = new StringBuffer();
-
-    /**
-     * Wrap this input stream.
-     */
-    public SmtpResponseReader(InputStream in) {
-        reader = new BufferedReader(new InputStreamReader(in)); 
-    }
-
-    /**
-     * Read until the server indicates that the response is complete.
-     *
-     * @return Responsecode (3 digits) + Blank + Text from all
-     *         response line concatenated (with blanks replacing the \r\n
-     *         sequences).
-     */
-    public String getResponse() throws IOException {
-        result.setLength(0);
-        String line = reader.readLine();
-        if (line != null) {
-            result.append(line.substring(0, 3));
-            result.append(" ");
-        }
-        
-        while (line != null) {
-            append(line);
-            if (!hasMoreLines(line)) {
-                break;
-            }
-            line = reader.readLine();
-        }
-        return result.toString().trim();
-    }
-
-    /**
-     * Closes the underlying stream.
-     */
-    public void close() throws IOException {
-        reader.close();
-    }
-
-    /**
-     * Should we expect more input?
-     */
-    protected boolean hasMoreLines(String line) {
-        return line.charAt(3) == '-';
-    }
-
-    /**
-     * Append the text from this line of the resonse.
-     */
-    private void append(String line) {
-        result.append(line.substring(4));
-        result.append(" ");
-    }
-}
diff --git a/src/main/org/apache/tools/tar/TarBuffer.java b/src/main/org/apache/tools/tar/TarBuffer.java
deleted file mode 100644
index 5059b8f..0000000
--- a/src/main/org/apache/tools/tar/TarBuffer.java
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-/*
- * This package is based on the work done by Timothy Gerard Endres 
- * (time@ice.com) to whom the Ant project is very grateful for his great code.
- */
- 
-package org.apache.tools.tar;
-
-import java.io.*;
-
-/**
- * The TarBuffer class implements the tar archive concept
- * of a buffered input stream. This concept goes back to the
- * days of blocked tape drives and special io devices. In the
- * Java universe, the only real function that this class
- * performs is to ensure that files have the correct "block"
- * size, or other tars will complain.
- * <p>
- * You should never have a need to access this class directly.
- * TarBuffers are created by Tar IO Streams.
- * 
- * @author Timothy Gerard Endres <a href="mailto:time@ice.com">time@ice.com</a>
- */
- 
-public class TarBuffer {
-        
-    public static final int DEFAULT_RCDSIZE = (512);
-    public static final int DEFAULT_BLKSIZE = (DEFAULT_RCDSIZE * 20);
-    
-    private InputStream     inStream;
-    private OutputStream    outStream;
-    private byte[]          blockBuffer;
-    private int             currBlkIdx;
-    private int             currRecIdx;
-    private int             blockSize;
-    private int             recordSize;
-    private int             recsPerBlock;
-    private boolean         debug;
-
-    public TarBuffer(InputStream inStream) {
-        this(inStream, TarBuffer.DEFAULT_BLKSIZE);
-    }
-
-    public TarBuffer(InputStream inStream, int blockSize) {
-        this(inStream, blockSize, TarBuffer.DEFAULT_RCDSIZE);
-    }
-
-    public TarBuffer(InputStream inStream, int blockSize, int recordSize) {
-        this.inStream = inStream;
-        this.outStream = null;
-
-        this.initialize(blockSize, recordSize);
-    }
-
-    public TarBuffer(OutputStream outStream) {
-        this(outStream, TarBuffer.DEFAULT_BLKSIZE);
-    }
-
-    public TarBuffer(OutputStream outStream, int blockSize) {
-        this(outStream, blockSize, TarBuffer.DEFAULT_RCDSIZE);
-    }
-
-    public TarBuffer(OutputStream outStream, int blockSize, int recordSize) {
-        this.inStream = null;
-        this.outStream = outStream;
-
-        this.initialize(blockSize, recordSize);
-    }
-
-    /**
-     * Initialization common to all constructors.
-     */
-    private void initialize(int blockSize, int recordSize) {
-        this.debug = false;
-        this.blockSize = blockSize;
-        this.recordSize = recordSize;
-        this.recsPerBlock = (this.blockSize / this.recordSize);
-        this.blockBuffer = new byte[this.blockSize];
-
-        if (this.inStream != null) {
-            this.currBlkIdx = -1;
-            this.currRecIdx = this.recsPerBlock;
-        } else {
-            this.currBlkIdx = 0;
-            this.currRecIdx = 0;
-        } 
-    } 
-
-    /**
-     * Get the TAR Buffer's block size. Blocks consist of multiple records.
-     */
-    public int getBlockSize() {
-        return this.blockSize;
-    } 
-
-    /**
-     * Get the TAR Buffer's record size.
-     */
-    public int getRecordSize() {
-        return this.recordSize;
-    } 
-
-    /**
-     * Set the debugging flag for the buffer.
-     * 
-     * @param debug If true, print debugging output.
-     */
-    public void setDebug(boolean debug) {
-        this.debug = debug;
-    } 
-
-    /**
-     * Determine if an archive record indicate End of Archive. End of
-     * archive is indicated by a record that consists entirely of null bytes.
-     * 
-     * @param record The record data to check.
-     */
-    public boolean isEOFRecord(byte[] record) {
-        for (int i = 0, sz = this.getRecordSize(); i < sz; ++i) {
-            if (record[i] != 0) {
-                return false;
-            } 
-        }
-
-        return true;
-    } 
-
-    /**
-     * Skip over a record on the input stream.
-     */
-    public void skipRecord() throws IOException {
-        if (this.debug) {
-            System.err.println("SkipRecord: recIdx = " + this.currRecIdx 
-                               + " blkIdx = " + this.currBlkIdx);
-        } 
-
-        if (this.inStream == null) {
-            throw new IOException("reading (via skip) from an output buffer");
-        } 
-
-        if (this.currRecIdx >= this.recsPerBlock) {
-            if (!this.readBlock()) {
-                return;    // UNDONE
-            } 
-        } 
-
-        this.currRecIdx++;
-    } 
-
-    /**
-     * Read a record from the input stream and return the data.
-     * 
-     * @return The record data.
-     */
-    public byte[] readRecord() throws IOException {
-        if (this.debug) {
-            System.err.println("ReadRecord: recIdx = " + this.currRecIdx 
-                               + " blkIdx = " + this.currBlkIdx);
-        } 
-
-        if (this.inStream == null) {
-            throw new IOException("reading from an output buffer");
-        } 
-
-        if (this.currRecIdx >= this.recsPerBlock) {
-            if (!this.readBlock()) {
-                return null;
-            } 
-        } 
-
-        byte[] result = new byte[this.recordSize];
-
-        System.arraycopy(this.blockBuffer, 
-                         (this.currRecIdx * this.recordSize), result, 0, 
-                         this.recordSize);
-
-        this.currRecIdx++;
-
-        return result;
-    } 
-
-    /**
-     * @return false if End-Of-File, else true
-     */
-    private boolean readBlock() throws IOException {
-        if (this.debug) {
-            System.err.println("ReadBlock: blkIdx = " + this.currBlkIdx);
-        } 
-
-        if (this.inStream == null) {
-            throw new IOException("reading from an output buffer");
-        } 
-
-        this.currRecIdx = 0;
-
-        int offset = 0;
-        int bytesNeeded = this.blockSize;
-
-        while (bytesNeeded > 0) {
-            long numBytes = this.inStream.read(this.blockBuffer, offset, 
-                                               bytesNeeded);
-
-            // 
-            // NOTE
-            // We have fit EOF, and the block is not full!
-            // 
-            // This is a broken archive. It does not follow the standard
-            // blocking algorithm. However, because we are generous, and
-            // it requires little effort, we will simply ignore the error
-            // and continue as if the entire block were read. This does
-            // not appear to break anything upstream. We used to return
-            // false in this case.
-            // 
-            // Thanks to 'Yohann.Roussel@alcatel.fr' for this fix.
-            // 
-            if (numBytes == -1) {
-                break;
-            } 
-
-            offset += numBytes;
-            bytesNeeded -= numBytes;
-
-            if (numBytes != this.blockSize) {
-                if (this.debug) {
-                    System.err.println("ReadBlock: INCOMPLETE READ " 
-                                       + numBytes + " of " + this.blockSize 
-                                       + " bytes read.");
-                } 
-            } 
-        } 
-
-        this.currBlkIdx++;
-
-        return true;
-    } 
-
-    /**
-     * Get the current block number, zero based.
-     * 
-     * @return The current zero based block number.
-     */
-    public int getCurrentBlockNum() {
-        return this.currBlkIdx;
-    } 
-
-    /**
-     * Get the current record number, within the current block, zero based.
-     * Thus, current offset = (currentBlockNum * recsPerBlk) + currentRecNum.
-     * 
-     * @return The current zero based record number.
-     */
-    public int getCurrentRecordNum() {
-        return this.currRecIdx - 1;
-    } 
-
-    /**
-     * Write an archive record to the archive.
-     * 
-     * @param record The record data to write to the archive.
-     */
-    public void writeRecord(byte[] record) throws IOException {
-        if (this.debug) {
-            System.err.println("WriteRecord: recIdx = " + this.currRecIdx 
-                               + " blkIdx = " + this.currBlkIdx);
-        } 
-
-        if (this.outStream == null) {
-            throw new IOException("writing to an input buffer");
-        } 
-
-        if (record.length != this.recordSize) {
-            throw new IOException("record to write has length '" 
-                                  + record.length 
-                                  + "' which is not the record size of '" 
-                                  + this.recordSize + "'");
-        } 
-
-        if (this.currRecIdx >= this.recsPerBlock) {
-            this.writeBlock();
-        } 
-
-        System.arraycopy(record, 0, this.blockBuffer, 
-                         (this.currRecIdx * this.recordSize), 
-                         this.recordSize);
-
-        this.currRecIdx++;
-    } 
-
-    /**
-     * Write an archive record to the archive, where the record may be
-     * inside of a larger array buffer. The buffer must be "offset plus
-     * record size" long.
-     * 
-     * @param buf The buffer containing the record data to write.
-     * @param offset The offset of the record data within buf.
-     */
-    public void writeRecord(byte[] buf, int offset) throws IOException {
-        if (this.debug) {
-            System.err.println("WriteRecord: recIdx = " + this.currRecIdx 
-                               + " blkIdx = " + this.currBlkIdx);
-        } 
-
-        if (this.outStream == null) {
-            throw new IOException("writing to an input buffer");
-        } 
-
-        if ((offset + this.recordSize) > buf.length) {
-            throw new IOException("record has length '" + buf.length 
-                                  + "' with offset '" + offset 
-                                  + "' which is less than the record size of '" 
-                                  + this.recordSize + "'");
-        } 
-
-        if (this.currRecIdx >= this.recsPerBlock) {
-            this.writeBlock();
-        } 
-
-        System.arraycopy(buf, offset, this.blockBuffer, 
-                         (this.currRecIdx * this.recordSize), 
-                         this.recordSize);
-
-        this.currRecIdx++;
-    } 
-
-    /**
-     * Write a TarBuffer block to the archive.
-     */
-    private void writeBlock() throws IOException {
-        if (this.debug) {
-            System.err.println("WriteBlock: blkIdx = " + this.currBlkIdx);
-        } 
-
-        if (this.outStream == null) {
-            throw new IOException("writing to an input buffer");
-        } 
-
-        this.outStream.write(this.blockBuffer, 0, this.blockSize);
-        this.outStream.flush();
-
-        this.currRecIdx = 0;
-        this.currBlkIdx++;
-    } 
-
-    /**
-     * Flush the current data block if it has any data in it.
-     */
-    private void flushBlock() throws IOException {
-        if (this.debug) {
-            System.err.println("TarBuffer.flushBlock() called.");
-        } 
-
-        if (this.outStream == null) {
-            throw new IOException("writing to an input buffer");
-        } 
-
-        if (this.currRecIdx > 0) {
-            this.writeBlock();
-        } 
-    } 
-
-    /**
-     * Close the TarBuffer. If this is an output buffer, also flush the
-     * current block before closing.
-     */
-    public void close() throws IOException {
-        if (this.debug) {
-            System.err.println("TarBuffer.closeBuffer().");
-        } 
-
-        if (this.outStream != null) {
-            this.flushBlock();
-
-            if (this.outStream != System.out 
-                    && this.outStream != System.err) {
-                this.outStream.close();
-
-                this.outStream = null;
-            } 
-        } else if (this.inStream != null) {
-            if (this.inStream != System.in) {
-                this.inStream.close();
-
-                this.inStream = null;
-            } 
-        } 
-    } 
-}
diff --git a/src/main/org/apache/tools/tar/TarConstants.java b/src/main/org/apache/tools/tar/TarConstants.java
deleted file mode 100644
index fe4a699..0000000
--- a/src/main/org/apache/tools/tar/TarConstants.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-/*
- * This package is based on the work done by Timothy Gerard Endres 
- * (time@ice.com) to whom the Ant project is very grateful for his great code.
- */
-
-package org.apache.tools.tar;
-
-/**
- * This interface contains all the definitions used in the package.
- *
- * @author Timothy Gerard Endres <a href="mailto:time@ice.com">time@ice.com</a>
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- */
-
-public interface TarConstants {
-    
-    /**
-     * The length of the name field in a header buffer.
-     */
-    public static final int    NAMELEN = 100;
-
-    /**
-     * The length of the mode field in a header buffer.
-     */
-    public static final int    MODELEN = 8;
-
-    /**
-     * The length of the user id field in a header buffer.
-     */
-    public static final int    UIDLEN = 8;
-
-    /**
-     * The length of the group id field in a header buffer.
-     */
-    public static final int    GIDLEN = 8;
-
-    /**
-     * The length of the checksum field in a header buffer.
-     */
-    public static final int    CHKSUMLEN = 8;
-
-    /**
-     * The length of the size field in a header buffer.
-     */
-    public static final int    SIZELEN = 12;
-
-    /**
-     * The length of the magic field in a header buffer.
-     */
-    public static final int    MAGICLEN = 8;
-
-    /**
-     * The length of the modification time field in a header buffer.
-     */
-    public static final int    MODTIMELEN = 12;
-
-    /**
-     * The length of the user name field in a header buffer.
-     */
-    public static final int    UNAMELEN = 32;
-
-    /**
-     * The length of the group name field in a header buffer.
-     */
-    public static final int    GNAMELEN = 32;
-
-    /**
-     * The length of the devices field in a header buffer.
-     */
-    public static final int    DEVLEN = 8;
-
-    /**
-     * LF_ constants represent the "link flag" of an entry, or more commonly,
-     * the "entry type". This is the "old way" of indicating a normal file.
-     */
-    public static final byte   LF_OLDNORM = 0;
-
-    /**
-     * Normal file type.
-     */
-    public static final byte   LF_NORMAL = (byte) '0';
-
-    /**
-     * Link file type.
-     */
-    public static final byte   LF_LINK = (byte) '1';
-
-    /**
-     * Symbolic link file type.
-     */
-    public static final byte   LF_SYMLINK = (byte) '2';
-
-    /**
-     * Character device file type.
-     */
-    public static final byte   LF_CHR = (byte) '3';
-
-    /**
-     * Block device file type.
-     */
-    public static final byte   LF_BLK = (byte) '4';
-
-    /**
-     * Directory file type.
-     */
-    public static final byte   LF_DIR = (byte) '5';
-
-    /**
-     * FIFO (pipe) file type.
-     */
-    public static final byte   LF_FIFO = (byte) '6';
-
-    /**
-     * Contiguous file type.
-     */
-    public static final byte   LF_CONTIG = (byte) '7';
-
-    /**
-     * The magic tag representing a POSIX tar archive.
-     */
-    public static final String TMAGIC = "ustar";
-
-    /**
-     * The magic tag representing a GNU tar archive.
-     */
-    public static final String GNU_TMAGIC = "ustar  ";
-
-    /**
-     * The namr of the GNU tar entry which contains a long name.
-     */
-    public static final String GNU_LONGLINK = "././@LongLink";
-    
-    /**
-     * Identifies the *next* file on the tape as having a long name.  
-     */
-    public static final byte LF_GNUTYPE_LONGNAME = (byte) 'L';
-}
diff --git a/src/main/org/apache/tools/tar/TarEntry.java b/src/main/org/apache/tools/tar/TarEntry.java
deleted file mode 100644
index 451def9..0000000
--- a/src/main/org/apache/tools/tar/TarEntry.java
+++ /dev/null
@@ -1,592 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-/*
- * This package is based on the work done by Timothy Gerard Endres 
- * (time@ice.com) to whom the Ant project is very grateful for his great code.
- */
-
-package org.apache.tools.tar;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * This class represents an entry in a Tar archive. It consists
- * of the entry's header, as well as the entry's File. Entries
- * can be instantiated in one of three ways, depending on how
- * they are to be used.
- * <p>
- * TarEntries that are created from the header bytes read from
- * an archive are instantiated with the TarEntry( byte[] )
- * constructor. These entries will be used when extracting from
- * or listing the contents of an archive. These entries have their
- * header filled in using the header bytes. They also set the File
- * to null, since they reference an archive entry not a file.
- * <p>
- * TarEntries that are created from Files that are to be written
- * into an archive are instantiated with the TarEntry( File )
- * constructor. These entries have their header filled in using
- * the File's information. They also keep a reference to the File
- * for convenience when writing entries.
- * <p>
- * Finally, TarEntries can be constructed from nothing but a name.
- * This allows the programmer to construct the entry by hand, for
- * instance when only an InputStream is available for writing to
- * the archive, and the header information is constructed from
- * other information. In this case the header fields are set to
- * defaults and the File is set to null.
- * 
- * <p>
- * The C structure for a Tar Entry's header is:
- * <pre>
- * struct header {
- * char name[NAMSIZ];
- * char mode[8];
- * char uid[8];
- * char gid[8];
- * char size[12];
- * char mtime[12];
- * char chksum[8];
- * char linkflag;
- * char linkname[NAMSIZ];
- * char magic[8];
- * char uname[TUNMLEN];
- * char gname[TGNMLEN];
- * char devmajor[8];
- * char devminor[8];
- * } header;
- * </pre>
- * 
- * @author Timothy Gerard Endres <a href="mailto:time@ice.com">time@ice.com</a>
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- */
- 
-public class TarEntry implements TarConstants {
-
-    private StringBuffer name;      /** The entry's name. */
-    private int          mode;      /** The entry's permission mode. */
-    private int          userId;    /** The entry's user id. */
-    private int          groupId;   /** The entry's group id. */
-    private long         size;      /** The entry's size. */
-    private long         modTime;   /** The entry's modification time. */
-    private int          checkSum;  /** The entry's checksum. */
-    private byte         linkFlag;  /** The entry's link flag. */
-    private StringBuffer linkName;  /** The entry's link name. */
-    private StringBuffer magic;     /** The entry's magic tag. */
-    private StringBuffer userName;  /** The entry's user name. */
-    private StringBuffer groupName; /** The entry's group name. */
-    private int          devMajor;  /** The entry's major device number. */
-    private int          devMinor;  /** The entry's minor device number. */
-    private File         file;      /** The entry's file reference */ 
-
-    /** 
-     * Construct an empty entry and prepares the header values.
-     */ 
-    private TarEntry () {
-        this.magic = new StringBuffer(TMAGIC);
-        this.name = new StringBuffer();
-        this.linkName = new StringBuffer();
-    
-        String user = System.getProperty("user.name", "");
-    
-        if (user.length() > 31) {
-            user = user.substring(0, 31);
-        } 
-    
-        this.userId = 0;
-        this.groupId = 0;
-        this.userName = new StringBuffer(user);
-        this.groupName = new StringBuffer("");
-        this.file = null;
-    }
-        
-    /** 
-     * Construct an entry with only a name. This allows the programmer
-     * to construct the entry's header "by hand". File is set to null.
-     */ 
-    public TarEntry(String name) {
-        this();
-        
-        boolean isDir = name.endsWith("/");
-        
-        this.checkSum = 0;
-        this.devMajor = 0;
-        this.devMinor = 0;
-        this.name = new StringBuffer(name);
-        this.mode = isDir ? 040755 : 0100644;
-        this.linkFlag = isDir ? LF_DIR : LF_NORMAL;
-        this.userId = 0;
-        this.groupId = 0;
-        this.size = 0;
-        this.checkSum = 0;
-        this.modTime = (new Date()).getTime() / 1000;
-        this.linkName = new StringBuffer("");
-        this.userName = new StringBuffer("");
-        this.groupName = new StringBuffer("");
-        this.devMajor = 0;
-        this.devMinor = 0;
-
-    }   
-        
-    /** 
-     * Construct an entry with a name an a link flag.
-     */ 
-    public TarEntry(String name, byte linkFlag) {
-        this(name);
-        this.linkFlag = linkFlag;
-    }   
-        
-    /** 
-     * Construct an entry for a file. File is set to file, and the
-     * header is constructed from information from the file.
-     *  
-     * @param file The file that the entry represents.
-     */ 
-    public TarEntry(File file) {
-        this();
-        
-        this.file = file;
-        
-        String name = file.getPath();
-        String osname = System.getProperty("os.name");
-        
-        if (osname != null) {
-        
-            // Strip off drive letters!
-            // REVIEW Would a better check be "(File.separator == '\')"?
-            String Win32Prefix = "Windows";
-            String prefix = osname.substring(0, Win32Prefix.length());
-        
-            if (prefix.equalsIgnoreCase(Win32Prefix)) {
-                if (name.length() > 2) {
-                    char ch1 = name.charAt(0);
-                    char ch2 = name.charAt(1);
-        
-                    if (ch2 == ':' 
-                            && ((ch1 >= 'a' && ch1 <= 'z') 
-                                || (ch1 >= 'A' && ch1 <= 'Z'))) {
-                        name = name.substring(2);
-                    } 
-                } 
-            } 
-        } 
-        
-        name = name.replace(File.separatorChar, '/');
-        
-        // No absolute pathnames
-        // Windows (and Posix?) paths can start with "\\NetworkDrive\",
-        // so we loop on starting /'s.
-        while (name.startsWith("/")) {
-            name = name.substring(1);
-        }
-        
-        this.linkName = new StringBuffer("");
-        this.name = new StringBuffer(name);
-        
-        if (file.isDirectory()) {
-            this.mode = 040755;
-            this.linkFlag = LF_DIR;
-        
-            if (this.name.charAt(this.name.length() - 1) != '/') {
-                this.name.append("/");
-            } 
-        } else {
-            this.mode = 0100644;
-            this.linkFlag = LF_NORMAL;
-        } 
-        
-        this.size = file.length();
-        this.modTime = file.lastModified() / 1000;
-        this.checkSum = 0;
-        this.devMajor = 0;
-        this.devMinor = 0;
-    }   
-        
-    /** 
-     * Construct an entry from an archive's header bytes. File is set
-     * to null.
-     *  
-     * @param headerBuf The header bytes from a tar archive entry.
-     */ 
-    public TarEntry(byte[] headerBuf) {
-        this();
-        this.parseTarHeader(headerBuf);
-    }   
-        
-    /** 
-     * Determine if the two entries are equal. Equality is determined
-     * by the header names being equal.
-     *  
-     * @return it Entry to be checked for equality.
-     * @return True if the entries are equal.
-     */ 
-    public boolean equals(TarEntry it) {
-        return this.getName().equals(it.getName());
-    }   
-        
-    /** 
-     * Determine if the given entry is a descendant of this entry.
-     * Descendancy is determined by the name of the descendant
-     * starting with this entry's name.
-     *  
-     * @param desc Entry to be checked as a descendent of this.
-     * @return True if entry is a descendant of this.
-     */ 
-    public boolean isDescendent(TarEntry desc) {
-        return desc.getName().startsWith(this.getName());
-    }   
-        
-    /** 
-     * Get this entry's name.
-     *  
-     * @return This entry's name.
-     */ 
-    public String getName() {
-        return this.name.toString();
-    }   
-        
-    /** 
-     * Set this entry's name.
-     *  
-     * @param name This entry's new name.
-     */ 
-    public void setName(String name) {
-        this.name = new StringBuffer(name);
-    }   
-
-    /**
-     * Set the mode for this entry
-     */
-    public void setMode(int mode) {
-        this.mode = mode;
-    }
-    
-        
-    /** 
-     * Get this entry's user id.
-     *  
-     * @return This entry's user id.
-     */ 
-    public int getUserId() {
-        return this.userId;
-    }   
-        
-    /** 
-     * Set this entry's user id.
-     *  
-     * @param userId This entry's new user id.
-     */ 
-    public void setUserId(int userId) {
-        this.userId = userId;
-    }   
-        
-    /** 
-     * Get this entry's group id.
-     *  
-     * @return This entry's group id.
-     */ 
-    public int getGroupId() {
-        return this.groupId;
-    }   
-        
-    /** 
-     * Set this entry's group id.
-     *  
-     * @param groupId This entry's new group id.
-     */ 
-    public void setGroupId(int groupId) {
-        this.groupId = groupId;
-    }   
-        
-    /** 
-     * Get this entry's user name.
-     *  
-     * @return This entry's user name.
-     */ 
-    public String getUserName() {
-        return this.userName.toString();
-    }   
-        
-    /** 
-     * Set this entry's user name.
-     *  
-     * @param userName This entry's new user name.
-     */ 
-    public void setUserName(String userName) {
-        this.userName = new StringBuffer(userName);
-    }   
-        
-    /** 
-     * Get this entry's group name.
-     *  
-     * @return This entry's group name.
-     */ 
-    public String getGroupName() {
-        return this.groupName.toString();
-    }   
-        
-    /** 
-     * Set this entry's group name.
-     *  
-     * @param groupName This entry's new group name.
-     */ 
-    public void setGroupName(String groupName) {
-        this.groupName = new StringBuffer(groupName);
-    }   
-        
-    /** 
-     * Convenience method to set this entry's group and user ids.
-     *  
-     * @param userId This entry's new user id.
-     * @param groupId This entry's new group id.
-     */ 
-    public void setIds(int userId, int groupId) {
-        this.setUserId(userId);
-        this.setGroupId(groupId);
-    }   
-        
-    /** 
-     * Convenience method to set this entry's group and user names.
-     *  
-     * @param userName This entry's new user name.
-     * @param groupName This entry's new group name.
-     */ 
-    public void setNames(String userName, String groupName) {
-        this.setUserName(userName);
-        this.setGroupName(groupName);
-    }   
-        
-    /** 
-     * Set this entry's modification time. The parameter passed
-     * to this method is in "Java time".
-     *  
-     * @param time This entry's new modification time.
-     */ 
-    public void setModTime(long time) {
-        this.modTime = time / 1000;
-    }   
-        
-    /** 
-     * Set this entry's modification time.
-     *  
-     * @param time This entry's new modification time.
-     */ 
-    public void setModTime(Date time) {
-        this.modTime = time.getTime() / 1000;
-    }   
-        
-    /** 
-     * Set this entry's modification time.
-     *  
-     * @param time This entry's new modification time.
-     */ 
-    public Date getModTime() {
-        return new Date(this.modTime * 1000);
-    }   
-        
-    /** 
-     * Get this entry's file.
-     *  
-     * @return This entry's file.
-     */ 
-    public File getFile() {
-        return this.file;
-    }   
-        
-    /** 
-     * Get this entry's file size.
-     *  
-     * @return This entry's file size.
-     */ 
-    public long getSize() {
-        return this.size;
-    }   
-        
-    /** 
-     * Set this entry's file size.
-     *  
-     * @param size This entry's new file size.
-     */ 
-    public void setSize(long size) {
-        this.size = size;
-    }   
-
-        
-    /**
-     * Indicate if this entry is a GNU long name block
-     *
-     * @return true if this is a long name extension provided by GNU tar
-     */
-    public boolean isGNULongNameEntry() {
-        return linkFlag == LF_GNUTYPE_LONGNAME &&
-               name.toString().equals(GNU_LONGLINK);
-    }               
-
-    /** 
-     * Return whether or not this entry represents a directory.
-     *  
-     * @return True if this entry is a directory.
-     */ 
-    public boolean isDirectory() {
-        if (this.file != null) {
-            return this.file.isDirectory();
-        } 
-        
-        if (this.linkFlag == LF_DIR) {
-            return true;
-        } 
-        
-        if (this.getName().endsWith("/")) {
-            return true;
-        } 
-        
-        return false;
-    }   
-        
-    /** 
-     * If this entry represents a file, and the file is a directory, return
-     * an array of TarEntries for this entry's children.
-     *  
-     * @return An array of TarEntry's for this entry's children.
-     */ 
-    public TarEntry[] getDirectoryEntries() {
-        if (this.file == null ||!this.file.isDirectory()) {
-            return new TarEntry[0];
-        } 
-        
-        String[]   list = this.file.list();
-        TarEntry[] result = new TarEntry[list.length];
-        
-        for (int i = 0; i < list.length; ++i) {
-            result[i] = new TarEntry(new File(this.file, list[i]));
-        } 
-        
-        return result;
-    }   
-        
-    /** 
-     * Write an entry's header information to a header buffer.
-     *  
-     * @param outbuf The tar entry header buffer to fill in.
-     */ 
-    public void writeEntryHeader(byte[] outbuf) {
-        int offset = 0;
-        
-        offset = TarUtils.getNameBytes(this.name, outbuf, offset, NAMELEN);
-        offset = TarUtils.getOctalBytes(this.mode, outbuf, offset, MODELEN);
-        offset = TarUtils.getOctalBytes(this.userId, outbuf, offset, UIDLEN);
-        offset = TarUtils.getOctalBytes(this.groupId, outbuf, offset, GIDLEN);
-        offset = TarUtils.getLongOctalBytes(this.size, outbuf, offset, SIZELEN);
-        offset = TarUtils.getLongOctalBytes(this.modTime, outbuf, offset, MODTIMELEN);
-        
-        int csOffset = offset;
-        
-        for (int c = 0; c < CHKSUMLEN; ++c) {
-            outbuf[offset++] = (byte) ' ';
-        }
-        
-        outbuf[offset++] = this.linkFlag;
-        offset = TarUtils.getNameBytes(this.linkName, outbuf, offset, NAMELEN);
-        offset = TarUtils.getNameBytes(this.magic, outbuf, offset, MAGICLEN);
-        offset = TarUtils.getNameBytes(this.userName, outbuf, offset, UNAMELEN);
-        offset = TarUtils.getNameBytes(this.groupName, outbuf, offset, GNAMELEN);
-        offset = TarUtils.getOctalBytes(this.devMajor, outbuf, offset, DEVLEN);
-        offset = TarUtils.getOctalBytes(this.devMinor, outbuf, offset, DEVLEN);
-        
-        while (offset < outbuf.length) {
-            outbuf[offset++] = 0;
-        }
-        
-        long checkSum = TarUtils.computeCheckSum(outbuf);
-        
-        TarUtils.getCheckSumOctalBytes(checkSum, outbuf, csOffset, CHKSUMLEN);
-    }   
-        
-    /** 
-     * Parse an entry's header information from a header buffer.
-     *  
-     * @param header The tar entry header buffer to get information from.
-     */ 
-    public void parseTarHeader(byte[] header) {
-        int offset = 0;
-        
-        this.name = TarUtils.parseName(header, offset, NAMELEN);  
-        offset += NAMELEN;
-        this.mode = (int) TarUtils.parseOctal(header, offset, MODELEN); 
-        offset += MODELEN;
-        this.userId = (int) TarUtils.parseOctal(header, offset, UIDLEN);
-        offset += UIDLEN;
-        this.groupId = (int) TarUtils.parseOctal(header, offset, GIDLEN);
-        offset += GIDLEN;
-        this.size = TarUtils.parseOctal(header, offset, SIZELEN);
-        offset += SIZELEN;
-        this.modTime = TarUtils.parseOctal(header, offset, MODTIMELEN);
-        offset += MODTIMELEN;
-        this.checkSum = (int) TarUtils.parseOctal(header, offset, CHKSUMLEN);
-        offset += CHKSUMLEN;
-        this.linkFlag = header[offset++];
-        this.linkName = TarUtils.parseName(header, offset, NAMELEN);
-        offset += NAMELEN;
-        this.magic = TarUtils.parseName(header, offset, MAGICLEN);
-        offset += MAGICLEN;
-        this.userName = TarUtils.parseName(header, offset, UNAMELEN);
-        offset += UNAMELEN;
-        this.groupName = TarUtils.parseName(header, offset, GNAMELEN);
-        offset += GNAMELEN;
-        this.devMajor = (int) TarUtils.parseOctal(header, offset, DEVLEN);
-        offset += DEVLEN;
-        this.devMinor = (int) TarUtils.parseOctal(header, offset, DEVLEN);
-    }
-}       
diff --git a/src/main/org/apache/tools/tar/TarInputStream.java b/src/main/org/apache/tools/tar/TarInputStream.java
deleted file mode 100644
index 00ad9c3..0000000
--- a/src/main/org/apache/tools/tar/TarInputStream.java
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-/*
- * This package is based on the work done by Timothy Gerard Endres 
- * (time@ice.com) to whom the Ant project is very grateful for his great code.
- */
-
-package org.apache.tools.tar;
-
-import java.io.*;
-
-/**
- * The TarInputStream reads a UNIX tar archive as an InputStream.
- * methods are provided to position at each successive entry in
- * the archive, and the read each entry as a normal input stream
- * using read().
- * 
- * @author Timothy Gerard Endres <a href="mailto:time@ice.com">time@ice.com</a>
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- */
-public class TarInputStream extends FilterInputStream {
-    
-    protected boolean      debug;
-    protected boolean      hasHitEOF;
-    protected int          entrySize;
-    protected int          entryOffset;
-    protected byte[]       oneBuf;
-    protected byte[]       readBuf;
-    protected TarBuffer    buffer;
-    protected TarEntry     currEntry;
-
-    public TarInputStream(InputStream is) {
-        this(is, TarBuffer.DEFAULT_BLKSIZE, TarBuffer.DEFAULT_RCDSIZE);
-    }
-
-    public TarInputStream(InputStream is, int blockSize) {
-        this(is, blockSize, TarBuffer.DEFAULT_RCDSIZE);
-    }
-
-    public TarInputStream(InputStream is, int blockSize, int recordSize) {
-        super(is);
-
-        this.buffer = new TarBuffer(is, blockSize, recordSize);
-        this.readBuf = null;
-        this.oneBuf = new byte[1];
-        this.debug = false;
-        this.hasHitEOF = false;
-    }
-
-    /**
-     * Sets the debugging flag.
-     * 
-     * @param debugF True to turn on debugging.
-     */
-    public void setDebug(boolean debug) {
-        this.debug = debug;
-        this.buffer.setDebug(debug);
-    } 
-
-    /**
-     * Closes this stream. Calls the TarBuffer's close() method.
-     */
-    public void close() throws IOException {
-        this.buffer.close();
-    } 
-
-    /**
-     * Get the record size being used by this stream's TarBuffer.
-     * 
-     * @return The TarBuffer record size.
-     */
-    public int getRecordSize() {
-        return this.buffer.getRecordSize();
-    } 
-
-    /**
-     * Get the available data that can be read from the current
-     * entry in the archive. This does not indicate how much data
-     * is left in the entire archive, only in the current entry.
-     * This value is determined from the entry's size header field
-     * and the amount of data already read from the current entry.
-     * 
-     * 
-     * @return The number of available bytes for the current entry.
-     */
-    public int available() throws IOException {
-        return this.entrySize - this.entryOffset;
-    } 
-
-    /**
-     * Skip bytes in the input buffer. This skips bytes in the
-     * current entry's data, not the entire archive, and will
-     * stop at the end of the current entry's data if the number
-     * to skip extends beyond that point.
-     * 
-     * @param numToSkip The number of bytes to skip.
-     */
-    public void skip(int numToSkip) throws IOException {
-
-        // REVIEW
-        // This is horribly inefficient, but it ensures that we
-        // properly skip over bytes via the TarBuffer...
-        // 
-        byte[] skipBuf = new byte[8 * 1024];
-
-        for (int num = numToSkip; num > 0; ) {
-            int numRead = this.read(skipBuf, 0, 
-                                    (num > skipBuf.length ? skipBuf.length 
-                                     : num));
-
-            if (numRead == -1) {
-                break;
-            } 
-
-            num -= numRead;
-        } 
-    } 
-
-    /**
-     * Since we do not support marking just yet, we return false.
-     * 
-     * @return False.
-     */
-    public boolean markSupported() {
-        return false;
-    } 
-
-    /**
-     * Since we do not support marking just yet, we do nothing.
-     * 
-     * @param markLimit The limit to mark.
-     */
-    public void mark(int markLimit) {}
-
-    /**
-     * Since we do not support marking just yet, we do nothing.
-     */
-    public void reset() {}
-
-    /**
-     * Get the next entry in this tar archive. This will skip
-     * over any remaining data in the current entry, if there
-     * is one, and place the input stream at the header of the
-     * next entry, and read the header and instantiate a new
-     * TarEntry from the header bytes and return that entry.
-     * If there are no more entries in the archive, null will
-     * be returned to indicate that the end of the archive has
-     * been reached.
-     * 
-     * @return The next TarEntry in the archive, or null.
-     */
-    public TarEntry getNextEntry() throws IOException {
-        if (this.hasHitEOF) {
-            return null;
-        } 
-
-        if (this.currEntry != null) {
-            int numToSkip = this.entrySize - this.entryOffset;
-
-            if (this.debug) {
-                System.err.println("TarInputStream: SKIP currENTRY '" 
-                                   + this.currEntry.getName() + "' SZ " 
-                                   + this.entrySize + " OFF " 
-                                   + this.entryOffset + "  skipping " 
-                                   + numToSkip + " bytes");
-            } 
-
-            if (numToSkip > 0) {
-                this.skip(numToSkip);
-            } 
-
-            this.readBuf = null;
-        } 
-
-        byte[] headerBuf = this.buffer.readRecord();
-
-        if (headerBuf == null) {
-            if (this.debug) {
-                System.err.println("READ NULL RECORD");
-            } 
-            this.hasHitEOF = true;
-        } else if (this.buffer.isEOFRecord(headerBuf)) {
-            if (this.debug) {
-                System.err.println("READ EOF RECORD");
-            } 
-            this.hasHitEOF = true;
-        } 
-
-        if (this.hasHitEOF) {
-            this.currEntry = null;
-        } else {
-            this.currEntry = new TarEntry(headerBuf);
-
-            if (!(headerBuf[257] == 'u' && headerBuf[258] == 's' 
-                    && headerBuf[259] == 't' && headerBuf[260] == 'a' 
-                    && headerBuf[261] == 'r')) {
-                this.entrySize = 0;
-                this.entryOffset = 0;
-                this.currEntry = null;
-
-                throw new IOException("bad header in block " 
-                                                 + this.buffer.getCurrentBlockNum() 
-                                                 + " record " 
-                                                 + this.buffer.getCurrentRecordNum() 
-                                                 + ", " + 
-                                       "header magic is not 'ustar', but '" 
-                                                 + headerBuf[257] 
-                                                 + headerBuf[258] 
-                                                 + headerBuf[259] 
-                                                 + headerBuf[260] 
-                                                 + headerBuf[261] 
-                                                 + "', or (dec) " 
-                                                 + ((int) headerBuf[257]) 
-                                                 + ", " 
-                                                 + ((int) headerBuf[258]) 
-                                                 + ", " 
-                                                 + ((int) headerBuf[259]) 
-                                                 + ", " 
-                                                 + ((int) headerBuf[260]) 
-                                                 + ", " 
-                                                 + ((int) headerBuf[261]));
-            } 
-
-            if (this.debug) {
-                System.err.println("TarInputStream: SET CURRENTRY '" 
-                                   + this.currEntry.getName() 
-                                   + "' size = " 
-                                   + this.currEntry.getSize());
-            } 
-
-            this.entryOffset = 0;
-
-            // REVIEW How do we resolve this discrepancy?!
-            this.entrySize = (int) this.currEntry.getSize();
-        } 
-
-        if (this.currEntry != null && this.currEntry.isGNULongNameEntry()) {
-            // read in the name
-            StringBuffer longName = new StringBuffer();
-            byte[] buffer = new byte[256];
-            int length = 0;
-            while ((length = read(buffer)) >= 0) {
-                longName.append(new String(buffer, 0, length));
-            }
-            getNextEntry();
-            this.currEntry.setName(longName.toString());
-        }
-
-        return this.currEntry;
-    } 
-
-    /**
-     * Reads a byte from the current tar archive entry.
-     * 
-     * This method simply calls read( byte[], int, int ).
-     * 
-     * @return The byte read, or -1 at EOF.
-     */
-    public int read() throws IOException {
-        int num = this.read(this.oneBuf, 0, 1);
-
-        if (num == -1) {
-            return num;
-        } else {
-            return (int) this.oneBuf[0];
-        }
-    } 
-
-    /**
-     * Reads bytes from the current tar archive entry.
-     * 
-     * This method simply calls read( byte[], int, int ).
-     * 
-     * @param buf The buffer into which to place bytes read.
-     * @return The number of bytes read, or -1 at EOF.
-     */
-    public int read(byte[] buf) throws IOException {
-        return this.read(buf, 0, buf.length);
-    } 
-
-    /**
-     * Reads bytes from the current tar archive entry.
-     * 
-     * This method is aware of the boundaries of the current
-     * entry in the archive and will deal with them as if they
-     * were this stream's start and EOF.
-     * 
-     * @param buf The buffer into which to place bytes read.
-     * @param offset The offset at which to place bytes read.
-     * @param numToRead The number of bytes to read.
-     * @return The number of bytes read, or -1 at EOF.
-     */
-    public int read(byte[] buf, int offset, int numToRead) throws IOException {
-        int totalRead = 0;
-
-        if (this.entryOffset >= this.entrySize) {
-            return -1;
-        } 
-
-        if ((numToRead + this.entryOffset) > this.entrySize) {
-            numToRead = (this.entrySize - this.entryOffset);
-        } 
-
-        if (this.readBuf != null) {
-            int sz = (numToRead > this.readBuf.length) ? this.readBuf.length 
-                     : numToRead;
-
-            System.arraycopy(this.readBuf, 0, buf, offset, sz);
-
-            if (sz >= this.readBuf.length) {
-                this.readBuf = null;
-            } else {
-                int    newLen = this.readBuf.length - sz;
-                byte[] newBuf = new byte[newLen];
-
-                System.arraycopy(this.readBuf, sz, newBuf, 0, newLen);
-
-                this.readBuf = newBuf;
-            } 
-
-            totalRead += sz;
-            numToRead -= sz;
-            offset += sz;
-        } 
-
-        while (numToRead > 0) {
-            byte[] rec = this.buffer.readRecord();
-
-            if (rec == null) {
-                // Unexpected EOF!
-                throw new IOException("unexpected EOF with " + numToRead 
-                                      + " bytes unread");
-            } 
-
-            int sz = numToRead;
-            int recLen = rec.length;
-
-            if (recLen > sz) {
-                System.arraycopy(rec, 0, buf, offset, sz);
-
-                this.readBuf = new byte[recLen - sz];
-
-                System.arraycopy(rec, sz, this.readBuf, 0, recLen - sz);
-            } else {
-                sz = recLen;
-
-                System.arraycopy(rec, 0, buf, offset, recLen);
-            } 
-
-            totalRead += sz;
-            numToRead -= sz;
-            offset += sz;
-        } 
-
-        this.entryOffset += totalRead;
-
-        return totalRead;
-    } 
-
-    /**
-     * Copies the contents of the current tar archive entry directly into
-     * an output stream.
-     * 
-     * @param out The OutputStream into which to write the entry's data.
-     */
-    public void copyEntryContents(OutputStream out) throws IOException {
-        byte[] buf = new byte[32 * 1024];
-
-        while (true) {
-            int numRead = this.read(buf, 0, buf.length);
-
-            if (numRead == -1) {
-                break;
-            } 
-
-            out.write(buf, 0, numRead);
-        } 
-    } 
-}
diff --git a/src/main/org/apache/tools/tar/TarOutputStream.java b/src/main/org/apache/tools/tar/TarOutputStream.java
deleted file mode 100644
index 29fba41..0000000
--- a/src/main/org/apache/tools/tar/TarOutputStream.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-/*
- * This package is based on the work done by Timothy Gerard Endres 
- * (time@ice.com) to whom the Ant project is very grateful for his great code.
- */
-
-package org.apache.tools.tar;
-
-import java.io.*;
-
-/**
- * The TarOutputStream writes a UNIX tar archive as an OutputStream.
- * Methods are provided to put entries, and then write their contents
- * by writing to this stream using write().
- * 
- * @author Timothy Gerard Endres <a href="mailto:time@ice.com">time@ice.com</a>
- */
-public class TarOutputStream extends FilterOutputStream {
-    static public final int LONGFILE_ERROR = 0;
-    static public final int LONGFILE_TRUNCATE = 1;
-    static public final int LONGFILE_GNU = 2;
-    
-    protected boolean   debug;
-    protected int       currSize;
-    protected int       currBytes;
-    protected byte[]    oneBuf;
-    protected byte[]    recordBuf;
-    protected int       assemLen;
-    protected byte[]    assemBuf;
-    protected TarBuffer buffer;
-    protected int       longFileMode = LONGFILE_ERROR;
-
-    public TarOutputStream(OutputStream os) {
-        this(os, TarBuffer.DEFAULT_BLKSIZE, TarBuffer.DEFAULT_RCDSIZE);
-    }
-
-    public TarOutputStream(OutputStream os, int blockSize) {
-        this(os, blockSize, TarBuffer.DEFAULT_RCDSIZE);
-    }
-
-    public TarOutputStream(OutputStream os, int blockSize, int recordSize) {
-        super(os);
-
-        this.buffer = new TarBuffer(os, blockSize, recordSize);
-        this.debug = false;
-        this.assemLen = 0;
-        this.assemBuf = new byte[recordSize];
-        this.recordBuf = new byte[recordSize];
-        this.oneBuf = new byte[1];
-    }
-
-    public void setLongFileMode(int longFileMode) {
-        this.longFileMode = longFileMode;
-    }
-    
-
-    /**
-     * Sets the debugging flag.
-     * 
-     * @param debugF True to turn on debugging.
-     */
-    public void setDebug(boolean debugF) {
-        this.debug = debugF;
-    } 
-
-    /**
-     * Sets the debugging flag in this stream's TarBuffer.
-     * 
-     * @param debugF True to turn on debugging.
-     */
-    public void setBufferDebug(boolean debug) {
-        this.buffer.setDebug(debug);
-    } 
-
-    /**
-     * Ends the TAR archive without closing the underlying OutputStream.
-     * The result is that the EOF record of nulls is written.
-     */
-    public void finish() throws IOException {
-        this.writeEOFRecord();
-    } 
-
-    /**
-     * Ends the TAR archive and closes the underlying OutputStream.
-     * This means that finish() is called followed by calling the
-     * TarBuffer's close().
-     */
-    public void close() throws IOException {
-        this.finish();
-        this.buffer.close();
-    } 
-
-    /**
-     * Get the record size being used by this stream's TarBuffer.
-     * 
-     * @return The TarBuffer record size.
-     */
-    public int getRecordSize() {
-        return this.buffer.getRecordSize();
-    } 
-
-    /**
-     * Put an entry on the output stream. This writes the entry's
-     * header record and positions the output stream for writing
-     * the contents of the entry. Once this method is called, the
-     * stream is ready for calls to write() to write the entry's
-     * contents. Once the contents are written, closeEntry()
-     * <B>MUST</B> be called to ensure that all buffered data
-     * is completely written to the output stream.
-     * 
-     * @param entry The TarEntry to be written to the archive.
-     */
-    public void putNextEntry(TarEntry entry) throws IOException {
-        if (entry.getName().length() >= TarConstants.NAMELEN) {
-
-            if (longFileMode == LONGFILE_GNU) {
-                // create a TarEntry for the LongLink, the contents
-                // of which are the entry's name 
-                TarEntry longLinkEntry = new TarEntry(TarConstants.GNU_LONGLINK,
-                                                      TarConstants.LF_GNUTYPE_LONGNAME);
-                 
-                longLinkEntry.setSize(entry.getName().length() + 1);
-                putNextEntry(longLinkEntry);                                                    
-                write(entry.getName().getBytes());
-                write(0);
-                closeEntry();
-            }
-            else if (longFileMode != LONGFILE_TRUNCATE) {
-                throw new RuntimeException("file name '" + entry.getName() 
-                                             + "' is too long ( > " 
-                                             + TarConstants.NAMELEN + " bytes)");
-            }
-        } 
-
-        entry.writeEntryHeader(this.recordBuf);
-        this.buffer.writeRecord(this.recordBuf);
-
-        this.currBytes = 0;
-
-        if (entry.isDirectory()) {
-            this.currSize = 0;
-        } else {
-            this.currSize = (int) entry.getSize();
-        }
-    } 
-
-    /**
-     * Close an entry. This method MUST be called for all file
-     * entries that contain data. The reason is that we must
-     * buffer data written to the stream in order to satisfy
-     * the buffer's record based writes. Thus, there may be
-     * data fragments still being assembled that must be written
-     * to the output stream before this entry is closed and the
-     * next entry written.
-     */
-    public void closeEntry() throws IOException {
-        if (this.assemLen > 0) {
-            for (int i = this.assemLen; i < this.assemBuf.length; ++i) {
-                this.assemBuf[i] = 0;
-            }
-
-            this.buffer.writeRecord(this.assemBuf);
-
-            this.currBytes += this.assemLen;
-            this.assemLen = 0;
-        } 
-
-        if (this.currBytes < this.currSize) {
-            throw new IOException("entry closed at '" + this.currBytes 
-                                  + "' before the '" + this.currSize 
-                                  + "' bytes specified in the header were written");
-        } 
-    } 
-
-    /**
-     * Writes a byte to the current tar archive entry.
-     * 
-     * This method simply calls read( byte[], int, int ).
-     * 
-     * @param b The byte written.
-     */
-    public void write(int b) throws IOException {
-        this.oneBuf[0] = (byte) b;
-
-        this.write(this.oneBuf, 0, 1);
-    } 
-
-    /**
-     * Writes bytes to the current tar archive entry.
-     * 
-     * This method simply calls write( byte[], int, int ).
-     * 
-     * @param wBuf The buffer to write to the archive.
-     * @return The number of bytes read, or -1 at EOF.
-     */
-    public void write(byte[] wBuf) throws IOException {
-        this.write(wBuf, 0, wBuf.length);
-    } 
-
-    /**
-     * Writes bytes to the current tar archive entry. This method
-     * is aware of the current entry and will throw an exception if
-     * you attempt to write bytes past the length specified for the
-     * current entry. The method is also (painfully) aware of the
-     * record buffering required by TarBuffer, and manages buffers
-     * that are not a multiple of recordsize in length, including
-     * assembling records from small buffers.
-     * 
-     * @param wBuf The buffer to write to the archive.
-     * @param wOffset The offset in the buffer from which to get bytes.
-     * @param numToWrite The number of bytes to write.
-     */
-    public void write(byte[] wBuf, int wOffset, int numToWrite) throws IOException {
-        if ((this.currBytes + numToWrite) > this.currSize) {
-            throw new IOException("request to write '" + numToWrite 
-                                  + "' bytes exceeds size in header of '" 
-                                  + this.currSize + "' bytes");
-
-            // 
-            // We have to deal with assembly!!!
-            // The programmer can be writing little 32 byte chunks for all
-            // we know, and we must assemble complete records for writing.
-            // REVIEW Maybe this should be in TarBuffer? Could that help to
-            // eliminate some of the buffer copying.
-            // 
-        } 
-
-        if (this.assemLen > 0) {
-            if ((this.assemLen + numToWrite) >= this.recordBuf.length) {
-                int aLen = this.recordBuf.length - this.assemLen;
-
-                System.arraycopy(this.assemBuf, 0, this.recordBuf, 0, 
-                                 this.assemLen);
-                System.arraycopy(wBuf, wOffset, this.recordBuf, 
-                                 this.assemLen, aLen);
-                this.buffer.writeRecord(this.recordBuf);
-
-                this.currBytes += this.recordBuf.length;
-                wOffset += aLen;
-                numToWrite -= aLen;
-                this.assemLen = 0;
-            } else {
-                System.arraycopy(wBuf, wOffset, this.assemBuf, this.assemLen, 
-                                 numToWrite);
-
-                wOffset += numToWrite;
-                this.assemLen += numToWrite;
-                numToWrite -= numToWrite;
-            } 
-        } 
-
-        // 
-        // When we get here we have EITHER:
-        // o An empty "assemble" buffer.
-        // o No bytes to write (numToWrite == 0)
-        // 
-        while (numToWrite > 0) {
-            if (numToWrite < this.recordBuf.length) {
-                System.arraycopy(wBuf, wOffset, this.assemBuf, this.assemLen, 
-                                 numToWrite);
-
-                this.assemLen += numToWrite;
-
-                break;
-            } 
-
-            this.buffer.writeRecord(wBuf, wOffset);
-
-            int num = this.recordBuf.length;
-
-            this.currBytes += num;
-            numToWrite -= num;
-            wOffset += num;
-        } 
-    } 
-
-    /**
-     * Write an EOF (end of archive) record to the tar archive.
-     * An EOF record consists of a record of all zeros.
-     */
-    private void writeEOFRecord() throws IOException {
-        for (int i = 0; i < this.recordBuf.length; ++i) {
-            this.recordBuf[i] = 0;
-        }
-
-        this.buffer.writeRecord(this.recordBuf);
-    } 
-}
-
-
diff --git a/src/main/org/apache/tools/tar/TarUtils.java b/src/main/org/apache/tools/tar/TarUtils.java
deleted file mode 100644
index 1274e04..0000000
--- a/src/main/org/apache/tools/tar/TarUtils.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-/*
- * This package is based on the work done by Timothy Gerard Endres 
- * (time@ice.com) to whom the Ant project is very grateful for his great code.
- */
-
-package org.apache.tools.tar;
-
-/**
- * This class provides static utility methods to work with byte streams.
- * 
- * @author Timothy Gerard Endres <a href="mailto:time@ice.com">time@ice.com</a>
- * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
- */
-public class TarUtils {
-
-    /**
-     * Parse an octal string from a header buffer. This is used for the
-     * file permission mode value.
-     * 
-     * @param header The header buffer from which to parse.
-     * @param offset The offset into the buffer from which to parse.
-     * @param length The number of header bytes to parse.
-     * @return The long value of the octal string.
-     */
-    public static long parseOctal(byte[] header, int offset, int length) {
-        long    result = 0;
-        boolean stillPadding = true;
-        int     end = offset + length;
-
-        for (int i = offset; i < end; ++i) {
-            if (header[i] == 0) {
-                break;
-            } 
-
-            if (header[i] == (byte) ' ' || header[i] == '0') {
-                if (stillPadding) {
-                    continue;
-                } 
-
-                if (header[i] == (byte) ' ') {
-                    break;
-                } 
-            } 
-
-            stillPadding = false;
-            result = (result << 3) + (header[i] - '0');
-        } 
-
-        return result;
-    } 
-
-    /**
-     * Parse an entry name from a header buffer.
-     * 
-     * @param header The header buffer from which to parse.
-     * @param offset The offset into the buffer from which to parse.
-     * @param length The number of header bytes to parse.
-     * @return The header's entry name.
-     */
-    public static StringBuffer parseName(byte[] header, int offset, int length) {
-        StringBuffer result = new StringBuffer(length);
-        int          end = offset + length;
-
-        for (int i = offset; i < end; ++i) {
-            if (header[i] == 0) {
-                break;
-            } 
-
-            result.append((char) header[i]);
-        } 
-
-        return result;
-    } 
-
-    /**
-     * Determine the number of bytes in an entry name.
-     * 
-     * @param header The header buffer from which to parse.
-     * @param offset The offset into the buffer from which to parse.
-     * @param length The number of header bytes to parse.
-     * @return The number of bytes in a header's entry name.
-     */
-    public static int getNameBytes(StringBuffer name, byte[] buf, int offset, int length) {
-        int i;
-
-        for (i = 0; i < length && i < name.length(); ++i) {
-            buf[offset + i] = (byte) name.charAt(i);
-        } 
-
-        for (; i < length; ++i) {
-            buf[offset + i] = 0;
-        } 
-
-        return offset + length;
-    } 
-
-    /**
-     * Parse an octal integer from a header buffer.
-     * 
-     * @param header The header buffer from which to parse.
-     * @param offset The offset into the buffer from which to parse.
-     * @param length The number of header bytes to parse.
-     * @return The integer value of the octal bytes.
-     */
-    public static int getOctalBytes(long value, byte[] buf, int offset, int length) {
-        byte[] result = new byte[length];
-        int    idx = length - 1;
-
-        buf[offset + idx] = 0;
-        --idx;
-        buf[offset + idx] = (byte) ' ';
-        --idx;
-
-        if (value == 0) {
-            buf[offset + idx] = (byte) '0';
-            --idx;
-        } else {
-            for (long val = value; idx >= 0 && val > 0; --idx) {
-                buf[offset + idx] = (byte) ((byte) '0' + (byte) (val & 7));
-                val = val >> 3;
-            } 
-        } 
-
-        for (; idx >= 0; --idx) {
-            buf[offset + idx] = (byte) ' ';
-        } 
-
-        return offset + length;
-    } 
-
-    /**
-     * Parse an octal long integer from a header buffer.
-     * 
-     * @param header The header buffer from which to parse.
-     * @param offset The offset into the buffer from which to parse.
-     * @param length The number of header bytes to parse.
-     * @return The long value of the octal bytes.
-     */
-    public static int getLongOctalBytes(long value, byte[] buf, int offset, int length) {
-        byte[] temp = new byte[length + 1];
-
-        getOctalBytes(value, temp, 0, length + 1);
-        System.arraycopy(temp, 0, buf, offset, length);
-
-        return offset + length;
-    } 
-
-    /**
-     * Parse the checksum octal integer from a header buffer.
-     * 
-     * @param header The header buffer from which to parse.
-     * @param offset The offset into the buffer from which to parse.
-     * @param length The number of header bytes to parse.
-     * @return The integer value of the entry's checksum.
-     */
-    public static int getCheckSumOctalBytes(long value, byte[] buf, int offset, int length) {
-        getOctalBytes(value, buf, offset, length);
-
-        buf[offset + length - 1] = (byte) ' ';
-        buf[offset + length - 2] = 0;
-
-        return offset + length;
-    }
-    
-    /** 
-     * Compute the checksum of a tar entry header.
-     *  
-     * @param buf The tar entry's header buffer.
-     * @return The computed checksum.
-     */ 
-    public static long computeCheckSum(byte[] buf) {
-        long sum = 0;
-        
-        for (int i = 0; i < buf.length; ++i) {
-            sum += 255 & buf[i];
-        } 
-        
-        return sum;
-    }    
-}
diff --git a/src/script/ant b/src/script/ant
deleted file mode 100644
index b43cc18..0000000
--- a/src/script/ant
+++ /dev/null
@@ -1,107 +0,0 @@
-#! /bin/sh
-
-if [ -f $HOME/.antrc ] ; then 
-  . $HOME/.antrc
-fi
-
-# Cygwin support.  $cygwin _must_ be set to either true or false.
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  *) cygwin=false ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin; then
-  [ -n "$ANT_HOME" ] &&
-    ANT_HOME=`cygpath --unix "$ANT_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-if [ "$ANT_HOME" = "" ] ; then
-  # try to find ANT
-  if [ -d /opt/ant ] ; then 
-    ANT_HOME=/opt/ant
-  fi
-
-  if [ -d ${HOME}/opt/ant ] ; then 
-    ANT_HOME=${HOME}/opt/ant
-  fi
-
-  ## resolve links - $0 may be a link to ant's home
-  PRG=$0
-  progname=`basename $0`
-  
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '.*/.*' > /dev/null; then
-	PRG="$link"
-    else
-	PRG="`dirname $PRG`/$link"
-    fi
-  done
-  
-  ANT_HOME=`dirname "$PRG"`/..
-
-fi
-
-if [ "$JAVA_HOME" != "" ] ; then
-  if [ "$JAVACMD" = "" ] ; then 
-    JAVACMD=$JAVA_HOME/bin/java
-  fi
-else
-  if [ "$JAVACMD" = "" ] ; then 
-    JAVACMD=java
-  fi
-fi
- 
-# add in the dependency .jar files
-DIRLIBS=${ANT_HOME}/lib/*.jar
-for i in ${DIRLIBS}
-do
-    # if the directory is empty, then it will return the input string
-    # this is stupid, so case for it
-    if [ "$i" != "${DIRLIBS}" ] ; then
-        LOCALCLASSPATH=$LOCALCLASSPATH:"$i"
-    fi
-done
-
-if [ "$CLASSPATH" != "" ] ; then
-  LOCALCLASSPATH=$CLASSPATH:$LOCALCLASSPATH
-fi
-
-if [ "$JAVA_HOME" != "" ] ; then
-  if test -f $JAVA_HOME/lib/tools.jar ; then
-    LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar
-  fi
-
-  if test -f $JAVA_HOME/lib/classes.zip ; then
-    LOCALCLASSPATH=$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip
-  fi
-else
-  echo "Warning: JAVA_HOME environment variable is not set."
-  echo "  If build fails because sun.* classes could not be found"
-  echo "  you will need to set the JAVA_HOME environment variable"
-  echo "  to the installation directory of java."
-fi
-
-# supply JIKESPATH to Ant as jikes.class.path
-if [ "$JIKESPATH" != "" ] ; then
-  if [ "$ANT_OPTS" != "" ] ; then
-    ANT_OPTS="$ANT_OPTS -Djikes.class.path=$JIKESPATH"
-  else
-    ANT_OPTS=-Djikes.class.path=$JIKESPATH
-  fi
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
-  ANT_HOME=`cygpath --path --windows "$ANT_HOME"`
-  JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
-  LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
-fi
-
-$JAVACMD -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" $ANT_OPTS org.apache.tools.ant.Main "$@"
diff --git a/src/script/ant.bat b/src/script/ant.bat
deleted file mode 100755
index a69b2de..0000000
--- a/src/script/ant.bat
+++ /dev/null
@@ -1,97 +0,0 @@
-@echo off
-
-if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"
-
-if not "%OS%"=="Windows_NT" goto win9xStart
-:winNTStart
-@setlocal
-
-rem %~dp0 is name of current script under NT
-set DEFAULT_ANT_HOME=%~dp0
-
-rem : operator works similar to make : operator
-set DEFAULT_ANT_HOME=%DEFAULT_ANT_HOME:\bin\=%
-
-if %ANT_HOME%a==a set ANT_HOME=%DEFAULT_ANT_HOME%
-set DEFAULT_ANT_HOME=
-
-rem On NT/2K grab all arguments at once
-set ANT_CMD_LINE_ARGS=%*
-goto doneStart
-
-:win9xStart
-rem Slurp the command line arguments.  This loop allows for an unlimited number of 
-rem agruments (up to the command line limit, anyway).
-
-set ANT_CMD_LINE_ARGS=
-
-:setupArgs
-if %1a==a goto doneStart
-set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1
-shift
-goto setupArgs
-
-:doneStart
-rem This label provides a place for the argument list loop to break out 
-rem and for NT handling to skip to.
-
-rem find ANT_HOME
-if not "%ANT_HOME%"=="" goto checkJava
-
-rem check for ant in Program Files on system drive
-if not exist "%SystemDrive%\Program Files\ant" goto checkSystemDrive
-set ANT_HOME=%SystemDrive%\Program Files\ant
-goto checkJava
-
-:checkSystemDrive
-rem check for ant in root directory of system drive
-if not exist "%SystemDrive%\ant" goto noAntHome
-set ANT_HOME=%SystemDrive%\ant
-goto checkJava
-
-:noAntHome
-echo ANT_HOME is not set and ant could not be located. Please set ANT_HOME.
-goto end
-
-:checkJava
-set _JAVACMD=%JAVACMD%
-set LOCALCLASSPATH=%CLASSPATH%
-for %%i in ("%ANT_HOME%\lib\*.jar") do call "%ANT_HOME%\bin\lcp.bat" "%%i"
-
-if "%JAVA_HOME%" == "" goto noJavaHome
-if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java
-if exist "%JAVA_HOME%\lib\tools.jar" call "%ANT_HOME%\bin\lcp.bat" "%JAVA_HOME%\lib\tools.jar"
-if exist "%JAVA_HOME%\lib\classes.zip" call "%ANT_HOME%\bin\lcp.bat" "%JAVA_HOME%\lib\classes.zip"
-goto checkJikes
-
-:noJavaHome
-if "%_JAVACMD%" == "" set _JAVACMD=java
-echo.
-echo Warning: JAVA_HOME environment variable is not set.
-echo   If build fails because sun.* classes could not be found
-echo   you will need to set the JAVA_HOME environment variable
-echo   to the installation directory of java.
-echo.
-
-:checkJikes
-if not "%JIKESPATH%" == "" goto runAntWithJikes
-
-:runAnt
-%_JAVACMD% -classpath %LOCALCLASSPATH% -Dant.home="%ANT_HOME%" %ANT_OPTS% org.apache.tools.ant.Main %ANT_CMD_LINE_ARGS%
-goto end
-
-:runAntWithJikes
-%_JAVACMD% -classpath %LOCALCLASSPATH% -Dant.home="%ANT_HOME%" -Djikes.class.path=%JIKESPATH% %ANT_OPTS% org.apache.tools.ant.Main %ANT_CMD_LINE_ARGS%
-
-:end
-set LOCALCLASSPATH=
-set _JAVACMD=
-set ANT_CMD_LINE_ARGS=
-
-if not "%OS%"=="Windows_NT" goto mainEnd
-:winNTend
-@endlocal
-
-:mainEnd
-if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"
-
diff --git a/src/script/antRun b/src/script/antRun
deleted file mode 100644
index f0a18f1..0000000
--- a/src/script/antRun
+++ /dev/null
@@ -1,9 +0,0 @@
-#! /bin/sh
-
-# Args: DIR command
-cd "$1"
-CMD="$2"
-shift
-shift
-
-exec $CMD "$@"
diff --git a/src/script/antRun.bat b/src/script/antRun.bat
deleted file mode 100755
index a083cbf..0000000
--- a/src/script/antRun.bat
+++ /dev/null
@@ -1,18 +0,0 @@
-@echo off
-
-cd %1
-set ANT_RUN_CMD=%2
-shift
-shift
-
-set PARAMS=
-:loop
-if ""%1 == "" goto runCommand
-set PARAMS=%PARAMS% %1
-shift
-goto loop
-
-:runCommand
-rem echo %ANT_RUN_CMD% %PARAMS%
-%ANT_RUN_CMD% %PARAMS%
-
diff --git a/src/script/lcp.bat b/src/script/lcp.bat
deleted file mode 100755
index 4f26713..0000000
--- a/src/script/lcp.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-set LOCALCLASSPATH=%1;%LOCALCLASSPATH%
-
diff --git a/src/script/runant.pl b/src/script/runant.pl
deleted file mode 100644
index 2d0e5b7..0000000
--- a/src/script/runant.pl
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/local/bin/perl
-#######################################################################
-#
-# runant.pl
-#
-# wrapper script for invoking ant in a platform with Perl installed
-# this may include cgi-bin invocation, which is considered somewhat daft.
-# (slo: that should be a separate file which can be derived from this
-# and returns the XML formatted output)
-#
-# the code is not totally portable due to classpath and directory splitting
-# issues. oops. (NB, use File::Spec::Functions  will help and the code is
-# structured for the catfile() call, but because of perl version funnies
-# the code is not included. 
-#
-# created:         2000-8-24
-# last modified:   2000-8-24
-# author:          Steve Loughran steve_l@sourceforge.net
-#######################################################################
-#
-# Assumptions:
-#
-# - the "java" executable/script is on the command path
-# - ANT_HOME has been set
-# - target platform uses ":" as classpath separator or perl indicates it is dos/win32
-# - target platform uses "/" as directory separator.
-
-#be fussy about variables
-use strict;
-
-#platform specifics (disabled)
-#use File::Spec::Functions;
-
-#turn warnings on during dev; generates a few spurious uninitialised var access warnings
-#use warnings;
-
-#and set $debug to 1 to turn on trace info
-my $debug=0;
-
-#######################################################################
-#
-# check to make sure environment is setup
-#
-
-my $HOME = $ENV{ANT_HOME};
-if ($HOME eq "")
-	{
-    die "\n\nANT_HOME *MUST* be set!\n\n";
-	}
-
-my $JAVACMD = $ENV{JAVACMD};
-$JAVACMD = "java" if $JAVACMD eq "";
-
-#ISSUE: what java wants to split up classpath varies from platform to platform 
-#and perl is not too hot at hinting which box it is on.
-#here I assume ":" 'cept on win32 and dos. Add extra tests here as needed.
-my $s=":";
-if(($^O eq "MSWin32") || ($^O eq "dos"))
-	{
-	$s=";";
-	}
-
-#build up standard classpath
-my $localpath=$ENV{CLASSPATH};
-if ($localpath eq "")
-	{
-	print "warning: no initial classpath\n" if ($debug);
-	$localpath="";
-	}
-
-#add jar files. I am sure there is a perl one liner to do this.
-my $jarpattern="$HOME/lib/*.jar";
-my @jarfiles =glob($jarpattern);
-print "jarfiles=@jarfiles\n" if ($debug);
-my $jar;
-foreach $jar (@jarfiles )
-	{
-	$localpath.="$s$jar";
-	}
-
-#if Java home is defined, look for tools.jar & classes.zip and add to classpath
-my $JAVA_HOME = $ENV{JAVA_HOME};
-if ($JAVA_HOME ne "")
-	{
-	my $tools="$JAVA_HOME/lib/tools.jar";
-	if (-e "$tools")
-		{
-		$localpath .= "$s$tools";
-		}
-	my $classes="$JAVA_HOME/lib/classes.zip";
-	if (-e $classes)
-		{
-		$localpath .= "$s$classes";
-		}
-	}
-else
-	{
-    print "\n\nWarning: JAVA_HOME environment variable is not set.\n".
-		"If the build fails because sun.* classes could not be found\n".
-		"you will need to set the JAVA_HOME environment variable\n".
-		"to the installation directory of java\n";
-	}
-
-#jikes
-my @ANT_OPTS=split $ENV{ANT_OPTS};
-if($ENV{JIKESPATH} ne "")
-	{
-	push @ANT_OPTS, "-Djikes.class.path=$ENV{JIKESPATH}";
-	}
-
-#construct arguments to java
-
-my @ARGS;
-push @ARGS, "-classpath", "$localpath", "-Dant.home=$HOME";
-push @ARGS, @ANT_OPTS;
-push @ARGS, "org.apache.tools.ant.Main";
-push @ARGS, @ARGV;
-
-print "\n $JAVACMD @ARGS\n\n" if ($debug);
-system $JAVACMD, @ARGS;
-
-
diff --git a/src/testcases/org/apache/tools/ant/IntrospectionHelperTest.java b/src/testcases/org/apache/tools/ant/IntrospectionHelperTest.java
deleted file mode 100644
index 9c94562..0000000
--- a/src/testcases/org/apache/tools/ant/IntrospectionHelperTest.java
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
-import java.io.File;
-import java.util.*;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.IntrospectionHelper.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-
-public class IntrospectionHelperTest extends TestCase {
-
-    public static boolean isUnixStyle = File.pathSeparatorChar == ':';
-
-    public IntrospectionHelperTest(String name) {
-        super(name);
-    }
-    
-    public void testAddText() throws BuildException {
-        IntrospectionHelper ih = IntrospectionHelper.getHelper(java.lang.String.class);
-        try {
-            ih.addText("", "test");
-            fail("String doesn\'t support addText");
-        } catch (BuildException be) {
-        }
-
-        ih = IntrospectionHelper.getHelper(getClass());
-        ih.addText(this, "test");
-        try {
-            ih.addText(this, "test2");
-            fail("test2 shouldn\'t be equal to test");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-    }
-
-    public void testSupportsCharacters() {
-        IntrospectionHelper ih = IntrospectionHelper.getHelper(java.lang.String.class);
-        assert("String doesn\'t support addText", !ih.supportsCharacters());
-        ih = IntrospectionHelper.getHelper(getClass());
-        assert("IntrospectionHelperTest supports addText", 
-               ih.supportsCharacters());
-    }
-
-    public void addText(String text) {
-        assertEquals("test", text);
-    }
-    
-    public void testElementCreators() throws BuildException {
-        IntrospectionHelper ih = IntrospectionHelper.getHelper(getClass());
-        try {
-            ih.getElementType("one");
-            fail("don't have element type one");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.getElementType("two");
-            fail("createTwo takes arguments");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.getElementType("three");
-            fail("createThree returns void");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.getElementType("four");
-            fail("createFour returns array");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.getElementType("five");
-            fail("createFive returns primitive type");
-        } catch (BuildException be) {
-        }
-        assertEquals(java.lang.String.class, ih.getElementType("six"));
-        assertEquals("test", ih.createElement(this, "six"));
-
-        try {
-            ih.getElementType("seven");
-            fail("addSeven takes two arguments");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.getElementType("eight");
-            fail("addEight takes no arguments");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.getElementType("nine");
-            fail("nine return non void");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.getElementType("ten");
-            fail("addTen takes array argument");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.getElementType("eleven");
-            fail("addTen takes primitive argument");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.getElementType("twelve");
-            fail("no primitive constructor for java.lang.Class");
-        } catch (BuildException be) {
-        }
-        assertEquals(java.lang.StringBuffer.class, ih.getElementType("thirteen"));
-        assertEquals("test", ih.createElement(this, "thirteen").toString());
-
-        try {
-            ih.createElement(this, "fourteen");
-            fail("fourteen throws NullPointerException");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof NullPointerException);
-        }
-
-        try {
-            ih.createElement(this, "fourteen");
-            fail("fifteen throws NullPointerException");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof NullPointerException);
-        }
-    }
-    
-    public void testGetNestedElements() {
-        Hashtable h = new Hashtable();
-        h.put("six", java.lang.String.class);
-        h.put("thirteen", java.lang.StringBuffer.class);
-        h.put("fourteen", java.lang.StringBuffer.class);
-        h.put("fifteen", java.lang.StringBuffer.class);
-        IntrospectionHelper ih = IntrospectionHelper.getHelper(getClass());
-        Enumeration enum = ih.getNestedElements();
-        while (enum.hasMoreElements()) {
-            String name = (String) enum.nextElement();
-            Class expect = (Class) h.get(name);
-            assertNotNull("Support for "+name+" in IntrospectioNHelperTest?",
-                          expect);
-            assertEquals("Return type of "+name, expect, ih.getElementType(name));
-            h.remove(name);
-        }
-        assert("Found all", h.isEmpty());
-    }
-
-    public Object createTwo(String s) {
-        return null;
-    }
-
-    public void createThree() {}
-
-    public Object[] createFour() {
-        return null;
-    }
-
-    public int createFive() {
-        return 0;
-    }
-
-    public String createSix() {
-        return "test";
-    }
-
-    public StringBuffer createFifteen() {
-        throw new NullPointerException();
-    }
-
-    public void addSeven(String s, String s2) {}
-
-    public void addEight() {}
-
-    public String addNine(String s) {
-        return null;
-    }
-
-    public void addTen(String[] s) {}
-
-    public void addEleven(int i) {}
-
-    public void addTwelve(Class c) {}
-
-    public void addThirteen(StringBuffer sb) {
-        sb.append("test");
-    }
-    
-    public void addFourteen(StringBuffer s) {
-        throw new NullPointerException();
-    }
-
-    public void testAttributeSetters() throws BuildException {
-        Project p = new Project();
-        p.setBasedir("/tmp");
-        IntrospectionHelper ih = IntrospectionHelper.getHelper(getClass());
-        try {
-            ih.setAttribute(p, this, "one", "test");
-            fail("setOne doesn't exist");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.setAttribute(p, this, "two", "test");
-            fail("setTwo returns non void");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.setAttribute(p, this, "three", "test");
-            fail("setThree takes no args");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.setAttribute(p, this, "four", "test");
-            fail("setFour takes two args");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.setAttribute(p, this, "five", "test");
-            fail("setFive takes array arg");
-        } catch (BuildException be) {
-        }
-        try {
-            ih.setAttribute(p, this, "six", "test");
-            fail("Project doesn't have a String constructor");
-        } catch (BuildException be) {
-        }
-        ih.setAttribute(p, this, "seven", "2");
-        try {
-            ih.setAttribute(p, this, "seven", "3");
-            fail("2 shouldn't be equals to three");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-        ih.setAttribute(p, this, "eight", "2");
-        try {
-            ih.setAttribute(p, this, "eight", "3");
-            fail("2 shouldn't be equals to three - as int");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-        ih.setAttribute(p, this, "nine", "2");
-        try {
-            ih.setAttribute(p, this, "nine", "3");
-            fail("2 shouldn't be equals to three - as Integer");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-        ih.setAttribute(p, this, "ten", "2");
-        try {
-            ih.setAttribute(p, this, "ten", "3");
-            fail("/tmp/2 shouldn't be equals to /tmp/3");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-        ih.setAttribute(p, this, "eleven", "2");
-        try {
-            ih.setAttribute(p, this, "eleven", "on");
-            fail("on shouldn't be false");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-        ih.setAttribute(p, this, "twelve", "2");
-        try {
-            ih.setAttribute(p, this, "twelve", "on");
-            fail("on shouldn't be false");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-        ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.Project");
-        try {
-            ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.ProjectHelper");
-            fail("org.apache.tools.ant.Project shouldn't be equal to org.apache.tools.ant.ProjectHelper");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-        try {
-            ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.Project2");
-            fail("org.apache.tools.ant.Project2 doesn't exist");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof ClassNotFoundException);
-        }
-        ih.setAttribute(p, this, "fourteen", "2");
-        try {
-            ih.setAttribute(p, this, "fourteen", "on");
-            fail("2 shouldn't be equals to three - as StringBuffer");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-        ih.setAttribute(p, this, "fifteen", "abcd");
-        try {
-            ih.setAttribute(p, this, "fifteen", "on");
-            fail("o shouldn't be equal to a");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-        ih.setAttribute(p, this, "sixteen", "abcd");
-        try {
-            ih.setAttribute(p, this, "sixteen", "on");
-            fail("o shouldn't be equal to a");
-        } catch (BuildException be) {
-            assert(be.getException() instanceof AssertionFailedError);
-        }
-    }
-
-    public void testGetAttributes() {
-        Hashtable h = new Hashtable();
-        h.put("seven", java.lang.String.class);
-        h.put("eight", java.lang.Integer.TYPE);
-        h.put("nine", java.lang.Integer.class);
-        h.put("ten", java.io.File.class);
-        h.put("eleven", java.lang.Boolean.TYPE);
-        h.put("twelve", java.lang.Boolean.class);
-        h.put("thirteen", java.lang.Class.class);
-        h.put("fourteen", java.lang.StringBuffer.class);
-        h.put("fifteen", java.lang.Character.TYPE);
-        h.put("sixteen", java.lang.Character.class);
-        IntrospectionHelper ih = IntrospectionHelper.getHelper(getClass());
-        Enumeration enum = ih.getAttributes();
-        while (enum.hasMoreElements()) {
-            String name = (String) enum.nextElement();
-            Class expect = (Class) h.get(name);
-            assertNotNull("Support for "+name+" in IntrospectionHelperTest?",
-                          expect);
-            assertEquals("Type of "+name, expect, ih.getAttributeType(name));
-            h.remove(name);
-        }
-        assert("Found all", h.isEmpty());
-    }
-
-    public int setTwo(String s) {
-        return 0;
-    }
-
-    public void setThree() {}
-
-    public void setFour(String s1, String s2) {}
-
-    public void setFive(String[] s) {}
-
-    public void setSix(Project p) {}
-
-    public void setSeven(String s) {
-        assertEquals("2", s);
-    }
-
-    public void setEight(int i) {
-        assertEquals(2, i);
-    }
-
-    public void setNine(Integer i) {
-        assertEquals(2, i.intValue());
-    }
-
-    public void setTen(File f) {
-        if (isUnixStyle) { 
-            assertEquals("/tmp/2", f.getAbsolutePath());
-        } else {
-            assertEquals(":\\tmp\\2", f.getAbsolutePath().toLowerCase().substring(1));
-        }
-    }
-
-    public void setEleven(boolean b) {
-        assert(!b);
-    }
-
-    public void setTwelve(Boolean b) {
-        assert(!b.booleanValue());
-    }
-
-    public void setThirteen(Class c) {
-        assertEquals(Project.class, c);
-    }
-
-    public void setFourteen(StringBuffer sb) {
-        assertEquals("2", sb.toString());
-    }
-
-    public void setFifteen(char c) {
-        assertEquals(c, 'a');
-    }
-
-    public void setSixteen(Character c) {
-        assertEquals(c.charValue(), 'a');
-    }
-
-}// IntrospectionHelperTest
diff --git a/src/testcases/org/apache/tools/ant/ProjectTest.java b/src/testcases/org/apache/tools/ant/ProjectTest.java
deleted file mode 100644
index 019e04e..0000000
--- a/src/testcases/org/apache/tools/ant/ProjectTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant;
-
-import org.apache.tools.ant.types.*;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Very limited test class for Project. Waiting to be extended.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class ProjectTest extends TestCase {
-
-    private Project p;
-
-    public ProjectTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        p = new Project();
-        p.init();
-    }
-
-    public void testDataTypes() throws BuildException {
-        assertNull("dummy is not a known data type", 
-                   p.createDataType("dummy"));
-        Object o = p.createDataType("fileset");
-        assertNotNull("fileset is a known type", o);
-        assert("fileset creates FileSet", o instanceof FileSet);
-        assert("PatternSet", 
-               p.createDataType("patternset") instanceof PatternSet);
-        assert("Path", p.createDataType("path") instanceof Path);
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/AntStructureTest.java b/src/testcases/org/apache/tools/ant/taskdefs/AntStructureTest.java
deleted file mode 100644
index 0e5b8de..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/AntStructureTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class AntStructureTest extends TaskdefsTest { 
-    
-    public AntStructureTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/antstructure.xml");
-    }
-    
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/AntTest.java b/src/testcases/org/apache/tools/ant/taskdefs/AntTest.java
deleted file mode 100644
index 64e046d..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/AntTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class AntTest extends TaskdefsTest { 
-    
-    public AntTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/ant.xml");
-    }
-    
-    public void test1() { 
-        expectBuildException("test1", "recursive call");
-    }
-
-    // target must be specified
-    public void test2() { 
-        expectBuildException("test2", "required argument not specified");
-    }
-
-    // Should fail since a recursion will occur...
-    public void test3() { 
-        expectBuildException("test1", "recursive call");
-    }
-
-    public void test4() { 
-        expectBuildException("test4", "target doesn't exist");
-    }
-
-    public void test5() { 
-        executeTarget("test5");
-    }
-
-    public void test6() { 
-        executeTarget("test6");
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/AvailableTest.java b/src/testcases/org/apache/tools/ant/taskdefs/AvailableTest.java
deleted file mode 100644
index 4dae554..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/AvailableTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class AvailableTest extends TaskdefsTest { 
-
-    public AvailableTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/available.xml");
-    }
-    
-    // Nothing specified -> Fail
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    // Only property specified -> Fail
-    public void test2() { 
-        expectBuildException("test2", "required argument not specified");
-    }
-    
-    // Only file specified -> Fail
-    public void test3() { 
-        expectBuildException("test3", "required argument not specified");
-    }
-
-    // file doesn't exist -> property 'test' == null
-    public void test4() { 
-        executeTarget("test4");
-        assert(project.getProperty("test") == null);
-    }
-
-    // file does exist -> property 'test' == 'true'
-    public void test5() { 
-        executeTarget("test5");
-        assertEquals(project.getProperty("test"), "true");
-    }
-    
-    // resource doesn't exist -> property 'test' == null
-    public void test6() { 
-        executeTarget("test6");
-        assert(project.getProperty("test") == null);
-    }
-
-    // resource does exist -> property 'test' == 'true'
-    public void test7() { 
-        executeTarget("test7");
-        assertEquals(project.getProperty("test"), "true");
-    }
-
-    // class doesn't exist -> property 'test' == null
-    public void test8() { 
-        executeTarget("test8");
-        assert(project.getProperty("test") == null);
-    }
-
-    // class does exist -> property 'test' == 'true'
-    public void test9() { 
-        executeTarget("test9");
-        assertEquals(project.getProperty("test"), "true");
-    }
-    
-    // All three specified and all three exist -> true
-    public void test10() { 
-        executeTarget("test10");
-        assertEquals(project.getProperty("test"), "true");
-    }
-
-    // All three specified but class missing -> null
-    public void test11() { 
-        executeTarget("test11");
-        assertEquals(project.getProperty("test"), null);
-    }
-
-    // Specified property-name is "" -> true
-    public void test12() { 
-        executeTarget("test12");
-        assertEquals(project.getProperty("test"), null);
-        assertEquals(project.getProperty(""), "true");
-    }
-
-    // Specified file is "" -> current directory should always exis :-)
-    public void test13() { 
-        executeTarget("test13");
-        assertEquals(project.getProperty("test"), "true");
-    }
-
-    // Specified resource is "" -> can such a thing exist?
-    /*
-     * returns non null IBM JDK 1.3 Linux
-     */
-//    public void test14() { 
-//        executeTarget("test14");
-//        assertEquals(project.getProperty("test"), null);
-//    }
-    
-    // Specified class is "" -> can not exist
-    public void test15() { 
-        executeTarget("test15");
-        assertEquals(project.getProperty("test"), null);
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/CopydirTest.java b/src/testcases/org/apache/tools/ant/taskdefs/CopydirTest.java
deleted file mode 100644
index 32a3479..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/CopydirTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class CopydirTest extends TaskdefsTest { 
-    
-    public CopydirTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/copydir.xml");
-    }
-    
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "required argument not specified");
-    }
-
-    public void test3() { 
-        expectBuildException("test3", "required argument not specified");
-    }
-
-    public void test4() { 
-        expectLog("test4", "DEPRECATED - The copydir task is deprecated.  Use copy instead.Warning: src == dest");
-    }
-    
-    public void test5() { 
-        executeTarget("test5");
-        java.io.File f = new java.io.File("src/etc/testcases/taskdefs.tmp");
-        if (!f.exists() || !f.isDirectory()) { 
-            fail("Copy failed");
-        }
-        // We keep this, so we have something to delete in later tests :-)
-    }
-
-    public void test6() { 
-        expectBuildException("test6", "target is file");
-    }
-    
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/CopyfileTest.java b/src/testcases/org/apache/tools/ant/taskdefs/CopyfileTest.java
deleted file mode 100644
index 3e1b215..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/CopyfileTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class CopyfileTest extends TaskdefsTest { 
-    
-    public CopyfileTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/copyfile.xml");
-    }
-    
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "required argument not specified");
-    }
-
-    public void test3() { 
-        expectBuildException("test3", "required argument not specified");
-    }
-
-    public void test4() { 
-        expectLog("test4", "DEPRECATED - The copyfile task is deprecated.  Use copy instead.Warning: src == dest");
-    }
-
-    public void test5() { 
-        executeTarget("test5");
-        java.io.File f = new java.io.File("src/etc/testcases/taskdefs/copyfile.tmp");
-        if (f.exists()) { 
-            f.delete();
-        } else {
-            fail("Copy failed");
-        }
-    }
-/*
-    public void test6() { 
-        expectBuildException("test6", "target is directory");
-    }
-*/
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java b/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java
deleted file mode 100644
index 92d0aba..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class DeleteTest extends TaskdefsTest { 
-    
-    public DeleteTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/delete.xml");
-    }
-
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    public void test2() { 
-        executeTarget("test2");
-    }
-
-    // delete now handles files *and* directories --SB
-//    public void test3() { 
-//        expectBuildException("test3", "Not a directory");
-//    }
-
-    public void test4() { 
-        executeTarget("test4");
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/DeltreeTest.java b/src/testcases/org/apache/tools/ant/taskdefs/DeltreeTest.java
deleted file mode 100644
index c6bee10..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/DeltreeTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class DeltreeTest extends TaskdefsTest { 
-    
-    public DeltreeTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/deltree.xml");
-    }
-
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    public void test2() { 
-        // We try to delete the directory created in CopydirTest
-        executeTarget("test2");
-    }
-
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/EchoTest.java b/src/testcases/org/apache/tools/ant/taskdefs/EchoTest.java
deleted file mode 100644
index e323668..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/EchoTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class EchoTest extends TaskdefsTest { 
-    
-    public EchoTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/echo.xml");
-    }
-    
-    // Output an empty String
-    public void test1() { 
-        expectLog("test1", "");
-    }
-
-    // Output 'OUTPUT OF ECHO'
-    public void test2() { 
-        expectLog("test2", "OUTPUT OF ECHO");
-    }
-    
-    public void test3() { 
-        expectLog("test3", "\n"+
-                              "    This \n"+
-                              "    is\n"+
-                              "    a \n"+
-                              "    multiline\n"+
-                              "    message\n"+
-                              "    ");
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ExecuteWatchdogTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ExecuteWatchdogTest.java
deleted file mode 100644
index 537e4a9..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/ExecuteWatchdogTest.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.net.*;
-import junit.framework.*;
-import java.io.*;
-
-/**
- * Simple testcase for the ExecuteWatchdog class.
- *
- * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
- */
-public class ExecuteWatchdogTest extends TestCase {
-
-	private final static int TIME_OUT = 2000;
-
-	private final static String TEST_CLASSPATH = getTestClassPath();
-
-	private ExecuteWatchdog watchdog;
-
-	public ExecuteWatchdogTest(String name) {
-		super(name);
-	}
-
-	protected void setUp(){
-		watchdog = new ExecuteWatchdog(TIME_OUT);
-	}
-
-	/**
-	 * Dangerous method to obtain the classpath for the test. This is
-	 * severely tighted to the build.xml properties.
-	 */
-	private static String getTestClassPath(){
-		String classpath = System.getProperty("build.tests");
-		if (classpath == null) {
-			System.err.println("WARNING: 'build.tests' property is not available !");
-			classpath = System.getProperty("java.class.path");
-		}
-		System.out.println("Using classpath: " + classpath);		
-		return classpath;
-	}
-
-	private Process getProcess(int timetorun) throws Exception {
-		String[] cmdArray = {
-			"java", "-classpath", TEST_CLASSPATH,
-			TimeProcess.class.getName(), String.valueOf(timetorun)
-		};
-		//System.out.println("Testing with classpath: " + System.getProperty("java.class.path"));
-		return Runtime.getRuntime().exec(cmdArray);
-	}
-
-	private String getErrorOutput(Process p) throws Exception {
-		BufferedReader err = new BufferedReader( new InputStreamReader(p.getErrorStream()) );
-		StringBuffer buf = new StringBuffer();
-		String line;
-		while ( (line = err.readLine()) != null){
-			buf.append(line);
-		}
-		return buf.toString();
-	}
-	
-	private int waitForEnd(Process p) throws Exception {
-		int retcode = p.waitFor();
-		if (retcode != 0){
-			String err = getErrorOutput(p);
-			if (err.length() > 0){
-				System.err.println("ERROR:");
-				System.err.println(err);
-			}
-		}
-		return retcode;
-	}
-
-	public void testNoTimeOut() throws Exception {
-		Process process = getProcess(TIME_OUT/2);
-		watchdog.start(process);
-		int retCode = waitForEnd(process);
-		assert("process should not have been killed", !watchdog.killedProcess());
-		assertEquals(0, retCode);
-	}
-
-	// test that the watchdog ends the process
-	public void testTimeOut() throws Exception {
-		Process process = getProcess(TIME_OUT*2);
-		long now = System.currentTimeMillis();
-		watchdog.start(process);
-		int retCode = process.waitFor();
-		long elapsed = System.currentTimeMillis() - now;
-		assert("process should have been killed", watchdog.killedProcess());
-                //		assert("return code is invalid: " + retCode, retCode!=0);
-		assert("elapse time is less than timeout value", elapsed > TIME_OUT);
-		assert("elapse time is greater than run value", elapsed < TIME_OUT*2);
-	}
-
-	// test a process that runs and failed
-	public void testFailed() throws Exception {
-		Process process = getProcess(-1); // process should abort
-		watchdog.start(process);
-		int retCode = process.waitFor();
-		assert("process should not have been killed", !watchdog.killedProcess());
-		assert("return code is invalid: " + retCode, retCode!=0);
-	}
-
-	public void testManualStop() throws Exception {
-		final Process process = getProcess(TIME_OUT*2);
-		watchdog.start(process);
-
-		// I assume that starting this takes less than TIME_OUT/2 ms...
-		Thread thread = new Thread(){
-				public void run(){
-					try {
-						process.waitFor();
-					} catch(InterruptedException e){
-						// not very nice but will do the job
-						fail("process interrupted in thread");
-					}
-				}
-		};
-		thread.start();
-
-		// wait for TIME_OUT/2, there should be about TIME_OUT/2 ms remaining before timeout
-		thread.join(TIME_OUT/2);
-
-		 // now stop the watchdog.
-		watchdog.stop();
-
-		// wait for the thread to die, should be the end of the process
-		thread.join();
-
-		// process should be dead and well finished
-		assertEquals(0, process.exitValue());
-		assert("process should not have been killed", !watchdog.killedProcess());
-	}
-
-	public static class TimeProcess {
-		public static void main(String[] args) throws Exception {
-			int time = Integer.parseInt(args[0]);
-			if (time < 1) {
-				throw new IllegalArgumentException("Invalid time: " + time);
-			}
-			Thread.sleep(time);
-		}
-	}
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/FailTest.java b/src/testcases/org/apache/tools/ant/taskdefs/FailTest.java
deleted file mode 100644
index c32d4fe..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/FailTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class FailTest extends TaskdefsTest { 
-    
-    public FailTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/fail.xml");
-    }
-
-    public void test1() { 
-        expectBuildException("test1", "it is required to fail :-)");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "it is required to fail :-)");
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/FilterTest.java b/src/testcases/org/apache/tools/ant/taskdefs/FilterTest.java
deleted file mode 100644
index 7307bf1..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/FilterTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class FilterTest extends TaskdefsTest { 
-    
-    private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/";
-    
-    public FilterTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject(TASKDEFS_DIR + "filter.xml");
-    }
-
-    public void test1() { 
-        expectBuildException("test1", "required argument missing");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "required argument missing");
-    }
-
-    public void test3() { 
-        expectBuildException("test3", "required argument missing");
-    }
-    
-    public void test4() { 
-        executeTarget("test4");
-    }
-    
-    public void test5() {
-        executeTarget("test5");
-        assertEquals("2000",
-                     getFilteredFile("5", TASKDEFS_DIR + "filtered.tmp"));
-    }
-
-
-    public void test6() {
-        executeTarget("test6");
-        assertEquals("2000",
-                     getFilteredFile("6", TASKDEFS_DIR + "taskdefs.tmp/filter1.txt"));
-    }
-
-    public void test7() {
-        executeTarget("test7");
-        assertEquals("<%@ include file=\"root/some/include.jsp\"%>",
-                     getFilteredFile("7", TASKDEFS_DIR + "filtered.tmp"));
-    }
-    
-    public void test8() {
-        executeTarget("test8");
-        assertEquals("<%@ include file=\"root/some/include.jsp\"%>",
-                     getFilteredFile("8", TASKDEFS_DIR + "taskdefs.tmp/filter2.txt"));
-    }
-    
-    private String getFilteredFile(String testNumber, String filteredFile) {
-    
-        String line = null;
-        File f = new File(filteredFile);
-        if (!f.exists()) {
-            fail("filter test"+testNumber+" failed");
-        } else {
-            BufferedReader in = null;
-            try {
-                in = new BufferedReader(new FileReader(f));
-            } catch (FileNotFoundException fnfe) {
-                fail("filter test"+testNumber+" failed, filtered file: " + f.toString() + " not found");
-            }
-            try {
-                line = in.readLine();
-                in.close();
-            } catch (IOException ioe) {
-                fail("filter test"+testNumber+" failed.  IOException while reading filtered file: " + ioe);
-            }
-        }
-        f.delete();
-        return line;
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/GUnzipTest.java b/src/testcases/org/apache/tools/ant/taskdefs/GUnzipTest.java
deleted file mode 100644
index fc88375..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/GUnzipTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class GUnzipTest extends TaskdefsTest { 
-    
-    public GUnzipTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/gunzip.xml");
-    }
-
-    public void test1() { 
-        expectBuildException("test1", "required argument missing");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "attribute src invalid");
-    }
-
-    public void test3() { 
-        executeTarget("test3");
-        java.io.File f = new java.io.File("src/etc/testcases/taskdefs/gzip.tmp2");
-        if (!f.exists()) { 
-            fail("gzip failed");
-        } else {
-            f.delete();
-            f = new java.io.File("src/etc/testcases/taskdefs/gzip.tmp");
-            if (f.exists()) f.delete();
-        }
-    }
-    
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/GetTest.java b/src/testcases/org/apache/tools/ant/taskdefs/GetTest.java
deleted file mode 100644
index 5cf20ff..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/GetTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class GetTest extends TaskdefsTest { 
-    
-    public GetTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/get.xml");
-    }
-
-    public void test1() { 
-        expectBuildException("test1", "required argument missing");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "required argument missing");
-    }
-
-    public void test3() { 
-        expectBuildException("test3", "required argument missing");
-    }
-
-    public void test4() { 
-        expectBuildException("test4", "src invalid");
-    }
-
-    public void test5() { 
-        expectBuildException("test5", "dest invalid (or no http-server on local machine)");
-    }
-
-    public void test6() { 
-        executeTarget("test6");
-        java.io.File f = new java.io.File("src/etc/testcases/taskdefs/get.tmp");
-        if (!f.exists()) { 
-            fail("get failed");
-        } else {
-            f.delete();
-        }
-        
-    }
-    
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/GzipTest.java b/src/testcases/org/apache/tools/ant/taskdefs/GzipTest.java
deleted file mode 100644
index cd3b337..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/GzipTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class GzipTest extends TaskdefsTest { 
-    
-    public GzipTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/gzip.xml");
-    }
-
-    public void test1() { 
-        expectBuildException("test1", "required argument missing");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "required argument missing");
-    }
-
-    public void test3() { 
-        expectBuildException("test3", "required argument missing");
-    }
-
-    public void test4() { 
-        expectBuildException("test4", "attribute zipfile invalid");
-    }
-
-    public void test5() { 
-        executeTarget("test5");
-        java.io.File f = new java.io.File("src/etc/testcases/taskdefs/gzip.tmp");
-        if (!f.exists()) { 
-            fail("gzip failed");
-        }
-        // Keep for unzip
-    }
-    
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/JarTest.java b/src/testcases/org/apache/tools/ant/taskdefs/JarTest.java
deleted file mode 100644
index e3fa522..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/JarTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.File;
-import java.util.Date;
-
-/**
- * @author Erik Meade <emeade@geekfarm.org>
- */
-public class JarTest extends TaskdefsTest {
-
-    private static long jarModifiedDate;
-    private static String tempJar = "src/etc/testcases/taskdefs/tmp.jar";
-
-    public JarTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        configureProject("src/etc/testcases/taskdefs/jar.xml");
-    }
-
-    public void test1() {
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    public void test2() {
-        expectBuildException("test2", "manifect file does not exist");
-    }
-
-    public void test3() {
-        expectBuildException("test3", "Unrecognized whenempty attribute: format C: /y");
-    }
-
-    public void test4() {
-        executeTarget("test4");
-        File jarFile = new File(tempJar);
-        assert(jarFile.exists());
-        jarModifiedDate = jarFile.lastModified();
-    }
-
-    public void XXXtest5() {
-        executeTarget("test5");
-        File jarFile = new File(tempJar);
-        assertEquals(jarModifiedDate, jarFile.lastModified());
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/MkdirTest.java b/src/testcases/org/apache/tools/ant/taskdefs/MkdirTest.java
deleted file mode 100644
index 8d5c09e..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/MkdirTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class MkdirTest extends TaskdefsTest { 
-    
-    public MkdirTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/mkdir.xml");
-    }
-
-    public void test1() { 
-        expectBuildException("test1", "required argument missing");
-    }
-
-    public void test2() {
-        expectBuildException("test2", "directory already exists as a file");
-    }
-
-    public void test3() { 
-        executeTarget("test3");
-        java.io.File f = new java.io.File("src/etc/testcases/taskdefs/testdir.tmp");
-        if (!f.exists() || !f.isDirectory()) { 
-            fail("mkdir failed");
-        } else {
-            f.delete();
-        }
-    }
-    
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/RenameTest.java b/src/testcases/org/apache/tools/ant/taskdefs/RenameTest.java
deleted file mode 100644
index e733bc7..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/RenameTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class RenameTest extends TaskdefsTest { 
-    
-    public RenameTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/rename.xml");
-    }
-
-    public void test1() { 
-        expectBuildException("test1", "required argument missing");
-    }
-    public void test2() { 
-        expectBuildException("test2", "required argument missing");
-    }
-    public void test3() { 
-        expectBuildException("test3", "required argument missing");
-    }
-/*
-    public void test4() {
-        expectBuildException("test4", "source and destination the same");
-    }
-    public void test5() {
-        executeTarget("test5");
-    }
-    */
-    public void test6() {
-        executeTarget("test6");
-    }
-    
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
deleted file mode 100644
index 7588a09..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class ReplaceTest extends TaskdefsTest { 
-    
-    public ReplaceTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/replace.xml");
-    }
-    
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "required argument not specified");
-    }
-
-    public void test3() { 
-        expectBuildException("test3", "required argument not specified");
-    }
-
-    public void test4() { 
-        expectBuildException("test4", "empty token not allowed");
-    }
-
-    public void test5() { 
-        executeTarget("test5");
-    }
-
-    public void test6() { 
-        expectBuildException("test6", "required argument not specified");
-    }
-
-    public void test7() { 
-        expectBuildException("test7", "empty token not allowed");
-    }
-
-    public void test8() { 
-        executeTarget("test8");
-    }
-
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/TarTest.java b/src/testcases/org/apache/tools/ant/taskdefs/TarTest.java
deleted file mode 100644
index 437fa80..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/TarTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class TarTest extends TaskdefsTest { 
-    
-    public TarTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/tar.xml");
-    }
-    
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "required argument not specified");
-    }
-
-    public void test3() { 
-        expectBuildException("test3", "required argument not specified");
-    }
-
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefTest.java b/src/testcases/org/apache/tools/ant/taskdefs/TaskdefTest.java
deleted file mode 100644
index 5a7e865..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class TaskdefTest extends TaskdefsTest { 
-    
-    public TaskdefTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/taskdef.xml");
-    }
-    
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "required argument not specified");
-    }
-
-    public void test3() { 
-        expectBuildException("test3", "required argument not specified");
-    }
-
-    public void test4() { 
-        expectBuildException("test4", "classname specified doesn't exist");
-    }
-
-    public void test5() { 
-        executeTarget("test5");
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefsTest.java b/src/testcases/org/apache/tools/ant/taskdefs/TaskdefsTest.java
deleted file mode 100644
index 197aafe..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/TaskdefsTest.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import junit.framework.*;
-import org.apache.tools.ant.*;
-import java.io.*;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public abstract class TaskdefsTest extends TestCase { 
-    
-    protected Project project;
-    
-    private StringBuffer logBuffer;
-    private StringBuffer outBuffer;
-    private BuildException buildException;
-    
-    public TaskdefsTest(String name) {
-        super(name);
-    }
-    
-    protected String getLog() { 
-        return logBuffer.toString();
-    }
-
-    protected void expectBuildException(String taskname, String cause) { 
-        try { 
-            executeTarget(taskname);
-        } catch (org.apache.tools.ant.BuildException ex) { 
-            return;
-        }
-        fail("Should throw BuildException because: " + cause);
-    }
-
-    protected void expectOutput(String taskname, String output) { 
-        executeTarget(taskname);
-        String realOutput = getOutput();
-        assertEquals(output, realOutput);
-    }
-
-    protected void expectLog(String taskname, String log) { 
-        executeTarget(taskname);
-        String realLog = getLog();
-        assertEquals(log, realLog);
-    }
-
-    protected String getOutput() { 
-        StringBuffer cleanOut = new StringBuffer();
-        boolean cr = false;
-        for (int i = 0; i < outBuffer.length(); i++) { 
-            char ch = outBuffer.charAt(i);
-            if (ch == '\r') {
-                cr = true;
-                continue;
-            }
-
-            if (!cr) { 
-                cleanOut.append(ch);
-            } else { 
-                if (ch == '\n') {
-                    cleanOut.append(ch);
-                } else {
-                    cleanOut.append('\r').append(ch);
-                }
-            }
-        }
-        return cleanOut.toString();
-    }
-    
-    protected void configureProject(String filename) { 
-        project = new Project();
-        project.init();
-        project.setUserProperty( "ant.file" , new File(filename).getAbsolutePath() );
-        project.addBuildListener(new AntTestListener());
-        ProjectHelper.configureProject(project, new File(filename));
-    }
-    
-    protected void executeTarget(String targetName) { 
-        PrintStream sysOut = System.out;
-        try { 
-            outBuffer = new StringBuffer();
-            sysOut.flush();
-            PrintStream out = new PrintStream(new AntOutputStream());
-            System.setOut(out);
-            logBuffer = new StringBuffer();
-            buildException = null;
-            project.executeTarget(targetName);
-        } finally { 
-            System.setOut(sysOut);
-        }
-        
-    }
-    
-    private class AntOutputStream extends java.io.OutputStream { 
-        public void write(int b) { 
-            outBuffer.append((char)b);
-        }
-    }
-    
-    private class AntTestListener implements BuildListener { 
-        /**
-         *  Fired before any targets are started.
-         */
-        public void buildStarted(BuildEvent event) {
-        }
-
-        /**
-         *  Fired after the last target has finished. This event
-         *  will still be thrown if an error occured during the build.
-         *
-         *  @see BuildEvent#getException()
-         */
-        public void buildFinished(BuildEvent event) {
-        }
-
-        /**
-         *  Fired when a target is started.
-         *
-         *  @see BuildEvent#getTarget()
-         */
-        public void targetStarted(BuildEvent event) {
-            //System.out.println("targetStarted " + event.getTarget().getName());
-        }
-
-        /**
-         *  Fired when a target has finished. This event will
-         *  still be thrown if an error occured during the build.
-         *
-         *  @see BuildEvent#getException()
-         */
-        public void targetFinished(BuildEvent event) {
-            //System.out.println("targetFinished " + event.getTarget().getName());
-        }
-
-        /**
-         *  Fired when a task is started.
-         *
-         *  @see BuildEvent#getTask()
-         */
-        public void taskStarted(BuildEvent event) {
-            //System.out.println("taskStarted " + event.getTask().getTaskName());
-        }
-
-        /**
-         *  Fired when a task has finished. This event will still
-         *  be throw if an error occured during the build.
-         *
-         *  @see BuildEvent#getException()
-         */
-        public void taskFinished(BuildEvent event) {
-            //System.out.println("taskFinished " + event.getTask().getTaskName());
-        }
-
-        /**
-         *  Fired whenever a message is logged.
-         *
-         *  @see BuildEvent#getMessage()
-         *  @see BuildEvent#getPriority()
-         */
-        public void messageLogged(BuildEvent event) {
-            if (event.getPriority() == Project.MSG_INFO ||
-                event.getPriority() == Project.MSG_WARN ||
-                event.getPriority() == Project.MSG_ERR)
-            {
-                logBuffer.append(event.getMessage());
-            }
-        }
-    }
-
-
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java b/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java
deleted file mode 100644
index bc2f8fb..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class UnzipTest extends TaskdefsTest { 
-    
-    public UnzipTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/unzip.xml");
-    }
-    
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "required argument not specified");
-    }
-
-    public void test3() { 
-        expectBuildException("test3", "required argument not specified");
-    }
-
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java
deleted file mode 100644
index bc94871..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-/**
- * @author Nico Seessle <nico@seessle.de> 
- */
-public class ZipTest extends TaskdefsTest { 
-    
-    public ZipTest(String name) { 
-        super(name);
-    }    
-    
-    public void setUp() { 
-        configureProject("src/etc/testcases/taskdefs/zip.xml");
-    }
-    
-    public void test1() { 
-        expectBuildException("test1", "required argument not specified");
-    }
-
-    public void test2() { 
-        expectBuildException("test2", "required argument not specified");
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/ANTLRTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/ANTLRTest.java
deleted file mode 100644
index ae19289..0000000
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/ANTLRTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import java.io.*;
-import org.apache.tools.ant.taskdefs.TaskdefsTest;
-/**
- * @author Erik Meade <emeade@geekfarm.org>
- */
-public class ANTLRTest extends TaskdefsTest {
-
-    private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/antlr/";
-
-    public ANTLRTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        configureProject(TASKDEFS_DIR + "antlr.xml");
-    }
-
-    public void test1() {
-        expectBuildException("test1", "required argument, target, missing");
-    }
-
-    public void test2() {
-        expectBuildException("test2", "Invalid output directory");
-    }
-
-    public void test3() {
-        executeTarget("test3");
-        File outputDirectory = new File(TASKDEFS_DIR + "antlr.tmp");
-        String[] calcFiles = outputDirectory.list(new CalcFileFilter());
-        assert(5 == calcFiles.length);
-    }
-
-    public void test4() {
-        expectBuildException("test4", "ANTLR exited with an error code of 1 ( try forking )");
-    }
-
-    public void test5() {
-        expectBuildException("test5", "Invalid working directory");
-    }
-
-    public void test6() {
-        executeTarget("test6");
-    }
-
-    public void test7() {
-        expectBuildException("test7", "Unable to determine generated class");
-    }
-}
-
-class CalcFileFilter implements FilenameFilter {
-    public boolean accept(File dir, String name) {
-        return name.startsWith("Calc");
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java b/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java
deleted file mode 100644
index b46829d..0000000
--- a/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.Project;
-
-import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
-
-import java.io.File;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.CommandlineJava
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class CommandlineJavaTest extends TestCase {
-
-    public CommandlineJavaTest(String name) {
-        super(name);
-    }
-
-    private Project project;
-
-    public void setUp() {
-        project = new Project();
-        project.setBasedir(".");
-        project.setProperty("build.sysclasspath", "ignore");
-    }
-
-    public void testGetCommandline() {
-        CommandlineJava c = new CommandlineJava();
-        c.createArgument().setValue("org.apache.tools.ant.CommandlineJavaTest");
-        c.setClassname("junit.textui.TestRunner");
-        c.createVmArgument().setValue("-Djava.compiler=NONE");
-        String[] s = c.getCommandline();
-        assertEquals("no classpath", 4, s.length);
-        assertEquals("no classpath", "java", s[0]);
-        assertEquals("no classpath", "-Djava.compiler=NONE", s[1]);
-        assertEquals("no classpath", "junit.textui.TestRunner", s[2]);
-        assertEquals("no classpath", 
-                     "org.apache.tools.ant.CommandlineJavaTest", s[3]);
-
-        c.createClasspath(project).setLocation(project.resolveFile("lib/core/junit.jar"));
-        c.createClasspath(project).setLocation(project.resolveFile("lib/ant.jar"));
-        s = c.getCommandline();
-        assertEquals("with classpath", 6, s.length);
-        assertEquals("with classpath", "java", s[0]);
-        assertEquals("with classpath", "-Djava.compiler=NONE", s[1]);
-        assertEquals("with classpath", "-classpath", s[2]);
-        assert("junit.jar contained", 
-               s[3].indexOf("junit.jar"+java.io.File.pathSeparator) >= 0);
-        assert("ant.jar contained", s[3].endsWith("ant.jar"));
-        assertEquals("with classpath", "junit.textui.TestRunner", s[4]);
-        assertEquals("with classpath", 
-                     "org.apache.tools.ant.CommandlineJavaTest", s[5]);
-    }
-
-}
diff --git a/src/testcases/org/apache/tools/ant/types/CommandlineTest.java b/src/testcases/org/apache/tools/ant/types/CommandlineTest.java
deleted file mode 100644
index 20154fb..0000000
--- a/src/testcases/org/apache/tools/ant/types/CommandlineTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-
-import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
-
-import java.io.File;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.CommandLine
- *
- * @author Stefan Bodewig <a href="mailto:stefan.bodewig@megabit.net">stefan.bodewig@megabit.net</a> 
- */
-public class CommandlineTest extends TestCase {
-
-    public CommandlineTest(String name) {
-        super(name);
-    }
-
-    public void testTokenizer() {
-        String[] s = Commandline.translateCommandline("1 2 3");
-        assertEquals("Simple case", 3, s.length);
-        for (int i=0; i<3; i++) {
-            assertEquals(""+(i+1), s[i]);
-        }
-        
-        s = Commandline.translateCommandline("");
-        assertEquals("empty string", 0, s.length);
-
-        s = Commandline.translateCommandline(null);
-        assertEquals("null", 0, s.length);
-
-        s = Commandline.translateCommandline("1 \'2\' 3");
-        assertEquals("Simple case with single quotes", 3, s.length);
-        assertEquals("Single quotes have been stripped", "2", s[1]);
-
-        s = Commandline.translateCommandline("1 \"2\" 3");
-        assertEquals("Simple case with double quotes", 3, s.length);
-        assertEquals("Double quotes have been stripped", "2", s[1]);
-
-        s = Commandline.translateCommandline("1 \"2 3\" 4");
-        assertEquals("Case with double quotes and whitespace", 3, s.length);
-        assertEquals("Double quotes stripped, space included", "2 3", s[1]);
-        
-        s = Commandline.translateCommandline("1 \"2\'3\" 4");
-        assertEquals("Case with double quotes around single quote", 3, s.length);
-        assertEquals("Double quotes stripped, single quote included", "2\'3",
-                     s[1]);
-
-        s = Commandline.translateCommandline("1 \'2 3\' 4");
-        assertEquals("Case with single quotes and whitespace", 3, s.length);
-        assertEquals("Single quotes stripped, space included", "2 3", s[1]);
-        
-        s = Commandline.translateCommandline("1 \'2\"3\' 4");
-        assertEquals("Case with single quotes around double quote", 3, s.length);
-        assertEquals("Single quotes stripped, double quote included", "2\"3",
-                     s[1]);
-
-        // \ doesn't have a special meaning anymore - this is different from
-        // what the Unix sh does but causes a lot of problems on DOS
-        // based platforms otherwise
-        s = Commandline.translateCommandline("1 2\\ 3 4");
-        assertEquals("case with quoted whitespace", 4, s.length);
-        assertEquals("backslash included", "2\\", s[1]);
-
-
-        // now to the expected failures
-        
-        try {
-            s = Commandline.translateCommandline("a \'b c");
-            fail("unbalanced single quotes undetected");
-        } catch (BuildException be) {
-            assertEquals("unbalanced quotes in a \'b c", be.getMessage());
-        }
-
-        try {
-            s = Commandline.translateCommandline("a \"b c");
-            fail("unbalanced double quotes undetected");
-        } catch (BuildException be) {
-            assertEquals("unbalanced quotes in a \"b c", be.getMessage());
-        }
-    }
-
-    public void testToString() {
-        assertEquals("", Commandline.toString(new String[0]));
-        assertEquals("", Commandline.toString(null));
-        assertEquals("1 2 3", Commandline.toString(new String[] {"1", "2", "3"}));
-        assertEquals("1 \"2 3\"", Commandline.toString(new String[] {"1", "2 3"}));
-        assertEquals("1 \"2\'3\"", Commandline.toString(new String[] {"1", "2\'3"}));
-        assertEquals("1 \'2\"3\'", Commandline.toString(new String[] {"1", "2\"3"}));
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/types/EnumeratedAttributeTest.java b/src/testcases/org/apache/tools/ant/types/EnumeratedAttributeTest.java
deleted file mode 100644
index 92ea5f2..0000000
--- a/src/testcases/org/apache/tools/ant/types/EnumeratedAttributeTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-
-import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.EnumeratedAttribute.
- *
- * @author Stefan Bodewig <a href="mailto:stefan.bodewig@megabit.net">stefan.bodewig@megabit.net</a> 
- */
-
-public class EnumeratedAttributeTest extends TestCase {
-
-    private static String[] expected = {"a", "b", "c"};
-
-    public EnumeratedAttributeTest(String name) {
-        super(name);
-    }
-    
-    public void testContains() {
-        EnumeratedAttribute t1 = new TestNormal();
-        for (int i=0; i<expected.length; i++) {
-            assert(expected[i]+" is in TestNormal",
-                   t1.containsValue(expected[i]));
-            assert(expected[i].toUpperCase()+" is in TestNormal",
-                   !t1.containsValue(expected[i].toUpperCase()));
-        }
-        assert("TestNormal doesn\'t have \"d\" attribute",
-               !t1.containsValue("d"));
-        assert("TestNull doesn\'t have \"d\" attribute and doesn\'t die",
-               !(new TestNull()).containsValue("d"));
-    }
-
-    public void testExceptions() {
-        EnumeratedAttribute t1 = new TestNormal();
-        for (int i=0; i<expected.length; i++) {
-            try {
-                t1.setValue(expected[i]);
-            } catch (BuildException be) {
-                fail("unexpected exception for value "+expected[i]);
-            }
-        }
-        try {
-            t1.setValue("d");
-            fail("expected exception for value \"d\"");
-        } catch (BuildException be) {
-        }
-        try {
-            (new TestNull()).setValue("d");
-            fail("expected exception for value \"d\" in TestNull");
-        } catch (BuildException be) {
-        } catch (Throwable other) {
-            fail("unexpected death of TestNull: "+other.getMessage());
-        }
-    }
-
-    public static class TestNormal extends EnumeratedAttribute {
-        public String[] getValues() {
-            return expected;
-        }
-    }
-
-    public static class TestNull extends EnumeratedAttribute {
-        public String[] getValues() {
-            return null;
-        }
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/types/FileSetTest.java b/src/testcases/org/apache/tools/ant/types/FileSetTest.java
deleted file mode 100644
index 05dc171..0000000
--- a/src/testcases/org/apache/tools/ant/types/FileSetTest.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-
-import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
-
-import java.io.File;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.types.FileSet.
- *
- * <p>This doesn't actually test much, mainly reference handling.
- *
- * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> 
- */
-
-public class FileSetTest extends TestCase {
-
-    private Project project;
-
-    public FileSetTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        project = new Project();
-        project.setBasedir(".");
-    }
-
-    public void testEmptyElementIfIsReference() {
-        FileSet f = new FileSet();
-        f.setIncludes("**/*.java");
-        try {
-            f.setRefid(new Reference("dummyref"));
-            fail("Can add reference to FileSet with elements from setIncludes");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        f = new FileSet();
-        f.createPatternSet();
-        try {
-            f.setRefid(new Reference("dummyref"));
-            fail("Can add reference to FileSet with nested patternset element.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-
-        f = new FileSet();
-        f.createInclude();
-        try {
-            f.setRefid(new Reference("dummyref"));
-            fail("Can add reference to FileSet with nested include element.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        f = new FileSet();
-        f.setRefid(new Reference("dummyref"));
-        try {
-            f.setIncludes("**/*.java");
-            fail("Can set includes in FileSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-        try {
-            f.setIncludesfile(new File("/a"));
-            fail("Can set includesfile in FileSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-        try {
-            f.setExcludes("**/*.java");
-            fail("Can set excludes in FileSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-        try {
-            f.setExcludesfile(new File("/a"));
-            fail("Can set excludesfile in FileSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-        try {
-            f.setDir(project.resolveFile("."));
-            fail("Can set dir in FileSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-        try {
-            f.createInclude();
-            fail("Can add nested include in FileSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-        try {
-            f.createExclude();
-            fail("Can add nested exclude in FileSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-        try {
-            f.createPatternSet();
-            fail("Can add nested patternset in FileSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-    }
-
-    public void testCircularReferenceCheck() {
-        FileSet f = new FileSet();
-        project.addReference("dummy", f);
-        f.setRefid(new Reference("dummy"));
-        try {
-            f.getDir(project);
-            fail("Can make FileSet a Reference to itself.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-        try {
-            f.getDirectoryScanner(project);
-            fail("Can make FileSet a Reference to itself.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-
-        // dummy1 --> dummy2 --> dummy3 --> dummy1
-        FileSet f1 = new FileSet();
-        project.addReference("dummy1", f1);
-        f1.setRefid(new Reference("dummy2"));
-        FileSet f2 = new FileSet();
-        project.addReference("dummy2", f2);
-        f2.setRefid(new Reference("dummy3"));
-        FileSet f3 = new FileSet();
-        project.addReference("dummy3", f3);
-        f3.setRefid(new Reference("dummy1"));
-        try {
-            f1.getDir(project);
-            fail("Can make circular reference.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-        try {
-            f1.getDirectoryScanner(project);
-            fail("Can make circular reference.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-
-        // dummy1 --> dummy2 --> dummy3 
-        // (which has the Project's basedir as root).
-        f1 = new FileSet();
-        project.addReference("dummy1", f1);
-        f1.setRefid(new Reference("dummy2"));
-        f2 = new FileSet();
-        project.addReference("dummy2", f2);
-        f2.setRefid(new Reference("dummy3"));
-        f3 = new FileSet();
-        project.addReference("dummy3", f3);
-        f3.setDir(project.resolveFile("."));
-        File dir = f1.getDir(project);
-        assertEquals("Die is basedir", dir, project.getBaseDir());
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/types/MapperTest.java b/src/testcases/org/apache/tools/ant/types/MapperTest.java
deleted file mode 100644
index 1835a11..0000000
--- a/src/testcases/org/apache/tools/ant/types/MapperTest.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.util.*;
-
-import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
-
-import java.io.File;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.types.Mapper.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-
-public class MapperTest extends TestCase {
-
-    private Project project;
-
-    public MapperTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        project = new Project();
-        project.setBasedir(".");
-    }
-
-    public void testEmptyElementIfIsReference() {
-        Mapper m = new Mapper(project);
-        m.setFrom("*.java");
-        try {
-            m.setRefid(new Reference("dummyref"));
-            fail("Can add reference to Mapper with from attribute set");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        m = new Mapper(project);
-        m.setRefid(new Reference("dummyref"));
-        try {
-            m.setFrom("*.java");
-            fail("Can set from in Mapper that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        m = new Mapper(project);
-        m.setRefid(new Reference("dummyref"));
-        try {
-            m.setTo("*.java");
-            fail("Can set to in Mapper that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-        try {
-            Mapper.MapperType mt = new Mapper.MapperType();
-            mt.setValue("glob");
-            m.setType(mt);
-            fail("Can set type in Mapper that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-    }
-
-    public void testCircularReferenceCheck() {
-        Mapper m = new Mapper(project);
-        project.addReference("dummy", m);
-        m.setRefid(new Reference("dummy"));
-        try {
-            m.getImplementation();
-            fail("Can make Mapper a Reference to itself.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-
-        // dummy1 --> dummy2 --> dummy3 --> dummy1
-        Mapper m1 = new Mapper(project);
-        project.addReference("dummy1", m1);
-        m1.setRefid(new Reference("dummy2"));
-        Mapper m2 = new Mapper(project);
-        project.addReference("dummy2", m2);
-        m2.setRefid(new Reference("dummy3"));
-        Mapper m3 = new Mapper(project);
-        project.addReference("dummy3", m3);
-        m3.setRefid(new Reference("dummy1"));
-        try {
-            m1.getImplementation();
-            fail("Can make circular reference.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-
-        // dummy1 --> dummy2 --> dummy3 
-        // (which holds a glob mapper from "*.java" to "*.class"
-        m1 = new Mapper(project);
-        project.addReference("dummy1", m1);
-        m1.setRefid(new Reference("dummy2"));
-        m2 = new Mapper(project);
-        project.addReference("dummy2", m2);
-        m2.setRefid(new Reference("dummy3"));
-        m3 = new Mapper(project);
-        project.addReference("dummy3", m3);
-        Mapper.MapperType mt = new Mapper.MapperType();
-        mt.setValue("glob");
-        m3.setType(mt);
-        m3.setFrom("*.java");
-        m3.setTo("*.class");
-        FileNameMapper fmm = m1.getImplementation();
-        assert("should be glob", fmm instanceof GlobPatternMapper);
-        String[] result = fmm.mapFileName("a.java");
-        assertEquals("a.java should match", 1, result.length);
-        assertEquals("a.class", result[0]);
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/types/PathTest.java b/src/testcases/org/apache/tools/ant/types/PathTest.java
deleted file mode 100644
index 1093fb4..0000000
--- a/src/testcases/org/apache/tools/ant/types/PathTest.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-
-import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
-
-import java.io.File;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.types.Path
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-
-public class PathTest extends TestCase {
-
-    public static boolean isUnixStyle = File.pathSeparatorChar == ':';
-
-    private Project project;
-
-    public PathTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        project = new Project();
-        project.setBasedir(".");
-    }
-
-    // actually tests constructor as well as setPath
-    public void testConstructor() {
-        Path p = new Path(project, "/a:/b");
-        String[] l = p.list();
-        assertEquals("two items, Unix style", 2, l.length);
-        if (isUnixStyle) {
-            assertEquals("/a", l[0]);
-            assertEquals("/b", l[1]);
-        } else {
-            assertEquals(":\\a", l[0].substring(1));
-            assertEquals(":\\b", l[1].substring(1));
-        }        
-
-        p = new Path(project, "\\a;\\b");
-        l = p.list();
-        assertEquals("two items, DOS style", 2, l.length);
-        if (isUnixStyle) {
-            assertEquals("/a", l[0]);
-            assertEquals("/b", l[1]);
-        } else {
-            assertEquals(":\\a", l[0].substring(1));
-            assertEquals(":\\b", l[1].substring(1));
-        }        
-
-        p = new Path(project, "\\a;\\b:/c");
-        l = p.list();
-        assertEquals("three items, mixed style", 3, l.length);
-        if (isUnixStyle) {
-            assertEquals("/a", l[0]);
-            assertEquals("/b", l[1]);
-            assertEquals("/c", l[2]);
-        } else {
-            assertEquals(":\\a", l[0].substring(1));
-            assertEquals(":\\b", l[1].substring(1));
-            assertEquals(":\\c", l[2].substring(1));
-        }        
-
-        p = new Path(project, "c:\\test");
-        l = p.list();
-        if (isUnixStyle) {
-            assertEquals("no drives on Unix", 2, l.length);
-            assert("c resolved relative to project\'s basedir", 
-                   l[0].endsWith("/c"));
-            assertEquals("/test", l[1]);
-        } else {
-            assertEquals("drives on DOS", 1, l.length);
-            assertEquals("c:\\test", l[0].toLowerCase());
-        }
-
-        p = new Path(project, "c:/test");
-        l = p.list();
-        if (isUnixStyle) {
-            assertEquals("no drives on Unix", 2, l.length);
-            assert("c resolved relative to project\'s basedir", 
-                   l[0].endsWith("/c"));
-            assertEquals("/test", l[1]);
-        } else {
-            assertEquals("drives on DOS", 1, l.length);
-            assertEquals("c:\\test", l[0].toLowerCase());
-        }
-    }
-
-    public void testSetLocation() {
-        Path p = new Path(project);
-        p.setLocation(new File(File.separatorChar+"a"));
-        String[] l = p.list();
-        if (isUnixStyle) {
-            assertEquals(1, l.length);
-            assertEquals("/a", l[0]);
-        } else {
-            assertEquals(1, l.length);
-            assertEquals(":\\a", l[0].substring(1));
-        }
-    }
-
-    public void testAppending() {
-        Path p = new Path(project, "/a:/b");
-        String[] l = p.list();
-        assertEquals("2 after construction", 2, l.length);
-        p.setLocation(new File("/c"));
-        l = p.list();
-        assertEquals("3 after setLocation", 3, l.length);
-        p.setPath("\\d;\\e");
-        l = p.list();
-        assertEquals("5 after setPath", 5, l.length);
-        p.append(new Path(project, "\\f"));
-        l = p.list();
-        assertEquals("6 after append", 6, l.length);
-        p.createPath().setLocation(new File("/g"));
-        l = p.list();
-        assertEquals("7 after append", 7, l.length);
-    }
-
-    public void testEmpyPath() {
-        Path p = new Path(project, "");
-        String[] l = p.list();
-        assertEquals("0 after construction", 0, l.length);
-        p.setPath("");
-        l = p.list();
-        assertEquals("0 after setPath", 0, l.length);
-        p.append(new Path(project));
-        l = p.list();
-        assertEquals("0 after append", 0, l.length);
-        p.createPath();
-        l = p.list();
-        assertEquals("0 after append", 0, l.length);
-    }
-
-    public void testUnique() {
-        Path p = new Path(project, "/a:/a");
-        String[] l = p.list();
-        assertEquals("1 after construction", 1, l.length);
-        p.setLocation(new File(File.separatorChar+"a"));
-        l = p.list();
-        assertEquals("1 after setLocation", 1, l.length);
-        p.setPath("\\a;/a");
-        l = p.list();
-        assertEquals("1 after setPath", 1, l.length);
-        p.append(new Path(project, "/a;\\a:\\a"));
-        l = p.list();
-        assertEquals("1 after append", 1, l.length);
-        p.createPath().setPath("\\a:/a");
-        l = p.list();
-        assertEquals("1 after append", 1, l.length);
-    }
-
-    public void testEmptyElementIfIsReference() {
-        Path p = new Path(project, "/a:/a");
-        try {
-            p.setRefid(new Reference("dummyref"));
-            fail("Can add reference to Path with elements from constructor");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        p = new Path(project);
-        p.setLocation(new File("/a"));
-        try {
-            p.setRefid(new Reference("dummyref"));
-            fail("Can add reference to Path with elements from setLocation");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        p = new Path(project);
-        p.setRefid(new Reference("dummyref"));
-        try {
-            p.setLocation(new File("/a"));
-            fail("Can set location in Path that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        try {
-            p.setPath("/a;\\a");
-            fail("Can set path in Path that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        try {
-            p.createPath();
-            fail("Can create nested Path in Path that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-
-        try {
-            p.createPathElement();
-            fail("Can create nested PathElement in Path that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-
-        try {
-            p.addFileset(new FileSet());
-            fail("Can add nested FileSet in Path that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-    }
-
-    public void testCircularReferenceCheck() {
-        Path p = new Path(project);
-        project.addReference("dummy", p);
-        p.setRefid(new Reference("dummy"));
-        try {
-            p.list();
-            fail("Can make Path a Reference to itself.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-
-        // dummy1 --> dummy2 --> dummy3 --> dummy1
-        Path p1 = new Path(project);
-        project.addReference("dummy1", p1);
-        Path p2 = p1.createPath();
-        project.addReference("dummy2", p2);
-        Path p3 = p2.createPath();
-        project.addReference("dummy3", p3);
-        p3.setRefid(new Reference("dummy1"));
-        try {
-            p1.list();
-            fail("Can make circular reference.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-
-        // dummy1 --> dummy2 --> dummy3 (with Path "/a")
-        p1 = new Path(project);
-        project.addReference("dummy1", p1);
-        p2 = p1.createPath();
-        project.addReference("dummy2", p2);
-        p3 = p2.createPath();
-        project.addReference("dummy3", p3);
-        p3.setLocation(new File("/a"));
-        String[] l = p1.list();
-        assertEquals("One element buried deep inside a nested path structure",
-                     1, l.length);
-        if (isUnixStyle) {
-            assertEquals("/a", l[0]);
-        } else {
-            assertEquals(":\\a", l[0].substring(1));
-        }
-    }
-
-}
diff --git a/src/testcases/org/apache/tools/ant/types/PatternSetTest.java b/src/testcases/org/apache/tools/ant/types/PatternSetTest.java
deleted file mode 100644
index 1a81687..0000000
--- a/src/testcases/org/apache/tools/ant/types/PatternSetTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-
-import junit.framework.TestCase;
-import junit.framework.AssertionFailedError;
-
-import java.io.File;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.types.PatternSet.
- *
- * <p>This doesn't actually test much, mainly reference handling.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-
-public class PatternSetTest extends TestCase {
-
-    private Project project;
-
-    public PatternSetTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        project = new Project();
-        project.setBasedir(".");
-    }
-
-    public void testEmptyElementIfIsReference() {
-        PatternSet p = new PatternSet();
-        p.setIncludes("**/*.java");
-        try {
-            p.setRefid(new Reference("dummyref"));
-            fail("Can add reference to PatternSet with elements from setIncludes");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        p = new PatternSet();
-        p.setRefid(new Reference("dummyref"));
-        try {
-            p.setIncludes("**/*.java");
-            fail("Can set includes in PatternSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-
-        p = new PatternSet();
-        p.setRefid(new Reference("dummyref"));
-        try {
-            p.setIncludesfile(new File("/a"));
-            fail("Can set includesfile in PatternSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-        try {
-            p.setExcludes("**/*.java");
-            fail("Can set excludes in PatternSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-        try {
-            p.setExcludesfile(new File("/a"));
-            fail("Can set excludesfile in PatternSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one attribute when using refid",
-                         be.getMessage());
-        }
-        try {
-            p.createInclude();
-            fail("Can add nested include in PatternSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-        try {
-            p.createExclude();
-            fail("Can add nested exclude in PatternSet that is a reference.");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-    }
-
-    public void testCircularReferenceCheck() {
-        PatternSet p = new PatternSet();
-        project.addReference("dummy", p);
-        p.setRefid(new Reference("dummy"));
-        try {
-            p.getIncludePatterns(project);
-            fail("Can make PatternSet a Reference to itself.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-        try {
-            p.getExcludePatterns(project);
-            fail("Can make PatternSet a Reference to itself.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-
-        // dummy1 --> dummy2 --> dummy3 --> dummy1
-        PatternSet p1 = new PatternSet();
-        project.addReference("dummy1", p1);
-        p1.setRefid(new Reference("dummy2"));
-        PatternSet p2 = new PatternSet();
-        project.addReference("dummy2", p2);
-        p2.setRefid(new Reference("dummy3"));
-        PatternSet p3 = new PatternSet();
-        project.addReference("dummy3", p3);
-        p3.setRefid(new Reference("dummy1"));
-        try {
-            p1.getIncludePatterns(project);
-            fail("Can make circular reference.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-        try {
-            p1.getExcludePatterns(project);
-            fail("Can make circular reference.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        }
-
-        // dummy1 --> dummy2 --> dummy3 
-        // (which holds patterns "include" and "exclude")
-        p1 = new PatternSet();
-        project.addReference("dummy1", p1);
-        p1.setRefid(new Reference("dummy2"));
-        p2 = new PatternSet();
-        project.addReference("dummy2", p2);
-        p2.setRefid(new Reference("dummy3"));
-        p3 = new PatternSet();
-        project.addReference("dummy3", p3);
-        p3.setIncludes("include");
-        p3.createExclude().setName("exclude");
-        String[] i = p1.getIncludePatterns(project);
-        assertEquals("One include pattern buried deep inside a nested patternset structure",
-                     1, i.length);
-        assertEquals("include", i[0]);
-        i = p3.getExcludePatterns(project);
-        assertEquals("One exclude pattern buried deep inside a nested patternset structure",
-                     1, i.length);
-        assertEquals("exclude", i[0]);
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/util/DOMElementWriterTest.java b/src/testcases/org/apache/tools/ant/util/DOMElementWriterTest.java
deleted file mode 100644
index 7290ebb..0000000
--- a/src/testcases/org/apache/tools/ant/util/DOMElementWriterTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Tests for org.apache.tools.ant.util.DOMElementWriter.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class DOMElementWriterTest extends TestCase {
-
-    private DOMElementWriter w = new DOMElementWriter();
-
-    public DOMElementWriterTest(String name) {
-        super(name);
-    }
-
-    public void testIsReference() {
-        assert("&#20;", w.isReference("&#20;"));
-        assert("&#x20;", w.isReference("&#x20;"));
-        assert("&#xA0;", w.isReference("&#xA0;"));
-        assert("&#A0;", !w.isReference("&#A0;"));
-        assert("20;", !w.isReference("20;"));
-        assert("&#20", !w.isReference("&#20"));
-        assert("&quot;", w.isReference("&quot;"));
-        assert("&apos;", w.isReference("&apos;"));
-        assert("&gt;", w.isReference("&gt;"));
-        assert("&lt;", w.isReference("&lt;"));
-        assert("&amp;", w.isReference("&amp;"));
-    }
-
-    public void testEncode() {
-        assertEquals("&#20;", w.encode("&#20;"));
-        assertEquals("&#x20;", w.encode("&#x20;"));
-        assertEquals("&#xA0;", w.encode("&#xA0;"));
-        assertEquals("&amp;#A0;", w.encode("&#A0;"));
-        assertEquals("20;", w.encode("20;"));
-        assertEquals("&amp;#20", w.encode("&#20"));
-        assertEquals("&quot;", w.encode("&quot;"));
-        assertEquals("&apos;", w.encode("&apos;"));
-        assertEquals("&gt;", w.encode("&gt;"));
-        assertEquals("&lt;", w.encode("&lt;"));
-        assertEquals("&amp;", w.encode("&amp;"));
-        assertEquals("&quot;", w.encode("\""));
-        assertEquals("&lt;", w.encode("<"));
-        assertEquals("&amp;", w.encode("&"));
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/util/GlobPatternMapperTest.java b/src/testcases/org/apache/tools/ant/util/GlobPatternMapperTest.java
deleted file mode 100644
index 1b293d6..0000000
--- a/src/testcases/org/apache/tools/ant/util/GlobPatternMapperTest.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Tests for org.apache.tools.ant.util;GlobPatternMapper.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class GlobPatternMapperTest extends TestCase {
-
-    public GlobPatternMapperTest(String name) {
-        super(name);
-    }
-
-    public void testNoPatternAtAll() {
-        GlobPatternMapper m = new GlobPatternMapper();
-        m.setFrom("foobar");
-        m.setTo("baz");
-        assertNull("Shouldn\'t match foobar", m.mapFileName("plonk"));
-        String[] result = m.mapFileName("foobar");
-        assertNotNull("Should match foobar", result);
-        assertEquals("only one result for foobar", 1, result.length);
-        assertEquals("baz", result[0]);
-    }
-
-    public void testPostfixOnly() {
-        GlobPatternMapper m = new GlobPatternMapper();
-        m.setFrom("*foo");
-        m.setTo("*plonk");
-        assertNull("Shouldn\'t match *foo", m.mapFileName("bar.baz"));
-        String[] result = m.mapFileName("bar.foo");
-        assertNotNull("Should match *.foo", result);
-        assertEquals("only one result for bar.foo", 1, result.length);
-        assertEquals("bar.plonk", result[0]);
-
-        // Try a silly case
-        m.setTo("foo*");
-        result = m.mapFileName("bar.foo");
-        assertEquals("foobar.", result[0]);
-    }
-
-    public void testPrefixOnly() {
-        GlobPatternMapper m = new GlobPatternMapper();
-        m.setFrom("foo*");
-        m.setTo("plonk*");
-        assertNull("Shouldn\'t match foo*", m.mapFileName("bar.baz"));
-        String[] result = m.mapFileName("foo.bar");
-        assertNotNull("Should match foo*", result);
-        assertEquals("only one result for foo.bar", 1, result.length);
-        assertEquals("plonk.bar", result[0]);
-
-        // Try a silly case
-        m.setTo("*foo");
-        result = m.mapFileName("foo.bar");
-        assertEquals(".barfoo", result[0]);
-    }
-
-    public void testPreAndPostfix() {
-        GlobPatternMapper m = new GlobPatternMapper();
-        m.setFrom("foo*bar");
-        m.setTo("plonk*pling");
-        assertNull("Shouldn\'t match foo*bar", m.mapFileName("bar.baz"));
-        String[] result = m.mapFileName("foo.bar");
-        assertNotNull("Should match foo*bar", result);
-        assertEquals("only one result for foo.bar", 1, result.length);
-        assertEquals("plonk.pling", result[0]);
-
-        // and a little longer
-        result = m.mapFileName("foo.baz.bar");
-        assertNotNull("Should match foo*bar", result);
-        assertEquals("only one result for foo.baz.bar", 1, result.length);
-        assertEquals("plonk.baz.pling", result[0]);
-
-        // and a little shorter
-        result = m.mapFileName("foobar");
-        assertNotNull("Should match foo*bar", result);
-        assertEquals("only one result for foobar", 1, result.length);
-        assertEquals("plonkpling", result[0]);
-    }
-}
diff --git a/src/testcases/org/apache/tools/ant/util/regexp/JakartaOroMatcherTest.java b/src/testcases/org/apache/tools/ant/util/regexp/JakartaOroMatcherTest.java
deleted file mode 100644
index f1a6ec3..0000000
--- a/src/testcases/org/apache/tools/ant/util/regexp/JakartaOroMatcherTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util.regexp;
-
-/**
- * Tests for the jakarta-oro implementation of the OroMatcher interface.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class JakartaOroMatcherTest extends RegexpMatcherTest {
-
-    public RegexpMatcher getImplementation() {
-        return new JakartaOroMatcher();
-    }
-
-    public JakartaOroMatcherTest(String name) {
-        super(name);
-    }
-
-}
diff --git a/src/testcases/org/apache/tools/ant/util/regexp/JakartaRegexpMatcherTest.java b/src/testcases/org/apache/tools/ant/util/regexp/JakartaRegexpMatcherTest.java
deleted file mode 100644
index 16d3e29..0000000
--- a/src/testcases/org/apache/tools/ant/util/regexp/JakartaRegexpMatcherTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util.regexp;
-
-/**
- * Tests for the jakarta-regexp implementation of the RegexpMatcher interface.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public class JakartaRegexpMatcherTest extends RegexpMatcherTest {
-
-    public RegexpMatcher getImplementation() {
-        return new JakartaRegexpMatcher();
-    }
-
-    public JakartaRegexpMatcherTest(String name) {
-        super(name);
-    }
-
-}
diff --git a/src/testcases/org/apache/tools/ant/util/regexp/RegexpMatcherTest.java b/src/testcases/org/apache/tools/ant/util/regexp/RegexpMatcherTest.java
deleted file mode 100644
index 9959906..0000000
--- a/src/testcases/org/apache/tools/ant/util/regexp/RegexpMatcherTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.util.regexp;
-
-import java.util.Vector;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Tests for all implementations of the RegexpMatcher interface.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
- */
-public abstract class RegexpMatcherTest extends TestCase {
-
-    public abstract RegexpMatcher getImplementation();
-
-    public RegexpMatcherTest(String name) {
-        super(name);
-    }
-
-    public void testMatches() {
-        RegexpMatcher reg = getImplementation();
-        reg.setPattern("aaaa");
-        assert("aaaa should match itself", reg.matches("aaaa"));
-        assert("aaaa should match xaaaa", reg.matches("xaaaa"));
-        assert("aaaa shouldn\'t match xaaa", !reg.matches("xaaa"));
-        reg.setPattern("^aaaa");
-        assert("^aaaa shouldn\'t match xaaaa", !reg.matches("xaaaa"));
-        assert("^aaaa should match aaaax", reg.matches("aaaax"));
-        reg.setPattern("aaaa$");
-        assert("aaaa$ shouldn\'t match aaaax", !reg.matches("aaaax"));
-        assert("aaaa$ should match xaaaa", reg.matches("xaaaa"));
-        reg.setPattern("[0-9]+");
-        assert("[0-9]+ should match 123", reg.matches("123"));
-        assert("[0-9]+ should match 1", reg.matches("1"));
-        assert("[0-9]+ shouldn\'t match \'\'", !reg.matches(""));
-        assert("[0-9]+ shouldn\'t match a", !reg.matches("a"));
-        reg.setPattern("[0-9]*");
-        assert("[0-9]* should match 123", reg.matches("123"));
-        assert("[0-9]* should match 1", reg.matches("1"));
-        assert("[0-9]* should match \'\'", reg.matches(""));
-        assert("[0-9]* should match a", reg.matches("a"));
-        reg.setPattern("([0-9]+)=\\1");
-        assert("([0-9]+)=\\1 should match 1=1", reg.matches("1=1"));
-        assert("([0-9]+)=\\1 shouldn\'t match 1=2", !reg.matches("1=2"));
-    }
-
-    public void testGroups() {
-        RegexpMatcher reg = getImplementation();
-        reg.setPattern("aaaa");
-        Vector v = reg.getGroups("xaaaa");
-        assertEquals("No parens -> no extra groups", 1, v.size());
-        assertEquals("Trivial match with no parens", "aaaa", 
-                     (String) v.elementAt(0));
-
-        reg.setPattern("(aaaa)");
-        v = reg.getGroups("xaaaa");
-        assertEquals("Trivial match with single paren", 2, v.size());
-        assertEquals("Trivial match with single paren, full match", "aaaa", 
-                     (String) v.elementAt(0));
-        assertEquals("Trivial match with single paren, matched paren", "aaaa", 
-                     (String) v.elementAt(0));
-
-        reg.setPattern("(a+)b(b+)");
-        v = reg.getGroups("xaabb");
-        assertEquals(3, v.size());
-        assertEquals("aabb", (String) v.elementAt(0));
-        assertEquals("aa", (String) v.elementAt(1));
-        assertEquals("b", (String) v.elementAt(2));
-    }
-}
diff --git a/webpage/build.xml b/webpage/build.xml
deleted file mode 100644
index a93f73a..0000000
--- a/webpage/build.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<project name="build-site" default="docs" basedir=".">
-
-    <!-- Initialization properties -->
-    <property name="project.name"   value="ant"/>
-    <property name="docs.src" value="./xdocs"/>
-    <property name="docs.dest" value="./docs"/>
-
-    <path id="anakia.classpath">
-        <fileset dir="../../jakarta-site2/lib">
-            <include name="*.jar"/>
-        </fileset>
-    </path>
-
-    <target name="prepare">    
-        <available classname="org.apache.velocity.anakia.AnakiaTask" 
-                   property="AnakiaTask.present">
-            <classpath refid="anakia.classpath"/>
-        </available>
-    </target>
-
-    <target depends="prepare" name="prepare-error" unless="AnakiaTask.present">
-        <echo>
-            AnakiaTask is not present! Please check to make sure that 
-            velocity.jar is in your classpath.
-        </echo>
-    </target>
-
-    <target name="docs" depends="prepare-error" if="AnakiaTask.present">
-        <taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask">
-            <classpath refid="anakia.classpath"/>
-        </taskdef>
-        
-        <anakia basedir="${docs.src}" destdir="${docs.dest}/"
-             extension=".html" style="./site.vsl"
-             projectFile="stylesheets/project.xml"
-             excludes="**/stylesheets/** empty.xml"
-             includes="**/*.xml"
-             lastModifiedCheck="true"
-             velocityPropertiesFile="${docs.src}/velocity.properties">
-        </anakia>
-
-        <copy todir="${docs.dest}/images" filtering="no">
-            <fileset dir="${docs.src}/images">
-                <include name="**/*.gif"/>
-                <include name="**/*.jpeg"/>
-                <include name="**/*.jpg"/>
-            </fileset>
-        </copy>
-        <!-- In case we have CSS someday
-        <copy todir="${docs.dest}" filtering="no">
-            <fileset dir="${docs.src}">
-                <include name="**/*.css"/>
-            </fileset>
-        </copy>
-        -->
-    </target>
-</project>
diff --git a/webpage/docs/index.html b/webpage/docs/index.html
deleted file mode 100644
index acb6058..0000000
--- a/webpage/docs/index.html
+++ /dev/null
@@ -1,265 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
-<!-- Content Stylesheet for Site -->
-
-        
-<!-- start the processing -->
-    <!-- ====================================================================== -->
-    <!-- Main Page Section -->
-    <!-- ====================================================================== -->
-    <html>
-        <head>
-            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
-
-                                                    <meta name="author" value="Conor MacNeill">
-            <meta name="email" value="conor@cortexebusiness.com.au">
-            
-            <title>The Jakarta Site - Ant</title>
-        </head>
-
-        <body bgcolor="#ffffff" text="#000000" link="#525D76">        
-            <table border="0" width="100%" cellspacing="0">
-                <!-- TOP IMAGE -->
-                <tr>
-                    <td colspan="2">
-<a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" align="left" border="0"/></a>
-</td>
-                </tr>
-            </table>
-            <table border="0" width="100%" cellspacing="4">
-                <tr><td colspan="2">
-                    <hr noshade="" size="1"/>
-                </td></tr>
-                
-                <tr>
-                    <!-- LEFT SIDE NAVIGATION -->
-                    <td valign="top" nowrap="true">
-                                <strong>Essentials</strong>
-        <ul>
-                    <li>    <a href="./index.html">Front Page</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/news.html">News & Status</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/mission.html">Mission</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/guidelines.html">Guidelines Notes</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/faqs.html">FAQs</a>
-</li>
-                </ul>
-            <strong>Download</strong>
-        <ul>
-                    <li>    <a href="http://jakarta.apache.org/site/binindex.html">Binaries</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/sourceindex.html">Source Code</a>
-</li>
-                </ul>
-            <strong>Get Involved</strong>
-        <ul>
-                    <li>    <a href="http://jakarta.apache.org/site/getinvolved.html">Overview</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/cvsindex.html">CVS Repositories</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/mail.html">Mailing Lists</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/library.html">Reference Library</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/bugs.html">Bug Database</a>
-</li>
-                </ul>
-            <strong>Other Projects</strong>
-        <ul>
-                    <li>    <a href="http://jakarta.apache.org/ecs/index.html">ECS</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/log4j/doc/index.html">Log4J</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/oro/index.html">ORO</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/regexp/index.html">Regexp</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/slide/index.html">Slide</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/struts/index.html">Struts</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/taglibs/index.html">Taglibs</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/tomcat/index.html">Tomcat</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/velocity/index.html">Velocity</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/watchdog/index.html">Watchdog</a>
-</li>
-                </ul>
-            <strong>Misc</strong>
-        <ul>
-                    <li>    <a href="http://jakarta.apache.org/site/whoweare.html">Who We Are</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/acknowledgements.html">Acknowledgements</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/roles.html">Management</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/jakarta-site2.html">About This Site</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/contact.html">Contact</a>
-</li>
-                    <li>    <a href="http://jakarta.apache.org/site/legal.html">Legal</a>
-</li>
-                </ul>
-                        </td>
-                    <td align="left" valign="top">
-                                                                    <table border="0" cellspacing="0" cellpadding="2" width="100%">
-      <tr><td bgcolor="#525D76">
-        <font color="#ffffff" face="arial,helvetica,sanserif">
-          <strong>Ant</strong>
-        </font>
-      </td></tr>
-      <tr><td>
-        <blockquote>
-                                    <p>
-Ant is a Java based build tool. In theory it is kind of like make without
-make's wrinkles.
-</p>
-                                                <p>
-Why another build tool when there is already make, gnumake, nmake, jam, and
-others? Because all of those tools have limitations that Ant's original author
-couldn't live with when developing software across multiple platforms. Make-like
-tools are inherently shell based. They evaluate a set of dependencies and then
-execute commands not unlike what you would issue on a shell. This means that you
-can easily extend these tools by using or writing any program for the OS that
-you are working on. However, this also means that you limit yourself to the OS,
-or at least the OS type such as Unix, that you are working on.
-</p>
-                                                <p>
-Makefiles are inherently evil as well. Anybody who has worked on them for any
-time has run into the dreaded tab problem. "Is my command not executing
-because I have a space in front of my tab!!!" said the original author of
-Ant way too many times. Tools like Jam took care of this to a great degree, but
-still use yet another format to use and remember.
-</p>
-                                                <p>
-Ant is different. Instead of a model where it is extended with shell based
-commands, it is extended using Java classes. Instead of writing shell commands,
-the configuration files are XML based calling out a target tree where various
-tasks get executed. Each task is run by an object which implements a particular
-Task interface.
-</p>
-                                                <p>
-Granted, this removes some of the expressive power that is inherent by being
-able to construct a shell command such as `find . -name foo -exec rm {}` but it
-gives you the ability to be cross platform. To work anywhere and everywhere. And
-hey, if you really need to execute a shell command, Ant has an exec rule that
-allows different commands to be executed based on the OS that it is executing
-on.
-</p>
-                            </blockquote>
-      </td></tr>
-    </table>
-                                                <table border="0" cellspacing="0" cellpadding="2" width="100%">
-      <tr><td bgcolor="#525D76">
-        <font color="#ffffff" face="arial,helvetica,sanserif">
-          <strong>Documentation</strong>
-        </font>
-      </td></tr>
-      <tr><td>
-        <blockquote>
-                                    <p>
-You can view the documentation for the most recent release 
-<a href="jakarta-ant/docs/">online</a>
-</p>
-                                                <p>
-Comprehensive documentation is included in the source and binary distribtions. 
-</p>
-                            </blockquote>
-      </td></tr>
-    </table>
-                                                <table border="0" cellspacing="0" cellpadding="2" width="100%">
-      <tr><td bgcolor="#525D76">
-        <font color="#ffffff" face="arial,helvetica,sanserif">
-          <strong>Latest Release</strong>
-        </font>
-      </td></tr>
-      <tr><td>
-        <blockquote>
-                                    <p>
-    You can download the latest release:
-    </p>
-                                                <ul>
-        <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.2/bin/">
-                Download the binary release</a></li>
-        <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.2/src/">
-                Download the source release</a></li>
-        <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.2/rpms/">
-                Download source and binary RPMs</a></li>
-    </ul>
-                            </blockquote>
-      </td></tr>
-    </table>
-                                                <table border="0" cellspacing="0" cellpadding="2" width="100%">
-      <tr><td bgcolor="#525D76">
-        <font color="#ffffff" face="arial,helvetica,sanserif">
-          <strong>Nightly Builds</strong>
-        </font>
-      </td></tr>
-      <tr><td>
-        <blockquote>
-                                    <p>
-    If you wish to use the latest Ant features, you can try downloading a nightly 
-    build from <a href="http://jakarta.apache.org/builds/jakarta-ant/nightly/">here</a>
-    </p>
-                            </blockquote>
-      </td></tr>
-    </table>
-                                                <table border="0" cellspacing="0" cellpadding="2" width="100%">
-      <tr><td bgcolor="#525D76">
-        <font color="#ffffff" face="arial,helvetica,sanserif">
-          <strong>Get Involved</strong>
-        </font>
-      </td></tr>
-      <tr><td>
-        <blockquote>
-                                    <ul>
-<li><a href="http://jakarta.apache.org/getinvolved/getinvolvedindex.html">Get Involved</a></li>
-<li><a href="http://jakarta.apache.org/getinvolved/mail.html">Join Mailing Lists</a></li>
-<li><a href="http://marc.theaimsgroup.com/?l=ant-dev&amp;r=1&amp;w=2">
-    Search the Dev Mailing List</a>
-</li>
-<li><a href="http://marc.theaimsgroup.com/?l=ant-user&amp;r=1&amp;w=2">
-    Search the User Mailing List</a>
-</li>
-<li><a href="/jyve-faq/Turbine/screen/DisplayTopics/action/SetAll/project_id/2/faq_id/16">
-    FAQ</a>
-</li>
-</ul>
-                            </blockquote>
-      </td></tr>
-    </table>
-                                        </td>
-                </tr>
-
-                <!-- FOOTER -->
-                <tr><td colspan="2">
-                    <hr noshade="" size="1"/>
-                </td></tr>
-                <tr><td colspan="2">
-                    <div align="center"><font color="#525D76" size="-1"><em>
-                    Copyright &#169; 1999-2001, Apache Software Foundation
-                    </em></font></div>
-                </td></tr>
-            </table>
-        </body>
-    </html>
-<!-- end the processing -->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/webpage/xdocs/index.xml b/webpage/xdocs/index.xml
deleted file mode 100644
index b92a7b6..0000000
--- a/webpage/xdocs/index.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0"?>
-<document>
-
-  <properties>
-    <author email="conor@cortexebusiness.com.au">Conor MacNeill</author>
-    <title>Ant</title>
-  </properties>
-
-<body>
-
-  <section name="Ant">
-
-<p>
-Ant is a Java based build tool. In theory it is kind of like make without
-make's wrinkles.
-</p>
-
-<p>
-Why another build tool when there is already make, gnumake, nmake, jam, and
-others? Because all of those tools have limitations that Ant's original author
-couldn't live with when developing software across multiple platforms. Make-like
-tools are inherently shell based. They evaluate a set of dependencies and then
-execute commands not unlike what you would issue on a shell. This means that you
-can easily extend these tools by using or writing any program for the OS that
-you are working on. However, this also means that you limit yourself to the OS,
-or at least the OS type such as Unix, that you are working on.
-</p>
-
-<p>
-Makefiles are inherently evil as well. Anybody who has worked on them for any
-time has run into the dreaded tab problem. &quot;Is my command not executing
-because I have a space in front of my tab!!!&quot; said the original author of
-Ant way too many times. Tools like Jam took care of this to a great degree, but
-still use yet another format to use and remember.
-</p>
-
-<p>
-Ant is different. Instead of a model where it is extended with shell based
-commands, it is extended using Java classes. Instead of writing shell commands,
-the configuration files are XML based calling out a target tree where various
-tasks get executed. Each task is run by an object which implements a particular
-Task interface.
-</p>
-
-<p>
-Granted, this removes some of the expressive power that is inherent by being
-able to construct a shell command such as `find . -name foo -exec rm {}` but it
-gives you the ability to be cross platform. To work anywhere and everywhere. And
-hey, if you really need to execute a shell command, Ant has an exec rule that
-allows different commands to be executed based on the OS that it is executing
-on.
-</p>
-
-  </section>
-  
-  <section name="Documentation">
-  
-<p>
-You can view the documentation for the most recent release 
-<a href="jakarta-ant/docs/">online</a>
-</p>
-
-<p>
-Comprehensive documentation is included in the source and binary distribtions. 
-</p>
-
-  </section>
-
-  <section name="Latest Release">
-    <p>
-    You can download the latest release:
-    </p>
-    <ul>
-        <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.2/bin/">
-                Download the binary release</a></li>
-        <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.2/src/">
-                Download the source release</a></li>
-        <li><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.2/rpms/">
-                Download source and binary RPMs</a></li>
-    </ul>  
-  </section>
-  
-  <section name="Nightly Builds">
-    <p>
-    If you wish to use the latest Ant features, you can try downloading a nightly 
-    build from <a href="http://jakarta.apache.org/builds/jakarta-ant/nightly/">here</a>
-    </p>
-    
-  </section>
-  
-  <section name="Get Involved">
-<ul>
-<li><a href="http://jakarta.apache.org/getinvolved/getinvolvedindex.html">Get Involved</a></li>
-<li><a href="http://jakarta.apache.org/getinvolved/mail.html">Join Mailing Lists</a></li>
-<li><a href="http://marc.theaimsgroup.com/?l=ant-dev&amp;r=1&amp;w=2">
-    Search the Dev Mailing List</a>
-</li>
-<li><a href="http://marc.theaimsgroup.com/?l=ant-user&amp;r=1&amp;w=2">
-    Search the User Mailing List</a>
-</li>
-<li><a href="/jyve-faq/Turbine/screen/DisplayTopics/action/SetAll/project_id/2/faq_id/16">
-    FAQ</a>
-</li>
-</ul>
-
-
-
-  </section>
-
-</body>
-</document>
-
diff --git a/webpage/xdocs/stylesheets/project.xml b/webpage/xdocs/stylesheets/project.xml
deleted file mode 100644
index 8cfea58..0000000
--- a/webpage/xdocs/stylesheets/project.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="Jakarta Site"
-        href="http://jakarta.apache.org/">
-
-    <title>The Jakarta Site</title>
-    <!-- uncomment and put your project logo here!
-    <logo href="http://jakarta.apache.org/images/jakarta-logo.gif">The Jakarta Project</logo>
-    -->
-    
-    <body>
-    <menu name="Essentials">
-        <item name="Front Page"            href="/index.html"/>
-        <item name="News &amp; Status"     href="/site/news.html"/>
-        <item name="Mission"               href="/site/mission.html"/>
-        <item name="Guidelines Notes"      href="/site/guidelines.html"/>
-        <item name="FAQs"                  href="/site/faqs.html"/>
-    </menu>
-
-    <menu name="Download">
-        <item name="Binaries"              href="/site/binindex.html"/>
-        <item name="Source Code"           href="/site/sourceindex.html"/>
-    </menu>
-
-    <menu name="Get Involved">
-        <item name="Overview"              href="/site/getinvolved.html"/>
-        <item name="CVS Repositories"      href="/site/cvsindex.html"/>
-        <item name="Mailing Lists"         href="/site/mail.html"/>
-        <item name="Reference Library"     href="/site/library.html"/>
-        <item name="Bug Database"          href="/site/bugs.html"/>
-    </menu>
-
-    <menu name="Other Projects">	
-<!--    <item name="Avalon"                
-              href="http://jakarta.apache.org/avalon/index.html"/> -->
-        <item name="ECS"                   
-	      href="http://jakarta.apache.org/ecs/index.html"/>
-        <item name="Log4J"                   
-	      href="http://jakarta.apache.org/log4j/doc/index.html"/>
-        <item name="ORO"                   
-	      href="http://jakarta.apache.org/oro/index.html"/>
-        <item name="Regexp"       
-              href="http://jakarta.apache.org/regexp/index.html"/>
-        <item name="Slide" 
-	      href="http://jakarta.apache.org/slide/index.html"/>
-        <item name="Struts"  
-              href="http://jakarta.apache.org/struts/index.html"/>
-        <item name="Taglibs"
-              href="http://jakarta.apache.org/taglibs/index.html"/>
-        <item name="Tomcat" 
-              href="http://jakarta.apache.org/tomcat/index.html"/>
-        <item name="Velocity" 
-              href="http://jakarta.apache.org/velocity/index.html"/>
-        <item name="Watchdog" 
-              href="http://jakarta.apache.org/watchdog/index.html"/>
-    </menu>					 
-
-    <menu name="Misc">
-        <item name="Who We Are"            href="/site/whoweare.html"/>
-        <item name="Acknowledgements"      href="/site/acknowledgements.html"/>
-        <item name="Management"            href="/site/roles.html"/>
-        <item name="About This Site"       href="/site/jakarta-site2.html"/>
-        <item name="Contact"               href="/site/contact.html"/>
-        <item name="Legal"                 href="/site/legal.html"/>        
-    </menu>
-    </body>
-</project>
diff --git a/webpage/xdocs/velocity.properties b/webpage/xdocs/velocity.properties
deleted file mode 100644
index d4cee77..0000000
--- a/webpage/xdocs/velocity.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-resource.loader.1.resource.path = ../../jakarta-site2/xdocs/stylesheets
-template.loader.1.template.path = ../../jakarta-site2/xdocs/stylesheets